@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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/compression.ts"],"names":["Compression","constructor","options","compressBatches","bind","decompressBatches","preload","compress","input","compressSync","decompress","decompressSync","Error","name","asyncIterator","concatenate"],"mappings":";;;;;;;;;;;AACA;;AASO,MAAeA,WAAf,CAA2B;AAMhCC,EAAAA,WAAW,CAACC,OAAD,EAA+B;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;;AAGY,QAAPE,OAAO,GAAkB;AAC7B;AACD;;AAGa,QAARC,QAAQ,CAACC,KAAD,EAA2C;AACvD,UAAM,KAAKF,OAAL,EAAN;AACA,WAAO,KAAKG,YAAL,CAAkBD,KAAlB,CAAP;AACD;;AAGe,QAAVE,UAAU,CAACF,KAAD,EAA2C;AACzD,UAAM,KAAKF,OAAL,EAAN;AACA,WAAO,KAAKK,cAAL,CAAoBH,KAApB,CAAP;AACD;;AAGDC,EAAAA,YAAY,CAACD,KAAD,EAAkC;AAC5C,UAAM,IAAII,KAAJ,WAAa,KAAKC,IAAlB,sCAAN;AACD;;AAGDF,EAAAA,cAAc,CAACH,KAAD,EAAkC;AAC9C,UAAM,IAAII,KAAJ,WAAa,KAAKC,IAAlB,wCAAN;AACD;;AAGqB,SAAfV,eAAe,CACpBW,aADoB,EAEQ;AAE5B,UAAMN,KAAK,GAAG,MAAM,KAAKO,WAAL,CAAiBD,aAAjB,CAApB;AACA,UAAM,KAAKP,QAAL,CAAcC,KAAd,CAAN;AACD;;AAGuB,SAAjBH,iBAAiB,CACtBS,aADsB,EAEM;AAE5B,UAAMN,KAAK,GAAG,MAAM,KAAKO,WAAL,CAAiBD,aAAjB,CAApB;AACA,UAAM,KAAKJ,UAAL,CAAgBF,KAAhB,CAAN;AACD;;AAISO,EAAAA,WAAW,CAACD,aAAD,EAAsC;AACzD,WAAO,+CAA6BA,aAA7B,CAAP;AACD;;AA5D+B","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"}
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 _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
11
 
12
- var _compression = require("./compression");
12
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
13
 
14
- var _loaderUtils = require("@loaders.gl/loader-utils");
14
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
15
15
 
16
- var _pako = _interopRequireDefault(require("pako"));
16
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
17
17
 
18
- var _zlib = _interopRequireDefault(require("zlib"));
18
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
19
19
 
20
- class DeflateCompression extends _compression.Compression {
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
- async compress(input) {
33
- var _this$options$deflate;
22
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
34
23
 
35
- if (!_loaderUtils.isBrowser && (_this$options$deflate = this.options.deflate) !== null && _this$options$deflate !== void 0 && _this$options$deflate.useZlib) {
36
- var _this$options$deflate2;
24
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
37
25
 
38
- const buffer = (_this$options$deflate2 = this.options.deflate) !== null && _this$options$deflate2 !== void 0 && _this$options$deflate2.gzip ? await (0, _loaderUtils.promisify)(_zlib.default.gzip)(input) : await (0, _loaderUtils.promisify)(_zlib.default.deflate)(input);
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
- async decompress(input) {
46
- var _this$options$deflate3;
28
+ var _wrapAsyncGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapAsyncGenerator"));
47
29
 
48
- if (!_loaderUtils.isBrowser && (_this$options$deflate3 = this.options.deflate) !== null && _this$options$deflate3 !== void 0 && _this$options$deflate3.useZlib) {
49
- var _this$options$deflate4;
30
+ var _awaitAsyncGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/awaitAsyncGenerator"));
50
31
 
51
- const buffer = (_this$options$deflate4 = this.options.deflate) !== null && _this$options$deflate4 !== void 0 && _this$options$deflate4.gzip ? await (0, _loaderUtils.promisify)(_zlib.default.gunzip)(input) : await (0, _loaderUtils.promisify)(_zlib.default.inflate)(input);
52
- return (0, _loaderUtils.toArrayBuffer)(buffer);
53
- }
32
+ var _asyncIterator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncIterator"));
54
33
 
55
- return this.decompressSync(input);
56
- }
34
+ var _asyncGeneratorDelegate2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncGeneratorDelegate"));
57
35
 
58
- compressSync(input) {
59
- var _this$options$deflate5, _this$options;
36
+ var _compression = require("./compression");
60
37
 
61
- if (!_loaderUtils.isBrowser && (_this$options$deflate5 = this.options.deflate) !== null && _this$options$deflate5 !== void 0 && _this$options$deflate5.useZlib) {
62
- var _this$options$deflate6;
38
+ var _loaderUtils = require("@loaders.gl/loader-utils");
63
39
 
64
- const 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);
65
- return (0, _loaderUtils.toArrayBuffer)(buffer);
66
- }
40
+ var _pako = _interopRequireDefault(require("pako"));
67
41
 
68
- const pakoOptions = ((_this$options = this.options) === null || _this$options === void 0 ? void 0 : _this$options.deflate) || {};
69
- const inputArray = new Uint8Array(input);
70
- return _pako.default.deflate(inputArray, pakoOptions).buffer;
71
- }
42
+ var _zlib = _interopRequireDefault(require("zlib"));
72
43
 
73
- decompressSync(input) {
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
- if (!_loaderUtils.isBrowser && (_this$options$deflate7 = this.options.deflate) !== null && _this$options$deflate7 !== void 0 && _this$options$deflate7.useZlib) {
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
- const 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);
80
- return (0, _loaderUtils.toArrayBuffer)(buffer);
81
- }
48
+ var DeflateCompression = function (_Compression) {
49
+ (0, _inherits2.default)(DeflateCompression, _Compression);
82
50
 
83
- const pakoOptions = ((_this$options2 = this.options) === null || _this$options2 === void 0 ? void 0 : _this$options2.deflate) || {};
84
- const inputArray = new Uint8Array(input);
85
- return _pako.default.inflate(inputArray, pakoOptions).buffer;
86
- }
51
+ var _super = _createSuper(DeflateCompression);
87
52
 
88
- async *compressBatches(asyncIterator) {
89
- var _this$options3;
53
+ function DeflateCompression() {
54
+ var _this4;
90
55
 
91
- const pakoOptions = ((_this$options3 = this.options) === null || _this$options3 === void 0 ? void 0 : _this$options3.deflate) || {};
92
- const pakoProcessor = new _pako.default.Deflate(pakoOptions);
93
- yield* this.transformBatches(pakoProcessor, asyncIterator);
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
- async *decompressBatches(asyncIterator) {
97
- var _this$options4;
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
- const pakoOptions = ((_this$options4 = this.options) === null || _this$options4 === void 0 ? void 0 : _this$options4.deflate) || {};
100
- const pakoProcessor = new _pako.default.Inflate(pakoOptions);
101
- yield* this.transformBatches(pakoProcessor, asyncIterator);
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
- async *transformBatches(pakoProcessor, asyncIterator) {
105
- pakoProcessor.onData = this._onData.bind(this);
106
- pakoProcessor.onEnd = this._onEnd.bind(this);
183
+ return decompress;
184
+ }()
185
+ }, {
186
+ key: "compressSync",
187
+ value: function compressSync(input) {
188
+ var _this$options$deflate5, _this$options;
107
189
 
108
- for await (const chunk of asyncIterator) {
109
- const uint8Array = new Uint8Array(chunk);
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
- if (!ok) {
113
- throw new Error("".concat(this._getError(), "write"));
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
- const chunks = this._getChunks();
117
-
118
- yield* chunks;
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
- const emptyChunk = new Uint8Array(0);
122
- const ok = pakoProcessor.push(emptyChunk, true);
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
- _onData(chunk) {
132
- this._chunks.push(chunk);
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
- _onEnd(status) {
136
- if (status !== 0) {
137
- throw new Error(this._getError(status) + this._chunks.length);
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
- _getChunks() {
142
- const chunks = this._chunks;
143
- this._chunks = [];
144
- return chunks;
145
- }
146
-
147
- _getError(code = 0) {
148
- const MESSAGES = {
149
- 2: 'need dictionary',
150
- 1: 'stream end',
151
- 0: '',
152
- '-1': 'file error',
153
- '-2': 'stream error',
154
- '-3': 'data error',
155
- '-4': 'insufficient memory',
156
- '-5': 'buffer error',
157
- '-6': 'incompatible version'
158
- };
159
- return "".concat(this.name, ": ").concat(MESSAGES[code]);
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"}