1
0

correctly initialize and expose empty sequences

This commit is contained in:
2024-05-17 22:46:01 +02:00
parent e68b80c8eb
commit 719cb660e6
4 changed files with 9 additions and 9 deletions

View File

@@ -1072,7 +1072,7 @@ abstract class BaseOrderedAsyncSequence<TElement> extends BaseAsyncSequence<TEle
} }
} }
export class EmptyAsyncSequence<T> extends BaseAsyncSequence<T> { class EmptyAsyncSequence<T> extends BaseAsyncSequence<T> {
override async nonEnumeratedCount() { override async nonEnumeratedCount() {
return 0; return 0;
} }
@@ -1080,6 +1080,8 @@ export class EmptyAsyncSequence<T> extends BaseAsyncSequence<T> {
override async *iterator() { } override async *iterator() { }
} }
export const EMPTY = new EmptyAsyncSequence<any>();
export class RangeAsyncSequence extends BaseAsyncSequence<number> { export class RangeAsyncSequence extends BaseAsyncSequence<number> {
readonly #min: number; readonly #min: number;
readonly #max: number; readonly #max: number;

View File

@@ -1,8 +1,8 @@
import { wrap as wrapSync } from "../sync/index.js"; import { wrap as wrapSync } from "../sync/index.js";
import { Sequence } from "../sync/types.js"; import { Sequence } from "../sync/types.js";
import { MaybeAsyncGenerator, MaybeAsyncIterable, MaybeAsyncSequence, MaybePromiseLike } from "../types.js"; import { MaybeAsyncGenerator, MaybeAsyncIterable, MaybePromiseLike } from "../types.js";
import { isAsyncIterable } from "../utils.js"; import { isAsyncIterable } from "../utils.js";
import { WrappedSequence, WrappedAsyncIterable, EmptyAsyncSequence, WrappedObjectAsync, WrappedArrayAsync, WrappedArrayLikeAsync, FunctionAsyncSequence, GeneratorAsyncSequence, RangeAsyncSequence, RepeatForeverAsyncSequence, RepeatAsyncSequence, AsyncSequenceMarker } from "./impl.js"; import { WrappedSequence, WrappedAsyncIterable, WrappedObjectAsync, WrappedArrayAsync, WrappedArrayLikeAsync, FunctionAsyncSequence, GeneratorAsyncSequence, RangeAsyncSequence, RepeatForeverAsyncSequence, RepeatAsyncSequence, AsyncSequenceMarker, EMPTY } from "./impl.js";
import { AsyncSequence } from "./types.js"; import { AsyncSequence } from "./types.js";
export function asAsync<T>(sequence: Sequence<MaybePromiseLike<T>>): AsyncSequence<T> { export function asAsync<T>(sequence: Sequence<MaybePromiseLike<T>>): AsyncSequence<T> {
@@ -25,8 +25,6 @@ export function sequence<T>(iterable: AsyncIterable<MaybePromiseLike<T>>): Async
return new WrappedAsyncIterable(iterable); return new WrappedAsyncIterable(iterable);
} }
export const EMPTY = new EmptyAsyncSequence<any>();
export function empty<T>(): AsyncSequence<T> { export function empty<T>(): AsyncSequence<T> {
return EMPTY; return EMPTY;
} }

View File

@@ -1065,7 +1065,7 @@ export abstract class BaseOrderedSequence<TElement> extends BaseSequence<TElemen
} }
} }
export class EmptySequence<T> extends BaseSequence<T> { class EmptySequence<T> extends BaseSequence<T> {
override nonEnumeratedCount() { override nonEnumeratedCount() {
return 0; return 0;
} }
@@ -1073,6 +1073,8 @@ export class EmptySequence<T> extends BaseSequence<T> {
override *iterator() { } override *iterator() { }
} }
export const EMPTY = new EmptySequence<any>();
export class RangeSequence extends BaseSequence<number> { export class RangeSequence extends BaseSequence<number> {
readonly #min: number; readonly #min: number;
readonly #max: number; readonly #max: number;

View File

@@ -1,6 +1,6 @@
import { mathRandom } from "../random/index.js"; import { mathRandom } from "../random/index.js";
import { RandomGenerator } from "../random/types.js"; import { RandomGenerator } from "../random/types.js";
import { BigIntRangeSequence, ConcatSequence, EmptySequence, SequenceMarker, FunctionSequence, GeneratorSequence, RangeSequence, RepeatSequence, RepeatForeverSequence, WrappedArray, WrappedArrayLike, WrappedIterable, WrappedMap, WrappedObject, WrappedSet } from "./impl.js"; import { BigIntRangeSequence, ConcatSequence, SequenceMarker, FunctionSequence, GeneratorSequence, RangeSequence, RepeatSequence, RepeatForeverSequence, WrappedArray, WrappedArrayLike, WrappedIterable, WrappedMap, WrappedObject, WrappedSet, EMPTY } from "./impl.js";
import { Sequence } from "./types.js"; import { Sequence } from "./types.js";
export function wrap<T>(iterable: Iterable<T>): Sequence<T> { export function wrap<T>(iterable: Iterable<T>): Sequence<T> {
@@ -27,8 +27,6 @@ export function sequence<T>(iterable: Iterable<T>): Sequence<T> {
return new WrappedIterable(iterable); return new WrappedIterable(iterable);
} }
export const EMPTY = new EmptySequence<any>();
export function empty<T>(): Sequence<T> { export function empty<T>(): Sequence<T> {
return EMPTY; return EMPTY;
} }