diff --git a/types/node/index.d.ts b/types/node/index.d.ts index d0ebd2124f..c1974ef350 100644 --- a/types/node/index.d.ts +++ b/types/node/index.d.ts @@ -6415,6 +6415,11 @@ declare module "stream" { export class PassThrough extends Transform { } + export function finished(stream: NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream, callback: (err?: NodeJS.ErrnoException) => void): () => void; + export namespace finished { + export function __promisify__(stream: NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream): Promise; + } + export function pipeline(stream1: NodeJS.ReadableStream, stream2: T, callback?: (err: NodeJS.ErrnoException) => void): T; export function pipeline(stream1: NodeJS.ReadableStream, stream2: NodeJS.ReadWriteStream, stream3: T, callback?: (err: NodeJS.ErrnoException) => void): T; export function pipeline(stream1: NodeJS.ReadableStream, stream2: NodeJS.ReadWriteStream, stream3: NodeJS.ReadWriteStream, stream4: T, callback?: (err: NodeJS.ErrnoException) => void): T; diff --git a/types/node/node-tests.ts b/types/node/node-tests.ts index b9a02f8dbd..3feb7a4a86 100644 --- a/types/node/node-tests.ts +++ b/types/node/node-tests.ts @@ -1123,6 +1123,21 @@ function simplified_stream_ctor_test() { }); } +function streamPipelineFinished() { + const cancel = stream.finished(process.stdin, (err?: Error) => {}); + cancel(); + + stream.pipeline(process.stdin, process.stdout, (err?: Error) => {}); +} + +async function asyncStreamPipelineFinished() { + const finished = util.promisify(stream.finished); + await finished(process.stdin); + + const pipeline = util.promisify(stream.pipeline); + await pipeline(process.stdin, process.stdout); +} + //////////////////////////////////////////////////////// /// Crypto tests : http://nodejs.org/api/crypto.html /// ////////////////////////////////////////////////////////