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