add async equality comparer and broaden to comparison or comparer
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user