You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
'use strict';
const { PassThrough } = require('stream');
module.exports = function (/*streams...*/) { var sources = [] var output = new PassThrough({objectMode: true})
output.setMaxListeners(0)
output.add = add output.isEmpty = isEmpty
output.on('unpipe', remove)
Array.prototype.slice.call(arguments).forEach(add)
return output
function add (source) { if (Array.isArray(source)) { source.forEach(add) return this }
sources.push(source); source.once('end', remove.bind(null, source)) source.once('error', output.emit.bind(output, 'error')) source.pipe(output, {end: false}) return this }
function isEmpty () { return sources.length == 0; }
function remove (source) { sources = sources.filter(function (it) { return it !== source }) if (!sources.length && output.readable) { output.end() } } }
|