blob: 333b6061f1bef01f89f58210f8d4b7fa5699fb3a (
plain) (
tree)
|
|
const through = require('through2')
module.exports = ObjectMultiplex
function ObjectMultiplex(opts){
opts = opts || {}
// create multiplexer
var mx = through.obj(function(chunk, enc, cb) {
var name = chunk.name
var data = chunk.data
var substream = mx.streams[name]
if (!substream) {
console.warn("orphaned data for stream " + name)
} else {
substream.push(data)
}
return cb()
})
mx.streams = {}
// create substreams
mx.createStream = function(name) {
var substream = mx.streams[name] = through.obj(function(chunk, enc, cb) {
mx.push({
name: name,
data: chunk,
})
return cb()
})
mx.on('end', function() {
return substream.emit('end')
})
if (opts.error) {
mx.on('error', function() {
return substream.emit('error')
})
}
return substream
}
return mx
}
|