summaryrefslogtreecommitdiff
path: root/node_modules/rollup-plugin-node-polyfills/polyfills/zlib-lib/binding.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/rollup-plugin-node-polyfills/polyfills/zlib-lib/binding.js')
-rw-r--r--node_modules/rollup-plugin-node-polyfills/polyfills/zlib-lib/binding.js269
1 files changed, 269 insertions, 0 deletions
diff --git a/node_modules/rollup-plugin-node-polyfills/polyfills/zlib-lib/binding.js b/node_modules/rollup-plugin-node-polyfills/polyfills/zlib-lib/binding.js
new file mode 100644
index 0000000..6db3717
--- /dev/null
+++ b/node_modules/rollup-plugin-node-polyfills/polyfills/zlib-lib/binding.js
@@ -0,0 +1,269 @@
+import msg from './messages';
+import zstream from './zstream';
+import {deflateInit2, deflateEnd, deflateReset, deflate} from './deflate';
+import {inflateInit2, inflate, inflateEnd, inflateReset} from './inflate';
+// import constants from './constants';
+
+
+// zlib modes
+export var NONE = 0;
+export var DEFLATE = 1;
+export var INFLATE = 2;
+export var GZIP = 3;
+export var GUNZIP = 4;
+export var DEFLATERAW = 5;
+export var INFLATERAW = 6;
+export var UNZIP = 7;
+export var Z_NO_FLUSH= 0,
+ Z_PARTIAL_FLUSH= 1,
+ Z_SYNC_FLUSH= 2,
+ Z_FULL_FLUSH= 3,
+ Z_FINISH= 4,
+ Z_BLOCK= 5,
+ Z_TREES= 6,
+
+ /* Return codes for the compression/decompression functions. Negative values
+ * are errors, positive values are used for special but normal events.
+ */
+ Z_OK= 0,
+ Z_STREAM_END= 1,
+ Z_NEED_DICT= 2,
+ Z_ERRNO= -1,
+ Z_STREAM_ERROR= -2,
+ Z_DATA_ERROR= -3,
+ //Z_MEM_ERROR: -4,
+ Z_BUF_ERROR= -5,
+ //Z_VERSION_ERROR: -6,
+
+ /* compression levels */
+ Z_NO_COMPRESSION= 0,
+ Z_BEST_SPEED= 1,
+ Z_BEST_COMPRESSION= 9,
+ Z_DEFAULT_COMPRESSION= -1,
+
+
+ Z_FILTERED= 1,
+ Z_HUFFMAN_ONLY= 2,
+ Z_RLE= 3,
+ Z_FIXED= 4,
+ Z_DEFAULT_STRATEGY= 0,
+
+ /* Possible values of the data_type field (though see inflate()) */
+ Z_BINARY= 0,
+ Z_TEXT= 1,
+ //Z_ASCII: 1, // = Z_TEXT (deprecated)
+ Z_UNKNOWN= 2,
+
+ /* The deflate compression method */
+ Z_DEFLATED= 8;
+export function Zlib(mode) {
+ if (mode < DEFLATE || mode > UNZIP)
+ throw new TypeError('Bad argument');
+
+ this.mode = mode;
+ this.init_done = false;
+ this.write_in_progress = false;
+ this.pending_close = false;
+ this.windowBits = 0;
+ this.level = 0;
+ this.memLevel = 0;
+ this.strategy = 0;
+ this.dictionary = null;
+}
+
+Zlib.prototype.init = function(windowBits, level, memLevel, strategy, dictionary) {
+ this.windowBits = windowBits;
+ this.level = level;
+ this.memLevel = memLevel;
+ this.strategy = strategy;
+ // dictionary not supported.
+
+ if (this.mode === GZIP || this.mode === GUNZIP)
+ this.windowBits += 16;
+
+ if (this.mode === UNZIP)
+ this.windowBits += 32;
+
+ if (this.mode === DEFLATERAW || this.mode === INFLATERAW)
+ this.windowBits = -this.windowBits;
+
+ this.strm = new zstream();
+ var status;
+ switch (this.mode) {
+ case DEFLATE:
+ case GZIP:
+ case DEFLATERAW:
+ status = deflateInit2(
+ this.strm,
+ this.level,
+ Z_DEFLATED,
+ this.windowBits,
+ this.memLevel,
+ this.strategy
+ );
+ break;
+ case INFLATE:
+ case GUNZIP:
+ case INFLATERAW:
+ case UNZIP:
+ status = inflateInit2(
+ this.strm,
+ this.windowBits
+ );
+ break;
+ default:
+ throw new Error('Unknown mode ' + this.mode);
+ }
+
+ if (status !== Z_OK) {
+ this._error(status);
+ return;
+ }
+
+ this.write_in_progress = false;
+ this.init_done = true;
+};
+
+Zlib.prototype.params = function() {
+ throw new Error('deflateParams Not supported');
+};
+
+Zlib.prototype._writeCheck = function() {
+ if (!this.init_done)
+ throw new Error('write before init');
+
+ if (this.mode === NONE)
+ throw new Error('already finalized');
+
+ if (this.write_in_progress)
+ throw new Error('write already in progress');
+
+ if (this.pending_close)
+ throw new Error('close is pending');
+};
+
+Zlib.prototype.write = function(flush, input, in_off, in_len, out, out_off, out_len) {
+ this._writeCheck();
+ this.write_in_progress = true;
+
+ var self = this;
+ process.nextTick(function() {
+ self.write_in_progress = false;
+ var res = self._write(flush, input, in_off, in_len, out, out_off, out_len);
+ self.callback(res[0], res[1]);
+
+ if (self.pending_close)
+ self.close();
+ });
+
+ return this;
+};
+
+// set method for Node buffers, used by pako
+function bufferSet(data, offset) {
+ for (var i = 0; i < data.length; i++) {
+ this[offset + i] = data[i];
+ }
+}
+
+Zlib.prototype.writeSync = function(flush, input, in_off, in_len, out, out_off, out_len) {
+ this._writeCheck();
+ return this._write(flush, input, in_off, in_len, out, out_off, out_len);
+};
+
+Zlib.prototype._write = function(flush, input, in_off, in_len, out, out_off, out_len) {
+ this.write_in_progress = true;
+
+ if (flush !== Z_NO_FLUSH &&
+ flush !== Z_PARTIAL_FLUSH &&
+ flush !== Z_SYNC_FLUSH &&
+ flush !== Z_FULL_FLUSH &&
+ flush !== Z_FINISH &&
+ flush !== Z_BLOCK) {
+ throw new Error('Invalid flush value');
+ }
+
+ if (input == null) {
+ input = new Buffer(0);
+ in_len = 0;
+ in_off = 0;
+ }
+
+ if (out._set)
+ out.set = out._set;
+ else
+ out.set = bufferSet;
+
+ var strm = this.strm;
+ strm.avail_in = in_len;
+ strm.input = input;
+ strm.next_in = in_off;
+ strm.avail_out = out_len;
+ strm.output = out;
+ strm.next_out = out_off;
+ var status;
+ switch (this.mode) {
+ case DEFLATE:
+ case GZIP:
+ case DEFLATERAW:
+ status = deflate(strm, flush);
+ break;
+ case UNZIP:
+ case INFLATE:
+ case GUNZIP:
+ case INFLATERAW:
+ status = inflate(strm, flush);
+ break;
+ default:
+ throw new Error('Unknown mode ' + this.mode);
+ }
+
+ if (status !== Z_STREAM_END && status !== Z_OK) {
+ this._error(status);
+ }
+
+ this.write_in_progress = false;
+ return [strm.avail_in, strm.avail_out];
+};
+
+Zlib.prototype.close = function() {
+ if (this.write_in_progress) {
+ this.pending_close = true;
+ return;
+ }
+
+ this.pending_close = false;
+
+ if (this.mode === DEFLATE || this.mode === GZIP || this.mode === DEFLATERAW) {
+ deflateEnd(this.strm);
+ } else {
+ inflateEnd(this.strm);
+ }
+
+ this.mode = NONE;
+};
+var status
+Zlib.prototype.reset = function() {
+ switch (this.mode) {
+ case DEFLATE:
+ case DEFLATERAW:
+ status = deflateReset(this.strm);
+ break;
+ case INFLATE:
+ case INFLATERAW:
+ status = inflateReset(this.strm);
+ break;
+ }
+
+ if (status !== Z_OK) {
+ this._error(status);
+ }
+};
+
+Zlib.prototype._error = function(status) {
+ this.onerror(msg[status] + ': ' + this.strm.msg, status);
+
+ this.write_in_progress = false;
+ if (this.pending_close)
+ this.close();
+};