diff options
Diffstat (limited to 'node_modules/merge-stream')
-rw-r--r-- | node_modules/merge-stream/README.md | 49 | ||||
-rw-r--r-- | node_modules/merge-stream/index.js | 40 | ||||
-rw-r--r-- | node_modules/merge-stream/package.json | 22 |
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. + +[](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" + } +} |