You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
'use strict'; const {PassThrough: PassThroughStream} = require('stream');
module.exports = options => { options = {...options};
const {array} = options; let {encoding} = options; const isBuffer = encoding === 'buffer'; let objectMode = false;
if (array) { objectMode = !(encoding || isBuffer); } else { encoding = encoding || 'utf8'; }
if (isBuffer) { encoding = null; }
const stream = new PassThroughStream({objectMode});
if (encoding) { stream.setEncoding(encoding); }
let length = 0; const chunks = [];
stream.on('data', chunk => { chunks.push(chunk);
if (objectMode) { length = chunks.length; } else { length += chunk.length; } });
stream.getBufferedValue = () => { if (array) { return chunks; }
return isBuffer ? Buffer.concat(chunks, length) : chunks.join(''); };
stream.getBufferedLength = () => length;
return stream; };
|