cdk-common 2.0.1351 → 2.0.1352

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. package/.jsii +38 -2
  2. package/API.md +36 -0
  3. package/lib/main.js +1 -1
  4. package/lib/managed-policies.d.ts +7 -1
  5. package/lib/managed-policies.js +7 -1
  6. package/node_modules/@types/concat-stream/node_modules/@types/node/README.md +1 -1
  7. package/node_modules/@types/concat-stream/node_modules/@types/node/assert/strict.d.ts +5 -11
  8. package/node_modules/@types/concat-stream/node_modules/@types/node/assert.d.ts +9 -169
  9. package/node_modules/@types/concat-stream/node_modules/@types/node/async_hooks.d.ts +8 -8
  10. package/node_modules/@types/concat-stream/node_modules/@types/node/buffer.buffer.d.ts +1 -7
  11. package/node_modules/@types/concat-stream/node_modules/@types/node/buffer.d.ts +44 -168
  12. package/node_modules/@types/concat-stream/node_modules/@types/node/child_process.d.ts +16 -64
  13. package/node_modules/@types/concat-stream/node_modules/@types/node/cluster.d.ts +240 -332
  14. package/node_modules/@types/concat-stream/node_modules/@types/node/console.d.ts +49 -351
  15. package/node_modules/@types/concat-stream/node_modules/@types/node/constants.d.ts +3 -4
  16. package/node_modules/@types/concat-stream/node_modules/@types/node/crypto.d.ts +279 -1631
  17. package/node_modules/@types/concat-stream/node_modules/@types/node/dgram.d.ts +15 -51
  18. package/node_modules/@types/concat-stream/node_modules/@types/node/diagnostics_channel.d.ts +4 -4
  19. package/node_modules/@types/concat-stream/node_modules/@types/node/dns/promises.d.ts +3 -3
  20. package/node_modules/@types/concat-stream/node_modules/@types/node/dns.d.ts +131 -132
  21. package/node_modules/@types/concat-stream/node_modules/@types/node/domain.d.ts +13 -17
  22. package/node_modules/@types/concat-stream/node_modules/@types/node/events.d.ts +869 -791
  23. package/node_modules/@types/concat-stream/node_modules/@types/node/fs/promises.d.ts +7 -8
  24. package/node_modules/@types/concat-stream/node_modules/@types/node/fs.d.ts +417 -455
  25. package/node_modules/@types/concat-stream/node_modules/@types/node/globals.d.ts +6 -26
  26. package/node_modules/@types/concat-stream/node_modules/@types/node/globals.typedarray.d.ts +60 -0
  27. package/node_modules/@types/concat-stream/node_modules/@types/node/http.d.ts +263 -254
  28. package/node_modules/@types/concat-stream/node_modules/@types/node/http2.d.ts +528 -804
  29. package/node_modules/@types/concat-stream/node_modules/@types/node/https.d.ts +59 -239
  30. package/node_modules/@types/concat-stream/node_modules/@types/node/index.d.ts +15 -1
  31. package/node_modules/@types/concat-stream/node_modules/@types/node/inspector/promises.d.ts +41 -0
  32. package/node_modules/@types/concat-stream/node_modules/@types/node/inspector.d.ts +6 -59
  33. package/node_modules/@types/concat-stream/node_modules/@types/node/inspector.generated.d.ts +3 -10
  34. package/node_modules/@types/concat-stream/node_modules/@types/node/module.d.ts +47 -122
  35. package/node_modules/@types/concat-stream/node_modules/@types/node/net.d.ts +63 -184
  36. package/node_modules/@types/concat-stream/node_modules/@types/node/os.d.ts +6 -6
  37. package/node_modules/@types/concat-stream/node_modules/@types/node/package.json +2 -2
  38. package/node_modules/@types/concat-stream/node_modules/@types/node/path/posix.d.ts +8 -0
  39. package/node_modules/@types/concat-stream/node_modules/@types/node/path/win32.d.ts +8 -0
  40. package/node_modules/@types/concat-stream/node_modules/@types/node/path.d.ts +120 -133
  41. package/node_modules/@types/concat-stream/node_modules/@types/node/perf_hooks.d.ts +282 -643
  42. package/node_modules/@types/concat-stream/node_modules/@types/node/process.d.ts +156 -128
  43. package/node_modules/@types/concat-stream/node_modules/@types/node/punycode.d.ts +5 -5
  44. package/node_modules/@types/concat-stream/node_modules/@types/node/querystring.d.ts +4 -4
  45. package/node_modules/@types/concat-stream/node_modules/@types/node/quic.d.ts +910 -0
  46. package/node_modules/@types/concat-stream/node_modules/@types/node/readline/promises.d.ts +3 -3
  47. package/node_modules/@types/concat-stream/node_modules/@types/node/readline.d.ts +67 -120
  48. package/node_modules/@types/concat-stream/node_modules/@types/node/repl.d.ts +75 -98
  49. package/node_modules/@types/concat-stream/node_modules/@types/node/sea.d.ts +1 -1
  50. package/node_modules/@types/concat-stream/node_modules/@types/node/sqlite.d.ts +2 -2
  51. package/node_modules/@types/concat-stream/node_modules/@types/node/stream/consumers.d.ts +10 -10
  52. package/node_modules/@types/concat-stream/node_modules/@types/node/stream/promises.d.ts +136 -15
  53. package/node_modules/@types/concat-stream/node_modules/@types/node/stream/web.d.ts +176 -453
  54. package/node_modules/@types/concat-stream/node_modules/@types/node/stream.d.ts +555 -478
  55. package/node_modules/@types/concat-stream/node_modules/@types/node/string_decoder.d.ts +4 -4
  56. package/node_modules/@types/concat-stream/node_modules/@types/node/test/reporters.d.ts +96 -0
  57. package/node_modules/@types/concat-stream/node_modules/@types/node/test.d.ts +80 -180
  58. package/node_modules/@types/concat-stream/node_modules/@types/node/timers/promises.d.ts +4 -4
  59. package/node_modules/@types/concat-stream/node_modules/@types/node/timers.d.ts +4 -130
  60. package/node_modules/@types/concat-stream/node_modules/@types/node/tls.d.ts +102 -177
  61. package/node_modules/@types/concat-stream/node_modules/@types/node/trace_events.d.ts +9 -9
  62. package/node_modules/@types/concat-stream/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +1 -7
  63. package/node_modules/@types/concat-stream/node_modules/@types/node/ts5.6/index.d.ts +15 -1
  64. package/node_modules/@types/concat-stream/node_modules/@types/node/ts5.7/index.d.ts +15 -1
  65. package/node_modules/@types/concat-stream/node_modules/@types/node/tty.d.ts +58 -16
  66. package/node_modules/@types/concat-stream/node_modules/@types/node/url.d.ts +54 -592
  67. package/node_modules/@types/concat-stream/node_modules/@types/node/util/types.d.ts +558 -0
  68. package/node_modules/@types/concat-stream/node_modules/@types/node/util.d.ts +120 -792
  69. package/node_modules/@types/concat-stream/node_modules/@types/node/v8.d.ts +32 -5
  70. package/node_modules/@types/concat-stream/node_modules/@types/node/vm.d.ts +13 -13
  71. package/node_modules/@types/concat-stream/node_modules/@types/node/wasi.d.ts +4 -4
  72. package/node_modules/@types/concat-stream/node_modules/@types/node/web-globals/abortcontroller.d.ts +27 -2
  73. package/node_modules/@types/concat-stream/node_modules/@types/node/web-globals/blob.d.ts +23 -0
  74. package/node_modules/@types/concat-stream/node_modules/@types/node/web-globals/console.d.ts +9 -0
  75. package/node_modules/@types/concat-stream/node_modules/@types/node/web-globals/crypto.d.ts +7 -0
  76. package/node_modules/@types/concat-stream/node_modules/@types/node/web-globals/encoding.d.ts +11 -0
  77. package/node_modules/@types/concat-stream/node_modules/@types/node/web-globals/events.d.ts +9 -0
  78. package/node_modules/@types/concat-stream/node_modules/@types/node/web-globals/fetch.d.ts +4 -0
  79. package/node_modules/@types/concat-stream/node_modules/@types/node/web-globals/importmeta.d.ts +13 -0
  80. package/node_modules/@types/concat-stream/node_modules/@types/node/web-globals/messaging.d.ts +23 -0
  81. package/node_modules/@types/concat-stream/node_modules/@types/node/web-globals/performance.d.ts +45 -0
  82. package/node_modules/@types/concat-stream/node_modules/@types/node/web-globals/streams.d.ts +93 -0
  83. package/node_modules/@types/concat-stream/node_modules/@types/node/web-globals/timers.d.ts +44 -0
  84. package/node_modules/@types/concat-stream/node_modules/@types/node/web-globals/url.d.ts +24 -0
  85. package/node_modules/@types/concat-stream/node_modules/@types/node/worker_threads.d.ts +176 -358
  86. package/node_modules/@types/concat-stream/node_modules/@types/node/zlib.d.ts +8 -71
  87. package/node_modules/@types/form-data/node_modules/@types/node/README.md +1 -1
  88. package/node_modules/@types/form-data/node_modules/@types/node/assert/strict.d.ts +5 -11
  89. package/node_modules/@types/form-data/node_modules/@types/node/assert.d.ts +9 -169
  90. package/node_modules/@types/form-data/node_modules/@types/node/async_hooks.d.ts +8 -8
  91. package/node_modules/@types/form-data/node_modules/@types/node/buffer.buffer.d.ts +1 -7
  92. package/node_modules/@types/form-data/node_modules/@types/node/buffer.d.ts +44 -168
  93. package/node_modules/@types/form-data/node_modules/@types/node/child_process.d.ts +16 -64
  94. package/node_modules/@types/form-data/node_modules/@types/node/cluster.d.ts +240 -332
  95. package/node_modules/@types/form-data/node_modules/@types/node/console.d.ts +49 -351
  96. package/node_modules/@types/form-data/node_modules/@types/node/constants.d.ts +3 -4
  97. package/node_modules/@types/form-data/node_modules/@types/node/crypto.d.ts +279 -1631
  98. package/node_modules/@types/form-data/node_modules/@types/node/dgram.d.ts +15 -51
  99. package/node_modules/@types/form-data/node_modules/@types/node/diagnostics_channel.d.ts +4 -4
  100. package/node_modules/@types/form-data/node_modules/@types/node/dns/promises.d.ts +3 -3
  101. package/node_modules/@types/form-data/node_modules/@types/node/dns.d.ts +131 -132
  102. package/node_modules/@types/form-data/node_modules/@types/node/domain.d.ts +13 -17
  103. package/node_modules/@types/form-data/node_modules/@types/node/events.d.ts +869 -791
  104. package/node_modules/@types/form-data/node_modules/@types/node/fs/promises.d.ts +7 -8
  105. package/node_modules/@types/form-data/node_modules/@types/node/fs.d.ts +417 -455
  106. package/node_modules/@types/form-data/node_modules/@types/node/globals.d.ts +6 -26
  107. package/node_modules/@types/form-data/node_modules/@types/node/globals.typedarray.d.ts +60 -0
  108. package/node_modules/@types/form-data/node_modules/@types/node/http.d.ts +263 -254
  109. package/node_modules/@types/form-data/node_modules/@types/node/http2.d.ts +528 -804
  110. package/node_modules/@types/form-data/node_modules/@types/node/https.d.ts +59 -239
  111. package/node_modules/@types/form-data/node_modules/@types/node/index.d.ts +15 -1
  112. package/node_modules/@types/form-data/node_modules/@types/node/inspector/promises.d.ts +41 -0
  113. package/node_modules/@types/form-data/node_modules/@types/node/inspector.d.ts +6 -59
  114. package/node_modules/@types/form-data/node_modules/@types/node/inspector.generated.d.ts +3 -10
  115. package/node_modules/@types/form-data/node_modules/@types/node/module.d.ts +47 -122
  116. package/node_modules/@types/form-data/node_modules/@types/node/net.d.ts +63 -184
  117. package/node_modules/@types/form-data/node_modules/@types/node/os.d.ts +6 -6
  118. package/node_modules/@types/form-data/node_modules/@types/node/package.json +2 -2
  119. package/node_modules/@types/form-data/node_modules/@types/node/path/posix.d.ts +8 -0
  120. package/node_modules/@types/form-data/node_modules/@types/node/path/win32.d.ts +8 -0
  121. package/node_modules/@types/form-data/node_modules/@types/node/path.d.ts +120 -133
  122. package/node_modules/@types/form-data/node_modules/@types/node/perf_hooks.d.ts +282 -643
  123. package/node_modules/@types/form-data/node_modules/@types/node/process.d.ts +156 -128
  124. package/node_modules/@types/form-data/node_modules/@types/node/punycode.d.ts +5 -5
  125. package/node_modules/@types/form-data/node_modules/@types/node/querystring.d.ts +4 -4
  126. package/node_modules/@types/form-data/node_modules/@types/node/quic.d.ts +910 -0
  127. package/node_modules/@types/form-data/node_modules/@types/node/readline/promises.d.ts +3 -3
  128. package/node_modules/@types/form-data/node_modules/@types/node/readline.d.ts +67 -120
  129. package/node_modules/@types/form-data/node_modules/@types/node/repl.d.ts +75 -98
  130. package/node_modules/@types/form-data/node_modules/@types/node/sea.d.ts +1 -1
  131. package/node_modules/@types/form-data/node_modules/@types/node/sqlite.d.ts +2 -2
  132. package/node_modules/@types/form-data/node_modules/@types/node/stream/consumers.d.ts +10 -10
  133. package/node_modules/@types/form-data/node_modules/@types/node/stream/promises.d.ts +136 -15
  134. package/node_modules/@types/form-data/node_modules/@types/node/stream/web.d.ts +176 -453
  135. package/node_modules/@types/form-data/node_modules/@types/node/stream.d.ts +555 -478
  136. package/node_modules/@types/form-data/node_modules/@types/node/string_decoder.d.ts +4 -4
  137. package/node_modules/@types/form-data/node_modules/@types/node/test/reporters.d.ts +96 -0
  138. package/node_modules/@types/form-data/node_modules/@types/node/test.d.ts +80 -180
  139. package/node_modules/@types/form-data/node_modules/@types/node/timers/promises.d.ts +4 -4
  140. package/node_modules/@types/form-data/node_modules/@types/node/timers.d.ts +4 -130
  141. package/node_modules/@types/form-data/node_modules/@types/node/tls.d.ts +102 -177
  142. package/node_modules/@types/form-data/node_modules/@types/node/trace_events.d.ts +9 -9
  143. package/node_modules/@types/form-data/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +1 -7
  144. package/node_modules/@types/form-data/node_modules/@types/node/ts5.6/index.d.ts +15 -1
  145. package/node_modules/@types/form-data/node_modules/@types/node/ts5.7/index.d.ts +15 -1
  146. package/node_modules/@types/form-data/node_modules/@types/node/tty.d.ts +58 -16
  147. package/node_modules/@types/form-data/node_modules/@types/node/url.d.ts +54 -592
  148. package/node_modules/@types/form-data/node_modules/@types/node/util/types.d.ts +558 -0
  149. package/node_modules/@types/form-data/node_modules/@types/node/util.d.ts +120 -792
  150. package/node_modules/@types/form-data/node_modules/@types/node/v8.d.ts +32 -5
  151. package/node_modules/@types/form-data/node_modules/@types/node/vm.d.ts +13 -13
  152. package/node_modules/@types/form-data/node_modules/@types/node/wasi.d.ts +4 -4
  153. package/node_modules/@types/form-data/node_modules/@types/node/web-globals/abortcontroller.d.ts +27 -2
  154. package/node_modules/@types/form-data/node_modules/@types/node/web-globals/blob.d.ts +23 -0
  155. package/node_modules/@types/form-data/node_modules/@types/node/web-globals/console.d.ts +9 -0
  156. package/node_modules/@types/form-data/node_modules/@types/node/web-globals/crypto.d.ts +7 -0
  157. package/node_modules/@types/form-data/node_modules/@types/node/web-globals/encoding.d.ts +11 -0
  158. package/node_modules/@types/form-data/node_modules/@types/node/web-globals/events.d.ts +9 -0
  159. package/node_modules/@types/form-data/node_modules/@types/node/web-globals/fetch.d.ts +4 -0
  160. package/node_modules/@types/form-data/node_modules/@types/node/web-globals/importmeta.d.ts +13 -0
  161. package/node_modules/@types/form-data/node_modules/@types/node/web-globals/messaging.d.ts +23 -0
  162. package/node_modules/@types/form-data/node_modules/@types/node/web-globals/performance.d.ts +45 -0
  163. package/node_modules/@types/form-data/node_modules/@types/node/web-globals/streams.d.ts +93 -0
  164. package/node_modules/@types/form-data/node_modules/@types/node/web-globals/timers.d.ts +44 -0
  165. package/node_modules/@types/form-data/node_modules/@types/node/web-globals/url.d.ts +24 -0
  166. package/node_modules/@types/form-data/node_modules/@types/node/worker_threads.d.ts +176 -358
  167. package/node_modules/@types/form-data/node_modules/@types/node/zlib.d.ts +8 -71
  168. package/package.json +4 -4
@@ -2,10 +2,10 @@
2
2
  * A stream is an abstract interface for working with streaming data in Node.js.
3
3
  * The `node:stream` module provides an API for implementing the stream interface.
4
4
  *
5
- * There are many stream objects provided by Node.js. For instance, a [request to an HTTP server](https://nodejs.org/docs/latest-v24.x/api/http.html#class-httpincomingmessage)
6
- * and [`process.stdout`](https://nodejs.org/docs/latest-v24.x/api/process.html#processstdout) are both stream instances.
5
+ * There are many stream objects provided by Node.js. For instance, a [request to an HTTP server](https://nodejs.org/docs/latest-v25.x/api/http.html#class-httpincomingmessage)
6
+ * and [`process.stdout`](https://nodejs.org/docs/latest-v25.x/api/process.html#processstdout) are both stream instances.
7
7
  *
8
- * Streams can be readable, writable, or both. All streams are instances of [`EventEmitter`](https://nodejs.org/docs/latest-v24.x/api/events.html#class-eventemitter).
8
+ * Streams can be readable, writable, or both. All streams are instances of [`EventEmitter`](https://nodejs.org/docs/latest-v25.x/api/events.html#class-eventemitter).
9
9
  *
10
10
  * To access the `node:stream` module:
11
11
  *
@@ -15,32 +15,33 @@
15
15
  *
16
16
  * The `node:stream` module is useful for creating new types of stream instances.
17
17
  * It is usually not necessary to use the `node:stream` module to consume streams.
18
- * @see [source](https://github.com/nodejs/node/blob/v24.x/lib/stream.js)
18
+ * @see [source](https://github.com/nodejs/node/blob/v25.x/lib/stream.js)
19
19
  */
20
- declare module "stream" {
20
+ declare module "node:stream" {
21
+ import { Blob } from "node:buffer";
21
22
  import { Abortable, EventEmitter } from "node:events";
22
- import { Blob as NodeBlob } from "node:buffer";
23
- import * as streamPromises from "node:stream/promises";
24
- import * as streamWeb from "node:stream/web";
25
-
26
- type ComposeFnParam = (source: any) => void;
27
-
23
+ import * as promises from "node:stream/promises";
24
+ import * as web from "node:stream/web";
28
25
  class Stream extends EventEmitter {
26
+ /**
27
+ * @since v0.9.4
28
+ */
29
29
  pipe<T extends NodeJS.WritableStream>(
30
30
  destination: T,
31
- options?: {
32
- end?: boolean | undefined;
33
- },
34
- ): T;
35
- compose<T extends NodeJS.ReadableStream>(
36
- stream: T | ComposeFnParam | Iterable<T> | AsyncIterable<T>,
37
- options?: { signal: AbortSignal },
31
+ options?: Stream.PipeOptions,
38
32
  ): T;
39
33
  }
40
34
  namespace Stream {
41
- export { Stream, streamPromises as promises };
35
+ export { promises, Stream };
42
36
  }
43
37
  namespace Stream {
38
+ interface PipeOptions {
39
+ /**
40
+ * End the writer when the reader ends.
41
+ * @default true
42
+ */
43
+ end?: boolean | undefined;
44
+ }
44
45
  interface StreamOptions<T extends Stream> extends Abortable {
45
46
  emitClose?: boolean | undefined;
46
47
  highWaterMark?: number | undefined;
@@ -53,19 +54,48 @@ declare module "stream" {
53
54
  encoding?: BufferEncoding | undefined;
54
55
  read?: ((this: T, size: number) => void) | undefined;
55
56
  }
56
- interface ArrayOptions {
57
+ interface ReadableIteratorOptions {
57
58
  /**
58
- * The maximum concurrent invocations of `fn` to call on the stream at once.
59
+ * When set to `false`, calling `return` on the async iterator,
60
+ * or exiting a `for await...of` iteration using a `break`,
61
+ * `return`, or `throw` will not destroy the stream.
62
+ * @default true
63
+ */
64
+ destroyOnReturn?: boolean | undefined;
65
+ }
66
+ interface ReadableOperatorOptions extends Abortable {
67
+ /**
68
+ * The maximum concurrent invocations of `fn` to call
69
+ * on the stream at once.
59
70
  * @default 1
60
71
  */
61
72
  concurrency?: number | undefined;
62
- /** Allows destroying the stream if the signal is aborted. */
63
- signal?: AbortSignal | undefined;
73
+ /**
74
+ * How many items to buffer while waiting for user consumption
75
+ * of the output.
76
+ * @default concurrency * 2 - 1
77
+ */
78
+ highWaterMark?: number | undefined;
79
+ }
80
+ /** @deprecated Use `ReadableOperatorOptions` instead. */
81
+ interface ArrayOptions extends ReadableOperatorOptions {}
82
+ interface ReadableToWebOptions {
83
+ strategy?: web.QueuingStrategy | undefined;
84
+ }
85
+ interface ReadableEventMap {
86
+ "close": [];
87
+ "data": [chunk: any];
88
+ "end": [];
89
+ "error": [err: Error];
90
+ "pause": [];
91
+ "readable": [];
92
+ "resume": [];
64
93
  }
65
94
  /**
66
95
  * @since v0.9.4
67
96
  */
68
97
  class Readable extends Stream implements NodeJS.ReadableStream {
98
+ constructor(options?: ReadableOptions);
69
99
  /**
70
100
  * A utility method for creating Readable Streams out of iterators.
71
101
  * @since v12.3.0, v10.17.0
@@ -78,7 +108,7 @@ declare module "stream" {
78
108
  * @since v17.0.0
79
109
  */
80
110
  static fromWeb(
81
- readableStream: streamWeb.ReadableStream,
111
+ readableStream: web.ReadableStream,
82
112
  options?: Pick<ReadableOptions, "encoding" | "highWaterMark" | "objectMode" | "signal">,
83
113
  ): Readable;
84
114
  /**
@@ -86,16 +116,14 @@ declare module "stream" {
86
116
  * @since v17.0.0
87
117
  */
88
118
  static toWeb(
89
- streamReadable: Readable,
90
- options?: {
91
- strategy?: streamWeb.QueuingStrategy | undefined;
92
- },
93
- ): streamWeb.ReadableStream;
119
+ streamReadable: NodeJS.ReadableStream,
120
+ options?: ReadableToWebOptions,
121
+ ): web.ReadableStream;
94
122
  /**
95
123
  * Returns whether the stream has been read from or cancelled.
96
124
  * @since v16.8.0
97
125
  */
98
- static isDisturbed(stream: Readable | NodeJS.ReadableStream): boolean;
126
+ static isDisturbed(stream: NodeJS.ReadableStream | web.ReadableStream): boolean;
99
127
  /**
100
128
  * Returns whether the stream was destroyed or errored before emitting `'end'`.
101
129
  * @since v16.8.0
@@ -118,16 +146,16 @@ declare module "stream" {
118
146
  */
119
147
  readonly readableEncoding: BufferEncoding | null;
120
148
  /**
121
- * Becomes `true` when [`'end'`](https://nodejs.org/docs/latest-v24.x/api/stream.html#event-end) event is emitted.
149
+ * Becomes `true` when [`'end'`](https://nodejs.org/docs/latest-v25.x/api/stream.html#event-end) event is emitted.
122
150
  * @since v12.9.0
123
151
  */
124
152
  readonly readableEnded: boolean;
125
153
  /**
126
154
  * This property reflects the current state of a `Readable` stream as described
127
- * in the [Three states](https://nodejs.org/docs/latest-v24.x/api/stream.html#three-states) section.
155
+ * in the [Three states](https://nodejs.org/docs/latest-v25.x/api/stream.html#three-states) section.
128
156
  * @since v9.4.0
129
157
  */
130
- readonly readableFlowing: boolean | null;
158
+ readableFlowing: boolean | null;
131
159
  /**
132
160
  * Returns the value of `highWaterMark` passed when creating this `Readable`.
133
161
  * @since v9.3.0
@@ -160,7 +188,6 @@ declare module "stream" {
160
188
  * @since v18.0.0
161
189
  */
162
190
  readonly errored: Error | null;
163
- constructor(opts?: ReadableOptions);
164
191
  _construct?(callback: (error?: Error | null) => void): void;
165
192
  _read(size: number): void;
166
193
  /**
@@ -444,16 +471,41 @@ declare module "stream" {
444
471
  */
445
472
  wrap(stream: NodeJS.ReadableStream): this;
446
473
  push(chunk: any, encoding?: BufferEncoding): boolean;
474
+ /**
475
+ * ```js
476
+ * import { Readable } from 'node:stream';
477
+ *
478
+ * async function* splitToWords(source) {
479
+ * for await (const chunk of source) {
480
+ * const words = String(chunk).split(' ');
481
+ *
482
+ * for (const word of words) {
483
+ * yield word;
484
+ * }
485
+ * }
486
+ * }
487
+ *
488
+ * const wordsStream = Readable.from(['this is', 'compose as operator']).compose(splitToWords);
489
+ * const words = await wordsStream.toArray();
490
+ *
491
+ * console.log(words); // prints ['this', 'is', 'compose', 'as', 'operator']
492
+ * ```
493
+ *
494
+ * See [`stream.compose`](https://nodejs.org/docs/latest-v25.x/api/stream.html#streamcomposestreams) for more information.
495
+ * @since v19.1.0, v18.13.0
496
+ * @returns a stream composed with the stream `stream`.
497
+ */
498
+ compose(
499
+ stream: NodeJS.WritableStream | web.WritableStream | web.TransformStream | ((source: any) => void),
500
+ options?: Abortable,
501
+ ): Duplex;
447
502
  /**
448
503
  * The iterator created by this method gives users the option to cancel the destruction
449
504
  * of the stream if the `for await...of` loop is exited by `return`, `break`, or `throw`,
450
505
  * or if the iterator should destroy the stream if the stream emitted an error during iteration.
451
506
  * @since v16.3.0
452
- * @param options.destroyOnReturn When set to `false`, calling `return` on the async iterator,
453
- * or exiting a `for await...of` iteration using a `break`, `return`, or `throw` will not destroy the stream.
454
- * **Default: `true`**.
455
507
  */
456
- iterator(options?: { destroyOnReturn?: boolean }): NodeJS.AsyncIterator<any>;
508
+ iterator(options?: ReadableIteratorOptions): NodeJS.AsyncIterator<any>;
457
509
  /**
458
510
  * This method allows mapping over the stream. The *fn* function will be called for every chunk in the stream.
459
511
  * If the *fn* function returns a promise - that promise will be `await`ed before being passed to the result stream.
@@ -461,7 +513,7 @@ declare module "stream" {
461
513
  * @param fn a function to map over every chunk in the stream. Async or not.
462
514
  * @returns a stream mapped with the function *fn*.
463
515
  */
464
- map(fn: (data: any, options?: Pick<ArrayOptions, "signal">) => any, options?: ArrayOptions): Readable;
516
+ map(fn: (data: any, options?: Abortable) => any, options?: ReadableOperatorOptions): Readable;
465
517
  /**
466
518
  * This method allows filtering the stream. For each chunk in the stream the *fn* function will be called
467
519
  * and if it returns a truthy value, the chunk will be passed to the result stream.
@@ -471,8 +523,8 @@ declare module "stream" {
471
523
  * @returns a stream filtered with the predicate *fn*.
472
524
  */
473
525
  filter(
474
- fn: (data: any, options?: Pick<ArrayOptions, "signal">) => boolean | Promise<boolean>,
475
- options?: ArrayOptions,
526
+ fn: (data: any, options?: Abortable) => boolean | Promise<boolean>,
527
+ options?: ReadableOperatorOptions,
476
528
  ): Readable;
477
529
  /**
478
530
  * This method allows iterating a stream. For each chunk in the stream the *fn* function will be called.
@@ -490,8 +542,8 @@ declare module "stream" {
490
542
  * @returns a promise for when the stream has finished.
491
543
  */
492
544
  forEach(
493
- fn: (data: any, options?: Pick<ArrayOptions, "signal">) => void | Promise<void>,
494
- options?: ArrayOptions,
545
+ fn: (data: any, options?: Abortable) => void | Promise<void>,
546
+ options?: Pick<ReadableOperatorOptions, "concurrency" | "signal">,
495
547
  ): Promise<void>;
496
548
  /**
497
549
  * This method allows easily obtaining the contents of a stream.
@@ -501,7 +553,7 @@ declare module "stream" {
501
553
  * @since v17.5.0
502
554
  * @returns a promise containing an array with the contents of the stream.
503
555
  */
504
- toArray(options?: Pick<ArrayOptions, "signal">): Promise<any[]>;
556
+ toArray(options?: Abortable): Promise<any[]>;
505
557
  /**
506
558
  * This method is similar to `Array.prototype.some` and calls *fn* on each chunk in the stream
507
559
  * until the awaited return value is `true` (or any truthy value). Once an *fn* call on a chunk
@@ -512,8 +564,8 @@ declare module "stream" {
512
564
  * @returns a promise evaluating to `true` if *fn* returned a truthy value for at least one of the chunks.
513
565
  */
514
566
  some(
515
- fn: (data: any, options?: Pick<ArrayOptions, "signal">) => boolean | Promise<boolean>,
516
- options?: ArrayOptions,
567
+ fn: (data: any, options?: Abortable) => boolean | Promise<boolean>,
568
+ options?: Pick<ReadableOperatorOptions, "concurrency" | "signal">,
517
569
  ): Promise<boolean>;
518
570
  /**
519
571
  * This method is similar to `Array.prototype.find` and calls *fn* on each chunk in the stream
@@ -526,12 +578,12 @@ declare module "stream" {
526
578
  * or `undefined` if no element was found.
527
579
  */
528
580
  find<T>(
529
- fn: (data: any, options?: Pick<ArrayOptions, "signal">) => data is T,
530
- options?: ArrayOptions,
581
+ fn: (data: any, options?: Abortable) => data is T,
582
+ options?: Pick<ReadableOperatorOptions, "concurrency" | "signal">,
531
583
  ): Promise<T | undefined>;
532
584
  find(
533
- fn: (data: any, options?: Pick<ArrayOptions, "signal">) => boolean | Promise<boolean>,
534
- options?: ArrayOptions,
585
+ fn: (data: any, options?: Abortable) => boolean | Promise<boolean>,
586
+ options?: Pick<ReadableOperatorOptions, "concurrency" | "signal">,
535
587
  ): Promise<any>;
536
588
  /**
537
589
  * This method is similar to `Array.prototype.every` and calls *fn* on each chunk in the stream
@@ -543,8 +595,8 @@ declare module "stream" {
543
595
  * @returns a promise evaluating to `true` if *fn* returned a truthy value for every one of the chunks.
544
596
  */
545
597
  every(
546
- fn: (data: any, options?: Pick<ArrayOptions, "signal">) => boolean | Promise<boolean>,
547
- options?: ArrayOptions,
598
+ fn: (data: any, options?: Abortable) => boolean | Promise<boolean>,
599
+ options?: Pick<ReadableOperatorOptions, "concurrency" | "signal">,
548
600
  ): Promise<boolean>;
549
601
  /**
550
602
  * This method returns a new stream by applying the given callback to each chunk of the stream
@@ -556,28 +608,24 @@ declare module "stream" {
556
608
  * @param fn a function to map over every chunk in the stream. May be async. May be a stream or generator.
557
609
  * @returns a stream flat-mapped with the function *fn*.
558
610
  */
559
- flatMap(fn: (data: any, options?: Pick<ArrayOptions, "signal">) => any, options?: ArrayOptions): Readable;
611
+ flatMap(
612
+ fn: (data: any, options?: Abortable) => any,
613
+ options?: Pick<ReadableOperatorOptions, "concurrency" | "signal">,
614
+ ): Readable;
560
615
  /**
561
616
  * This method returns a new stream with the first *limit* chunks dropped from the start.
562
617
  * @since v17.5.0
563
618
  * @param limit the number of chunks to drop from the readable.
564
619
  * @returns a stream with *limit* chunks dropped from the start.
565
620
  */
566
- drop(limit: number, options?: Pick<ArrayOptions, "signal">): Readable;
621
+ drop(limit: number, options?: Abortable): Readable;
567
622
  /**
568
623
  * This method returns a new stream with the first *limit* chunks.
569
624
  * @since v17.5.0
570
625
  * @param limit the number of chunks to take from the readable.
571
626
  * @returns a stream with *limit* chunks taken.
572
627
  */
573
- take(limit: number, options?: Pick<ArrayOptions, "signal">): Readable;
574
- /**
575
- * This method returns a new stream with chunks of the underlying stream paired with a counter
576
- * in the form `[index, chunk]`. The first index value is `0` and it increases by 1 for each chunk produced.
577
- * @since v17.5.0
578
- * @returns a stream of indexed pairs.
579
- */
580
- asIndexedPairs(options?: Pick<ArrayOptions, "signal">): Readable;
628
+ take(limit: number, options?: Abortable): Readable;
581
629
  /**
582
630
  * This method calls *fn* on each chunk of the stream in order, passing it the result from the calculation
583
631
  * on the previous element. It returns a promise for the final value of the reduction.
@@ -592,15 +640,11 @@ declare module "stream" {
592
640
  * @param initial the initial value to use in the reduction.
593
641
  * @returns a promise for the final value of the reduction.
594
642
  */
595
- reduce<T = any>(
596
- fn: (previous: any, data: any, options?: Pick<ArrayOptions, "signal">) => T,
597
- initial?: undefined,
598
- options?: Pick<ArrayOptions, "signal">,
599
- ): Promise<T>;
600
- reduce<T = any>(
601
- fn: (previous: T, data: any, options?: Pick<ArrayOptions, "signal">) => T,
643
+ reduce<T>(fn: (previous: any, data: any, options?: Abortable) => T): Promise<T>;
644
+ reduce<T>(
645
+ fn: (previous: T, data: any, options?: Abortable) => T,
602
646
  initial: T,
603
- options?: Pick<ArrayOptions, "signal">,
647
+ options?: Abortable,
604
648
  ): Promise<T>;
605
649
  _destroy(error: Error | null, callback: (error?: Error | null) => void): void;
606
650
  /**
@@ -626,73 +670,51 @@ declare module "stream" {
626
670
  * @since v20.4.0
627
671
  */
628
672
  [Symbol.asyncDispose](): Promise<void>;
629
- /**
630
- * Event emitter
631
- * The defined events on documents including:
632
- * 1. close
633
- * 2. data
634
- * 3. end
635
- * 4. error
636
- * 5. pause
637
- * 6. readable
638
- * 7. resume
639
- */
640
- addListener(event: "close", listener: () => void): this;
641
- addListener(event: "data", listener: (chunk: any) => void): this;
642
- addListener(event: "end", listener: () => void): this;
643
- addListener(event: "error", listener: (err: Error) => void): this;
644
- addListener(event: "pause", listener: () => void): this;
645
- addListener(event: "readable", listener: () => void): this;
646
- addListener(event: "resume", listener: () => void): this;
647
- addListener(event: string | symbol, listener: (...args: any[]) => void): this;
648
- emit(event: "close"): boolean;
649
- emit(event: "data", chunk: any): boolean;
650
- emit(event: "end"): boolean;
651
- emit(event: "error", err: Error): boolean;
652
- emit(event: "pause"): boolean;
653
- emit(event: "readable"): boolean;
654
- emit(event: "resume"): boolean;
655
- emit(event: string | symbol, ...args: any[]): boolean;
656
- on(event: "close", listener: () => void): this;
657
- on(event: "data", listener: (chunk: any) => void): this;
658
- on(event: "end", listener: () => void): this;
659
- on(event: "error", listener: (err: Error) => void): this;
660
- on(event: "pause", listener: () => void): this;
661
- on(event: "readable", listener: () => void): this;
662
- on(event: "resume", listener: () => void): this;
663
- on(event: string | symbol, listener: (...args: any[]) => void): this;
664
- once(event: "close", listener: () => void): this;
665
- once(event: "data", listener: (chunk: any) => void): this;
666
- once(event: "end", listener: () => void): this;
667
- once(event: "error", listener: (err: Error) => void): this;
668
- once(event: "pause", listener: () => void): this;
669
- once(event: "readable", listener: () => void): this;
670
- once(event: "resume", listener: () => void): this;
671
- once(event: string | symbol, listener: (...args: any[]) => void): this;
672
- prependListener(event: "close", listener: () => void): this;
673
- prependListener(event: "data", listener: (chunk: any) => void): this;
674
- prependListener(event: "end", listener: () => void): this;
675
- prependListener(event: "error", listener: (err: Error) => void): this;
676
- prependListener(event: "pause", listener: () => void): this;
677
- prependListener(event: "readable", listener: () => void): this;
678
- prependListener(event: "resume", listener: () => void): this;
679
- prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
680
- prependOnceListener(event: "close", listener: () => void): this;
681
- prependOnceListener(event: "data", listener: (chunk: any) => void): this;
682
- prependOnceListener(event: "end", listener: () => void): this;
683
- prependOnceListener(event: "error", listener: (err: Error) => void): this;
684
- prependOnceListener(event: "pause", listener: () => void): this;
685
- prependOnceListener(event: "readable", listener: () => void): this;
686
- prependOnceListener(event: "resume", listener: () => void): this;
687
- prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
688
- removeListener(event: "close", listener: () => void): this;
689
- removeListener(event: "data", listener: (chunk: any) => void): this;
690
- removeListener(event: "end", listener: () => void): this;
691
- removeListener(event: "error", listener: (err: Error) => void): this;
692
- removeListener(event: "pause", listener: () => void): this;
693
- removeListener(event: "readable", listener: () => void): this;
694
- removeListener(event: "resume", listener: () => void): this;
695
- removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
673
+ // #region InternalEventEmitter
674
+ addListener<E extends keyof ReadableEventMap>(
675
+ eventName: E,
676
+ listener: (...args: ReadableEventMap[E]) => void,
677
+ ): this;
678
+ addListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
679
+ emit<E extends keyof ReadableEventMap>(eventName: E, ...args: ReadableEventMap[E]): boolean;
680
+ emit(eventName: string | symbol, ...args: any[]): boolean;
681
+ listenerCount<E extends keyof ReadableEventMap>(
682
+ eventName: E,
683
+ listener?: (...args: ReadableEventMap[E]) => void,
684
+ ): number;
685
+ listenerCount(eventName: string | symbol, listener?: (...args: any[]) => void): number;
686
+ listeners<E extends keyof ReadableEventMap>(eventName: E): ((...args: ReadableEventMap[E]) => void)[];
687
+ listeners(eventName: string | symbol): ((...args: any[]) => void)[];
688
+ off<E extends keyof ReadableEventMap>(eventName: E, listener: (...args: ReadableEventMap[E]) => void): this;
689
+ off(eventName: string | symbol, listener: (...args: any[]) => void): this;
690
+ on<E extends keyof ReadableEventMap>(eventName: E, listener: (...args: ReadableEventMap[E]) => void): this;
691
+ on(eventName: string | symbol, listener: (...args: any[]) => void): this;
692
+ once<E extends keyof ReadableEventMap>(
693
+ eventName: E,
694
+ listener: (...args: ReadableEventMap[E]) => void,
695
+ ): this;
696
+ once(eventName: string | symbol, listener: (...args: any[]) => void): this;
697
+ prependListener<E extends keyof ReadableEventMap>(
698
+ eventName: E,
699
+ listener: (...args: ReadableEventMap[E]) => void,
700
+ ): this;
701
+ prependListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
702
+ prependOnceListener<E extends keyof ReadableEventMap>(
703
+ eventName: E,
704
+ listener: (...args: ReadableEventMap[E]) => void,
705
+ ): this;
706
+ prependOnceListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
707
+ rawListeners<E extends keyof ReadableEventMap>(eventName: E): ((...args: ReadableEventMap[E]) => void)[];
708
+ rawListeners(eventName: string | symbol): ((...args: any[]) => void)[];
709
+ // eslint-disable-next-line @definitelytyped/no-unnecessary-generics
710
+ removeAllListeners<E extends keyof ReadableEventMap>(eventName?: E): this;
711
+ removeAllListeners(eventName?: string | symbol): this;
712
+ removeListener<E extends keyof ReadableEventMap>(
713
+ eventName: E,
714
+ listener: (...args: ReadableEventMap[E]) => void,
715
+ ): this;
716
+ removeListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
717
+ // #endregion
696
718
  }
697
719
  interface WritableOptions<T extends Writable = Writable> extends StreamOptions<T> {
698
720
  decodeStrings?: boolean | undefined;
@@ -708,38 +730,47 @@ declare module "stream" {
708
730
  writev?:
709
731
  | ((
710
732
  this: T,
711
- chunks: Array<{
733
+ chunks: {
712
734
  chunk: any;
713
735
  encoding: BufferEncoding;
714
- }>,
736
+ }[],
715
737
  callback: (error?: Error | null) => void,
716
738
  ) => void)
717
739
  | undefined;
718
740
  final?: ((this: T, callback: (error?: Error | null) => void) => void) | undefined;
719
741
  }
742
+ interface WritableEventMap {
743
+ "close": [];
744
+ "drain": [];
745
+ "error": [err: Error];
746
+ "finish": [];
747
+ "pipe": [src: Readable];
748
+ "unpipe": [src: Readable];
749
+ }
720
750
  /**
721
751
  * @since v0.9.4
722
752
  */
723
753
  class Writable extends Stream implements NodeJS.WritableStream {
754
+ constructor(options?: WritableOptions);
724
755
  /**
725
756
  * A utility method for creating a `Writable` from a web `WritableStream`.
726
757
  * @since v17.0.0
727
758
  */
728
759
  static fromWeb(
729
- writableStream: streamWeb.WritableStream,
760
+ writableStream: web.WritableStream,
730
761
  options?: Pick<WritableOptions, "decodeStrings" | "highWaterMark" | "objectMode" | "signal">,
731
762
  ): Writable;
732
763
  /**
733
764
  * A utility method for creating a web `WritableStream` from a `Writable`.
734
765
  * @since v17.0.0
735
766
  */
736
- static toWeb(streamWritable: Writable): streamWeb.WritableStream;
767
+ static toWeb(streamWritable: NodeJS.WritableStream): web.WritableStream;
737
768
  /**
738
769
  * Is `true` if it is safe to call `writable.write()`, which means
739
770
  * the stream has not been destroyed, errored, or ended.
740
771
  * @since v11.4.0
741
772
  */
742
- readonly writable: boolean;
773
+ writable: boolean;
743
774
  /**
744
775
  * Returns whether the stream was destroyed or errored before emitting `'finish'`.
745
776
  * @since v18.0.0, v16.17.0
@@ -799,13 +830,12 @@ declare module "stream" {
799
830
  * @since v15.2.0, v14.17.0
800
831
  */
801
832
  readonly writableNeedDrain: boolean;
802
- constructor(opts?: WritableOptions);
803
833
  _write(chunk: any, encoding: BufferEncoding, callback: (error?: Error | null) => void): void;
804
834
  _writev?(
805
- chunks: Array<{
835
+ chunks: {
806
836
  chunk: any;
807
837
  encoding: BufferEncoding;
808
- }>,
838
+ }[],
809
839
  callback: (error?: Error | null) => void,
810
840
  ): void;
811
841
  _construct?(callback: (error?: Error | null) => void): void;
@@ -972,65 +1002,51 @@ declare module "stream" {
972
1002
  * @since v22.4.0, v20.16.0
973
1003
  */
974
1004
  [Symbol.asyncDispose](): Promise<void>;
975
- /**
976
- * Event emitter
977
- * The defined events on documents including:
978
- * 1. close
979
- * 2. drain
980
- * 3. error
981
- * 4. finish
982
- * 5. pipe
983
- * 6. unpipe
984
- */
985
- addListener(event: "close", listener: () => void): this;
986
- addListener(event: "drain", listener: () => void): this;
987
- addListener(event: "error", listener: (err: Error) => void): this;
988
- addListener(event: "finish", listener: () => void): this;
989
- addListener(event: "pipe", listener: (src: Readable) => void): this;
990
- addListener(event: "unpipe", listener: (src: Readable) => void): this;
991
- addListener(event: string | symbol, listener: (...args: any[]) => void): this;
992
- emit(event: "close"): boolean;
993
- emit(event: "drain"): boolean;
994
- emit(event: "error", err: Error): boolean;
995
- emit(event: "finish"): boolean;
996
- emit(event: "pipe", src: Readable): boolean;
997
- emit(event: "unpipe", src: Readable): boolean;
998
- emit(event: string | symbol, ...args: any[]): boolean;
999
- on(event: "close", listener: () => void): this;
1000
- on(event: "drain", listener: () => void): this;
1001
- on(event: "error", listener: (err: Error) => void): this;
1002
- on(event: "finish", listener: () => void): this;
1003
- on(event: "pipe", listener: (src: Readable) => void): this;
1004
- on(event: "unpipe", listener: (src: Readable) => void): this;
1005
- on(event: string | symbol, listener: (...args: any[]) => void): this;
1006
- once(event: "close", listener: () => void): this;
1007
- once(event: "drain", listener: () => void): this;
1008
- once(event: "error", listener: (err: Error) => void): this;
1009
- once(event: "finish", listener: () => void): this;
1010
- once(event: "pipe", listener: (src: Readable) => void): this;
1011
- once(event: "unpipe", listener: (src: Readable) => void): this;
1012
- once(event: string | symbol, listener: (...args: any[]) => void): this;
1013
- prependListener(event: "close", listener: () => void): this;
1014
- prependListener(event: "drain", listener: () => void): this;
1015
- prependListener(event: "error", listener: (err: Error) => void): this;
1016
- prependListener(event: "finish", listener: () => void): this;
1017
- prependListener(event: "pipe", listener: (src: Readable) => void): this;
1018
- prependListener(event: "unpipe", listener: (src: Readable) => void): this;
1019
- prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
1020
- prependOnceListener(event: "close", listener: () => void): this;
1021
- prependOnceListener(event: "drain", listener: () => void): this;
1022
- prependOnceListener(event: "error", listener: (err: Error) => void): this;
1023
- prependOnceListener(event: "finish", listener: () => void): this;
1024
- prependOnceListener(event: "pipe", listener: (src: Readable) => void): this;
1025
- prependOnceListener(event: "unpipe", listener: (src: Readable) => void): this;
1026
- prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
1027
- removeListener(event: "close", listener: () => void): this;
1028
- removeListener(event: "drain", listener: () => void): this;
1029
- removeListener(event: "error", listener: (err: Error) => void): this;
1030
- removeListener(event: "finish", listener: () => void): this;
1031
- removeListener(event: "pipe", listener: (src: Readable) => void): this;
1032
- removeListener(event: "unpipe", listener: (src: Readable) => void): this;
1033
- removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
1005
+ // #region InternalEventEmitter
1006
+ addListener<E extends keyof WritableEventMap>(
1007
+ eventName: E,
1008
+ listener: (...args: WritableEventMap[E]) => void,
1009
+ ): this;
1010
+ addListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
1011
+ emit<E extends keyof WritableEventMap>(eventName: E, ...args: WritableEventMap[E]): boolean;
1012
+ emit(eventName: string | symbol, ...args: any[]): boolean;
1013
+ listenerCount<E extends keyof WritableEventMap>(
1014
+ eventName: E,
1015
+ listener?: (...args: WritableEventMap[E]) => void,
1016
+ ): number;
1017
+ listenerCount(eventName: string | symbol, listener?: (...args: any[]) => void): number;
1018
+ listeners<E extends keyof WritableEventMap>(eventName: E): ((...args: WritableEventMap[E]) => void)[];
1019
+ listeners(eventName: string | symbol): ((...args: any[]) => void)[];
1020
+ off<E extends keyof WritableEventMap>(eventName: E, listener: (...args: WritableEventMap[E]) => void): this;
1021
+ off(eventName: string | symbol, listener: (...args: any[]) => void): this;
1022
+ on<E extends keyof WritableEventMap>(eventName: E, listener: (...args: WritableEventMap[E]) => void): this;
1023
+ on(eventName: string | symbol, listener: (...args: any[]) => void): this;
1024
+ once<E extends keyof WritableEventMap>(
1025
+ eventName: E,
1026
+ listener: (...args: WritableEventMap[E]) => void,
1027
+ ): this;
1028
+ once(eventName: string | symbol, listener: (...args: any[]) => void): this;
1029
+ prependListener<E extends keyof WritableEventMap>(
1030
+ eventName: E,
1031
+ listener: (...args: WritableEventMap[E]) => void,
1032
+ ): this;
1033
+ prependListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
1034
+ prependOnceListener<E extends keyof WritableEventMap>(
1035
+ eventName: E,
1036
+ listener: (...args: WritableEventMap[E]) => void,
1037
+ ): this;
1038
+ prependOnceListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
1039
+ rawListeners<E extends keyof WritableEventMap>(eventName: E): ((...args: WritableEventMap[E]) => void)[];
1040
+ rawListeners(eventName: string | symbol): ((...args: any[]) => void)[];
1041
+ // eslint-disable-next-line @definitelytyped/no-unnecessary-generics
1042
+ removeAllListeners<E extends keyof WritableEventMap>(eventName?: E): this;
1043
+ removeAllListeners(eventName?: string | symbol): this;
1044
+ removeListener<E extends keyof WritableEventMap>(
1045
+ eventName: E,
1046
+ listener: (...args: WritableEventMap[E]) => void,
1047
+ ): this;
1048
+ removeListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
1049
+ // #endregion
1034
1050
  }
1035
1051
  interface DuplexOptions<T extends Duplex = Duplex> extends ReadableOptions<T>, WritableOptions<T> {
1036
1052
  allowHalfOpen?: boolean | undefined;
@@ -1040,6 +1056,7 @@ declare module "stream" {
1040
1056
  writableHighWaterMark?: number | undefined;
1041
1057
  writableCorked?: number | undefined;
1042
1058
  }
1059
+ interface DuplexEventMap extends ReadableEventMap, WritableEventMap {}
1043
1060
  /**
1044
1061
  * Duplex streams are streams that implement both the `Readable` and `Writable` interfaces.
1045
1062
  *
@@ -1051,17 +1068,7 @@ declare module "stream" {
1051
1068
  * @since v0.9.4
1052
1069
  */
1053
1070
  class Duplex extends Stream implements NodeJS.ReadWriteStream {
1054
- /**
1055
- * If `false` then the stream will automatically end the writable side when the
1056
- * readable side ends. Set initially by the `allowHalfOpen` constructor option,
1057
- * which defaults to `true`.
1058
- *
1059
- * This can be changed manually to change the half-open behavior of an existing
1060
- * `Duplex` stream instance, but must be changed before the `'end'` event is emitted.
1061
- * @since v0.9.4
1062
- */
1063
- allowHalfOpen: boolean;
1064
- constructor(opts?: DuplexOptions);
1071
+ constructor(options?: DuplexOptions);
1065
1072
  /**
1066
1073
  * A utility method for creating duplex streams.
1067
1074
  *
@@ -1085,137 +1092,87 @@ declare module "stream" {
1085
1092
  */
1086
1093
  static from(
1087
1094
  src:
1088
- | Stream
1089
- | NodeBlob
1090
- | ArrayBuffer
1095
+ | NodeJS.ReadableStream
1096
+ | NodeJS.WritableStream
1097
+ | Blob
1091
1098
  | string
1092
1099
  | Iterable<any>
1093
1100
  | AsyncIterable<any>
1094
- | AsyncGeneratorFunction
1101
+ | ((source: AsyncIterable<any>) => AsyncIterable<any>)
1102
+ | ((source: AsyncIterable<any>) => Promise<void>)
1095
1103
  | Promise<any>
1096
- | Object,
1104
+ | web.ReadableWritablePair
1105
+ | web.ReadableStream
1106
+ | web.WritableStream,
1097
1107
  ): Duplex;
1098
1108
  /**
1099
1109
  * A utility method for creating a web `ReadableStream` and `WritableStream` from a `Duplex`.
1100
1110
  * @since v17.0.0
1101
1111
  */
1102
- static toWeb(streamDuplex: Duplex): {
1103
- readable: streamWeb.ReadableStream;
1104
- writable: streamWeb.WritableStream;
1105
- };
1112
+ static toWeb(streamDuplex: NodeJS.ReadWriteStream): web.ReadableWritablePair;
1106
1113
  /**
1107
1114
  * A utility method for creating a `Duplex` from a web `ReadableStream` and `WritableStream`.
1108
1115
  * @since v17.0.0
1109
1116
  */
1110
1117
  static fromWeb(
1111
- duplexStream: {
1112
- readable: streamWeb.ReadableStream;
1113
- writable: streamWeb.WritableStream;
1114
- },
1118
+ duplexStream: web.ReadableWritablePair,
1115
1119
  options?: Pick<
1116
1120
  DuplexOptions,
1117
1121
  "allowHalfOpen" | "decodeStrings" | "encoding" | "highWaterMark" | "objectMode" | "signal"
1118
1122
  >,
1119
1123
  ): Duplex;
1120
1124
  /**
1121
- * Event emitter
1122
- * The defined events on documents including:
1123
- * 1. close
1124
- * 2. data
1125
- * 3. drain
1126
- * 4. end
1127
- * 5. error
1128
- * 6. finish
1129
- * 7. pause
1130
- * 8. pipe
1131
- * 9. readable
1132
- * 10. resume
1133
- * 11. unpipe
1134
- */
1135
- addListener(event: "close", listener: () => void): this;
1136
- addListener(event: "data", listener: (chunk: any) => void): this;
1137
- addListener(event: "drain", listener: () => void): this;
1138
- addListener(event: "end", listener: () => void): this;
1139
- addListener(event: "error", listener: (err: Error) => void): this;
1140
- addListener(event: "finish", listener: () => void): this;
1141
- addListener(event: "pause", listener: () => void): this;
1142
- addListener(event: "pipe", listener: (src: Readable) => void): this;
1143
- addListener(event: "readable", listener: () => void): this;
1144
- addListener(event: "resume", listener: () => void): this;
1145
- addListener(event: "unpipe", listener: (src: Readable) => void): this;
1146
- addListener(event: string | symbol, listener: (...args: any[]) => void): this;
1147
- emit(event: "close"): boolean;
1148
- emit(event: "data", chunk: any): boolean;
1149
- emit(event: "drain"): boolean;
1150
- emit(event: "end"): boolean;
1151
- emit(event: "error", err: Error): boolean;
1152
- emit(event: "finish"): boolean;
1153
- emit(event: "pause"): boolean;
1154
- emit(event: "pipe", src: Readable): boolean;
1155
- emit(event: "readable"): boolean;
1156
- emit(event: "resume"): boolean;
1157
- emit(event: "unpipe", src: Readable): boolean;
1158
- emit(event: string | symbol, ...args: any[]): boolean;
1159
- on(event: "close", listener: () => void): this;
1160
- on(event: "data", listener: (chunk: any) => void): this;
1161
- on(event: "drain", listener: () => void): this;
1162
- on(event: "end", listener: () => void): this;
1163
- on(event: "error", listener: (err: Error) => void): this;
1164
- on(event: "finish", listener: () => void): this;
1165
- on(event: "pause", listener: () => void): this;
1166
- on(event: "pipe", listener: (src: Readable) => void): this;
1167
- on(event: "readable", listener: () => void): this;
1168
- on(event: "resume", listener: () => void): this;
1169
- on(event: "unpipe", listener: (src: Readable) => void): this;
1170
- on(event: string | symbol, listener: (...args: any[]) => void): this;
1171
- once(event: "close", listener: () => void): this;
1172
- once(event: "data", listener: (chunk: any) => void): this;
1173
- once(event: "drain", listener: () => void): this;
1174
- once(event: "end", listener: () => void): this;
1175
- once(event: "error", listener: (err: Error) => void): this;
1176
- once(event: "finish", listener: () => void): this;
1177
- once(event: "pause", listener: () => void): this;
1178
- once(event: "pipe", listener: (src: Readable) => void): this;
1179
- once(event: "readable", listener: () => void): this;
1180
- once(event: "resume", listener: () => void): this;
1181
- once(event: "unpipe", listener: (src: Readable) => void): this;
1182
- once(event: string | symbol, listener: (...args: any[]) => void): this;
1183
- prependListener(event: "close", listener: () => void): this;
1184
- prependListener(event: "data", listener: (chunk: any) => void): this;
1185
- prependListener(event: "drain", listener: () => void): this;
1186
- prependListener(event: "end", listener: () => void): this;
1187
- prependListener(event: "error", listener: (err: Error) => void): this;
1188
- prependListener(event: "finish", listener: () => void): this;
1189
- prependListener(event: "pause", listener: () => void): this;
1190
- prependListener(event: "pipe", listener: (src: Readable) => void): this;
1191
- prependListener(event: "readable", listener: () => void): this;
1192
- prependListener(event: "resume", listener: () => void): this;
1193
- prependListener(event: "unpipe", listener: (src: Readable) => void): this;
1194
- prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
1195
- prependOnceListener(event: "close", listener: () => void): this;
1196
- prependOnceListener(event: "data", listener: (chunk: any) => void): this;
1197
- prependOnceListener(event: "drain", listener: () => void): this;
1198
- prependOnceListener(event: "end", listener: () => void): this;
1199
- prependOnceListener(event: "error", listener: (err: Error) => void): this;
1200
- prependOnceListener(event: "finish", listener: () => void): this;
1201
- prependOnceListener(event: "pause", listener: () => void): this;
1202
- prependOnceListener(event: "pipe", listener: (src: Readable) => void): this;
1203
- prependOnceListener(event: "readable", listener: () => void): this;
1204
- prependOnceListener(event: "resume", listener: () => void): this;
1205
- prependOnceListener(event: "unpipe", listener: (src: Readable) => void): this;
1206
- prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
1207
- removeListener(event: "close", listener: () => void): this;
1208
- removeListener(event: "data", listener: (chunk: any) => void): this;
1209
- removeListener(event: "drain", listener: () => void): this;
1210
- removeListener(event: "end", listener: () => void): this;
1211
- removeListener(event: "error", listener: (err: Error) => void): this;
1212
- removeListener(event: "finish", listener: () => void): this;
1213
- removeListener(event: "pause", listener: () => void): this;
1214
- removeListener(event: "pipe", listener: (src: Readable) => void): this;
1215
- removeListener(event: "readable", listener: () => void): this;
1216
- removeListener(event: "resume", listener: () => void): this;
1217
- removeListener(event: "unpipe", listener: (src: Readable) => void): this;
1218
- removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
1125
+ * If `false` then the stream will automatically end the writable side when the
1126
+ * readable side ends. Set initially by the `allowHalfOpen` constructor option,
1127
+ * which defaults to `true`.
1128
+ *
1129
+ * This can be changed manually to change the half-open behavior of an existing
1130
+ * `Duplex` stream instance, but must be changed before the `'end'` event is emitted.
1131
+ * @since v0.9.4
1132
+ */
1133
+ allowHalfOpen: boolean;
1134
+ // #region InternalEventEmitter
1135
+ addListener<E extends keyof DuplexEventMap>(
1136
+ eventName: E,
1137
+ listener: (...args: DuplexEventMap[E]) => void,
1138
+ ): this;
1139
+ addListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
1140
+ emit<E extends keyof DuplexEventMap>(eventName: E, ...args: DuplexEventMap[E]): boolean;
1141
+ emit(eventName: string | symbol, ...args: any[]): boolean;
1142
+ listenerCount<E extends keyof DuplexEventMap>(
1143
+ eventName: E,
1144
+ listener?: (...args: DuplexEventMap[E]) => void,
1145
+ ): number;
1146
+ listenerCount(eventName: string | symbol, listener?: (...args: any[]) => void): number;
1147
+ listeners<E extends keyof DuplexEventMap>(eventName: E): ((...args: DuplexEventMap[E]) => void)[];
1148
+ listeners(eventName: string | symbol): ((...args: any[]) => void)[];
1149
+ off<E extends keyof DuplexEventMap>(eventName: E, listener: (...args: DuplexEventMap[E]) => void): this;
1150
+ off(eventName: string | symbol, listener: (...args: any[]) => void): this;
1151
+ on<E extends keyof DuplexEventMap>(eventName: E, listener: (...args: DuplexEventMap[E]) => void): this;
1152
+ on(eventName: string | symbol, listener: (...args: any[]) => void): this;
1153
+ once<E extends keyof DuplexEventMap>(eventName: E, listener: (...args: DuplexEventMap[E]) => void): this;
1154
+ once(eventName: string | symbol, listener: (...args: any[]) => void): this;
1155
+ prependListener<E extends keyof DuplexEventMap>(
1156
+ eventName: E,
1157
+ listener: (...args: DuplexEventMap[E]) => void,
1158
+ ): this;
1159
+ prependListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
1160
+ prependOnceListener<E extends keyof DuplexEventMap>(
1161
+ eventName: E,
1162
+ listener: (...args: DuplexEventMap[E]) => void,
1163
+ ): this;
1164
+ prependOnceListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
1165
+ rawListeners<E extends keyof DuplexEventMap>(eventName: E): ((...args: DuplexEventMap[E]) => void)[];
1166
+ rawListeners(eventName: string | symbol): ((...args: any[]) => void)[];
1167
+ // eslint-disable-next-line @definitelytyped/no-unnecessary-generics
1168
+ removeAllListeners<E extends keyof DuplexEventMap>(eventName?: E): this;
1169
+ removeAllListeners(eventName?: string | symbol): this;
1170
+ removeListener<E extends keyof DuplexEventMap>(
1171
+ eventName: E,
1172
+ listener: (...args: DuplexEventMap[E]) => void,
1173
+ ): this;
1174
+ removeListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
1175
+ // #endregion
1219
1176
  }
1220
1177
  interface Duplex extends Readable, Writable {}
1221
1178
  /**
@@ -1256,7 +1213,7 @@ declare module "stream" {
1256
1213
  * @since v0.9.4
1257
1214
  */
1258
1215
  class Transform extends Duplex {
1259
- constructor(opts?: TransformOptions);
1216
+ constructor(options?: TransformOptions);
1260
1217
  _transform(chunk: any, encoding: BufferEncoding, callback: TransformCallback): void;
1261
1218
  _flush(callback: TransformCallback): void;
1262
1219
  }
@@ -1344,7 +1301,9 @@ declare module "stream" {
1344
1301
  * @param signal A signal representing possible cancellation
1345
1302
  * @param stream A stream to attach a signal to.
1346
1303
  */
1347
- function addAbortSignal<T extends Stream>(signal: AbortSignal, stream: T): T;
1304
+ function addAbortSignal<
1305
+ T extends NodeJS.ReadableStream | NodeJS.WritableStream | web.ReadableStream | web.WritableStream,
1306
+ >(signal: AbortSignal, stream: T): T;
1348
1307
  /**
1349
1308
  * Returns the default highWaterMark used by streams.
1350
1309
  * Defaults to `65536` (64 KiB), or `16` for `objectMode`.
@@ -1388,7 +1347,7 @@ declare module "stream" {
1388
1347
  * Especially useful in error handling scenarios where a stream is destroyed
1389
1348
  * prematurely (like an aborted HTTP request), and will not emit `'end'` or `'finish'`.
1390
1349
  *
1391
- * The `finished` API provides [`promise version`](https://nodejs.org/docs/latest-v24.x/api/stream.html#streamfinishedstream-options).
1350
+ * The `finished` API provides [`promise version`](https://nodejs.org/docs/latest-v25.x/api/stream.html#streamfinishedstream-options).
1392
1351
  *
1393
1352
  * `stream.finished()` leaves dangling event listeners (in particular `'error'`, `'end'`, `'finish'` and `'close'`) after `callback` has been
1394
1353
  * invoked. The reason for this is so that unexpected `'error'` events (due to
@@ -1408,46 +1367,57 @@ declare module "stream" {
1408
1367
  * @returns A cleanup function which removes all registered listeners.
1409
1368
  */
1410
1369
  function finished(
1411
- stream: NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream,
1370
+ stream: NodeJS.ReadableStream | NodeJS.WritableStream | web.ReadableStream | web.WritableStream,
1412
1371
  options: FinishedOptions,
1413
1372
  callback: (err?: NodeJS.ErrnoException | null) => void,
1414
1373
  ): () => void;
1415
1374
  function finished(
1416
- stream: NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream,
1375
+ stream: NodeJS.ReadableStream | NodeJS.WritableStream | web.ReadableStream | web.WritableStream,
1417
1376
  callback: (err?: NodeJS.ErrnoException | null) => void,
1418
1377
  ): () => void;
1419
1378
  namespace finished {
1420
- function __promisify__(
1421
- stream: NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream,
1422
- options?: FinishedOptions,
1423
- ): Promise<void>;
1379
+ import __promisify__ = promises.finished;
1380
+ export { __promisify__ };
1424
1381
  }
1425
- type PipelineSourceFunction<T> = () => Iterable<T> | AsyncIterable<T>;
1426
- type PipelineSource<T> = Iterable<T> | AsyncIterable<T> | NodeJS.ReadableStream | PipelineSourceFunction<T>;
1427
- type PipelineTransform<S extends PipelineTransformSource<any>, U> =
1382
+ type PipelineSourceFunction<O> = (options?: Abortable) => Iterable<O> | AsyncIterable<O>;
1383
+ type PipelineSource<O> =
1384
+ | NodeJS.ReadableStream
1385
+ | web.ReadableStream<O>
1386
+ | web.TransformStream<any, O>
1387
+ | Iterable<O>
1388
+ | AsyncIterable<O>
1389
+ | PipelineSourceFunction<O>;
1390
+ type PipelineSourceArgument<T> = (T extends (...args: any[]) => infer R ? R : T) extends infer S
1391
+ ? S extends web.TransformStream<any, infer O> ? web.ReadableStream<O> : S
1392
+ : never;
1393
+ type PipelineTransformGenerator<S extends PipelineTransformSource<any>, O> = (
1394
+ source: PipelineSourceArgument<S>,
1395
+ options?: Abortable,
1396
+ ) => AsyncIterable<O>;
1397
+ type PipelineTransformStreams<I, O> =
1428
1398
  | NodeJS.ReadWriteStream
1429
- | ((
1430
- source: S extends (...args: any[]) => Iterable<infer ST> | AsyncIterable<infer ST> ? AsyncIterable<ST>
1431
- : S,
1432
- ) => AsyncIterable<U>);
1433
- type PipelineTransformSource<T> = PipelineSource<T> | PipelineTransform<any, T>;
1434
- type PipelineDestinationIterableFunction<T> = (source: AsyncIterable<T>) => AsyncIterable<any>;
1435
- type PipelineDestinationPromiseFunction<T, P> = (source: AsyncIterable<T>) => Promise<P>;
1436
- type PipelineDestination<S extends PipelineTransformSource<any>, P> = S extends
1437
- PipelineTransformSource<infer ST> ?
1399
+ | web.TransformStream<I, O>;
1400
+ type PipelineTransform<S extends PipelineTransformSource<any>, O> = S extends
1401
+ PipelineSource<infer I> | PipelineTransformStreams<any, infer I> | ((...args: any[]) => infer I)
1402
+ ? PipelineTransformStreams<I, O> | PipelineTransformGenerator<S, O>
1403
+ : never;
1404
+ type PipelineTransformSource<O> = PipelineSource<O> | PipelineTransform<any, O>;
1405
+ type PipelineDestinationFunction<S extends PipelineTransformSource<any>, R> = (
1406
+ source: PipelineSourceArgument<S>,
1407
+ options?: Abortable,
1408
+ ) => R;
1409
+ type PipelineDestination<S extends PipelineTransformSource<any>, R> = S extends
1410
+ PipelineSource<infer I> | PipelineTransform<any, infer I> ?
1438
1411
  | NodeJS.WritableStream
1439
- | PipelineDestinationIterableFunction<ST>
1440
- | PipelineDestinationPromiseFunction<ST, P>
1412
+ | web.WritableStream<I>
1413
+ | web.TransformStream<I, any>
1414
+ | PipelineDestinationFunction<S, R>
1441
1415
  : never;
1442
- type PipelineCallback<S extends PipelineDestination<any, any>> = S extends
1443
- PipelineDestinationPromiseFunction<any, infer P> ? (err: NodeJS.ErrnoException | null, value: P) => void
1444
- : (err: NodeJS.ErrnoException | null) => void;
1445
- type PipelinePromise<S extends PipelineDestination<any, any>> = S extends
1446
- PipelineDestinationPromiseFunction<any, infer P> ? Promise<P> : Promise<void>;
1447
- interface PipelineOptions {
1448
- signal?: AbortSignal | undefined;
1449
- end?: boolean | undefined;
1450
- }
1416
+ type PipelineCallback<S extends PipelineDestination<any, any>> = (
1417
+ err: NodeJS.ErrnoException | null,
1418
+ value: S extends (...args: any[]) => PromiseLike<infer R> ? R : undefined,
1419
+ ) => void;
1420
+ type PipelineResult<S extends PipelineDestination<any, any>> = S extends NodeJS.WritableStream ? S : Duplex;
1451
1421
  /**
1452
1422
  * A module method to pipe between streams and generators forwarding errors and
1453
1423
  * properly cleaning up and provide a callback when the pipeline is complete.
@@ -1476,7 +1446,7 @@ declare module "stream" {
1476
1446
  * );
1477
1447
  * ```
1478
1448
  *
1479
- * The `pipeline` API provides a [`promise version`](https://nodejs.org/docs/latest-v24.x/api/stream.html#streampipelinesource-transforms-destination-options).
1449
+ * The `pipeline` API provides a [`promise version`](https://nodejs.org/docs/latest-v25.x/api/stream.html#streampipelinesource-transforms-destination-options).
1480
1450
  *
1481
1451
  * `stream.pipeline()` will call `stream.destroy(err)` on all streams except:
1482
1452
  *
@@ -1513,171 +1483,278 @@ declare module "stream" {
1513
1483
  * @since v10.0.0
1514
1484
  * @param callback Called when the pipeline is fully done.
1515
1485
  */
1516
- function pipeline<A extends PipelineSource<any>, B extends PipelineDestination<A, any>>(
1517
- source: A,
1518
- destination: B,
1519
- callback: PipelineCallback<B>,
1520
- ): B extends NodeJS.WritableStream ? B : NodeJS.WritableStream;
1486
+ function pipeline<S extends PipelineSource<any>, D extends PipelineDestination<S, any>>(
1487
+ source: S,
1488
+ destination: D,
1489
+ callback: PipelineCallback<D>,
1490
+ ): PipelineResult<D>;
1521
1491
  function pipeline<
1522
- A extends PipelineSource<any>,
1523
- T1 extends PipelineTransform<A, any>,
1524
- B extends PipelineDestination<T1, any>,
1492
+ S extends PipelineSource<any>,
1493
+ T extends PipelineTransform<S, any>,
1494
+ D extends PipelineDestination<T, any>,
1525
1495
  >(
1526
- source: A,
1527
- transform1: T1,
1528
- destination: B,
1529
- callback: PipelineCallback<B>,
1530
- ): B extends NodeJS.WritableStream ? B : NodeJS.WritableStream;
1496
+ source: S,
1497
+ transform: T,
1498
+ destination: D,
1499
+ callback: PipelineCallback<D>,
1500
+ ): PipelineResult<D>;
1531
1501
  function pipeline<
1532
- A extends PipelineSource<any>,
1533
- T1 extends PipelineTransform<A, any>,
1502
+ S extends PipelineSource<any>,
1503
+ T1 extends PipelineTransform<S, any>,
1534
1504
  T2 extends PipelineTransform<T1, any>,
1535
- B extends PipelineDestination<T2, any>,
1505
+ D extends PipelineDestination<T2, any>,
1536
1506
  >(
1537
- source: A,
1507
+ source: S,
1538
1508
  transform1: T1,
1539
1509
  transform2: T2,
1540
- destination: B,
1541
- callback: PipelineCallback<B>,
1542
- ): B extends NodeJS.WritableStream ? B : NodeJS.WritableStream;
1510
+ destination: D,
1511
+ callback: PipelineCallback<D>,
1512
+ ): PipelineResult<D>;
1543
1513
  function pipeline<
1544
- A extends PipelineSource<any>,
1545
- T1 extends PipelineTransform<A, any>,
1514
+ S extends PipelineSource<any>,
1515
+ T1 extends PipelineTransform<S, any>,
1546
1516
  T2 extends PipelineTransform<T1, any>,
1547
1517
  T3 extends PipelineTransform<T2, any>,
1548
- B extends PipelineDestination<T3, any>,
1518
+ D extends PipelineDestination<T3, any>,
1549
1519
  >(
1550
- source: A,
1520
+ source: S,
1551
1521
  transform1: T1,
1552
1522
  transform2: T2,
1553
1523
  transform3: T3,
1554
- destination: B,
1555
- callback: PipelineCallback<B>,
1556
- ): B extends NodeJS.WritableStream ? B : NodeJS.WritableStream;
1524
+ destination: D,
1525
+ callback: PipelineCallback<D>,
1526
+ ): PipelineResult<D>;
1557
1527
  function pipeline<
1558
- A extends PipelineSource<any>,
1559
- T1 extends PipelineTransform<A, any>,
1528
+ S extends PipelineSource<any>,
1529
+ T1 extends PipelineTransform<S, any>,
1560
1530
  T2 extends PipelineTransform<T1, any>,
1561
1531
  T3 extends PipelineTransform<T2, any>,
1562
1532
  T4 extends PipelineTransform<T3, any>,
1563
- B extends PipelineDestination<T4, any>,
1533
+ D extends PipelineDestination<T4, any>,
1564
1534
  >(
1565
- source: A,
1535
+ source: S,
1566
1536
  transform1: T1,
1567
1537
  transform2: T2,
1568
1538
  transform3: T3,
1569
1539
  transform4: T4,
1570
- destination: B,
1571
- callback: PipelineCallback<B>,
1572
- ): B extends NodeJS.WritableStream ? B : NodeJS.WritableStream;
1540
+ destination: D,
1541
+ callback: PipelineCallback<D>,
1542
+ ): PipelineResult<D>;
1573
1543
  function pipeline(
1574
- streams: ReadonlyArray<NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream>,
1544
+ streams: ReadonlyArray<PipelineSource<any> | PipelineTransform<any, any> | PipelineDestination<any, any>>,
1575
1545
  callback: (err: NodeJS.ErrnoException | null) => void,
1576
1546
  ): NodeJS.WritableStream;
1577
1547
  function pipeline(
1578
- stream1: NodeJS.ReadableStream,
1579
- stream2: NodeJS.ReadWriteStream | NodeJS.WritableStream,
1580
- ...streams: Array<
1581
- NodeJS.ReadWriteStream | NodeJS.WritableStream | ((err: NodeJS.ErrnoException | null) => void)
1582
- >
1548
+ ...streams: [
1549
+ ...[PipelineSource<any>, ...PipelineTransform<any, any>[], PipelineDestination<any, any>],
1550
+ callback: ((err: NodeJS.ErrnoException | null) => void),
1551
+ ]
1583
1552
  ): NodeJS.WritableStream;
1584
1553
  namespace pipeline {
1585
- function __promisify__<A extends PipelineSource<any>, B extends PipelineDestination<A, any>>(
1586
- source: A,
1587
- destination: B,
1588
- options?: PipelineOptions,
1589
- ): PipelinePromise<B>;
1590
- function __promisify__<
1591
- A extends PipelineSource<any>,
1592
- T1 extends PipelineTransform<A, any>,
1593
- B extends PipelineDestination<T1, any>,
1594
- >(
1595
- source: A,
1596
- transform1: T1,
1597
- destination: B,
1598
- options?: PipelineOptions,
1599
- ): PipelinePromise<B>;
1600
- function __promisify__<
1601
- A extends PipelineSource<any>,
1602
- T1 extends PipelineTransform<A, any>,
1603
- T2 extends PipelineTransform<T1, any>,
1604
- B extends PipelineDestination<T2, any>,
1605
- >(
1606
- source: A,
1607
- transform1: T1,
1608
- transform2: T2,
1609
- destination: B,
1610
- options?: PipelineOptions,
1611
- ): PipelinePromise<B>;
1612
- function __promisify__<
1613
- A extends PipelineSource<any>,
1614
- T1 extends PipelineTransform<A, any>,
1615
- T2 extends PipelineTransform<T1, any>,
1616
- T3 extends PipelineTransform<T2, any>,
1617
- B extends PipelineDestination<T3, any>,
1618
- >(
1619
- source: A,
1620
- transform1: T1,
1621
- transform2: T2,
1622
- transform3: T3,
1623
- destination: B,
1624
- options?: PipelineOptions,
1625
- ): PipelinePromise<B>;
1626
- function __promisify__<
1627
- A extends PipelineSource<any>,
1628
- T1 extends PipelineTransform<A, any>,
1629
- T2 extends PipelineTransform<T1, any>,
1630
- T3 extends PipelineTransform<T2, any>,
1631
- T4 extends PipelineTransform<T3, any>,
1632
- B extends PipelineDestination<T4, any>,
1633
- >(
1634
- source: A,
1635
- transform1: T1,
1636
- transform2: T2,
1637
- transform3: T3,
1638
- transform4: T4,
1639
- destination: B,
1640
- options?: PipelineOptions,
1641
- ): PipelinePromise<B>;
1642
- function __promisify__(
1643
- streams: ReadonlyArray<NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream>,
1644
- options?: PipelineOptions,
1645
- ): Promise<void>;
1646
- function __promisify__(
1647
- stream1: NodeJS.ReadableStream,
1648
- stream2: NodeJS.ReadWriteStream | NodeJS.WritableStream,
1649
- ...streams: Array<NodeJS.ReadWriteStream | NodeJS.WritableStream | PipelineOptions>
1650
- ): Promise<void>;
1554
+ import __promisify__ = promises.pipeline;
1555
+ export { __promisify__ };
1651
1556
  }
1652
- // TODO: this interface never existed; remove in next major
1653
- interface Pipe {
1654
- close(): void;
1655
- hasRef(): boolean;
1656
- ref(): void;
1657
- unref(): void;
1658
- }
1659
- // TODO: these should all take webstream arguments
1557
+ type ComposeSource<O> =
1558
+ | NodeJS.ReadableStream
1559
+ | web.ReadableStream<O>
1560
+ | Iterable<O>
1561
+ | AsyncIterable<O>
1562
+ | (() => AsyncIterable<O>);
1563
+ type ComposeTransformStreams<I, O> = NodeJS.ReadWriteStream | web.TransformStream<I, O>;
1564
+ type ComposeTransformGenerator<I, O> = (source: AsyncIterable<I>) => AsyncIterable<O>;
1565
+ type ComposeTransform<S extends ComposeTransformSource<any>, O> = S extends
1566
+ ComposeSource<infer I> | ComposeTransformStreams<any, infer I> | ComposeTransformGenerator<any, infer I>
1567
+ ? ComposeTransformStreams<I, O> | ComposeTransformGenerator<I, O>
1568
+ : never;
1569
+ type ComposeTransformSource<O> = ComposeSource<O> | ComposeTransform<any, O>;
1570
+ type ComposeDestination<S extends ComposeTransformSource<any>> = S extends ComposeTransformSource<infer I> ?
1571
+ | NodeJS.WritableStream
1572
+ | web.WritableStream<I>
1573
+ | web.TransformStream<I, any>
1574
+ | ((source: AsyncIterable<I>) => void)
1575
+ : never;
1576
+ /**
1577
+ * Combines two or more streams into a `Duplex` stream that writes to the
1578
+ * first stream and reads from the last. Each provided stream is piped into
1579
+ * the next, using `stream.pipeline`. If any of the streams error then all
1580
+ * are destroyed, including the outer `Duplex` stream.
1581
+ *
1582
+ * Because `stream.compose` returns a new stream that in turn can (and
1583
+ * should) be piped into other streams, it enables composition. In contrast,
1584
+ * when passing streams to `stream.pipeline`, typically the first stream is
1585
+ * a readable stream and the last a writable stream, forming a closed
1586
+ * circuit.
1587
+ *
1588
+ * If passed a `Function` it must be a factory method taking a `source`
1589
+ * `Iterable`.
1590
+ *
1591
+ * ```js
1592
+ * import { compose, Transform } from 'node:stream';
1593
+ *
1594
+ * const removeSpaces = new Transform({
1595
+ * transform(chunk, encoding, callback) {
1596
+ * callback(null, String(chunk).replace(' ', ''));
1597
+ * },
1598
+ * });
1599
+ *
1600
+ * async function* toUpper(source) {
1601
+ * for await (const chunk of source) {
1602
+ * yield String(chunk).toUpperCase();
1603
+ * }
1604
+ * }
1605
+ *
1606
+ * let res = '';
1607
+ * for await (const buf of compose(removeSpaces, toUpper).end('hello world')) {
1608
+ * res += buf;
1609
+ * }
1610
+ *
1611
+ * console.log(res); // prints 'HELLOWORLD'
1612
+ * ```
1613
+ *
1614
+ * `stream.compose` can be used to convert async iterables, generators and
1615
+ * functions into streams.
1616
+ *
1617
+ * * `AsyncIterable` converts into a readable `Duplex`. Cannot yield
1618
+ * `null`.
1619
+ * * `AsyncGeneratorFunction` converts into a readable/writable transform `Duplex`.
1620
+ * Must take a source `AsyncIterable` as first parameter. Cannot yield
1621
+ * `null`.
1622
+ * * `AsyncFunction` converts into a writable `Duplex`. Must return
1623
+ * either `null` or `undefined`.
1624
+ *
1625
+ * ```js
1626
+ * import { compose } from 'node:stream';
1627
+ * import { finished } from 'node:stream/promises';
1628
+ *
1629
+ * // Convert AsyncIterable into readable Duplex.
1630
+ * const s1 = compose(async function*() {
1631
+ * yield 'Hello';
1632
+ * yield 'World';
1633
+ * }());
1634
+ *
1635
+ * // Convert AsyncGenerator into transform Duplex.
1636
+ * const s2 = compose(async function*(source) {
1637
+ * for await (const chunk of source) {
1638
+ * yield String(chunk).toUpperCase();
1639
+ * }
1640
+ * });
1641
+ *
1642
+ * let res = '';
1643
+ *
1644
+ * // Convert AsyncFunction into writable Duplex.
1645
+ * const s3 = compose(async function(source) {
1646
+ * for await (const chunk of source) {
1647
+ * res += chunk;
1648
+ * }
1649
+ * });
1650
+ *
1651
+ * await finished(compose(s1, s2, s3));
1652
+ *
1653
+ * console.log(res); // prints 'HELLOWORLD'
1654
+ * ```
1655
+ *
1656
+ * See [`readable.compose(stream)`](https://nodejs.org/docs/latest-v25.x/api/stream.html#readablecomposestream-options) for `stream.compose` as operator.
1657
+ * @since v16.9.0
1658
+ * @experimental
1659
+ */
1660
+ /* eslint-disable @definitelytyped/no-unnecessary-generics */
1661
+ function compose(stream: ComposeSource<any> | ComposeDestination<any>): Duplex;
1662
+ function compose<
1663
+ S extends ComposeSource<any> | ComposeTransform<any, any>,
1664
+ D extends ComposeTransform<S, any> | ComposeDestination<S>,
1665
+ >(
1666
+ source: S,
1667
+ destination: D,
1668
+ ): Duplex;
1669
+ function compose<
1670
+ S extends ComposeSource<any> | ComposeTransform<any, any>,
1671
+ T extends ComposeTransform<S, any>,
1672
+ D extends ComposeTransform<T, any> | ComposeDestination<T>,
1673
+ >(source: S, transform: T, destination: D): Duplex;
1674
+ function compose<
1675
+ S extends ComposeSource<any> | ComposeTransform<any, any>,
1676
+ T1 extends ComposeTransform<S, any>,
1677
+ T2 extends ComposeTransform<T1, any>,
1678
+ D extends ComposeTransform<T2, any> | ComposeDestination<T2>,
1679
+ >(source: S, transform1: T1, transform2: T2, destination: D): Duplex;
1680
+ function compose<
1681
+ S extends ComposeSource<any> | ComposeTransform<any, any>,
1682
+ T1 extends ComposeTransform<S, any>,
1683
+ T2 extends ComposeTransform<T1, any>,
1684
+ T3 extends ComposeTransform<T2, any>,
1685
+ D extends ComposeTransform<T3, any> | ComposeDestination<T3>,
1686
+ >(source: S, transform1: T1, transform2: T2, transform3: T3, destination: D): Duplex;
1687
+ function compose<
1688
+ S extends ComposeSource<any> | ComposeTransform<any, any>,
1689
+ T1 extends ComposeTransform<S, any>,
1690
+ T2 extends ComposeTransform<T1, any>,
1691
+ T3 extends ComposeTransform<T2, any>,
1692
+ T4 extends ComposeTransform<T3, any>,
1693
+ D extends ComposeTransform<T4, any> | ComposeDestination<T4>,
1694
+ >(source: S, transform1: T1, transform2: T2, transform3: T3, transform4: T4, destination: D): Duplex;
1695
+ function compose(
1696
+ ...streams: [
1697
+ ComposeSource<any>,
1698
+ ...ComposeTransform<any, any>[],
1699
+ ComposeDestination<any>,
1700
+ ]
1701
+ ): Duplex;
1702
+ /* eslint-enable @definitelytyped/no-unnecessary-generics */
1660
1703
  /**
1661
1704
  * Returns whether the stream has encountered an error.
1662
1705
  * @since v17.3.0, v16.14.0
1663
1706
  */
1664
- function isErrored(stream: Readable | Writable | NodeJS.ReadableStream | NodeJS.WritableStream): boolean;
1707
+ function isErrored(
1708
+ stream: NodeJS.ReadableStream | NodeJS.WritableStream | web.ReadableStream | web.WritableStream,
1709
+ ): boolean;
1665
1710
  /**
1666
1711
  * Returns whether the stream is readable.
1667
1712
  * @since v17.4.0, v16.14.0
1668
1713
  * @returns Only returns `null` if `stream` is not a valid `Readable`, `Duplex` or `ReadableStream`.
1669
1714
  */
1670
- function isReadable(stream: Readable | NodeJS.ReadableStream): boolean | null;
1715
+ function isReadable(stream: NodeJS.ReadableStream | web.ReadableStream): boolean | null;
1671
1716
  /**
1672
1717
  * Returns whether the stream is writable.
1673
1718
  * @since v20.0.0
1674
1719
  * @returns Only returns `null` if `stream` is not a valid `Writable`, `Duplex` or `WritableStream`.
1675
1720
  */
1676
- function isWritable(stream: Writable | NodeJS.WritableStream): boolean | null;
1721
+ function isWritable(stream: NodeJS.WritableStream | web.WritableStream): boolean | null;
1722
+ }
1723
+ global {
1724
+ namespace NodeJS {
1725
+ // These interfaces are vestigial, and correspond roughly to the "streams2" interfaces
1726
+ // from early versions of Node.js, but they are still used widely across the ecosystem.
1727
+ // Accordingly, they are commonly used as "in-types" for @types/node APIs, so that
1728
+ // eg. streams returned from older libraries will still be considered valid input to
1729
+ // functions which accept stream arguments.
1730
+ // It's not possible to change or remove these without astronomical levels of breakage.
1731
+ interface ReadableStream extends EventEmitter {
1732
+ readable: boolean;
1733
+ read(size?: number): string | Buffer;
1734
+ setEncoding(encoding: BufferEncoding): this;
1735
+ pause(): this;
1736
+ resume(): this;
1737
+ isPaused(): boolean;
1738
+ pipe<T extends WritableStream>(destination: T, options?: { end?: boolean | undefined }): T;
1739
+ unpipe(destination?: WritableStream): this;
1740
+ unshift(chunk: string | Uint8Array, encoding?: BufferEncoding): void;
1741
+ wrap(oldStream: ReadableStream): this;
1742
+ [Symbol.asyncIterator](): AsyncIterableIterator<string | Buffer>;
1743
+ }
1744
+ interface WritableStream extends EventEmitter {
1745
+ writable: boolean;
1746
+ write(buffer: Uint8Array | string, cb?: (err?: Error | null) => void): boolean;
1747
+ write(str: string, encoding?: BufferEncoding, cb?: (err?: Error | null) => void): boolean;
1748
+ end(cb?: () => void): this;
1749
+ end(data: string | Uint8Array, cb?: () => void): this;
1750
+ end(str: string, encoding?: BufferEncoding, cb?: () => void): this;
1751
+ }
1752
+ interface ReadWriteStream extends ReadableStream, WritableStream {}
1753
+ }
1677
1754
  }
1678
1755
  export = Stream;
1679
1756
  }
1680
- declare module "node:stream" {
1681
- import stream = require("stream");
1757
+ declare module "stream" {
1758
+ import stream = require("node:stream");
1682
1759
  export = stream;
1683
1760
  }