@@ -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
@@ -3515,8 +3532,8 @@ changes:
3515
3532
** Default:** ` 'utf8' ` .
3516
3533
* ` objectMode ` {boolean} Whether or not the
3517
3534
[ ` stream.write(anyObj) ` ] [ stream-write ] is a valid operation. When set,
3518
- it becomes possible to write JavaScript values other than string,
3519
- ` Buffer ` or ` Uint8Array ` if supported by the stream implementation.
3535
+ it becomes possible to write JavaScript values other than string, {Buffer},
3536
+ {TypedArray} or {DataView} if supported by the stream implementation.
3520
3537
** Default:** ` false ` .
3521
3538
* ` emitClose ` {boolean} Whether or not the stream should emit ` 'close' `
3522
3539
after it has been destroyed. ** Default:** ` true ` .
@@ -4068,22 +4085,25 @@ It can be overridden by child classes but it **must not** be called directly.
4068
4085
4069
4086
<!-- YAML
4070
4087
changes:
4088
+ - version: REPLACEME
4089
+ pr-url: https://github.com/nodejs/node/pull/51866
4090
+ description: The `chunk` argument can now be a `TypedArray` or `DataView` instance.
4071
4091
- version: v8.0.0
4072
4092
pr-url: https://github.com/nodejs/node/pull/11608
4073
4093
description: The `chunk` argument can now be a `Uint8Array` instance.
4074
4094
-->
4075
4095
4076
- * ` chunk ` {Buffer|Uint8Array| string|null|any} Chunk of data to push into the
4077
- read queue. For streams not operating in object mode, ` chunk ` must be a
4078
- string, ` Buffer ` or ` Uint8Array ` . For object mode streams, ` chunk ` may be
4079
- any JavaScript value.
4096
+ * ` chunk ` {Buffer|TypedArray|DataView| string|null|any} Chunk of data to push
4097
+ into the read queue. For streams not operating in object mode, ` chunk ` must
4098
+ be a { string}, { Buffer}, {TypedArray} or {DataView} . For object mode streams,
4099
+ ` chunk ` may be any JavaScript value.
4080
4100
* ` encoding ` {string} Encoding of string chunks. Must be a valid
4081
4101
` Buffer ` encoding, such as ` 'utf8' ` or ` 'ascii' ` .
4082
4102
* Returns: {boolean} ` true ` if additional chunks of data may continue to be
4083
4103
pushed; ` false ` otherwise.
4084
4104
4085
- When ` chunk ` is a ` Buffer ` , ` Uint8Array ` , or ` string ` , the ` chunk ` of data will
4086
- be added to the internal queue for users of the stream to consume.
4105
+ When ` chunk ` is a { Buffer}, {TypedArray}, {DataView} or { string} , the ` chunk `
4106
+ of data will be added to the internal queue for users of the stream to consume.
4087
4107
Passing ` chunk ` as ` null ` signals the end of the stream (EOF), after which no
4088
4108
more data can be written.
4089
4109
@@ -4758,8 +4778,9 @@ situations within Node.js where this is done, particularly in the
4758
4778
4759
4779
Use of ` readable.push('') ` is not recommended.
4760
4780
4761
- Pushing a zero-byte string, ` Buffer ` , or ` Uint8Array ` to a stream that is not in
4762
- object mode has an interesting side effect. Because it _ is_ a call to
4781
+ Pushing a zero-byte {string}, {Buffer}, {TypedArray} or {DataView} to a stream
4782
+ that is not in object mode has an interesting side effect.
4783
+ Because it _ is_ a call to
4763
4784
[ ` readable.push() ` ] [ stream-push ] , the call will end the reading process.
4764
4785
However, because the argument is an empty string, no data is added to the
4765
4786
readable buffer so there is nothing for a user to consume.
0 commit comments