UNPKG

@push.rocks/webstream

Version:

A cross-platform streaming package designed for node and web environments.

38 lines (37 loc) 1.5 kB
export interface IStreamToolsRead<TInput, TOutput> { done: () => void; write: (writeArg: TInput) => void; } /** * the read function is called anytime * -> the WebDuplexStream is being read from * and at the same time if nothing is enqueued */ export interface IStreamReadFunction<TInput, TOutput> { (toolsArg: IStreamToolsRead<TInput, TOutput>): Promise<void>; } export interface IStreamToolsWrite<TInput, TOutput> { truncate: () => void; push: (pushArg: TOutput) => void; } /** * the write function can return something. * It is called anytime a chunk is written to the stream. */ export interface IStreamWriteFunction<TInput, TOutput> { (chunkArg: TInput, toolsArg: IStreamToolsWrite<TInput, TOutput>): Promise<any>; } export interface IStreamFinalFunction<TInput, TOutput> { (toolsArg: IStreamToolsWrite<TInput, TOutput>): Promise<TOutput>; } export interface WebDuplexStreamOptions<TInput, TOutput> { readFunction?: IStreamReadFunction<TInput, TOutput>; writeFunction?: IStreamWriteFunction<TInput, TOutput>; finalFunction?: IStreamFinalFunction<TInput, TOutput>; } export declare class WebDuplexStream<TInput = any, TOutput = any> extends TransformStream<TInput, TOutput> { static fromUInt8Array(uint8Array: Uint8Array): WebDuplexStream<Uint8Array, Uint8Array>; options: WebDuplexStreamOptions<TInput, TOutput>; constructor(optionsArg: WebDuplexStreamOptions<TInput, TOutput>); getCustomReadableStream(): ReadableStream<any>; }