1
0

add async equality comparer and broaden to comparison or comparer

This commit is contained in:
2025-10-02 00:19:26 +02:00
parent e57f2900df
commit 1fb91deabd
14 changed files with 426 additions and 250 deletions

View File

@@ -1,5 +1,6 @@
import { asAsyncEqualityComparer } from "../equality-comparer/async.js";
import { asEqualityComparer } from "../equality-comparer/sync.js";
import { EqualityComparer, EqualityComparisonOrComparer, MaybeAsyncEqualityComparison } from "../equality-comparer/types.js";
import { AsyncEqualityComparer, EqualityComparer, EqualityComparisonOrComparer, MaybeAsyncEqualityComparisonOrComparer } from "../equality-comparer/types.js";
import { MaybeAsyncIterable } from "../types.js";
import { AsyncEqualitySet, EqualitySet } from "./types.js";
@@ -167,10 +168,10 @@ export class NativeAsyncEqualitySet<T> implements AsyncEqualitySet<T> {
export class CustomAsyncEqualitySet<T> implements AsyncEqualitySet<T> {
readonly #list: T[] = [];
readonly #equater: MaybeAsyncEqualityComparison<T>;
readonly #equater: AsyncEqualityComparer<T>;
constructor(equater: MaybeAsyncEqualityComparison<T>) {
this.#equater = equater;
constructor(equater: MaybeAsyncEqualityComparisonOrComparer<T>) {
this.#equater = asAsyncEqualityComparer(equater);
}
get size() {
@@ -201,7 +202,7 @@ export class CustomAsyncEqualitySet<T> implements AsyncEqualitySet<T> {
async contains(value: T) {
for (const val of this.#list) {
if (await this.#equater(value, val)) {
if (await this.#equater.equals(value, val)) {
return true;
}
}
@@ -213,7 +214,7 @@ export class CustomAsyncEqualitySet<T> implements AsyncEqualitySet<T> {
const length = this.#list.length;
for (let i = 0; i < length; i++) {
if (await this.#equater(value, this.#list[i])) {
if (await this.#equater.equals(value, this.#list[i])) {
this.#list.splice(i, 1);
return true;
}

View File

@@ -1,4 +1,4 @@
import { EqualityComparisonOrComparer, MaybeAsyncEqualityComparison } from "../equality-comparer/types.js";
import { EqualityComparisonOrComparer, MaybeAsyncEqualityComparisonOrComparer } from "../equality-comparer/types.js";
import { CustomAsyncEqualitySet, CustomEqualitySet, NativeAsyncEqualitySet, NativeEqualitySet } from "./impl.js";
import { AsyncEqualitySet, EqualitySet } from "./types.js";
@@ -6,6 +6,6 @@ export function createEqualitySet<T>(equater?: EqualityComparisonOrComparer<T>):
return equater ? new CustomEqualitySet(equater) : new NativeEqualitySet<T>();
}
export function createAsyncEqualitySet<T>(equater?: MaybeAsyncEqualityComparison<T>): AsyncEqualitySet<T> {
export function createAsyncEqualitySet<T>(equater?: MaybeAsyncEqualityComparisonOrComparer<T>): AsyncEqualitySet<T> {
return equater ? new CustomAsyncEqualitySet(equater) : new NativeAsyncEqualitySet<T>();
}