.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / os-locale / node_modules / get-stream / index.js
1 'use strict';
2 const pump = require('pump');
3 const bufferStream = require('./buffer-stream');
4
5 class MaxBufferError extends Error {
6         constructor() {
7                 super('maxBuffer exceeded');
8                 this.name = 'MaxBufferError';
9         }
10 }
11
12 function getStream(inputStream, options) {
13         if (!inputStream) {
14                 return Promise.reject(new Error('Expected a stream'));
15         }
16
17         options = Object.assign({maxBuffer: Infinity}, options);
18
19         const {maxBuffer} = options;
20
21         let stream;
22         return new Promise((resolve, reject) => {
23                 const rejectPromise = error => {
24                         if (error) { // A null check
25                                 error.bufferedData = stream.getBufferedValue();
26                         }
27                         reject(error);
28                 };
29
30                 stream = pump(inputStream, bufferStream(options), error => {
31                         if (error) {
32                                 rejectPromise(error);
33                                 return;
34                         }
35
36                         resolve();
37                 });
38
39                 stream.on('data', () => {
40                         if (stream.getBufferedLength() > maxBuffer) {
41                                 rejectPromise(new MaxBufferError());
42                         }
43                 });
44         }).then(() => stream.getBufferedValue());
45 }
46
47 module.exports = getStream;
48 module.exports.buffer = (stream, options) => getStream(stream, Object.assign({}, options, {encoding: 'buffer'}));
49 module.exports.array = (stream, options) => getStream(stream, Object.assign({}, options, {array: true}));
50 module.exports.MaxBufferError = MaxBufferError;