mirror of
https://github.com/react/react-native-devtools-frontend.git
synced 2026-10-01 01:38:07 +08:00
DISABLE_THIRD_PARTY_CHECK=Add node_modules R=jacktfranklin@chromium.org,aerotwist@chromium.org Bug: 1084578 Change-Id: I70e03fa74f53960a17c884a2bac4027382d66525 Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/2208135 Reviewed-by: Jack Franklin <jacktfranklin@chromium.org> Reviewed-by: Paul Lewis <aerotwist@chromium.org> Commit-Queue: Tim van der Lippe <tvanderlippe@chromium.org>
42 lines
885 B
JavaScript
42 lines
885 B
JavaScript
'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() }
|
|
}
|
|
}
|