UNPKG

stromjs

Version:

Dependency-free streams utils for Node.js

45 lines (44 loc) 1.3 kB
"use strict"; 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;