| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 | '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;};
 |