monoflux
Version:
Stream processing for JS simplified
76 lines (75 loc) • 4.08 kB
TypeScript
export declare class Flux<T> implements AsyncGenerator<T>, Promise<T[]> {
private readonly generator;
private readonly upstream?;
private readonly handleCancel?;
private _closed;
private constructor();
[Symbol.asyncIterator](): AsyncGenerator<T, any, unknown>;
next(...args: [] | [unknown]): Promise<IteratorResult<T>>;
next(...args: [] | [unknown]): Promise<IteratorResult<T>>;
return(value?: any): Promise<IteratorResult<T, undefined>>;
throw(e: any): Promise<IteratorResult<T>>;
cancel(e?: unknown): Promise<void>;
then<TResult1 = T[], TResult2 = never>(onfulfilled?: ((value: T[]) => TResult1 | PromiseLike<TResult1>) | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult1 | TResult2>;
catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null): Promise<T[] | TResult>;
finally(onfinally?: (() => void) | null): Promise<T[]>;
get [Symbol.toStringTag](): string;
subscribe(callback?: (value: T) => void): {
unsubscribe: () => Promise<IteratorResult<T, undefined>>;
};
filter<O = T>(predicate: (value: T) => boolean): Flux<O>;
/**
* Flux until predicate is true; the rest is dropped. The first
* value that is dropped is the value for which the predicate
* is true.
*
* @param predicate
*/
untilExcl(predicate: (value: T) => boolean): Flux<Awaited<T>>;
doOnEach(callback: (value: T) => void): Flux<T>;
doAfterLast(callback: (allEvents: T[]) => (void | Promise<void>)): Flux<T>;
map<O>(mapper: (value: T) => O): Flux<O>;
take(n: number): Flux<T>;
/**
* Delay each of this Flux elements (Subscriber.onNext signals) by a given duration.
* Signals are delayed and continue on the parallel default Scheduler, but empty
* sequences or immediate error signals are not delayed.
*
* @param delayMillis - The duration in milliseconds to delay each element emission
* @returns A new Flux with delayed element emissions
*
* @example
* ```typescript
* const flux = Flux.fromArray([1, 2, 3])
* const delayed = flux.delayElements(1000) // Each element delayed by 1 second
* for await (const value of delayed) {
* console.log(value) // Prints 1, 2, 3 with 1 second delay between each
* }
* ```
*/
delayElements(delayMillis: number): Flux<T>;
flatMap<O>(mapper: (value: T) => O[]): Flux<O>;
flatMap<O>(mapper: (value: T) => Flux<O>, options?: {
concurrency?: number;
}): Flux<O>;
flatMap<O>(mapper: (value: T) => Promise<O>, options?: {
concurrency?: number;
}): Flux<O>;
transform<O>(defineGenerator: (thisFlux: Flux<T>) => AsyncGenerator<O>): Flux<O>;
reduce<O>(reducer: (reduction: O, newValue: T) => O, initialValue: O): Promise<O>;
reduce<O>(reducer: (reduction: O | undefined, newValue: T) => O): Promise<O | undefined>;
asList(): Promise<T[]>;
whenComplete(): Promise<void>;
static create<T>(creator: (push: (value: T) => void, complete: () => void, reject: (err: any) => void) => (void | Promise<void>)): Flux<T>;
static just<T>(...array: T[]): Flux<T>;
static from<T>(array: T[]): Flux<T>;
static from<T>(generator: AsyncGenerator<T>, handleCancel?: (e?: any) => void): Flux<T>;
static from<T>(stream: ReadableStream<T>, handleCancel?: (e?: any) => void): Flux<T>;
static from<T>(fn: () => AsyncGenerator<T>, handleCancel?: (e?: any) => void): Flux<T>;
static fromArray<T>(array: T[]): Flux<T>;
static constructFromGeneratorFunction<T>(fn: () => AsyncGenerator<T>, upstream: Flux<unknown> | undefined, handleCancel?: (e?: any) => void): Flux<T>;
static fromGeneratorFunction<T>(fn: () => AsyncGenerator<T>, handleCancel?: (e?: any) => void): Flux<T>;
static fromGenerator<T>(generator: AsyncGenerator<T>, handleCancel?: (e?: any) => void): Flux<T>;
static fromReadableStream<T>(stream: ReadableStream<T>, handleCancel?: (e?: any) => void): Flux<T>;
get closed(): boolean;
}