123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- 'use strict';
- const PassThrough = require('stream').PassThrough;
- module.exports = opts => {
- opts = Object.assign({}, opts);
- const array = opts.array;
- let encoding = opts.encoding;
- 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;
- };
|