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