Initial commit
[yaffs-website] / node_modules / get-stream / buffer-stream.js
1 var PassThrough = require('stream').PassThrough;
2 var objectAssign = require('object-assign');
3
4 module.exports = function (opts) {
5         opts = objectAssign({}, opts);
6
7         var array = opts.array;
8         var encoding = opts.encoding;
9
10         var buffer = encoding === 'buffer';
11         var objectMode = false;
12
13         if (array) {
14                 objectMode = !(encoding || buffer);
15         } else {
16                 encoding = encoding || 'utf8';
17         }
18
19         if (buffer) {
20                 encoding = null;
21         }
22
23         var len = 0;
24         var ret = [];
25
26         var stream = new PassThrough({objectMode: objectMode});
27
28         if (encoding) {
29                 stream.setEncoding(encoding);
30         }
31
32         stream.on('data', function (chunk) {
33                 ret.push(chunk);
34
35                 if (objectMode) {
36                         len = ret.length;
37                 } else {
38                         len += chunk.length;
39                 }
40         });
41
42         stream.getBufferedValue = function () {
43                 if (array) {
44                         return ret;
45                 }
46                 return buffer ? Buffer.concat(ret, len) : ret.join('');
47         };
48
49         stream.getBufferedLength = function () {
50                 return len;
51         };
52
53         return stream;
54 };