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.js40
1 files changed, 40 insertions, 0 deletions
diff --git a/node_modules/merge-stream/index.js b/node_modules/merge-stream/index.js
new file mode 100644
index 000000000..dff2dd8ec
--- /dev/null
+++ b/node_modules/merge-stream/index.js
@@ -0,0 +1,40 @@
+'use strict';
+
+var PassThrough = require('readable-stream/passthrough')
+
+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.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() }
+ }
+}