Show More
Commit Description:
fix wrong merge
Commit Description:
fix wrong merge
References:
File last commit:
Show/Diff file:
Action:
node_modules/jszip/lib/flate.js
| 85 lines
| 2.3 KiB
| application/javascript
| JavascriptLexer
|
r789 | 'use strict'; | |||
var USE_TYPEDARRAY = (typeof Uint8Array !== 'undefined') && (typeof Uint16Array !== 'undefined') && (typeof Uint32Array !== 'undefined'); | ||||
var pako = require("pako"); | ||||
var utils = require("./utils"); | ||||
var GenericWorker = require("./stream/GenericWorker"); | ||||
var ARRAY_TYPE = USE_TYPEDARRAY ? "uint8array" : "array"; | ||||
exports.magic = "\x08\x00"; | ||||
/** | ||||
* Create a worker that uses pako to inflate/deflate. | ||||
* @constructor | ||||
* @param {String} action the name of the pako function to call : either "Deflate" or "Inflate". | ||||
* @param {Object} options the options to use when (de)compressing. | ||||
*/ | ||||
function FlateWorker(action, options) { | ||||
GenericWorker.call(this, "FlateWorker/" + action); | ||||
this._pako = null; | ||||
this._pakoAction = action; | ||||
this._pakoOptions = options; | ||||
// the `meta` object from the last chunk received | ||||
// this allow this worker to pass around metadata | ||||
this.meta = {}; | ||||
} | ||||
utils.inherits(FlateWorker, GenericWorker); | ||||
/** | ||||
* @see GenericWorker.processChunk | ||||
*/ | ||||
FlateWorker.prototype.processChunk = function (chunk) { | ||||
this.meta = chunk.meta; | ||||
if (this._pako === null) { | ||||
this._createPako(); | ||||
} | ||||
this._pako.push(utils.transformTo(ARRAY_TYPE, chunk.data), false); | ||||
}; | ||||
/** | ||||
* @see GenericWorker.flush | ||||
*/ | ||||
FlateWorker.prototype.flush = function () { | ||||
GenericWorker.prototype.flush.call(this); | ||||
if (this._pako === null) { | ||||
this._createPako(); | ||||
} | ||||
this._pako.push([], true); | ||||
}; | ||||
/** | ||||
* @see GenericWorker.cleanUp | ||||
*/ | ||||
FlateWorker.prototype.cleanUp = function () { | ||||
GenericWorker.prototype.cleanUp.call(this); | ||||
this._pako = null; | ||||
}; | ||||
/** | ||||
* Create the _pako object. | ||||
* TODO: lazy-loading this object isn't the best solution but it's the | ||||
* quickest. The best solution is to lazy-load the worker list. See also the | ||||
* issue #446. | ||||
*/ | ||||
FlateWorker.prototype._createPako = function () { | ||||
this._pako = new pako[this._pakoAction]({ | ||||
raw: true, | ||||
level: this._pakoOptions.level || -1 // default compression | ||||
}); | ||||
var self = this; | ||||
this._pako.onData = function(data) { | ||||
self.push({ | ||||
data : data, | ||||
meta : self.meta | ||||
}); | ||||
}; | ||||
}; | ||||
exports.compressWorker = function (compressionOptions) { | ||||
return new FlateWorker("Deflate", compressionOptions); | ||||
}; | ||||
exports.uncompressWorker = function () { | ||||
return new FlateWorker("Inflate", {}); | ||||
}; | ||||