merge-stream
Advanced tools
Comparing version 0.1.1 to 0.1.2
46
index.js
@@ -1,37 +0,31 @@ | ||
var Stream = require('stream'); | ||
'use strict' | ||
var through = require('through2') | ||
module.exports = function (/*streams...*/) { | ||
var sources = []; | ||
var stream = new Stream(); | ||
var firstTick = true; | ||
var sources = [] | ||
var output = through.obj() | ||
stream.writable = stream.readable = true; | ||
output.setMaxListeners(0) | ||
[].slice.call(arguments).forEach(addStream); | ||
output.add = add | ||
stream.add = addStream; | ||
output.on('unpipe', remove) | ||
stream.write = function (data) { | ||
this.emit('data', data) | ||
} | ||
Array.prototype.slice.call(arguments).forEach(add) | ||
stream.destroy = function () { | ||
sources.forEach(function (e) { | ||
if (e.destroy) e.destroy() | ||
}) | ||
return output | ||
function add (source) { | ||
sources.push(source) | ||
source.once('end', remove.bind(null, source)) | ||
source.pipe(output, {end: false}) | ||
return source | ||
} | ||
return stream | ||
function addStream(e) { | ||
sources.push(e); | ||
e.pipe(stream, {end: false}) | ||
var ended = false | ||
e.on('end', function () { | ||
if (ended) return | ||
ended = true | ||
sources = sources.filter(function (it) { return it !== e }) | ||
if (!sources.length) stream.emit('end') | ||
}) | ||
return e; | ||
function remove (source) { | ||
sources = sources.filter(function (it) { return it !== source }) | ||
if (!sources.length && output.readable) { output.emit('end') } | ||
} | ||
} |
{ | ||
"name": "merge-stream", | ||
"version": "0.1.1", | ||
"version": "0.1.2", | ||
"description": "Create a stream that emits events from multiple other streams", | ||
"main": "index.js", | ||
"scripts": { | ||
"test": "echo \"Error: no test specified\" && exit 1" | ||
"test": "istanbul cover test.js && istanbul check-cover --statements 100 --branches 100" | ||
}, | ||
"repository": "grncdr/merge-stream", | ||
"author": "Stephen Sugden <me@stephensugden.com>", | ||
"license": "MIT" | ||
"license": "MIT", | ||
"dependencies": { | ||
"through2": "^0.5.1" | ||
}, | ||
"devDependencies": { | ||
"from2": "0.0.0", | ||
"istanbul": "^0.2.12" | ||
} | ||
} |
# 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 | ||
@@ -4,0 +8,0 @@ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
No tests
QualityPackage does not have any tests. This is a strong signal of a poorly maintained or low quality package.
Found 1 instance in 1 package
4355
8
111
2
26
1
2
+ Addedthrough2@^0.5.1
+ Addedcore-util-is@1.0.3(transitive)
+ Addedinherits@2.0.4(transitive)
+ Addedisarray@0.0.1(transitive)
+ Addedreadable-stream@1.0.34(transitive)
+ Addedstring_decoder@0.10.31(transitive)
+ Addedthrough2@0.5.1(transitive)
+ Addedxtend@3.0.0(transitive)