mirror of
https://github.com/zebrajr/node.git
synced 2026-01-15 12:15:26 +00:00
stream: move duplicated code to an internal module
Create a utils module for isIterable(), isReadable(), and isStream(). PR-URL: https://github.com/nodejs/node/pull/37508 Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Darshan Sen <raisinten@gmail.com> Reviewed-By: Robert Nagy <ronagy@icloud.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
This commit is contained in:
@@ -3,8 +3,6 @@
|
||||
const {
|
||||
ArrayPrototypePop,
|
||||
Promise,
|
||||
SymbolAsyncIterator,
|
||||
SymbolIterator,
|
||||
} = primordials;
|
||||
|
||||
const {
|
||||
@@ -15,29 +13,14 @@ const {
|
||||
validateAbortSignal,
|
||||
} = require('internal/validators');
|
||||
|
||||
const {
|
||||
isIterable,
|
||||
isStream,
|
||||
} = require('internal/streams/utils');
|
||||
|
||||
let pl;
|
||||
let eos;
|
||||
|
||||
function isReadable(obj) {
|
||||
return !!(obj && typeof obj.pipe === 'function');
|
||||
}
|
||||
|
||||
function isWritable(obj) {
|
||||
return !!(obj && typeof obj.write === 'function');
|
||||
}
|
||||
|
||||
function isStream(obj) {
|
||||
return isReadable(obj) || isWritable(obj);
|
||||
}
|
||||
|
||||
function isIterable(obj, isAsync) {
|
||||
if (!obj) return false;
|
||||
if (isAsync === true) return typeof obj[SymbolAsyncIterator] === 'function';
|
||||
if (isAsync === false) return typeof obj[SymbolIterator] === 'function';
|
||||
return typeof obj[SymbolAsyncIterator] === 'function' ||
|
||||
typeof obj[SymbolIterator] === 'function';
|
||||
}
|
||||
|
||||
function pipeline(...streams) {
|
||||
if (!pl) pl = require('internal/streams/pipeline');
|
||||
return new Promise((resolve, reject) => {
|
||||
|
||||
Reference in New Issue
Block a user