fast-stream-to-buffer
Version:
Consume a stream of data into a binary Buffer as efficiently as possible
33 lines (25 loc) • 599 B
JavaScript
const eos = require('end-of-stream')
module.exports = streamToBuffer
streamToBuffer.onStream = onStream
function streamToBuffer (stream, cb) {
const buffers = []
stream.on('data', buffers.push.bind(buffers))
eos(stream, function (err) {
switch (buffers.length) {
case 0:
cb(err, Buffer.allocUnsafe(0), stream)
break
case 1:
cb(err, buffers[0], stream)
break
default:
cb(err, Buffer.concat(buffers), stream)
}
})
}
function onStream (cb) {
return function (stream) {
streamToBuffer(stream, cb)
}
}