diff --git a/types/node/v10/stream.d.ts b/types/node/v10/stream.d.ts index f3fd17dbac..ec1d9fe17b 100644 --- a/types/node/v10/stream.d.ts +++ b/types/node/v10/stream.d.ts @@ -244,9 +244,15 @@ declare module "stream" { class PassThrough extends Transform { } + interface FinishedOptions { + error?: boolean; + readable?: boolean; + writable?: boolean; + } + function finished(stream: NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream, options: FinishedOptions, callback: (err?: NodeJS.ErrnoException | null) => void): () => void; function finished(stream: NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream, callback: (err?: NodeJS.ErrnoException | null) => void): () => void; namespace finished { - function __promisify__(stream: NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream): Promise; + function __promisify__(stream: NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream, options?: FinishedOptions): Promise; } function pipeline(stream1: NodeJS.ReadableStream, stream2: T, callback?: (err: NodeJS.ErrnoException | null) => void): T; diff --git a/types/node/v11/stream.d.ts b/types/node/v11/stream.d.ts index 84ce0ea9b5..3de35e212b 100644 --- a/types/node/v11/stream.d.ts +++ b/types/node/v11/stream.d.ts @@ -246,9 +246,15 @@ declare module "stream" { class PassThrough extends Transform { } + interface FinishedOptions { + error?: boolean; + readable?: boolean; + writable?: boolean; + } + function finished(stream: NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream, options: FinishedOptions, callback: (err?: NodeJS.ErrnoException | null) => void): () => void; function finished(stream: NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream, callback: (err?: NodeJS.ErrnoException | null) => void): () => void; namespace finished { - function __promisify__(stream: NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream): Promise; + function __promisify__(stream: NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream, options?: FinishedOptions): Promise; } function pipeline(stream1: NodeJS.ReadableStream, stream2: T, callback?: (err: NodeJS.ErrnoException | null) => void): T; diff --git a/types/node/v11/test/stream.ts b/types/node/v11/test/stream.ts index 892f5a0fca..7af32103bd 100644 --- a/types/node/v11/test/stream.ts +++ b/types/node/v11/test/stream.ts @@ -159,7 +159,10 @@ function simplified_stream_ctor_test() { } function streamPipelineFinished() { - const cancel = finished(process.stdin, (err?: Error | null) => {}); + let cancel = finished(process.stdin, (err?: Error | null) => {}); + cancel(); + + cancel = finished(process.stdin, { readable: false }, (err?: Error | null) => {}); cancel(); pipeline(process.stdin, process.stdout, (err?: Error | null) => {}); @@ -168,6 +171,7 @@ function streamPipelineFinished() { async function asyncStreamPipelineFinished() { const fin = promisify(finished); await fin(process.stdin); + await fin(process.stdin, { readable: false }); const pipe = promisify(pipeline); await pipe(process.stdin, process.stdout); diff --git a/types/node/v12/stream.d.ts b/types/node/v12/stream.d.ts index a271af89cd..97e5dc5668 100644 --- a/types/node/v12/stream.d.ts +++ b/types/node/v12/stream.d.ts @@ -262,9 +262,15 @@ declare module "stream" { class PassThrough extends Transform { } + interface FinishedOptions { + error?: boolean; + readable?: boolean; + writable?: boolean; + } + function finished(stream: NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream, options: FinishedOptions, callback: (err?: NodeJS.ErrnoException | null) => void): () => void; function finished(stream: NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream, callback: (err?: NodeJS.ErrnoException | null) => void): () => void; namespace finished { - function __promisify__(stream: NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream): Promise; + function __promisify__(stream: NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream, options?: FinishedOptions): Promise; } function pipeline(stream1: NodeJS.ReadableStream, stream2: T, callback?: (err: NodeJS.ErrnoException | null) => void): T; diff --git a/types/node/v12/test/stream.ts b/types/node/v12/test/stream.ts index b62c7d5aec..9272e19c2f 100644 --- a/types/node/v12/test/stream.ts +++ b/types/node/v12/test/stream.ts @@ -163,7 +163,10 @@ function simplified_stream_ctor_test() { } function streamPipelineFinished() { - const cancel = finished(process.stdin, (err?: Error | null) => {}); + let cancel = finished(process.stdin, (err?: Error | null) => {}); + cancel(); + + cancel = finished(process.stdin, { readable: false }, (err?: Error | null) => {}); cancel(); pipeline(process.stdin, process.stdout, (err?: Error | null) => {}); @@ -172,6 +175,7 @@ function streamPipelineFinished() { async function asyncStreamPipelineFinished() { const fin = promisify(finished); await fin(process.stdin); + await fin(process.stdin, { readable: false }); const pipe = promisify(pipeline); await pipe(process.stdin, process.stdout);