.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / os-locale / node_modules / get-stream / index.js
diff --git a/.config/coc/extensions/node_modules/coc-prettier/node_modules/os-locale/node_modules/get-stream/index.js b/.config/coc/extensions/node_modules/coc-prettier/node_modules/os-locale/node_modules/get-stream/index.js
new file mode 100644 (file)
index 0000000..7e5584a
--- /dev/null
@@ -0,0 +1,50 @@
+'use strict';
+const pump = require('pump');
+const bufferStream = require('./buffer-stream');
+
+class MaxBufferError extends Error {
+       constructor() {
+               super('maxBuffer exceeded');
+               this.name = 'MaxBufferError';
+       }
+}
+
+function getStream(inputStream, options) {
+       if (!inputStream) {
+               return Promise.reject(new Error('Expected a stream'));
+       }
+
+       options = Object.assign({maxBuffer: Infinity}, options);
+
+       const {maxBuffer} = options;
+
+       let stream;
+       return new Promise((resolve, reject) => {
+               const rejectPromise = error => {
+                       if (error) { // A null check
+                               error.bufferedData = stream.getBufferedValue();
+                       }
+                       reject(error);
+               };
+
+               stream = pump(inputStream, bufferStream(options), error => {
+                       if (error) {
+                               rejectPromise(error);
+                               return;
+                       }
+
+                       resolve();
+               });
+
+               stream.on('data', () => {
+                       if (stream.getBufferedLength() > maxBuffer) {
+                               rejectPromise(new MaxBufferError());
+                       }
+               });
+       }).then(() => stream.getBufferedValue());
+}
+
+module.exports = getStream;
+module.exports.buffer = (stream, options) => getStream(stream, Object.assign({}, options, {encoding: 'buffer'}));
+module.exports.array = (stream, options) => getStream(stream, Object.assign({}, options, {array: true}));
+module.exports.MaxBufferError = MaxBufferError;