@loaders.gl/compression 3.0.13 → 3.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/compression-worker.js +520 -520
- package/dist/compression-worker.js.map +1 -1
- package/dist/dist.es5.min.js +1 -1
- package/dist/dist.es5.min.js.map +1 -1
- package/dist/dist.min.js +1 -1
- package/dist/dist.min.js.map +1 -1
- package/dist/es5/bundle.js +2 -2
- package/dist/es5/bundle.js.map +1 -1
- package/dist/es5/index.js +11 -11
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/brotli-compression.js +185 -70
- package/dist/es5/lib/brotli-compression.js.map +1 -1
- package/dist/es5/lib/compression.js +159 -31
- package/dist/es5/lib/compression.js.map +1 -1
- package/dist/es5/lib/deflate-compression.js +373 -118
- package/dist/es5/lib/deflate-compression.js.map +1 -1
- package/dist/es5/lib/gzip-compression.js +38 -11
- package/dist/es5/lib/gzip-compression.js.map +1 -1
- package/dist/es5/lib/lz4-compression.js +51 -22
- package/dist/es5/lib/lz4-compression.js.map +1 -1
- package/dist/es5/lib/lzo-compression.js +138 -33
- package/dist/es5/lib/lzo-compression.js.map +1 -1
- package/dist/es5/lib/no-compression.js +94 -22
- package/dist/es5/lib/no-compression.js.map +1 -1
- package/dist/es5/lib/snappy-compression.js +44 -16
- package/dist/es5/lib/snappy-compression.js.map +1 -1
- package/dist/es5/lib/zstd-compression.js +98 -27
- package/dist/es5/lib/zstd-compression.js.map +1 -1
- package/dist/es5/workers/worker.js +64 -27
- package/dist/es5/workers/worker.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/compression.ts"],"names":["Compression","
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/compression.ts"],"names":["Compression","options","compressBatches","bind","decompressBatches","input","preload","compressSync","decompressSync","Error","name","asyncIterator","concatenate","compress","decompress"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AACA;;IASsBA,W;AAMpB,uBAAYC,OAAZ,EAA0C;AAAA;AAAA;AAAA;AAAA;AAAA;AACxC,SAAKC,eAAL,GAAuB,KAAKA,eAAL,CAAqBC,IAArB,CAA0B,IAA1B,CAAvB;AACA,SAAKC,iBAAL,GAAyB,KAAKA,iBAAL,CAAuBD,IAAvB,CAA4B,IAA5B,CAAzB;AACD;;;;;+EAGD;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;gFAKA,kBAAeE,KAAf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBACQ,KAAKC,OAAL,EADR;;AAAA;AAAA,kDAES,KAAKC,YAAL,CAAkBF,KAAlB,CAFT;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;kFAMA,kBAAiBA,KAAjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBACQ,KAAKC,OAAL,EADR;;AAAA;AAAA,kDAES,KAAKE,cAAL,CAAoBH,KAApB,CAFT;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WAMA,sBAAaA,KAAb,EAA8C;AAC5C,YAAM,IAAII,KAAJ,WAAa,KAAKC,IAAlB,sCAAN;AACD;;;WAGD,wBAAeL,KAAf,EAAgD;AAC9C,YAAM,IAAII,KAAJ,WAAa,KAAKC,IAAlB,wCAAN;AACD;;;WAGD,yBACEC,aADF,EAE8B;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0DAER,KAAI,CAACC,WAAL,CAAiBD,aAAjB,CAFQ;;AAAA;AAEtBN,gBAAAA,KAFsB;AAAA;AAG5B,uBAAM,KAAI,CAACQ,QAAL,CAAcR,KAAd,CAAN;;AAH4B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAI7B;;;WAGD,2BACEM,aADF,EAE8B;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0DAER,MAAI,CAACC,WAAL,CAAiBD,aAAjB,CAFQ;;AAAA;AAEtBN,gBAAAA,KAFsB;AAAA;AAG5B,uBAAM,MAAI,CAACS,UAAL,CAAgBT,KAAhB,CAAN;;AAH4B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAI7B;;;WAID,qBAAsBM,aAAtB,EAA2D;AACzD,aAAO,+CAA6BA,aAA7B,CAAP;AACD","sourcesContent":["// Compression interface\nimport {concatenateArrayBuffersAsync} from '@loaders.gl/loader-utils';\n\n/** Compression options */\nexport type CompressionOptions = {\n // operation: 'compress' | 'decompress';\n modules?: {[moduleName: string]: any};\n};\n\n/** Compression */\nexport abstract class Compression {\n abstract readonly name: string;\n abstract readonly extensions: string[];\n abstract readonly contentEncodings: string[];\n abstract readonly isSupported: boolean;\n\n constructor(options?: CompressionOptions) {\n this.compressBatches = this.compressBatches.bind(this);\n this.decompressBatches = this.decompressBatches.bind(this);\n }\n\n /** Preloads any dynamic libraries. May enable sync functions */\n async preload(): Promise<void> {\n return;\n }\n\n /** Asynchronously compress data */\n async compress(input: ArrayBuffer): Promise<ArrayBuffer> {\n await this.preload();\n return this.compressSync(input);\n }\n\n /** Asynchronously decompress data */\n async decompress(input: ArrayBuffer): Promise<ArrayBuffer> {\n await this.preload();\n return this.decompressSync(input);\n }\n\n /** Synchronously compress data */\n compressSync(input: ArrayBuffer): ArrayBuffer {\n throw new Error(`${this.name}: sync compression not supported`);\n }\n\n /** Synchronously compress data */\n decompressSync(input: ArrayBuffer): ArrayBuffer {\n throw new Error(`${this.name}: sync decompression not supported`);\n }\n\n /** Compress batches */\n async *compressBatches(\n asyncIterator: AsyncIterable<ArrayBuffer> | Iterable<ArrayBuffer>\n ): AsyncIterable<ArrayBuffer> {\n // TODO - implement incremental compression\n const input = await this.concatenate(asyncIterator);\n yield this.compress(input);\n }\n\n /** Decompress batches */\n async *decompressBatches(\n asyncIterator: AsyncIterable<ArrayBuffer> | Iterable<ArrayBuffer>\n ): AsyncIterable<ArrayBuffer> {\n // TODO - implement incremental compression\n const input = await this.concatenate(asyncIterator);\n yield this.decompress(input);\n }\n\n // HELPERS\n\n protected concatenate(asyncIterator): Promise<ArrayBuffer> {\n return concatenateArrayBuffersAsync(asyncIterator);\n }\n}\n"],"file":"compression.js"}
|
|
@@ -7,159 +7,414 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.DeflateCompression = void 0;
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
11
|
|
|
12
|
-
var
|
|
12
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
13
|
|
|
14
|
-
var
|
|
14
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
15
15
|
|
|
16
|
-
var
|
|
16
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
17
17
|
|
|
18
|
-
var
|
|
18
|
+
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
constructor(options = {}) {
|
|
22
|
-
super(options);
|
|
23
|
-
(0, _defineProperty2.default)(this, "name", 'deflate');
|
|
24
|
-
(0, _defineProperty2.default)(this, "extensions", []);
|
|
25
|
-
(0, _defineProperty2.default)(this, "contentEncodings", ['deflate']);
|
|
26
|
-
(0, _defineProperty2.default)(this, "isSupported", true);
|
|
27
|
-
(0, _defineProperty2.default)(this, "options", void 0);
|
|
28
|
-
(0, _defineProperty2.default)(this, "_chunks", []);
|
|
29
|
-
this.options = options;
|
|
30
|
-
}
|
|
20
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
31
21
|
|
|
32
|
-
|
|
33
|
-
var _this$options$deflate;
|
|
22
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
34
23
|
|
|
35
|
-
|
|
36
|
-
var _this$options$deflate2;
|
|
24
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
37
25
|
|
|
38
|
-
|
|
39
|
-
return (0, _loaderUtils.toArrayBuffer)(buffer);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
return this.compressSync(input);
|
|
43
|
-
}
|
|
26
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
44
27
|
|
|
45
|
-
|
|
46
|
-
var _this$options$deflate3;
|
|
28
|
+
var _wrapAsyncGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapAsyncGenerator"));
|
|
47
29
|
|
|
48
|
-
|
|
49
|
-
var _this$options$deflate4;
|
|
30
|
+
var _awaitAsyncGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/awaitAsyncGenerator"));
|
|
50
31
|
|
|
51
|
-
|
|
52
|
-
return (0, _loaderUtils.toArrayBuffer)(buffer);
|
|
53
|
-
}
|
|
32
|
+
var _asyncIterator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncIterator"));
|
|
54
33
|
|
|
55
|
-
|
|
56
|
-
}
|
|
34
|
+
var _asyncGeneratorDelegate2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncGeneratorDelegate"));
|
|
57
35
|
|
|
58
|
-
|
|
59
|
-
var _this$options$deflate5, _this$options;
|
|
36
|
+
var _compression = require("./compression");
|
|
60
37
|
|
|
61
|
-
|
|
62
|
-
var _this$options$deflate6;
|
|
38
|
+
var _loaderUtils = require("@loaders.gl/loader-utils");
|
|
63
39
|
|
|
64
|
-
|
|
65
|
-
return (0, _loaderUtils.toArrayBuffer)(buffer);
|
|
66
|
-
}
|
|
40
|
+
var _pako = _interopRequireDefault(require("pako"));
|
|
67
41
|
|
|
68
|
-
|
|
69
|
-
const inputArray = new Uint8Array(input);
|
|
70
|
-
return _pako.default.deflate(inputArray, pakoOptions).buffer;
|
|
71
|
-
}
|
|
42
|
+
var _zlib = _interopRequireDefault(require("zlib"));
|
|
72
43
|
|
|
73
|
-
|
|
74
|
-
var _this$options$deflate7, _this$options2;
|
|
44
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
75
45
|
|
|
76
|
-
|
|
77
|
-
var _this$options$deflate8;
|
|
46
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
78
47
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
}
|
|
48
|
+
var DeflateCompression = function (_Compression) {
|
|
49
|
+
(0, _inherits2.default)(DeflateCompression, _Compression);
|
|
82
50
|
|
|
83
|
-
|
|
84
|
-
const inputArray = new Uint8Array(input);
|
|
85
|
-
return _pako.default.inflate(inputArray, pakoOptions).buffer;
|
|
86
|
-
}
|
|
51
|
+
var _super = _createSuper(DeflateCompression);
|
|
87
52
|
|
|
88
|
-
|
|
89
|
-
var
|
|
53
|
+
function DeflateCompression() {
|
|
54
|
+
var _this4;
|
|
90
55
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
56
|
+
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
57
|
+
(0, _classCallCheck2.default)(this, DeflateCompression);
|
|
58
|
+
_this4 = _super.call(this, options);
|
|
59
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this4), "name", 'deflate');
|
|
60
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this4), "extensions", []);
|
|
61
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this4), "contentEncodings", ['deflate']);
|
|
62
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this4), "isSupported", true);
|
|
63
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this4), "options", void 0);
|
|
64
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this4), "_chunks", []);
|
|
65
|
+
_this4.options = options;
|
|
66
|
+
return _this4;
|
|
94
67
|
}
|
|
95
68
|
|
|
96
|
-
|
|
97
|
-
|
|
69
|
+
(0, _createClass2.default)(DeflateCompression, [{
|
|
70
|
+
key: "compress",
|
|
71
|
+
value: function () {
|
|
72
|
+
var _compress = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(input) {
|
|
73
|
+
var _this$options$deflate;
|
|
74
|
+
|
|
75
|
+
var _this$options$deflate2, buffer;
|
|
76
|
+
|
|
77
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
78
|
+
while (1) {
|
|
79
|
+
switch (_context.prev = _context.next) {
|
|
80
|
+
case 0:
|
|
81
|
+
if (!(!_loaderUtils.isBrowser && (_this$options$deflate = this.options.deflate) !== null && _this$options$deflate !== void 0 && _this$options$deflate.useZlib)) {
|
|
82
|
+
_context.next = 12;
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
if (!((_this$options$deflate2 = this.options.deflate) !== null && _this$options$deflate2 !== void 0 && _this$options$deflate2.gzip)) {
|
|
87
|
+
_context.next = 7;
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
_context.next = 4;
|
|
92
|
+
return (0, _loaderUtils.promisify)(_zlib.default.gzip)(input);
|
|
93
|
+
|
|
94
|
+
case 4:
|
|
95
|
+
_context.t0 = _context.sent;
|
|
96
|
+
_context.next = 10;
|
|
97
|
+
break;
|
|
98
|
+
|
|
99
|
+
case 7:
|
|
100
|
+
_context.next = 9;
|
|
101
|
+
return (0, _loaderUtils.promisify)(_zlib.default.deflate)(input);
|
|
102
|
+
|
|
103
|
+
case 9:
|
|
104
|
+
_context.t0 = _context.sent;
|
|
105
|
+
|
|
106
|
+
case 10:
|
|
107
|
+
buffer = _context.t0;
|
|
108
|
+
return _context.abrupt("return", (0, _loaderUtils.toArrayBuffer)(buffer));
|
|
109
|
+
|
|
110
|
+
case 12:
|
|
111
|
+
return _context.abrupt("return", this.compressSync(input));
|
|
112
|
+
|
|
113
|
+
case 13:
|
|
114
|
+
case "end":
|
|
115
|
+
return _context.stop();
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}, _callee, this);
|
|
119
|
+
}));
|
|
120
|
+
|
|
121
|
+
function compress(_x) {
|
|
122
|
+
return _compress.apply(this, arguments);
|
|
123
|
+
}
|
|
98
124
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
125
|
+
return compress;
|
|
126
|
+
}()
|
|
127
|
+
}, {
|
|
128
|
+
key: "decompress",
|
|
129
|
+
value: function () {
|
|
130
|
+
var _decompress = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(input) {
|
|
131
|
+
var _this$options$deflate3;
|
|
132
|
+
|
|
133
|
+
var _this$options$deflate4, buffer;
|
|
134
|
+
|
|
135
|
+
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
136
|
+
while (1) {
|
|
137
|
+
switch (_context2.prev = _context2.next) {
|
|
138
|
+
case 0:
|
|
139
|
+
if (!(!_loaderUtils.isBrowser && (_this$options$deflate3 = this.options.deflate) !== null && _this$options$deflate3 !== void 0 && _this$options$deflate3.useZlib)) {
|
|
140
|
+
_context2.next = 12;
|
|
141
|
+
break;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
if (!((_this$options$deflate4 = this.options.deflate) !== null && _this$options$deflate4 !== void 0 && _this$options$deflate4.gzip)) {
|
|
145
|
+
_context2.next = 7;
|
|
146
|
+
break;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
_context2.next = 4;
|
|
150
|
+
return (0, _loaderUtils.promisify)(_zlib.default.gunzip)(input);
|
|
151
|
+
|
|
152
|
+
case 4:
|
|
153
|
+
_context2.t0 = _context2.sent;
|
|
154
|
+
_context2.next = 10;
|
|
155
|
+
break;
|
|
156
|
+
|
|
157
|
+
case 7:
|
|
158
|
+
_context2.next = 9;
|
|
159
|
+
return (0, _loaderUtils.promisify)(_zlib.default.inflate)(input);
|
|
160
|
+
|
|
161
|
+
case 9:
|
|
162
|
+
_context2.t0 = _context2.sent;
|
|
163
|
+
|
|
164
|
+
case 10:
|
|
165
|
+
buffer = _context2.t0;
|
|
166
|
+
return _context2.abrupt("return", (0, _loaderUtils.toArrayBuffer)(buffer));
|
|
167
|
+
|
|
168
|
+
case 12:
|
|
169
|
+
return _context2.abrupt("return", this.decompressSync(input));
|
|
170
|
+
|
|
171
|
+
case 13:
|
|
172
|
+
case "end":
|
|
173
|
+
return _context2.stop();
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}, _callee2, this);
|
|
177
|
+
}));
|
|
178
|
+
|
|
179
|
+
function decompress(_x2) {
|
|
180
|
+
return _decompress.apply(this, arguments);
|
|
181
|
+
}
|
|
103
182
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
183
|
+
return decompress;
|
|
184
|
+
}()
|
|
185
|
+
}, {
|
|
186
|
+
key: "compressSync",
|
|
187
|
+
value: function compressSync(input) {
|
|
188
|
+
var _this$options$deflate5, _this$options;
|
|
107
189
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
const ok = pakoProcessor.push(uint8Array, false);
|
|
190
|
+
if (!_loaderUtils.isBrowser && (_this$options$deflate5 = this.options.deflate) !== null && _this$options$deflate5 !== void 0 && _this$options$deflate5.useZlib) {
|
|
191
|
+
var _this$options$deflate6;
|
|
111
192
|
|
|
112
|
-
|
|
113
|
-
|
|
193
|
+
var buffer = (_this$options$deflate6 = this.options.deflate) !== null && _this$options$deflate6 !== void 0 && _this$options$deflate6.gzip ? _zlib.default.gzipSync(input) : _zlib.default.deflateSync(input);
|
|
194
|
+
return (0, _loaderUtils.toArrayBuffer)(buffer);
|
|
114
195
|
}
|
|
115
196
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
197
|
+
var pakoOptions = ((_this$options = this.options) === null || _this$options === void 0 ? void 0 : _this$options.deflate) || {};
|
|
198
|
+
var inputArray = new Uint8Array(input);
|
|
199
|
+
return _pako.default.deflate(inputArray, pakoOptions).buffer;
|
|
119
200
|
}
|
|
201
|
+
}, {
|
|
202
|
+
key: "decompressSync",
|
|
203
|
+
value: function decompressSync(input) {
|
|
204
|
+
var _this$options$deflate7, _this$options2;
|
|
120
205
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
if (!ok) {}
|
|
125
|
-
|
|
126
|
-
const chunks = this._getChunks();
|
|
127
|
-
|
|
128
|
-
yield* chunks;
|
|
129
|
-
}
|
|
206
|
+
if (!_loaderUtils.isBrowser && (_this$options$deflate7 = this.options.deflate) !== null && _this$options$deflate7 !== void 0 && _this$options$deflate7.useZlib) {
|
|
207
|
+
var _this$options$deflate8;
|
|
130
208
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
209
|
+
var buffer = (_this$options$deflate8 = this.options.deflate) !== null && _this$options$deflate8 !== void 0 && _this$options$deflate8.gzip ? _zlib.default.gunzipSync(input) : _zlib.default.inflateSync(input);
|
|
210
|
+
return (0, _loaderUtils.toArrayBuffer)(buffer);
|
|
211
|
+
}
|
|
134
212
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
213
|
+
var pakoOptions = ((_this$options2 = this.options) === null || _this$options2 === void 0 ? void 0 : _this$options2.deflate) || {};
|
|
214
|
+
var inputArray = new Uint8Array(input);
|
|
215
|
+
return _pako.default.inflate(inputArray, pakoOptions).buffer;
|
|
138
216
|
}
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
}
|
|
217
|
+
}, {
|
|
218
|
+
key: "compressBatches",
|
|
219
|
+
value: function compressBatches(asyncIterator) {
|
|
220
|
+
var _this = this;
|
|
221
|
+
|
|
222
|
+
return (0, _wrapAsyncGenerator2.default)(_regenerator.default.mark(function _callee3() {
|
|
223
|
+
var _this$options3;
|
|
224
|
+
|
|
225
|
+
var pakoOptions, pakoProcessor;
|
|
226
|
+
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
227
|
+
while (1) {
|
|
228
|
+
switch (_context3.prev = _context3.next) {
|
|
229
|
+
case 0:
|
|
230
|
+
pakoOptions = ((_this$options3 = _this.options) === null || _this$options3 === void 0 ? void 0 : _this$options3.deflate) || {};
|
|
231
|
+
pakoProcessor = new _pako.default.Deflate(pakoOptions);
|
|
232
|
+
return _context3.delegateYield((0, _asyncGeneratorDelegate2.default)((0, _asyncIterator2.default)(_this.transformBatches(pakoProcessor, asyncIterator)), _awaitAsyncGenerator2.default), "t0", 3);
|
|
233
|
+
|
|
234
|
+
case 3:
|
|
235
|
+
case "end":
|
|
236
|
+
return _context3.stop();
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}, _callee3);
|
|
240
|
+
}))();
|
|
241
|
+
}
|
|
242
|
+
}, {
|
|
243
|
+
key: "decompressBatches",
|
|
244
|
+
value: function decompressBatches(asyncIterator) {
|
|
245
|
+
var _this2 = this;
|
|
246
|
+
|
|
247
|
+
return (0, _wrapAsyncGenerator2.default)(_regenerator.default.mark(function _callee4() {
|
|
248
|
+
var _this2$options;
|
|
249
|
+
|
|
250
|
+
var pakoOptions, pakoProcessor;
|
|
251
|
+
return _regenerator.default.wrap(function _callee4$(_context4) {
|
|
252
|
+
while (1) {
|
|
253
|
+
switch (_context4.prev = _context4.next) {
|
|
254
|
+
case 0:
|
|
255
|
+
pakoOptions = ((_this2$options = _this2.options) === null || _this2$options === void 0 ? void 0 : _this2$options.deflate) || {};
|
|
256
|
+
pakoProcessor = new _pako.default.Inflate(pakoOptions);
|
|
257
|
+
return _context4.delegateYield((0, _asyncGeneratorDelegate2.default)((0, _asyncIterator2.default)(_this2.transformBatches(pakoProcessor, asyncIterator)), _awaitAsyncGenerator2.default), "t0", 3);
|
|
258
|
+
|
|
259
|
+
case 3:
|
|
260
|
+
case "end":
|
|
261
|
+
return _context4.stop();
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
}, _callee4);
|
|
265
|
+
}))();
|
|
266
|
+
}
|
|
267
|
+
}, {
|
|
268
|
+
key: "transformBatches",
|
|
269
|
+
value: function transformBatches(pakoProcessor, asyncIterator) {
|
|
270
|
+
var _this3 = this;
|
|
271
|
+
|
|
272
|
+
return (0, _wrapAsyncGenerator2.default)(_regenerator.default.mark(function _callee5() {
|
|
273
|
+
var _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, _value, chunk, uint8Array, _ok, _chunks, emptyChunk, ok, chunks;
|
|
274
|
+
|
|
275
|
+
return _regenerator.default.wrap(function _callee5$(_context5) {
|
|
276
|
+
while (1) {
|
|
277
|
+
switch (_context5.prev = _context5.next) {
|
|
278
|
+
case 0:
|
|
279
|
+
pakoProcessor.onData = _this3._onData.bind(_this3);
|
|
280
|
+
pakoProcessor.onEnd = _this3._onEnd.bind(_this3);
|
|
281
|
+
_iteratorNormalCompletion = true;
|
|
282
|
+
_didIteratorError = false;
|
|
283
|
+
_context5.prev = 4;
|
|
284
|
+
_iterator = (0, _asyncIterator2.default)(asyncIterator);
|
|
285
|
+
|
|
286
|
+
case 6:
|
|
287
|
+
_context5.next = 8;
|
|
288
|
+
return (0, _awaitAsyncGenerator2.default)(_iterator.next());
|
|
289
|
+
|
|
290
|
+
case 8:
|
|
291
|
+
_step = _context5.sent;
|
|
292
|
+
_iteratorNormalCompletion = _step.done;
|
|
293
|
+
_context5.next = 12;
|
|
294
|
+
return (0, _awaitAsyncGenerator2.default)(_step.value);
|
|
295
|
+
|
|
296
|
+
case 12:
|
|
297
|
+
_value = _context5.sent;
|
|
298
|
+
|
|
299
|
+
if (_iteratorNormalCompletion) {
|
|
300
|
+
_context5.next = 24;
|
|
301
|
+
break;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
chunk = _value;
|
|
305
|
+
uint8Array = new Uint8Array(chunk);
|
|
306
|
+
_ok = pakoProcessor.push(uint8Array, false);
|
|
307
|
+
|
|
308
|
+
if (_ok) {
|
|
309
|
+
_context5.next = 19;
|
|
310
|
+
break;
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
throw new Error("".concat(_this3._getError(), "write"));
|
|
314
|
+
|
|
315
|
+
case 19:
|
|
316
|
+
_chunks = _this3._getChunks();
|
|
317
|
+
return _context5.delegateYield((0, _asyncGeneratorDelegate2.default)((0, _asyncIterator2.default)(_chunks), _awaitAsyncGenerator2.default), "t0", 21);
|
|
318
|
+
|
|
319
|
+
case 21:
|
|
320
|
+
_iteratorNormalCompletion = true;
|
|
321
|
+
_context5.next = 6;
|
|
322
|
+
break;
|
|
323
|
+
|
|
324
|
+
case 24:
|
|
325
|
+
_context5.next = 30;
|
|
326
|
+
break;
|
|
327
|
+
|
|
328
|
+
case 26:
|
|
329
|
+
_context5.prev = 26;
|
|
330
|
+
_context5.t1 = _context5["catch"](4);
|
|
331
|
+
_didIteratorError = true;
|
|
332
|
+
_iteratorError = _context5.t1;
|
|
333
|
+
|
|
334
|
+
case 30:
|
|
335
|
+
_context5.prev = 30;
|
|
336
|
+
_context5.prev = 31;
|
|
337
|
+
|
|
338
|
+
if (!(!_iteratorNormalCompletion && _iterator.return != null)) {
|
|
339
|
+
_context5.next = 35;
|
|
340
|
+
break;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
_context5.next = 35;
|
|
344
|
+
return (0, _awaitAsyncGenerator2.default)(_iterator.return());
|
|
345
|
+
|
|
346
|
+
case 35:
|
|
347
|
+
_context5.prev = 35;
|
|
348
|
+
|
|
349
|
+
if (!_didIteratorError) {
|
|
350
|
+
_context5.next = 38;
|
|
351
|
+
break;
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
throw _iteratorError;
|
|
355
|
+
|
|
356
|
+
case 38:
|
|
357
|
+
return _context5.finish(35);
|
|
358
|
+
|
|
359
|
+
case 39:
|
|
360
|
+
return _context5.finish(30);
|
|
361
|
+
|
|
362
|
+
case 40:
|
|
363
|
+
emptyChunk = new Uint8Array(0);
|
|
364
|
+
ok = pakoProcessor.push(emptyChunk, true);
|
|
365
|
+
|
|
366
|
+
if (!ok) {}
|
|
367
|
+
|
|
368
|
+
chunks = _this3._getChunks();
|
|
369
|
+
return _context5.delegateYield((0, _asyncGeneratorDelegate2.default)((0, _asyncIterator2.default)(chunks), _awaitAsyncGenerator2.default), "t2", 45);
|
|
370
|
+
|
|
371
|
+
case 45:
|
|
372
|
+
case "end":
|
|
373
|
+
return _context5.stop();
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
}, _callee5, null, [[4, 26, 30, 40], [31,, 35, 39]]);
|
|
377
|
+
}))();
|
|
378
|
+
}
|
|
379
|
+
}, {
|
|
380
|
+
key: "_onData",
|
|
381
|
+
value: function _onData(chunk) {
|
|
382
|
+
this._chunks.push(chunk);
|
|
383
|
+
}
|
|
384
|
+
}, {
|
|
385
|
+
key: "_onEnd",
|
|
386
|
+
value: function _onEnd(status) {
|
|
387
|
+
if (status !== 0) {
|
|
388
|
+
throw new Error(this._getError(status) + this._chunks.length);
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
}, {
|
|
392
|
+
key: "_getChunks",
|
|
393
|
+
value: function _getChunks() {
|
|
394
|
+
var chunks = this._chunks;
|
|
395
|
+
this._chunks = [];
|
|
396
|
+
return chunks;
|
|
397
|
+
}
|
|
398
|
+
}, {
|
|
399
|
+
key: "_getError",
|
|
400
|
+
value: function _getError() {
|
|
401
|
+
var code = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
|
402
|
+
var MESSAGES = {
|
|
403
|
+
2: 'need dictionary',
|
|
404
|
+
1: 'stream end',
|
|
405
|
+
0: '',
|
|
406
|
+
'-1': 'file error',
|
|
407
|
+
'-2': 'stream error',
|
|
408
|
+
'-3': 'data error',
|
|
409
|
+
'-4': 'insufficient memory',
|
|
410
|
+
'-5': 'buffer error',
|
|
411
|
+
'-6': 'incompatible version'
|
|
412
|
+
};
|
|
413
|
+
return "".concat(this.name, ": ").concat(MESSAGES[code]);
|
|
414
|
+
}
|
|
415
|
+
}]);
|
|
416
|
+
return DeflateCompression;
|
|
417
|
+
}(_compression.Compression);
|
|
163
418
|
|
|
164
419
|
exports.DeflateCompression = DeflateCompression;
|
|
165
420
|
//# sourceMappingURL=deflate-compression.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/deflate-compression.ts"],"names":["DeflateCompression","Compression","constructor","options","compress","input","isBrowser","deflate","useZlib","buffer","gzip","zlib","compressSync","decompress","gunzip","inflate","decompressSync","gzipSync","deflateSync","pakoOptions","inputArray","Uint8Array","pako","gunzipSync","inflateSync","compressBatches","asyncIterator","pakoProcessor","Deflate","transformBatches","decompressBatches","Inflate","onData","_onData","bind","onEnd","_onEnd","chunk","uint8Array","ok","push","Error","_getError","chunks","_getChunks","emptyChunk","_chunks","status","length","code","MESSAGES","name"],"mappings":"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","sourcesContent":["// DEFLATE\nimport type {CompressionOptions} from './compression';\nimport {Compression} from './compression';\nimport {isBrowser, toArrayBuffer} from '@loaders.gl/loader-utils';\nimport pako from 'pako'; // https://bundlephobia.com/package/pako\nimport zlib from 'zlib';\nimport {promisify} from '@loaders.gl/loader-utils';\n\nexport type DeflateCompressionOptions = CompressionOptions & {\n deflate?: pako.InflateOptions & pako.DeflateOptions & {useZlib?: boolean};\n};\n\n/**\n * DEFLATE compression / decompression\n */\nexport class DeflateCompression extends Compression {\n readonly name: string = 'deflate';\n readonly extensions: string[] = [];\n readonly contentEncodings = ['deflate'];\n readonly isSupported = true;\n\n readonly options: DeflateCompressionOptions;\n\n private _chunks: ArrayBuffer[] = [];\n\n constructor(options: DeflateCompressionOptions = {}) {\n super(options);\n this.options = options;\n }\n\n async compress(input: ArrayBuffer): Promise<ArrayBuffer> {\n // On Node.js we can use built-in zlib\n if (!isBrowser && this.options.deflate?.useZlib) {\n const buffer = this.options.deflate?.gzip\n ? await promisify(zlib.gzip)(input)\n : await promisify(zlib.deflate)(input);\n return toArrayBuffer(buffer);\n }\n return this.compressSync(input);\n }\n\n async decompress(input: ArrayBuffer): Promise<ArrayBuffer> {\n // On Node.js we can use built-in zlib\n if (!isBrowser && this.options.deflate?.useZlib) {\n const buffer = this.options.deflate?.gzip\n ? await promisify(zlib.gunzip)(input)\n : await promisify(zlib.inflate)(input);\n return toArrayBuffer(buffer);\n }\n return this.decompressSync(input);\n }\n\n compressSync(input: ArrayBuffer): ArrayBuffer {\n // On Node.js we can use built-in zlib\n if (!isBrowser && this.options.deflate?.useZlib) {\n const buffer = this.options.deflate?.gzip ? zlib.gzipSync(input) : zlib.deflateSync(input);\n return toArrayBuffer(buffer);\n }\n const pakoOptions: pako.DeflateOptions = this.options?.deflate || {};\n const inputArray = new Uint8Array(input);\n return pako.deflate(inputArray, pakoOptions).buffer;\n }\n\n decompressSync(input: ArrayBuffer): ArrayBuffer {\n // On Node.js we can use built-in zlib\n if (!isBrowser && this.options.deflate?.useZlib) {\n const buffer = this.options.deflate?.gzip ? zlib.gunzipSync(input) : zlib.inflateSync(input);\n return toArrayBuffer(buffer);\n }\n const pakoOptions: pako.InflateOptions = this.options?.deflate || {};\n const inputArray = new Uint8Array(input);\n return pako.inflate(inputArray, pakoOptions).buffer;\n }\n\n async *compressBatches(\n asyncIterator: AsyncIterable<ArrayBuffer> | Iterable<ArrayBuffer>\n ): AsyncIterable<ArrayBuffer> {\n const pakoOptions: pako.DeflateOptions = this.options?.deflate || {};\n const pakoProcessor = new pako.Deflate(pakoOptions);\n yield* this.transformBatches(pakoProcessor, asyncIterator);\n }\n\n async *decompressBatches(\n asyncIterator: AsyncIterable<ArrayBuffer> | Iterable<ArrayBuffer>\n ): AsyncIterable<ArrayBuffer> {\n const pakoOptions: pako.InflateOptions = this.options?.deflate || {};\n const pakoProcessor = new pako.Inflate(pakoOptions);\n yield* this.transformBatches(pakoProcessor, asyncIterator);\n }\n\n async *transformBatches(\n pakoProcessor: pako.Inflate | pako.Deflate,\n asyncIterator: AsyncIterable<ArrayBuffer> | Iterable<ArrayBuffer>\n ): AsyncIterable<ArrayBuffer> {\n pakoProcessor.onData = this._onData.bind(this);\n pakoProcessor.onEnd = this._onEnd.bind(this);\n for await (const chunk of asyncIterator) {\n const uint8Array = new Uint8Array(chunk);\n const ok = pakoProcessor.push(uint8Array, false); // false -> not last chunk\n if (!ok) {\n throw new Error(`${this._getError()}write`);\n }\n const chunks = this._getChunks();\n yield* chunks;\n }\n\n // End\n const emptyChunk = new Uint8Array(0);\n const ok = pakoProcessor.push(emptyChunk, true); // true -> last chunk\n if (!ok) {\n // For some reason we get error but it still works???\n // throw new Error(this._getError() + 'end');\n }\n const chunks = this._getChunks();\n yield* chunks;\n }\n\n _onData(chunk) {\n this._chunks.push(chunk);\n }\n\n _onEnd(status) {\n if (status !== 0) {\n throw new Error(this._getError(status) + this._chunks.length);\n }\n }\n\n _getChunks(): ArrayBuffer[] {\n const chunks = this._chunks;\n this._chunks = [];\n return chunks;\n }\n\n // TODO - For some reason we don't get the error message from pako in _onEnd?\n _getError(code: number = 0): string {\n const MESSAGES = {\n /* Z_NEED_DICT 2 */\n 2: 'need dictionary',\n /* Z_STREAM_END 1 */\n 1: 'stream end',\n /* Z_OK 0 */\n 0: '',\n /* Z_ERRNO (-1) */\n '-1': 'file error',\n /* Z_STREAM_ERROR (-2) */\n '-2': 'stream error',\n /* Z_DATA_ERROR (-3) */\n '-3': 'data error',\n /* Z_MEM_ERROR (-4) */\n '-4': 'insufficient memory',\n /* Z_BUF_ERROR (-5) */\n '-5': 'buffer error',\n /* Z_VERSION_ERROR (-6) */\n '-6': 'incompatible version'\n };\n return `${this.name}: ${MESSAGES[code]}`;\n }\n}\n"],"file":"deflate-compression.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/deflate-compression.ts"],"names":["DeflateCompression","options","input","isBrowser","deflate","useZlib","gzip","zlib","buffer","compressSync","gunzip","inflate","decompressSync","gzipSync","deflateSync","pakoOptions","inputArray","Uint8Array","pako","gunzipSync","inflateSync","asyncIterator","pakoProcessor","Deflate","transformBatches","Inflate","onData","_onData","bind","onEnd","_onEnd","chunk","uint8Array","ok","push","Error","_getError","chunks","_getChunks","emptyChunk","_chunks","status","length","code","MESSAGES","name","Compression"],"mappings":"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","sourcesContent":["// DEFLATE\nimport type {CompressionOptions} from './compression';\nimport {Compression} from './compression';\nimport {isBrowser, toArrayBuffer} from '@loaders.gl/loader-utils';\nimport pako from 'pako'; // https://bundlephobia.com/package/pako\nimport zlib from 'zlib';\nimport {promisify} from '@loaders.gl/loader-utils';\n\nexport type DeflateCompressionOptions = CompressionOptions & {\n deflate?: pako.InflateOptions & pako.DeflateOptions & {useZlib?: boolean};\n};\n\n/**\n * DEFLATE compression / decompression\n */\nexport class DeflateCompression extends Compression {\n readonly name: string = 'deflate';\n readonly extensions: string[] = [];\n readonly contentEncodings = ['deflate'];\n readonly isSupported = true;\n\n readonly options: DeflateCompressionOptions;\n\n private _chunks: ArrayBuffer[] = [];\n\n constructor(options: DeflateCompressionOptions = {}) {\n super(options);\n this.options = options;\n }\n\n async compress(input: ArrayBuffer): Promise<ArrayBuffer> {\n // On Node.js we can use built-in zlib\n if (!isBrowser && this.options.deflate?.useZlib) {\n const buffer = this.options.deflate?.gzip\n ? await promisify(zlib.gzip)(input)\n : await promisify(zlib.deflate)(input);\n return toArrayBuffer(buffer);\n }\n return this.compressSync(input);\n }\n\n async decompress(input: ArrayBuffer): Promise<ArrayBuffer> {\n // On Node.js we can use built-in zlib\n if (!isBrowser && this.options.deflate?.useZlib) {\n const buffer = this.options.deflate?.gzip\n ? await promisify(zlib.gunzip)(input)\n : await promisify(zlib.inflate)(input);\n return toArrayBuffer(buffer);\n }\n return this.decompressSync(input);\n }\n\n compressSync(input: ArrayBuffer): ArrayBuffer {\n // On Node.js we can use built-in zlib\n if (!isBrowser && this.options.deflate?.useZlib) {\n const buffer = this.options.deflate?.gzip ? zlib.gzipSync(input) : zlib.deflateSync(input);\n return toArrayBuffer(buffer);\n }\n const pakoOptions: pako.DeflateOptions = this.options?.deflate || {};\n const inputArray = new Uint8Array(input);\n return pako.deflate(inputArray, pakoOptions).buffer;\n }\n\n decompressSync(input: ArrayBuffer): ArrayBuffer {\n // On Node.js we can use built-in zlib\n if (!isBrowser && this.options.deflate?.useZlib) {\n const buffer = this.options.deflate?.gzip ? zlib.gunzipSync(input) : zlib.inflateSync(input);\n return toArrayBuffer(buffer);\n }\n const pakoOptions: pako.InflateOptions = this.options?.deflate || {};\n const inputArray = new Uint8Array(input);\n return pako.inflate(inputArray, pakoOptions).buffer;\n }\n\n async *compressBatches(\n asyncIterator: AsyncIterable<ArrayBuffer> | Iterable<ArrayBuffer>\n ): AsyncIterable<ArrayBuffer> {\n const pakoOptions: pako.DeflateOptions = this.options?.deflate || {};\n const pakoProcessor = new pako.Deflate(pakoOptions);\n yield* this.transformBatches(pakoProcessor, asyncIterator);\n }\n\n async *decompressBatches(\n asyncIterator: AsyncIterable<ArrayBuffer> | Iterable<ArrayBuffer>\n ): AsyncIterable<ArrayBuffer> {\n const pakoOptions: pako.InflateOptions = this.options?.deflate || {};\n const pakoProcessor = new pako.Inflate(pakoOptions);\n yield* this.transformBatches(pakoProcessor, asyncIterator);\n }\n\n async *transformBatches(\n pakoProcessor: pako.Inflate | pako.Deflate,\n asyncIterator: AsyncIterable<ArrayBuffer> | Iterable<ArrayBuffer>\n ): AsyncIterable<ArrayBuffer> {\n pakoProcessor.onData = this._onData.bind(this);\n pakoProcessor.onEnd = this._onEnd.bind(this);\n for await (const chunk of asyncIterator) {\n const uint8Array = new Uint8Array(chunk);\n const ok = pakoProcessor.push(uint8Array, false); // false -> not last chunk\n if (!ok) {\n throw new Error(`${this._getError()}write`);\n }\n const chunks = this._getChunks();\n yield* chunks;\n }\n\n // End\n const emptyChunk = new Uint8Array(0);\n const ok = pakoProcessor.push(emptyChunk, true); // true -> last chunk\n if (!ok) {\n // For some reason we get error but it still works???\n // throw new Error(this._getError() + 'end');\n }\n const chunks = this._getChunks();\n yield* chunks;\n }\n\n _onData(chunk) {\n this._chunks.push(chunk);\n }\n\n _onEnd(status) {\n if (status !== 0) {\n throw new Error(this._getError(status) + this._chunks.length);\n }\n }\n\n _getChunks(): ArrayBuffer[] {\n const chunks = this._chunks;\n this._chunks = [];\n return chunks;\n }\n\n // TODO - For some reason we don't get the error message from pako in _onEnd?\n _getError(code: number = 0): string {\n const MESSAGES = {\n /* Z_NEED_DICT 2 */\n 2: 'need dictionary',\n /* Z_STREAM_END 1 */\n 1: 'stream end',\n /* Z_OK 0 */\n 0: '',\n /* Z_ERRNO (-1) */\n '-1': 'file error',\n /* Z_STREAM_ERROR (-2) */\n '-2': 'stream error',\n /* Z_DATA_ERROR (-3) */\n '-3': 'data error',\n /* Z_MEM_ERROR (-4) */\n '-4': 'insufficient memory',\n /* Z_BUF_ERROR (-5) */\n '-5': 'buffer error',\n /* Z_VERSION_ERROR (-6) */\n '-6': 'incompatible version'\n };\n return `${this.name}: ${MESSAGES[code]}`;\n }\n}\n"],"file":"deflate-compression.js"}
|