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