make async equality collections sync iterables
This commit is contained in:
@@ -1328,7 +1328,7 @@ export class DistinctByAsyncSequence<T, U> extends BaseAsyncSequence<T> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
await set.clear();
|
set.clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1763,7 +1763,7 @@ export class UnionAsyncSequence<T> extends BaseAsyncSequence<T> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
await set.clear();
|
set.clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1797,7 +1797,7 @@ export class UnionByAsyncSequence<T, U> extends BaseAsyncSequence<T> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
await set.clear();
|
set.clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1827,7 +1827,7 @@ export class ExceptAsyncSequence<T> extends BaseAsyncSequence<T> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
await set.clear();
|
set.clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1859,7 +1859,7 @@ export class ExceptByAsyncSequence<T, U> extends BaseAsyncSequence<T> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
await set.clear();
|
set.clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1889,7 +1889,7 @@ export class IntersectAsyncSequence<T> extends BaseAsyncSequence<T> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
await set.clear();
|
set.clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1921,7 +1921,7 @@ export class IntersectByAsyncSequence<T, U> extends BaseAsyncSequence<T> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
await set.clear();
|
set.clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1976,7 +1976,7 @@ export class GroupByAsyncSequence<TElement, TKey, TResult> extends BaseAsyncSequ
|
|||||||
grouping.push(await this.#elementSelector(obj));
|
grouping.push(await this.#elementSelector(obj));
|
||||||
}
|
}
|
||||||
|
|
||||||
for await (const entry of groupings) {
|
for (const entry of groupings) {
|
||||||
yield new GroupedAsyncSequenceImpl(entry[0], array(entry[1]));
|
yield new GroupedAsyncSequenceImpl(entry[0], array(entry[1]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import { Equater, MaybeAsyncEquater } from "./types.js";
|
import { Equater, MaybeAsyncEquater } from "./types.js";
|
||||||
import { asAsyncGenerator } from "./utils.js";
|
|
||||||
|
|
||||||
export interface EqualityMap<K, V> extends Iterable<[K, V]> {
|
export interface EqualityMap<K, V> extends Iterable<[K, V]> {
|
||||||
readonly size: number;
|
readonly size: number;
|
||||||
@@ -149,12 +148,12 @@ export function createEqualityMap<K, V>(keyComparer?: Equater<K>): EqualityMap<K
|
|||||||
return keyComparer ? new CustomEqualityMap<K, V>(keyComparer) : new NativeEqualityMap<K, V>();
|
return keyComparer ? new CustomEqualityMap<K, V>(keyComparer) : new NativeEqualityMap<K, V>();
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface AsyncEqualityMap<K, V> extends AsyncIterable<[K, V]> {
|
export interface AsyncEqualityMap<K, V> extends Iterable<[K, V]> {
|
||||||
get(key: K): Promise<V | undefined>;
|
get(key: K): Promise<V | undefined>;
|
||||||
set(key: K, value: V): Promise<V | undefined>;
|
set(key: K, value: V): Promise<V | undefined>;
|
||||||
contains(key: K): Promise<boolean>;
|
contains(key: K): Promise<boolean>;
|
||||||
remove(key: K): Promise<V | undefined>;
|
remove(key: K): Promise<V | undefined>;
|
||||||
clear(): Promise<void>;
|
clear(): void;
|
||||||
}
|
}
|
||||||
|
|
||||||
class NativeAsyncEqualityMap<K, V> implements AsyncEqualityMap<K, V> {
|
class NativeAsyncEqualityMap<K, V> implements AsyncEqualityMap<K, V> {
|
||||||
@@ -180,12 +179,12 @@ class NativeAsyncEqualityMap<K, V> implements AsyncEqualityMap<K, V> {
|
|||||||
return existing;
|
return existing;
|
||||||
}
|
}
|
||||||
|
|
||||||
async clear() {
|
clear() {
|
||||||
this.#map.clear();
|
this.#map.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Symbol.asyncIterator]() {
|
[Symbol.iterator]() {
|
||||||
return asAsyncGenerator(this.#map[Symbol.iterator]());
|
return this.#map[Symbol.iterator]();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -242,12 +241,14 @@ class CustomAsyncEqualityMap<K, V> implements AsyncEqualityMap<K, V> {
|
|||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
async clear() {
|
clear() {
|
||||||
this.#list.length = 0;
|
this.#list.length = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
[Symbol.asyncIterator]() {
|
*[Symbol.iterator]() {
|
||||||
return asAsyncGenerator(this.#list[Symbol.iterator]());
|
for (const entry of this.#list) {
|
||||||
|
yield [entry[0], entry[1]] as [K, V]; // no entry mutation allowed!
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import { Equater, MaybeAsyncEquater } from "./types.js";
|
import { Equater, MaybeAsyncEquater } from "./types.js";
|
||||||
import { asAsyncGenerator } from "./utils.js";
|
|
||||||
|
|
||||||
export interface EqualitySet<T> extends Iterable<T> {
|
export interface EqualitySet<T> extends Iterable<T> {
|
||||||
readonly size: number;
|
readonly size: number;
|
||||||
@@ -106,12 +105,12 @@ export function createEqualitySet<T>(equater?: Equater<T>): EqualitySet<T> {
|
|||||||
return equater ? new CustomEqualitySet(equater) : new NativeEqualitySet<T>();
|
return equater ? new CustomEqualitySet(equater) : new NativeEqualitySet<T>();
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface AsyncEqualitySet<T> extends AsyncIterable<T> {
|
export interface AsyncEqualitySet<T> extends Iterable<T> {
|
||||||
readonly size: number;
|
readonly size: number;
|
||||||
add(obj: T): Promise<boolean>;
|
add(obj: T): Promise<boolean>;
|
||||||
contains(obj: T): Promise<boolean>;
|
contains(obj: T): Promise<boolean>;
|
||||||
remove(obj: T): Promise<boolean>;
|
remove(obj: T): Promise<boolean>;
|
||||||
clear(): Promise<void>;
|
clear(): void;
|
||||||
}
|
}
|
||||||
|
|
||||||
class NativeAsyncEqualitySet<T> implements AsyncEqualitySet<T> {
|
class NativeAsyncEqualitySet<T> implements AsyncEqualitySet<T> {
|
||||||
@@ -135,12 +134,12 @@ class NativeAsyncEqualitySet<T> implements AsyncEqualitySet<T> {
|
|||||||
return this.#set.delete(obj);
|
return this.#set.delete(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
async clear() {
|
clear() {
|
||||||
this.#set.clear();
|
this.#set.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Symbol.asyncIterator]() {
|
[Symbol.iterator]() {
|
||||||
return asAsyncGenerator(this.#set[Symbol.iterator]());
|
return this.#set[Symbol.iterator]();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -189,12 +188,12 @@ class CustomAsyncEqualitySet<T> implements AsyncEqualitySet<T> {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
async clear() {
|
clear() {
|
||||||
this.#list.length = 0;
|
this.#list.length = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
[Symbol.asyncIterator]() {
|
[Symbol.iterator]() {
|
||||||
return asAsyncGenerator(this.#list[Symbol.iterator]());
|
return this.#list[Symbol.iterator]();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user