From 1f8e8039b6aaf4fbe7fc3fbe21ae274e76355e46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20BECHER?= Date: Mon, 13 May 2024 22:39:59 +0200 Subject: [PATCH] make async equality collections sync iterables --- src/async/impl.ts | 16 ++++++++-------- src/equality-map.ts | 19 ++++++++++--------- src/equality-set.ts | 17 ++++++++--------- 3 files changed, 26 insertions(+), 26 deletions(-) diff --git a/src/async/impl.ts b/src/async/impl.ts index be29db4..1e789c1 100644 --- a/src/async/impl.ts +++ b/src/async/impl.ts @@ -1328,7 +1328,7 @@ export class DistinctByAsyncSequence extends BaseAsyncSequence { } } - await set.clear(); + set.clear(); } } @@ -1763,7 +1763,7 @@ export class UnionAsyncSequence extends BaseAsyncSequence { } } - await set.clear(); + set.clear(); } } @@ -1797,7 +1797,7 @@ export class UnionByAsyncSequence extends BaseAsyncSequence { } } - await set.clear(); + set.clear(); } } @@ -1827,7 +1827,7 @@ export class ExceptAsyncSequence extends BaseAsyncSequence { } } - await set.clear(); + set.clear(); } } @@ -1859,7 +1859,7 @@ export class ExceptByAsyncSequence extends BaseAsyncSequence { } } - await set.clear(); + set.clear(); } } @@ -1889,7 +1889,7 @@ export class IntersectAsyncSequence extends BaseAsyncSequence { } } - await set.clear(); + set.clear(); } } @@ -1921,7 +1921,7 @@ export class IntersectByAsyncSequence extends BaseAsyncSequence { } } - await set.clear(); + set.clear(); } } @@ -1976,7 +1976,7 @@ export class GroupByAsyncSequence extends BaseAsyncSequ 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])); } } diff --git a/src/equality-map.ts b/src/equality-map.ts index ed850d1..0ab15a9 100644 --- a/src/equality-map.ts +++ b/src/equality-map.ts @@ -1,5 +1,4 @@ import { Equater, MaybeAsyncEquater } from "./types.js"; -import { asAsyncGenerator } from "./utils.js"; export interface EqualityMap extends Iterable<[K, V]> { readonly size: number; @@ -149,12 +148,12 @@ export function createEqualityMap(keyComparer?: Equater): EqualityMap(keyComparer) : new NativeEqualityMap(); } -export interface AsyncEqualityMap extends AsyncIterable<[K, V]> { +export interface AsyncEqualityMap extends Iterable<[K, V]> { get(key: K): Promise; set(key: K, value: V): Promise; contains(key: K): Promise; remove(key: K): Promise; - clear(): Promise; + clear(): void; } class NativeAsyncEqualityMap implements AsyncEqualityMap { @@ -180,12 +179,12 @@ class NativeAsyncEqualityMap implements AsyncEqualityMap { return existing; } - async clear() { + clear() { this.#map.clear(); } - [Symbol.asyncIterator]() { - return asAsyncGenerator(this.#map[Symbol.iterator]()); + [Symbol.iterator]() { + return this.#map[Symbol.iterator](); } } @@ -242,12 +241,14 @@ class CustomAsyncEqualityMap implements AsyncEqualityMap { return undefined; } - async clear() { + clear() { this.#list.length = 0; } - [Symbol.asyncIterator]() { - return asAsyncGenerator(this.#list[Symbol.iterator]()); + *[Symbol.iterator]() { + for (const entry of this.#list) { + yield [entry[0], entry[1]] as [K, V]; // no entry mutation allowed! + } } } diff --git a/src/equality-set.ts b/src/equality-set.ts index 4575259..a8ce0f5 100644 --- a/src/equality-set.ts +++ b/src/equality-set.ts @@ -1,5 +1,4 @@ import { Equater, MaybeAsyncEquater } from "./types.js"; -import { asAsyncGenerator } from "./utils.js"; export interface EqualitySet extends Iterable { readonly size: number; @@ -106,12 +105,12 @@ export function createEqualitySet(equater?: Equater): EqualitySet { return equater ? new CustomEqualitySet(equater) : new NativeEqualitySet(); } -export interface AsyncEqualitySet extends AsyncIterable { +export interface AsyncEqualitySet extends Iterable { readonly size: number; add(obj: T): Promise; contains(obj: T): Promise; remove(obj: T): Promise; - clear(): Promise; + clear(): void; } class NativeAsyncEqualitySet implements AsyncEqualitySet { @@ -135,12 +134,12 @@ class NativeAsyncEqualitySet implements AsyncEqualitySet { return this.#set.delete(obj); } - async clear() { + clear() { this.#set.clear(); } - [Symbol.asyncIterator]() { - return asAsyncGenerator(this.#set[Symbol.iterator]()); + [Symbol.iterator]() { + return this.#set[Symbol.iterator](); } } @@ -189,12 +188,12 @@ class CustomAsyncEqualitySet implements AsyncEqualitySet { return false; } - async clear() { + clear() { this.#list.length = 0; } - [Symbol.asyncIterator]() { - return asAsyncGenerator(this.#list[Symbol.iterator]()); + [Symbol.iterator]() { + return this.#list[Symbol.iterator](); } }