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} = require('stream');
module.exports = options => { options = Object.assign({}, options);
const {array} = options; let {encoding} = options; const buffer = encoding === 'buffer'; let objectMode = false;
if (array) { objectMode = !(encoding || buffer); } else { encoding = encoding || 'utf8'; }
if (buffer) { encoding = null; }
let len = 0; const ret = []; const stream = new PassThrough({objectMode});
if (encoding) { stream.setEncoding(encoding); }
stream.on('data', chunk => { ret.push(chunk);
if (objectMode) { len = ret.length; } else { len += chunk.length; } });
stream.getBufferedValue = () => { if (array) { return ret; }
return buffer ? Buffer.concat(ret, len) : ret.join(''); };
stream.getBufferedLength = () => len;
return stream; };
|