correctly initialize and expose empty sequences
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user