sequence type fixes and refactor
This commit is contained in:
@@ -1,15 +1,15 @@
|
||||
import { wrap as wrapSync } from "../sync/index.js";
|
||||
import { Sequence } from "../sync/types.js";
|
||||
import { MaybeAsyncIterable } from "../types.js";
|
||||
import { MaybeAsyncGenerator, MaybeAsyncIterable, MaybeAsyncSequence, MaybePromiseLike } from "../types.js";
|
||||
import { isAsyncIterable } from "../utils.js";
|
||||
import { WrappedSequence, WrappedAsyncIterable, EmptyAsyncSequence, WrappedObjectAsync, WrappedArrayAsync, WrappedArrayLikeAsync, FunctionAsyncSequence, GeneratorAsyncSequence, RangeAsyncSequence, RepeatForeverAsyncSequence, RepeatAsyncSequence, AsyncSequenceMarker } from "./impl.js";
|
||||
import { AsyncSequence } from "./types.js";
|
||||
|
||||
export function asAsync<T>(sequence: Sequence<T>): AsyncSequence<T> {
|
||||
export function asAsync<T>(sequence: Sequence<MaybePromiseLike<T>>): AsyncSequence<T> {
|
||||
return new WrappedSequence(sequence);
|
||||
}
|
||||
|
||||
export function wrap<T>(iterable: MaybeAsyncIterable<T>): AsyncSequence<T> {
|
||||
export function wrap<T>(iterable: MaybeAsyncIterable<MaybePromiseLike<T>>): AsyncSequence<T> {
|
||||
if (isAsyncSequence<T>(iterable)) {
|
||||
return iterable;
|
||||
}
|
||||
@@ -21,27 +21,29 @@ export function wrap<T>(iterable: MaybeAsyncIterable<T>): AsyncSequence<T> {
|
||||
return asAsync(wrapSync(iterable));
|
||||
}
|
||||
|
||||
export function sequence<T>(iterable: AsyncIterable<T>): AsyncSequence<T> {
|
||||
export function sequence<T>(iterable: AsyncIterable<MaybePromiseLike<T>>): AsyncSequence<T> {
|
||||
return new WrappedAsyncIterable(iterable);
|
||||
}
|
||||
|
||||
export const EMPTY = new EmptyAsyncSequence<any>();
|
||||
|
||||
export function empty<T>(): AsyncSequence<T> {
|
||||
return EmptyAsyncSequence.INSTANCE;
|
||||
return EMPTY;
|
||||
}
|
||||
|
||||
export function single<T>(obj: T | PromiseLike<T>): AsyncSequence<T> {
|
||||
export function single<T>(obj: MaybePromiseLike<T>): AsyncSequence<T> {
|
||||
return new WrappedObjectAsync(obj);
|
||||
}
|
||||
|
||||
export function array<T>(array: (T | PromiseLike<T>)[]): AsyncSequence<T> {
|
||||
export function array<T>(array: MaybePromiseLike<T>[]): AsyncSequence<T> {
|
||||
return new WrappedArrayAsync(array);
|
||||
}
|
||||
|
||||
export function arrayLike<T>(arrayLike: ArrayLike<(T | PromiseLike<T>)>): AsyncSequence<T> {
|
||||
export function arrayLike<T>(arrayLike: ArrayLike<MaybePromiseLike<T>>): AsyncSequence<T> {
|
||||
return new WrappedArrayLikeAsync(arrayLike);
|
||||
}
|
||||
|
||||
export function of<T>(...elements: (T | PromiseLike<T>)[]): AsyncSequence<T> {
|
||||
export function of<T>(...elements: MaybePromiseLike<T>[]): AsyncSequence<T> {
|
||||
switch (elements.length) {
|
||||
case 0:
|
||||
return empty();
|
||||
@@ -52,11 +54,11 @@ export function of<T>(...elements: (T | PromiseLike<T>)[]): AsyncSequence<T> {
|
||||
}
|
||||
}
|
||||
|
||||
export function func<T>(f: () => Promise<T>): AsyncSequence<T> {
|
||||
export function func<T>(f: () => MaybePromiseLike<T>): AsyncSequence<T> {
|
||||
return new FunctionAsyncSequence(f);
|
||||
}
|
||||
|
||||
export function generator<T>(generator: () => AsyncGenerator<T>): AsyncSequence<T> {
|
||||
export function generator<T>(generator: () => MaybeAsyncGenerator<MaybePromiseLike<T>>): AsyncSequence<T> {
|
||||
return new GeneratorAsyncSequence(generator);
|
||||
}
|
||||
|
||||
@@ -76,7 +78,7 @@ export function range(a: number, b?: number, c?: number): AsyncSequence<number>
|
||||
return new RangeAsyncSequence(a, b, c);
|
||||
}
|
||||
|
||||
export function repeat<T>(value: T, count?: number): AsyncSequence<T> {
|
||||
export function repeat<T>(value: MaybePromiseLike<T>, count?: number): AsyncSequence<T> {
|
||||
if (count == undefined) {
|
||||
return new RepeatForeverAsyncSequence(value);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user