UNPKG

@stream-toolbox/tunnel

Version:

Forward data bidirectionally between two duplexes, like `a.pipe(b).pipe(a)`, but with better handling for various cases.

18 lines (17 loc) 796 B
/// <reference types="node" /> import { Duplex, Readable, Writable } from "stream"; interface TunnelError extends Error { readonly causedBy: Duplex | Readable | Writable; } type DuplexLike = { rs: Readable; ws: Writable; allowHalfOpen?: boolean; allowPipeHalfOpen?: boolean; }; type callback = (err: TunnelError | null, time: number) => void; declare function tunnel(a: Duplex | DuplexLike, b: Duplex | DuplexLike): Promise<number>; declare function tunnel(a: Duplex | DuplexLike, b: Duplex | DuplexLike, condition: number): Promise<number>; declare function tunnel(a: Duplex | DuplexLike, b: Duplex | DuplexLike, callback: callback): void; declare function tunnel(a: Duplex | DuplexLike, b: Duplex | DuplexLike, condition: number, callback: callback): void; export = tunnel;