@rimbu/stream
Version:
Efficient structure representing a sequence of elements, with powerful operations for TypeScript
205 lines (204 loc) • 10.7 kB
text/typescript
import { Token } from '@rimbu/base';
import { AsyncOptLazy, TraverseState, type ArrayNonEmpty, type AsyncCollectFun, type MaybePromise } from '@rimbu/common';
import { AsyncTransformer, type AsyncFastIterator, type AsyncReducer, type AsyncStream, type AsyncStreamSource } from '@rimbu/stream/async';
import { type AsyncStreamSourceHelpers } from '@rimbu/stream/async-custom';
export declare const fixedDoneAsyncIteratorResult: Readonly<Promise<IteratorResult<any, any>>>;
export declare function isAsyncFastIterator<T>(iterator: AsyncIterator<T>): iterator is AsyncFastIterator<T>;
export declare const emptyAsyncFastIterator: AsyncFastIterator<any>;
export declare abstract class AsyncFastIteratorBase<T> implements AsyncFastIterator<T> {
abstract fastNext<O>(otherwise?: AsyncOptLazy<O>): MaybePromise<T | O>;
return?: () => Promise<any>;
next(): Promise<IteratorResult<T>>;
}
export declare class AsyncOfIterator<T> extends AsyncFastIteratorBase<T> {
readonly values: ArrayNonEmpty<AsyncOptLazy<T>>;
constructor(values: ArrayNonEmpty<AsyncOptLazy<T>>);
index: number;
fastNext<O>(otherwise?: AsyncOptLazy<O>): MaybePromise<T | O>;
}
export declare class FromResourceIterator<T, R> extends AsyncFastIteratorBase<T> {
readonly open: () => MaybePromise<R>;
readonly createSource: (resource: R) => MaybePromise<AsyncStreamSource<T>>;
readonly close: ((resource: R) => MaybePromise<void>) | undefined;
readonly asyncStreamSourceHelpers: AsyncStreamSourceHelpers;
constructor(open: () => MaybePromise<R>, createSource: (resource: R) => MaybePromise<AsyncStreamSource<T>>, close: ((resource: R) => MaybePromise<void>) | undefined, asyncStreamSourceHelpers: AsyncStreamSourceHelpers);
resource: R | undefined;
iterator: AsyncFastIterator<T> | undefined;
fastNext<O>(otherwise?: AsyncOptLazy<O>): Promise<T | O>;
}
export declare class AsyncUnfoldIterator<T> extends AsyncFastIteratorBase<T> {
readonly getNext: (current: T, index: number, stop: Token) => MaybePromise<T | Token>;
constructor(init: T, getNext: (current: T, index: number, stop: Token) => MaybePromise<T | Token>);
current: T | Token;
index: number;
fastNext<O>(otherwise?: AsyncOptLazy<O>): Promise<T | O>;
}
export declare class AsyncZipWithIterator<I extends readonly unknown[], R> extends AsyncFastIteratorBase<R> {
readonly iterables: {
[K in keyof I]: AsyncStreamSource<I[K]>;
};
readonly zipFun: (...values: I) => MaybePromise<R>;
readonly asyncStreamSourceHelpers: AsyncStreamSourceHelpers;
constructor(iterables: {
[K in keyof I]: AsyncStreamSource<I[K]>;
}, zipFun: (...values: I) => MaybePromise<R>, asyncStreamSourceHelpers: AsyncStreamSourceHelpers);
readonly sources: AsyncFastIterator<any>[];
readonly sourcesToClose: Set<AsyncFastIterator<any>>;
fastNext<O>(otherwise?: AsyncOptLazy<O>): Promise<R | O>;
}
export declare class AsyncZipAllWithItererator<I extends readonly unknown[], F, R> extends AsyncFastIteratorBase<R> {
readonly fillValue: AsyncOptLazy<F>;
readonly iters: {
[K in keyof I]: AsyncStreamSource<I[K]>;
};
readonly zipFun: (...values: {
[K in keyof I]: I[K] | F;
}) => MaybePromise<R>;
readonly asyncStreamSourceHelpers: AsyncStreamSourceHelpers;
constructor(fillValue: AsyncOptLazy<F>, iters: {
[K in keyof I]: AsyncStreamSource<I[K]>;
}, zipFun: (...values: {
[K in keyof I]: I[K] | F;
}) => MaybePromise<R>, asyncStreamSourceHelpers: AsyncStreamSourceHelpers);
readonly sources: AsyncFastIterator<any>[];
readonly sourcesToClose: Set<AsyncFastIterator<any>>;
fastNext<O>(otherwise?: AsyncOptLazy<O>): Promise<R | O>;
}
export declare class FromAsyncIterator<T> implements AsyncFastIterator<T> {
readonly source: AsyncIterator<T>;
constructor(source: AsyncIterator<T>, close?: () => MaybePromise<void>);
return?: () => MaybePromise<any>;
next(): Promise<IteratorResult<T>>;
fastNext<O>(otherwise?: AsyncOptLazy<O>): Promise<T | O>;
}
export declare class FromIterator<T> extends AsyncFastIteratorBase<T> {
readonly iterator: Iterator<T>;
constructor(iterator: Iterator<T>, close?: () => MaybePromise<void>);
return?: () => MaybePromise<any>;
fastNext<O>(otherwise?: AsyncOptLazy<O>): Promise<T | O>;
}
export declare class FromPromise<T> extends AsyncFastIteratorBase<T> {
readonly promise: () => Promise<AsyncStreamSource<T>>;
readonly asyncStreamSourceHelpers: AsyncStreamSourceHelpers;
constructor(promise: () => Promise<AsyncStreamSource<T>>, asyncStreamSourceHelpers: AsyncStreamSourceHelpers, close?: () => MaybePromise<void>);
iterator: AsyncFastIterator<T> | undefined;
fastNext<O>(otherwise?: AsyncOptLazy<O>): Promise<T | O>;
}
export declare class AsyncPrependIterator<T> extends AsyncFastIteratorBase<T> {
readonly source: AsyncFastIterator<T>;
readonly item: AsyncOptLazy<T>;
constructor(source: AsyncFastIterator<T>, item: AsyncOptLazy<T>);
prependDone: boolean;
fastNext<O>(otherwise?: AsyncOptLazy<O>): MaybePromise<T | O>;
}
export declare class AsyncAppendIterator<T> extends AsyncFastIteratorBase<T> {
readonly source: AsyncFastIterator<T>;
readonly item: AsyncOptLazy<T>;
constructor(source: AsyncFastIterator<T>, item: AsyncOptLazy<T>);
appendDone: boolean;
fastNext<O>(otherwise?: AsyncOptLazy<O>): Promise<T | O>;
}
export declare class AsyncIndexedIterator<T> extends AsyncFastIteratorBase<[
number,
T
]> {
readonly source: AsyncFastIterator<T>;
readonly startIndex: number;
index: number;
constructor(source: AsyncFastIterator<T>, startIndex?: number);
fastNext<O>(otherwise?: AsyncOptLazy<O>): Promise<[number, T] | O>;
}
export declare class AsyncMapIterator<T, T2> extends AsyncFastIteratorBase<T2> {
readonly source: AsyncFastIterator<T>;
readonly mapFun: (value: T, index: number) => MaybePromise<T2>;
constructor(source: AsyncFastIterator<T>, mapFun: (value: T, index: number) => MaybePromise<T2>);
readonly state: TraverseState;
fastNext<O>(otherwise?: AsyncOptLazy<O>): Promise<T2 | O>;
}
export declare class AsyncMapPureIterator<T, A extends readonly unknown[], T2> extends AsyncFastIteratorBase<T2> {
readonly source: AsyncFastIterator<T>;
readonly mapFun: (value: T, ...args: A) => MaybePromise<T2>;
readonly args: A;
constructor(source: AsyncFastIterator<T>, mapFun: (value: T, ...args: A) => MaybePromise<T2>, args: A);
fastNext<O>(otherwise?: AsyncOptLazy<O>): Promise<T2 | O>;
}
export declare class AsyncConcatIterator<T> extends AsyncFastIteratorBase<T> {
readonly source: AsyncStream<T>;
readonly otherSources: AsyncStreamSource<T>[];
readonly asyncStreamSourceHelpers: AsyncStreamSourceHelpers;
iterator: AsyncFastIterator<T>;
constructor(source: AsyncStream<T>, otherSources: AsyncStreamSource<T>[], asyncStreamSourceHelpers: AsyncStreamSourceHelpers);
sourceIndex: number;
fastNext<O>(otherwise?: AsyncOptLazy<O>): Promise<T | O>;
}
export declare class AsyncFilterIterator<T> extends AsyncFastIteratorBase<T> {
readonly source: AsyncFastIterator<T>;
readonly pred: (value: T, index: number, halt: () => void) => MaybePromise<boolean>;
readonly negate: boolean;
constructor(source: AsyncFastIterator<T>, pred: (value: T, index: number, halt: () => void) => MaybePromise<boolean>, negate: boolean);
readonly state: TraverseState;
fastNext<O>(otherwise?: AsyncOptLazy<O>): Promise<T | O>;
}
export declare class AsyncFilterPureIterator<T, A extends readonly unknown[]> extends AsyncFastIteratorBase<T> {
readonly source: AsyncFastIterator<T>;
readonly pred: (value: T, ...args: A) => MaybePromise<boolean>;
readonly args: A;
readonly negate: boolean;
constructor(source: AsyncFastIterator<T>, pred: (value: T, ...args: A) => MaybePromise<boolean>, args: A, negate: boolean);
fastNext<O>(otherwise?: AsyncOptLazy<O>): Promise<T | O>;
}
export declare class AsyncCollectIterator<T, R> extends AsyncFastIteratorBase<R> {
readonly source: AsyncFastIterator<T>;
readonly collectFun: AsyncCollectFun<T, R>;
constructor(source: AsyncFastIterator<T>, collectFun: AsyncCollectFun<T, R>);
readonly state: TraverseState;
fastNext<O>(otherwise?: AsyncOptLazy<O>): Promise<R | O>;
}
export declare class AsyncDropWhileIterator<T> extends AsyncFastIteratorBase<T> {
readonly source: AsyncFastIterator<T>;
readonly pred: (value: T, index: number) => MaybePromise<boolean>;
readonly negate: boolean;
constructor(source: AsyncFastIterator<T>, pred: (value: T, index: number) => MaybePromise<boolean>, negate: boolean);
pass: boolean;
index: number;
fastNext<O>(otherwise?: AsyncOptLazy<O>): Promise<T | O>;
}
export declare class AsyncTakeIterator<T> extends AsyncFastIteratorBase<T> {
readonly source: AsyncFastIterator<T>;
readonly amount: number;
constructor(source: AsyncFastIterator<T>, amount: number);
i: number;
fastNext<O>(otherwise?: AsyncOptLazy<O>): Promise<T | O>;
}
export declare class AsyncDropIterator<T> extends AsyncFastIteratorBase<T> {
readonly source: AsyncFastIterator<T>;
readonly amount: number;
remain: number;
constructor(source: AsyncFastIterator<T>, amount: number);
fastNext<O>(otherwise?: AsyncOptLazy<O>): Promise<T | O>;
}
export declare class AsyncRepeatIterator<T> extends AsyncFastIteratorBase<T> {
readonly source: AsyncStream<T>;
readonly amount?: number | undefined;
iterator: AsyncFastIterator<T>;
remain: number | undefined;
constructor(source: AsyncStream<T>, amount?: number | undefined);
isEmpty: boolean;
fastNext<O>(otherwise?: AsyncOptLazy<O>): Promise<T | O>;
}
export declare class AsyncReduceIterator<I, R> extends AsyncFastIteratorBase<R> {
readonly sourceIterator: AsyncFastIterator<I>;
readonly reducer: AsyncReducer<I, R>;
constructor(sourceIterator: AsyncFastIterator<I>, reducer: AsyncReducer<I, R>);
___instance: AsyncReducer.Instance<I, R> | undefined;
fastNext<O>(otherwise?: AsyncOptLazy<O>): Promise<R | O>;
}
export declare class AsyncTransformerFastIterator<T, R> extends AsyncFastIteratorBase<R> {
readonly sourceIterator: AsyncFastIterator<T>;
readonly transformer: AsyncTransformer.Accept<T, R>;
constructor(sourceIterator: AsyncFastIterator<T>, transformer: AsyncTransformer.Accept<T, R>);
___done: boolean;
___instance: AsyncReducer.Instance<T, AsyncStreamSource<R>> | undefined;
___currentValues: AsyncFastIterator<R> | undefined;
fastNext<O>(otherwise?: AsyncOptLazy<O>): Promise<R | O>;
}