stromjs
Version:
Dependency-free streams utils for Node.js
44 lines (43 loc) • 1.43 kB
JavaScript
exports.__esModule = true;
exports.merge = void 0;
var stream_1 = require("stream");
function merge() {
var streams = [];
for (var _i = 0; _i < arguments.length; _i++) {
streams[_i] = arguments[_i];
}
var isStarted = false;
var streamEndedCount = 0;
return new stream_1.Readable({
objectMode: true,
read: function () {
var _this = this;
if (streamEndedCount >= streams.length) {
this.push(null);
}
else if (!isStarted) {
isStarted = true;
streams.forEach(function (stream) {
return stream
.on("data", function (chunk) {
if (!_this.push(chunk)) {
streams.forEach(function (s) { return s.pause(); });
}
})
.on("error", function (err) { return _this.emit("error", err); })
.on("end", function () {
streamEndedCount++;
if (streamEndedCount === streams.length) {
_this.push(null);
}
});
});
}
else {
streams.forEach(function (s) { return s.resume(); });
}
}
});
}
exports.merge = merge;
;