UNPKG

@scramjet/framework

Version:

Simple yet powerful live data computation framework.

28 lines (27 loc) 1.68 kB
/// <reference types="node" /> import { Writable } from "stream"; import { TransformFunction, AnyIterable, MaybePromise } from "../types"; export interface BaseStream<IN extends any, OUT extends any> { write(chunk: IN): MaybePromise<void>; read(): MaybePromise<OUT | null>; pause(): void; resume(): void; end(): MaybePromise<void>; each<ARGS extends any[]>(callback: TransformFunction<OUT, void, ARGS>, ...args: ARGS): BaseStream<IN, OUT>; map<ARGS extends any[]>(callback: TransformFunction<OUT, OUT, ARGS>, ...args: ARGS): BaseStream<IN, OUT>; map<NEW_OUT, ARGS extends any[]>(callback: TransformFunction<OUT, NEW_OUT, ARGS>, ...args: ARGS): BaseStream<IN, NEW_OUT>; filter<ARGS extends any[]>(callback: TransformFunction<OUT, Boolean, ARGS>, ...args: ARGS): BaseStream<IN, OUT>; batch<ARGS extends any[]>(callback: TransformFunction<OUT, Boolean, ARGS>, ...args: ARGS): BaseStream<IN, OUT[]>; flatMap<ARGS extends any[]>(callback: TransformFunction<OUT, AnyIterable<OUT>, ARGS>, ...args: ARGS): BaseStream<IN, OUT>; flatMap<NEW_OUT, ARGS extends any[]>(callback: TransformFunction<OUT, AnyIterable<NEW_OUT>, ARGS>, ...args: ARGS): BaseStream<IN, NEW_OUT>; pipe<DEST extends BaseStream<OUT, any>>(destination: DEST, options: { end: boolean; }): DEST; pipe<DEST extends Writable>(destination: DEST, options: { end: boolean; }): DEST; use<NEW_OUT>(callback: (stream: BaseStream<IN, OUT>) => NEW_OUT): NEW_OUT; reduce<NEW_OUT>(callback: (previous: NEW_OUT, current: OUT) => MaybePromise<NEW_OUT>, initial?: NEW_OUT): Promise<NEW_OUT>; toArray(): Promise<OUT[]>; run(): Promise<void>; }