aboutsummaryrefslogtreecommitdiff
path: root/node_modules/merge-stream
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/merge-stream')
-rw-r--r--node_modules/merge-stream/README.md49
-rw-r--r--node_modules/merge-stream/index.js40
-rw-r--r--node_modules/merge-stream/package.json22
3 files changed, 111 insertions, 0 deletions
diff --git a/node_modules/merge-stream/README.md b/node_modules/merge-stream/README.md
new file mode 100644
index 000000000..862c3a330
--- /dev/null
+++ b/node_modules/merge-stream/README.md
@@ -0,0 +1,49 @@
+# merge-stream
+
+Merge (interleave) a bunch of streams.
+
+[![build status](https://secure.travis-ci.org/grncdr/merge-stream.svg?branch=master)](http://travis-ci.org/grncdr/merge-stream)
+
+## Synopsis
+
+```javascript
+var stream1 = new Stream();
+var stream2 = new Stream();
+
+var merged = mergeStream(stream1, stream2);
+
+var stream3 = new Stream();
+merged.add(stream3);
+merged.isEmpty();
+//=> false
+```
+
+## Description
+
+This is adapted from [event-stream](https://github.com/dominictarr/event-stream) separated into a new module, using Streams3.
+
+## API
+
+`merged.add`
+
+A method to dynamically add more sources to the stream.
+
+`merged.isEmpty`
+
+A method that tells you if the merged stream is empty.
+
+When a stream is "empty" (aka. no sources were added), it could not be returned to a gulp task.
+
+So, we could do something like this:
+
+```js
+stream = require('merge-stream')();
+// Something like a loop to add some streams to the merge stream
+// stream.add(streamA);
+// stream.add(streamB);
+return stream.isEmpty() ? null : stream;
+```
+
+## License
+
+MIT
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() }
+ }
+}
diff --git a/node_modules/merge-stream/package.json b/node_modules/merge-stream/package.json
new file mode 100644
index 000000000..47b6a86fe
--- /dev/null
+++ b/node_modules/merge-stream/package.json
@@ -0,0 +1,22 @@
+{
+ "name": "merge-stream",
+ "version": "1.0.0",
+ "description": "Create a stream that emits events from multiple other streams",
+ "main": "index.js",
+ "files": [
+ "index.js"
+ ],
+ "scripts": {
+ "test": "istanbul cover test.js && istanbul check-cover --statements 100 --branches 100"
+ },
+ "repository": "grncdr/merge-stream",
+ "author": "Stephen Sugden <me@stephensugden.com>",
+ "license": "MIT",
+ "dependencies": {
+ "readable-stream": "^2.0.1"
+ },
+ "devDependencies": {
+ "from2": "^2.0.3",
+ "istanbul": "^0.3.2"
+ }
+}