stream: use readableEncoding public api for child_process
PR-URL: https://github.com/nodejs/node/pull/28548 Refs: https://github.com/nodejs/node/issues/445 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Rich Trott <rtrott@gmail.com>
This commit is contained in:
parent
461bf36d70
commit
6c430b48b9
@ -1085,6 +1085,16 @@ added: v11.4.0
|
||||
|
||||
Is `true` if it is safe to call [`readable.read()`][stream-read].
|
||||
|
||||
##### readable.readableEncoding
|
||||
<!-- YAML
|
||||
added: REPLACEME
|
||||
-->
|
||||
|
||||
* {null|string}
|
||||
|
||||
Getter for the property `encoding` of a given `Readable` stream. The `encoding`
|
||||
property can be set using the [`readable.setEncoding()`][] method.
|
||||
|
||||
##### readable.readableHighWaterMark
|
||||
<!-- YAML
|
||||
added: v9.3.0
|
||||
@ -2655,6 +2665,7 @@ contain multi-byte characters.
|
||||
[`process.stdin`]: process.html#process_process_stdin
|
||||
[`process.stdout`]: process.html#process_process_stdout
|
||||
[`readable.push('')`]: #stream_readable_push
|
||||
[`readable.setEncoding()`]: #stream_readable_setencoding_encoding
|
||||
[`stream.Readable.from()`]: #stream_stream_readable_from_iterable_options
|
||||
[`stream.cork()`]: #stream_writable_cork
|
||||
[`stream.finished()`]: #stream_stream_finished_stream_options_callback
|
||||
|
@ -1075,6 +1075,13 @@ Object.defineProperty(Readable.prototype, 'readableObjectMode', {
|
||||
}
|
||||
});
|
||||
|
||||
Object.defineProperty(Readable.prototype, 'readableEncoding', {
|
||||
enumerable: false,
|
||||
get() {
|
||||
return this._readableState ? this._readableState.encoding : null;
|
||||
}
|
||||
});
|
||||
|
||||
// Pluck off n bytes from an array of buffers.
|
||||
// Length is the combined lengths of all the buffers in the list.
|
||||
// This function is designed to be inlinable, so please take care when making
|
||||
|
@ -266,8 +266,7 @@ function execFile(file /* , args, options, callback */) {
|
||||
if (encoding ||
|
||||
(
|
||||
child.stdout &&
|
||||
child.stdout._readableState &&
|
||||
child.stdout._readableState.encoding
|
||||
child.stdout.readableEncoding
|
||||
)) {
|
||||
stdout = _stdout.join('');
|
||||
} else {
|
||||
@ -276,8 +275,7 @@ function execFile(file /* , args, options, callback */) {
|
||||
if (encoding ||
|
||||
(
|
||||
child.stderr &&
|
||||
child.stderr._readableState &&
|
||||
child.stderr._readableState.encoding
|
||||
child.stderr.readableEncoding
|
||||
)) {
|
||||
stderr = _stderr.join('');
|
||||
} else {
|
||||
@ -344,7 +342,7 @@ function execFile(file /* , args, options, callback */) {
|
||||
child.stdout.setEncoding(encoding);
|
||||
|
||||
child.stdout.on('data', function onChildStdout(chunk) {
|
||||
const encoding = child.stdout._readableState.encoding;
|
||||
const encoding = child.stdout.readableEncoding;
|
||||
const length = encoding ?
|
||||
Buffer.byteLength(chunk, encoding) :
|
||||
chunk.length;
|
||||
@ -367,7 +365,7 @@ function execFile(file /* , args, options, callback */) {
|
||||
child.stderr.setEncoding(encoding);
|
||||
|
||||
child.stderr.on('data', function onChildStderr(chunk) {
|
||||
const encoding = child.stderr._readableState.encoding;
|
||||
const encoding = child.stderr.readableEncoding;
|
||||
const length = encoding ?
|
||||
Buffer.byteLength(chunk, encoding) :
|
||||
chunk.length;
|
||||
|
@ -422,14 +422,26 @@ class TestWriter extends EE {
|
||||
assert.strictEqual(r, r2);
|
||||
}
|
||||
|
||||
{
|
||||
// Verify readableEncoding property
|
||||
assert(R.prototype.hasOwnProperty('readableEncoding'));
|
||||
|
||||
const r = new R({ encoding: 'utf8' });
|
||||
assert.strictEqual(r.readableEncoding, 'utf8');
|
||||
}
|
||||
|
||||
{
|
||||
// Verify readableObjectMode property
|
||||
assert(R.prototype.hasOwnProperty('readableObjectMode'));
|
||||
|
||||
const r = new R({ objectMode: true });
|
||||
assert.strictEqual(r.readableObjectMode, true);
|
||||
}
|
||||
|
||||
{
|
||||
// Verify writableObjectMode property
|
||||
assert(W.prototype.hasOwnProperty('writableObjectMode'));
|
||||
|
||||
const w = new W({ objectMode: true });
|
||||
assert.strictEqual(w.writableObjectMode, true);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user