What is minipass-collect?
The minipass-collect package is a Node.js stream utility that collects all the data from a stream and then emits a 'collect' event with the collected data. It is built on top of the Minipass stream library, which is a minimal pass-through stream implementation.
What are minipass-collect's main functionalities?
Data collection from streams
This feature allows you to collect all the data from a stream. When the stream ends, the 'collect' event is emitted with the collected data as its argument.
const Collect = require('minipass-collect')
const collectStream = new Collect()
collectStream.on('collect', data => {
console.log('Collected data:', data)
})
collectStream.write('some data')
collectStream.end()
Other packages similar to minipass-collect
concat-stream
concat-stream is a writable stream that concatenates all the data from a stream and calls a callback with the result. It is similar to minipass-collect but uses callbacks instead of emitting an event.
bl
Buffer List (bl) is a storage object for collections of Node Buffers, which can also be a stream. It is similar to minipass-collect in that it collects stream data, but it also provides more features for manipulating the collected data.
get-stream
get-stream is a module to get a stream as a string or buffer. It's similar to minipass-collect but focuses on promise-based API and does not use events.
minipass-collect
A Minipass stream that collects all the data into a single chunk
Note that this buffers ALL data written to it, so it's only good for
situations where you are sure the entire stream fits in memory.
Note: this is primarily useful for the Collect.PassThrough
class, since
Minipass streams already have a .collect()
method which returns a promise
that resolves to the array of chunks, and a .concat()
method that returns
the data concatenated into a single Buffer or String.
USAGE
const Collect = require('minipass-collect')
const collector = new Collect()
collector.on('data', allTheData => {
console.log('all the data!', allTheData)
})
someSourceOfData.pipe(collector)
someSourceOfData.pipe(new Minipass()).concat().then(data => ...)
someSourceOfData.concat().then(data => ...)
If you want to collect the data, but also act as a passthrough stream,
then use Collect.PassThrough
instead (for example to memoize streaming
responses), and listen on the collect
event.
const Collect = require('minipass-collect')
const collector = new Collect.PassThrough()
collector.on('collect', allTheData => {
console.log('all the data!', allTheData)
})
someSourceOfData.pipe(collector).pipe(someOtherStream)
All minipass options are supported.