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