@@ -282,11 +282,19 @@ The `finished` API also provides a [callback version][stream-finished].
282
282
283
283
### Object mode
284
284
285
- All streams created by Node.js APIs operate exclusively on strings and ` Buffer `
286
- (or ` Uint8Array ` ) objects. It is possible, however, for stream implementations
287
- to work with other types of JavaScript values (with the exception of ` null ` ,
288
- which serves a special purpose within streams). Such streams are considered to
289
- operate in "object mode".
285
+ All streams created by Node.js APIs operate exclusively on strings, {Buffer},
286
+ {TypedArray} and {DataView} objects:
287
+
288
+ * ` Strings ` and ` Buffers ` are the most common types used with streams.
289
+ * ` TypedArray ` and ` DataView ` lets you handle binary data with types like
290
+ ` Int32Array ` or ` Uint8Array ` . When you write a TypedArray or DataView to a
291
+ stream, Node.js processes
292
+ the raw bytes.
293
+
294
+ It is possible, however, for stream
295
+ implementations to work with other types of JavaScript values (with the
296
+ exception of ` null ` , which serves a special purpose within streams).
297
+ Such streams are considered to operate in "object mode".
290
298
291
299
Stream instances are switched into object mode using the ` objectMode ` option
292
300
when the stream is created. Attempting to switch an existing stream into
@@ -712,6 +720,9 @@ console.log(myStream.destroyed); // true
712
720
<!-- YAML
713
721
added: v0.9.4
714
722
changes:
723
+ - version: REPLACEME
724
+ pr-url: https://github.com/nodejs/node/pull/51866
725
+ description: The `chunk` argument can now be a `TypedArray` or `DataView` instance.
715
726
- version: v15.0.0
716
727
pr-url: https://github.com/nodejs/node/pull/34101
717
728
description: The `callback` is invoked before 'finish' or on error.
@@ -726,10 +737,10 @@ changes:
726
737
description: The `chunk` argument can now be a `Uint8Array` instance.
727
738
-->
728
739
729
- * ` chunk ` {string|Buffer|Uint8Array| any} Optional data to write. For streams
730
- not operating in object mode, ` chunk ` must be a string, ` Buffer ` or
731
- ` Uint8Array ` . For object mode streams, ` chunk ` may be any JavaScript value
732
- other than ` null ` .
740
+ * ` chunk ` {string|Buffer|TypedArray|DataView| any} Optional data to write. For
741
+ streams not operating in object mode, ` chunk ` must be a { string}, { Buffer},
742
+ {TypedArray} or {DataView} . For object mode streams, ` chunk ` may be any
743
+ JavaScript value other than ` null ` .
733
744
* ` encoding ` {string} The encoding if ` chunk ` is a string
734
745
* ` callback ` {Function} Callback for when the stream is finished.
735
746
* Returns: {this}
@@ -926,6 +937,9 @@ Getter for the property `objectMode` of a given `Writable` stream.
926
937
<!-- YAML
927
938
added: v0.9.4
928
939
changes:
940
+ - version: REPLACEME
941
+ pr-url: https://github.com/nodejs/node/pull/51866
942
+ description: The `chunk` argument can now be a `TypedArray` or `DataView` instance.
929
943
- version: v8.0.0
930
944
pr-url: https://github.com/nodejs/node/pull/11608
931
945
description: The `chunk` argument can now be a `Uint8Array` instance.
@@ -935,10 +949,10 @@ changes:
935
949
considered invalid now, even in object mode.
936
950
-->
937
951
938
- * ` chunk ` {string|Buffer|Uint8Array| any} Optional data to write. For streams
939
- not operating in object mode, ` chunk ` must be a string, ` Buffer ` or
940
- ` Uint8Array ` . For object mode streams, ` chunk ` may be any JavaScript value
941
- other than ` null ` .
952
+ * ` chunk ` {string|Buffer|TypedArray|DataView| any} Optional data to write. For
953
+ streams not operating in object mode, ` chunk ` must be a { string}, { Buffer},
954
+ {TypedArray} or {DataView} . For object mode streams, ` chunk ` may be any
955
+ JavaScript value other than ` null ` .
942
956
* ` encoding ` {string|null} The encoding, if ` chunk ` is a string. ** Default:** ` 'utf8' `
943
957
* ` callback ` {Function} Callback for when this chunk of data is flushed.
944
958
* Returns: {boolean} ` false ` if the stream wishes for the calling code to
@@ -1763,15 +1777,18 @@ setTimeout(() => {
1763
1777
<!-- YAML
1764
1778
added: v0.9.11
1765
1779
changes:
1780
+ - version: REPLACEME
1781
+ pr-url: https://github.com/nodejs/node/pull/51866
1782
+ description: The `chunk` argument can now be a `TypedArray` or `DataView` instance.
1766
1783
- version: v8.0.0
1767
1784
pr-url: https://github.com/nodejs/node/pull/11608
1768
1785
description: The `chunk` argument can now be a `Uint8Array` instance.
1769
1786
-->
1770
1787
1771
- * ` chunk ` {Buffer|Uint8Array| string|null|any} Chunk of data to unshift onto the
1772
- read queue. For streams not operating in object mode, ` chunk ` must be a
1773
- string, ` Buffer ` , ` Uint8Array ` , or ` null ` . For object mode streams, ` chunk `
1774
- may be any JavaScript value.
1788
+ * ` chunk ` {Buffer|TypedArray|DataView| string|null|any} Chunk of data to unshift
1789
+ onto the read queue. For streams not operating in object mode, ` chunk ` must
1790
+ be a { string}, { Buffer}, {TypedArray}, {DataView} or ` null ` .
1791
+ For object mode streams, ` chunk ` may be any JavaScript value.
1775
1792
* ` encoding ` {string} Encoding of string chunks. Must be a valid
1776
1793
` Buffer ` encoding, such as ` 'utf8' ` or ` 'ascii' ` .
1777
1794
@@ -3512,8 +3529,8 @@ changes:
3512
3529
** Default:** ` 'utf8' ` .
3513
3530
* ` objectMode ` {boolean} Whether or not the
3514
3531
[ ` stream.write(anyObj) ` ] [ stream-write ] is a valid operation. When set,
3515
- it becomes possible to write JavaScript values other than string,
3516
- ` Buffer ` or ` Uint8Array ` if supported by the stream implementation.
3532
+ it becomes possible to write JavaScript values other than string, {Buffer},
3533
+ {TypedArray} or {DataView} if supported by the stream implementation.
3517
3534
** Default:** ` false ` .
3518
3535
* ` emitClose ` {boolean} Whether or not the stream should emit ` 'close' `
3519
3536
after it has been destroyed. ** Default:** ` true ` .
@@ -4062,22 +4079,25 @@ It can be overridden by child classes but it **must not** be called directly.
4062
4079
4063
4080
<!-- YAML
4064
4081
changes:
4082
+ - version: REPLACEME
4083
+ pr-url: https://github.com/nodejs/node/pull/51866
4084
+ description: The `chunk` argument can now be a `TypedArray` or `DataView` instance.
4065
4085
- version: v8.0.0
4066
4086
pr-url: https://github.com/nodejs/node/pull/11608
4067
4087
description: The `chunk` argument can now be a `Uint8Array` instance.
4068
4088
-->
4069
4089
4070
- * ` chunk ` {Buffer|Uint8Array| string|null|any} Chunk of data to push into the
4071
- read queue. For streams not operating in object mode, ` chunk ` must be a
4072
- string, ` Buffer ` or ` Uint8Array ` . For object mode streams, ` chunk ` may be
4073
- any JavaScript value.
4090
+ * ` chunk ` {Buffer|TypedArray|DataView| string|null|any} Chunk of data to push
4091
+ into the read queue. For streams not operating in object mode, ` chunk ` must
4092
+ be a { string}, { Buffer}, {TypedArray} or {DataView} . For object mode streams,
4093
+ ` chunk ` may be any JavaScript value.
4074
4094
* ` encoding ` {string} Encoding of string chunks. Must be a valid
4075
4095
` Buffer ` encoding, such as ` 'utf8' ` or ` 'ascii' ` .
4076
4096
* Returns: {boolean} ` true ` if additional chunks of data may continue to be
4077
4097
pushed; ` false ` otherwise.
4078
4098
4079
- When ` chunk ` is a ` Buffer ` , ` Uint8Array ` , or ` string ` , the ` chunk ` of data will
4080
- be added to the internal queue for users of the stream to consume.
4099
+ When ` chunk ` is a { Buffer}, {TypedArray}, {DataView} or { string} , the ` chunk `
4100
+ of data will be added to the internal queue for users of the stream to consume.
4081
4101
Passing ` chunk ` as ` null ` signals the end of the stream (EOF), after which no
4082
4102
more data can be written.
4083
4103
@@ -4752,8 +4772,9 @@ situations within Node.js where this is done, particularly in the
4752
4772
4753
4773
Use of ` readable.push('') ` is not recommended.
4754
4774
4755
- Pushing a zero-byte string, ` Buffer ` , or ` Uint8Array ` to a stream that is not in
4756
- object mode has an interesting side effect. Because it _ is_ a call to
4775
+ Pushing a zero-byte {string}, {Buffer}, {TypedArray} or {DataView} to a stream
4776
+ that is not in object mode has an interesting side effect.
4777
+ Because it _ is_ a call to
4757
4778
[ ` readable.push() ` ] [ stream-push ] , the call will end the reading process.
4758
4779
However, because the argument is an empty string, no data is added to the
4759
4780
readable buffer so there is nothing for a user to consume.
0 commit comments