aboutsummaryrefslogtreecommitdiff
path: root/node_modules/merge-stream/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/merge-stream/index.js')
-rw-r--r--node_modules/merge-stream/index.js41
1 files changed, 41 insertions, 0 deletions
diff --git a/node_modules/merge-stream/index.js b/node_modules/merge-stream/index.js
new file mode 100644
index 0000000..b1a9e1a
--- /dev/null
+++ b/node_modules/merge-stream/index.js
@@ -0,0 +1,41 @@
+'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() }
+ }
+}