diff options
Diffstat (limited to 'node_modules/merge-stream')
| -rw-r--r-- | node_modules/merge-stream/LICENSE | 21 | ||||
| -rw-r--r-- | node_modules/merge-stream/README.md | 78 | ||||
| -rw-r--r-- | node_modules/merge-stream/index.js | 41 | ||||
| -rw-r--r-- | node_modules/merge-stream/package.json | 19 | 
4 files changed, 159 insertions, 0 deletions
diff --git a/node_modules/merge-stream/LICENSE b/node_modules/merge-stream/LICENSE new file mode 100644 index 0000000..94a4c0a --- /dev/null +++ b/node_modules/merge-stream/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Stephen Sugden <me@stephensugden.com> (stephensugden.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/merge-stream/README.md b/node_modules/merge-stream/README.md new file mode 100644 index 0000000..0d54841 --- /dev/null +++ b/node_modules/merge-stream/README.md @@ -0,0 +1,78 @@ +# 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 + +### `mergeStream` + +Type: `function` + +Merges an arbitrary number of streams. Returns a merged stream. + +#### `merged.add` + +A method to dynamically add more sources to the stream. The argument supplied to `add` can be either a source or an array of sources. + +#### `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; +``` + +## Gulp example + +An example use case for **merge-stream** is to combine parts of a task in a project's **gulpfile.js** like this: + +```js +const gulp =          require('gulp'); +const htmlValidator = require('gulp-w3c-html-validator'); +const jsHint =        require('gulp-jshint'); +const mergeStream =   require('merge-stream'); + +function lint() { +  return mergeStream( +    gulp.src('src/*.html') +      .pipe(htmlValidator()) +      .pipe(htmlValidator.reporter()), +    gulp.src('src/*.js') +      .pipe(jsHint()) +      .pipe(jsHint.reporter()) +  ); +} +gulp.task('lint', lint); +``` + +## License + +MIT 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() } +  } +} diff --git a/node_modules/merge-stream/package.json b/node_modules/merge-stream/package.json new file mode 100644 index 0000000..1a4c54c --- /dev/null +++ b/node_modules/merge-stream/package.json @@ -0,0 +1,19 @@ +{ +  "name": "merge-stream", +  "version": "2.0.0", +  "description": "Create a stream that emits events from multiple other streams", +  "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": {}, +  "devDependencies": { +    "from2": "^2.0.3", +    "istanbul": "^0.4.5" +  } +}  | 
