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.
		
		
		
		
		
			
		
			
				
					
					
						
							52 lines
						
					
					
						
							841 B
						
					
					
				
			
		
		
	
	
							52 lines
						
					
					
						
							841 B
						
					
					
				'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;
 | 
						|
};
 |