You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
0x40-web/lib/zlib-asm/codecs.js

49 lines
1.3 KiB

/// wrapper for zlib-asm (https://github.com/ukyo/zlib-asm)
/* globals zlib */
(function(global) {
"use strict";
function Codec(isDeflater, options) {
this._isDeflater = isDeflater;
if (options && typeof options.level === 'number')
this.level = options.level;
this._inputLength = 0;
this._input = [];
}
Codec.prototype.append = function append(bytes, onprogress) {
this._inputLength += bytes.length;
this._input.push(bytes);
};
Codec.prototype.flush = function flush() {
var bytes;
var input = this._input;
if (input.length === 1)
bytes = input[0];
else {
bytes = new Uint8Array(this._inputLength);
for (var i = 0, n = input.length, off = 0; i < n; i++) {
var slice = input[i];
bytes.set(slice, off);
off += slice.length;
}
}
return this._isDeflater ?
zlib.rawDeflate(bytes, this.level) :
zlib.rawInflate(bytes);
};
function Deflater(options) {
Codec.call(this, true, options);
}
Deflater.prototype = Object.create(Codec.prototype);
function Inflater() {
Codec.call(this, false);
}
Inflater.prototype = Object.create(Codec.prototype);
// 'zip' may not be defined in z-worker and some tests
var env = global.zip || global;
env.Deflater = env._zlib_asm_Deflater = Deflater;
env.Inflater = env._zlib_asm_Inflater = Inflater;
})(this);