minipass-pipeline (original) (raw)
minipass-pipeline
Create a pipeline of streams using Minipass.
Calls .pipe()
on all the streams in the list. Returns a stream where writes got to the first pipe in the chain, and reads are from the last.
Errors are proxied along the chain and emitted on the Pipeline stream.
USAGE
const Pipeline = require('minipass-pipeline')
const p = new Pipeline(input, transform, output)
p.write('foo')
p.on('data', chunk => doSomething())
const decode = new bunzipDecoder()
const unpack = tar.extract({ cwd: 'target-dir' })
const tbz = new Pipeline(decode, unpack)
fs.createReadStream('archive.tbz').pipe(tbz)
const p = new Pipeline({ objectMode: true }, input, transform, output)
const databaseDecoderStreamDoohickey = (connectionInfo) => {
const p = new Pipeline()
logIntoDatabase(connectionInfo).then(connection => {
initializeDecoderRing(connectionInfo).then(decoderRing => {
p.push(connection, decoderRing)
getUpstreamSource(upstream => {
p.unshift(upstream)
})
})
})
return p
}
Pipeline is a minipass stream, so it's as synchronous as the streams it wraps. It will buffer data until there is a reader, but no longer, so make sure to attach your listeners before you pipe it somewhere else.
new Pipeline(opts = {}, ...streams)
Create a new Pipeline with the specified Minipass options and any streams provided.
pipeline.push(stream, ...)
Attach one or more streams to the pipeline at the end (read) side of the pipe chain.
pipeline.unshift(stream, ...)
Attach one or more streams to the pipeline at the start (write) side of the pipe chain.