tools/node-hermes/nodelib/stream/promises.js (53 lines of code) (raw):
'use strict';
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
var _primordials = primordials,
ArrayPrototypePop = _primordials.ArrayPrototypePop,
Promise = _primordials.Promise;
var _require = require('internal/streams/add-abort-signal'),
addAbortSignalNoValidate = _require.addAbortSignalNoValidate;
var _require2 = require('internal/validators'),
validateAbortSignal = _require2.validateAbortSignal;
var _require3 = require('internal/streams/utils'),
isIterable = _require3.isIterable,
isNodeStream = _require3.isNodeStream;
var pl = require('internal/streams/pipeline');
var eos = require('internal/streams/end-of-stream');
function pipeline() {
for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {
streams[_key] = arguments[_key];
}
return new Promise(function (resolve, reject) {
var signal;
var lastArg = streams[streams.length - 1];
if (lastArg && _typeof(lastArg) === 'object' && !isNodeStream(lastArg) && !isIterable(lastArg)) {
var options = ArrayPrototypePop(streams);
signal = options.signal;
validateAbortSignal(signal, 'options.signal');
}
var pipe = pl.apply(void 0, streams.concat([function (err, value) {
if (err) {
reject(err);
} else {
resolve(value);
}
}]));
if (signal) {
addAbortSignalNoValidate(signal, pipe);
}
});
}
function finished(stream, opts) {
return new Promise(function (resolve, reject) {
eos(stream, opts, function (err) {
if (err) {
reject(err);
} else {
resolve();
}
});
});
}
module.exports = {
finished: finished,
pipeline: pipeline
};