@loaders.gl/compression 4.2.0-alpha.6 → 4.2.0-beta.2

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.
Files changed (53) hide show
  1. package/dist/compress-on-worker.d.ts.map +1 -1
  2. package/dist/compress-on-worker.js +4 -1
  3. package/dist/compression-worker.js +2 -2
  4. package/dist/compression-worker.js.map +4 -4
  5. package/dist/dist.dev.js +663 -50
  6. package/dist/dist.min.js +3 -3
  7. package/dist/index.cjs +76 -63
  8. package/dist/index.cjs.map +3 -3
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +3 -0
  11. package/dist/lib/brotli-compression.d.ts +1 -1
  12. package/dist/lib/brotli-compression.d.ts.map +1 -1
  13. package/dist/lib/brotli-compression.js +9 -10
  14. package/dist/lib/compression.d.ts +1 -1
  15. package/dist/lib/compression.d.ts.map +1 -1
  16. package/dist/lib/compression.js +6 -1
  17. package/dist/lib/deflate-compression.d.ts.map +1 -1
  18. package/dist/lib/deflate-compression.js +3 -0
  19. package/dist/lib/gzip-compression.d.ts.map +1 -1
  20. package/dist/lib/gzip-compression.js +3 -0
  21. package/dist/lib/lz4-compression.d.ts +1 -0
  22. package/dist/lib/lz4-compression.d.ts.map +1 -1
  23. package/dist/lib/lz4-compression.js +10 -5
  24. package/dist/lib/lzo-compression.d.ts +1 -1
  25. package/dist/lib/lzo-compression.d.ts.map +1 -1
  26. package/dist/lib/lzo-compression.js +9 -7
  27. package/dist/lib/no-compression.d.ts.map +1 -1
  28. package/dist/lib/no-compression.js +3 -0
  29. package/dist/lib/snappy-compression.d.ts.map +1 -1
  30. package/dist/lib/snappy-compression.js +3 -0
  31. package/dist/lib/zstd-compression.d.ts +2 -1
  32. package/dist/lib/zstd-compression.d.ts.map +1 -1
  33. package/dist/lib/zstd-compression.js +29 -9
  34. package/dist/types.d.ts.map +1 -1
  35. package/dist/types.js +3 -0
  36. package/dist/workers/compression-worker-node.d.ts.map +1 -1
  37. package/dist/workers/compression-worker-node.js +3 -0
  38. package/dist/workers/compression-worker.js +3 -0
  39. package/package.json +4 -4
  40. package/src/compress-on-worker.ts +4 -0
  41. package/src/index.ts +4 -0
  42. package/src/lib/brotli-compression.ts +12 -11
  43. package/src/lib/compression.ts +7 -1
  44. package/src/lib/deflate-compression.ts +4 -0
  45. package/src/lib/gzip-compression.ts +4 -0
  46. package/src/lib/lz4-compression.ts +13 -6
  47. package/src/lib/lzo-compression.ts +10 -9
  48. package/src/lib/no-compression.ts +4 -0
  49. package/src/lib/snappy-compression.ts +4 -0
  50. package/src/lib/zstd-compression.ts +35 -10
  51. package/src/types.ts +4 -0
  52. package/src/workers/compression-worker-node.ts +4 -0
  53. package/src/workers/compression-worker.ts +4 -0
package/dist/index.cjs CHANGED
@@ -46,13 +46,15 @@ module.exports = __toCommonJS(dist_exports);
46
46
 
47
47
  // dist/lib/compression.js
48
48
  var import_loader_utils = require("@loaders.gl/loader-utils");
49
+ var import_loader_utils2 = require("@loaders.gl/loader-utils");
49
50
  var Compression = class {
50
51
  constructor(options) {
51
52
  this.compressBatches = this.compressBatches.bind(this);
52
53
  this.decompressBatches = this.decompressBatches.bind(this);
53
54
  }
54
55
  /** Preloads any dynamic libraries. May enable sync functions */
55
- async preload() {
56
+ async preload(modules = {}) {
57
+ (0, import_loader_utils2.registerJSModules)(modules);
56
58
  return;
57
59
  }
58
60
  /** Asynchronously compress data */
@@ -121,10 +123,10 @@ var NoCompression = class extends Compression {
121
123
  };
122
124
 
123
125
  // dist/lib/deflate-compression.js
124
- var import_loader_utils2 = require("@loaders.gl/loader-utils");
126
+ var import_loader_utils3 = require("@loaders.gl/loader-utils");
125
127
  var import_pako = __toESM(require("pako"), 1);
126
128
  var import_zlib = __toESM(require("zlib"), 1);
127
- var import_loader_utils3 = require("@loaders.gl/loader-utils");
129
+ var import_loader_utils4 = require("@loaders.gl/loader-utils");
128
130
  var DeflateCompression = class extends Compression {
129
131
  name = "deflate";
130
132
  extensions = [];
@@ -138,25 +140,25 @@ var DeflateCompression = class extends Compression {
138
140
  }
139
141
  async compress(input) {
140
142
  var _a, _b;
141
- if (!import_loader_utils2.isBrowser && ((_a = this.options.deflate) == null ? void 0 : _a.useZlib)) {
142
- const buffer = ((_b = this.options.deflate) == null ? void 0 : _b.gzip) ? await (0, import_loader_utils3.promisify1)(import_zlib.default.gzip)(input) : await (0, import_loader_utils3.promisify1)(import_zlib.default.deflate)(input);
143
- return (0, import_loader_utils2.toArrayBuffer)(buffer);
143
+ if (!import_loader_utils3.isBrowser && ((_a = this.options.deflate) == null ? void 0 : _a.useZlib)) {
144
+ const buffer = ((_b = this.options.deflate) == null ? void 0 : _b.gzip) ? await (0, import_loader_utils4.promisify1)(import_zlib.default.gzip)(input) : await (0, import_loader_utils4.promisify1)(import_zlib.default.deflate)(input);
145
+ return (0, import_loader_utils3.toArrayBuffer)(buffer);
144
146
  }
145
147
  return this.compressSync(input);
146
148
  }
147
149
  async decompress(input) {
148
150
  var _a, _b;
149
- if (!import_loader_utils2.isBrowser && ((_a = this.options.deflate) == null ? void 0 : _a.useZlib)) {
150
- const buffer = ((_b = this.options.deflate) == null ? void 0 : _b.gzip) ? await (0, import_loader_utils3.promisify1)(import_zlib.default.gunzip)(input) : await (0, import_loader_utils3.promisify1)(import_zlib.default.inflate)(input);
151
- return (0, import_loader_utils2.toArrayBuffer)(buffer);
151
+ if (!import_loader_utils3.isBrowser && ((_a = this.options.deflate) == null ? void 0 : _a.useZlib)) {
152
+ const buffer = ((_b = this.options.deflate) == null ? void 0 : _b.gzip) ? await (0, import_loader_utils4.promisify1)(import_zlib.default.gunzip)(input) : await (0, import_loader_utils4.promisify1)(import_zlib.default.inflate)(input);
153
+ return (0, import_loader_utils3.toArrayBuffer)(buffer);
152
154
  }
153
155
  return this.decompressSync(input);
154
156
  }
155
157
  compressSync(input) {
156
158
  var _a, _b, _c, _d;
157
- if (!import_loader_utils2.isBrowser && ((_a = this.options.deflate) == null ? void 0 : _a.useZlib)) {
159
+ if (!import_loader_utils3.isBrowser && ((_a = this.options.deflate) == null ? void 0 : _a.useZlib)) {
158
160
  const buffer = ((_b = this.options.deflate) == null ? void 0 : _b.gzip) ? import_zlib.default.gzipSync(input) : import_zlib.default.deflateSync(input);
159
- return (0, import_loader_utils2.toArrayBuffer)(buffer);
161
+ return (0, import_loader_utils3.toArrayBuffer)(buffer);
160
162
  }
161
163
  const pakoOptions = ((_c = this.options) == null ? void 0 : _c.deflate) || {};
162
164
  const inputArray = new Uint8Array(input);
@@ -165,9 +167,9 @@ var DeflateCompression = class extends Compression {
165
167
  }
166
168
  decompressSync(input) {
167
169
  var _a, _b, _c, _d;
168
- if (!import_loader_utils2.isBrowser && ((_a = this.options.deflate) == null ? void 0 : _a.useZlib)) {
170
+ if (!import_loader_utils3.isBrowser && ((_a = this.options.deflate) == null ? void 0 : _a.useZlib)) {
169
171
  const buffer = ((_b = this.options.deflate) == null ? void 0 : _b.gzip) ? import_zlib.default.gunzipSync(input) : import_zlib.default.inflateSync(input);
170
- return (0, import_loader_utils2.toArrayBuffer)(buffer);
172
+ return (0, import_loader_utils3.toArrayBuffer)(buffer);
171
173
  }
172
174
  const pakoOptions = ((_c = this.options) == null ? void 0 : _c.deflate) || {};
173
175
  const inputArray = new Uint8Array(input);
@@ -256,7 +258,8 @@ var GZipCompression = class extends DeflateCompression {
256
258
  };
257
259
 
258
260
  // dist/lib/brotli-compression.js
259
- var import_loader_utils4 = require("@loaders.gl/loader-utils");
261
+ var import_loader_utils5 = require("@loaders.gl/loader-utils");
262
+ var import_loader_utils6 = require("@loaders.gl/loader-utils");
260
263
 
261
264
  // dist/brotli/decode.js
262
265
  var makeBrotliDecode = () => {
@@ -2242,7 +2245,7 @@ var BrotliDecode = makeBrotliDecode();
2242
2245
 
2243
2246
  // dist/lib/brotli-compression.js
2244
2247
  var import_zlib2 = __toESM(require("zlib"), 1);
2245
- var import_loader_utils5 = require("@loaders.gl/loader-utils");
2248
+ var import_loader_utils7 = require("@loaders.gl/loader-utils");
2246
2249
  var DEFAULT_BROTLI_OPTIONS = {
2247
2250
  brotli: {
2248
2251
  mode: 0,
@@ -2250,7 +2253,6 @@ var DEFAULT_BROTLI_OPTIONS = {
2250
2253
  lgwin: 22
2251
2254
  }
2252
2255
  };
2253
- var brotli;
2254
2256
  var BrotliCompression = class extends Compression {
2255
2257
  name = "brotli";
2256
2258
  extensions = ["br"];
@@ -2260,56 +2262,52 @@ var BrotliCompression = class extends Compression {
2260
2262
  constructor(options) {
2261
2263
  super(options);
2262
2264
  this.options = options;
2265
+ (0, import_loader_utils6.registerJSModules)(options == null ? void 0 : options.modules);
2263
2266
  }
2264
2267
  /**
2265
2268
  * brotli is an injectable dependency due to big size
2266
2269
  * @param options
2267
2270
  */
2268
- async preload() {
2269
- var _a, _b;
2270
- brotli = brotli || ((_b = (_a = this.options) == null ? void 0 : _a.modules) == null ? void 0 : _b.brotli);
2271
- if (!brotli) {
2272
- console.warn(`${this.name} library not installed`);
2273
- }
2271
+ async preload(modules = {}) {
2272
+ (0, import_loader_utils6.registerJSModules)(modules);
2274
2273
  }
2275
2274
  async compress(input) {
2276
2275
  var _a;
2277
- if (!import_loader_utils4.isBrowser && ((_a = this.options.brotli) == null ? void 0 : _a.useZlib)) {
2278
- const buffer = await (0, import_loader_utils5.promisify1)(import_zlib2.default.brotliCompress)(input);
2279
- return (0, import_loader_utils4.toArrayBuffer)(buffer);
2276
+ if (!import_loader_utils5.isBrowser && ((_a = this.options.brotli) == null ? void 0 : _a.useZlib)) {
2277
+ const buffer = await (0, import_loader_utils7.promisify1)(import_zlib2.default.brotliCompress)(input);
2278
+ return (0, import_loader_utils5.toArrayBuffer)(buffer);
2280
2279
  }
2281
2280
  return this.compressSync(input);
2282
2281
  }
2283
2282
  compressSync(input) {
2284
2283
  var _a, _b;
2285
- if (!import_loader_utils4.isBrowser && ((_a = this.options.brotli) == null ? void 0 : _a.useZlib)) {
2284
+ if (!import_loader_utils5.isBrowser && ((_a = this.options.brotli) == null ? void 0 : _a.useZlib)) {
2286
2285
  const buffer = import_zlib2.default.brotliCompressSync(input);
2287
- return (0, import_loader_utils4.toArrayBuffer)(buffer);
2286
+ return (0, import_loader_utils5.toArrayBuffer)(buffer);
2288
2287
  }
2289
2288
  const brotliOptions = { ...DEFAULT_BROTLI_OPTIONS.brotli, ...(_b = this.options) == null ? void 0 : _b.brotli };
2290
2289
  const inputArray = new Uint8Array(input);
2291
- if (!brotli) {
2292
- throw new Error("brotli compression: brotli module not installed");
2293
- }
2290
+ const brotli = (0, import_loader_utils6.getJSModule)("brotli", this.name);
2294
2291
  const outputArray = brotli.compress(inputArray, brotliOptions);
2295
2292
  return outputArray.buffer;
2296
2293
  }
2297
2294
  async decompress(input) {
2298
2295
  var _a;
2299
- if (!import_loader_utils4.isBrowser && ((_a = this.options.brotli) == null ? void 0 : _a.useZlib)) {
2300
- const buffer = await (0, import_loader_utils5.promisify1)(import_zlib2.default.brotliDecompress)(input);
2301
- return (0, import_loader_utils4.toArrayBuffer)(buffer);
2296
+ if (!import_loader_utils5.isBrowser && ((_a = this.options.brotli) == null ? void 0 : _a.useZlib)) {
2297
+ const buffer = await (0, import_loader_utils7.promisify1)(import_zlib2.default.brotliDecompress)(input);
2298
+ return (0, import_loader_utils5.toArrayBuffer)(buffer);
2302
2299
  }
2303
2300
  return this.decompressSync(input);
2304
2301
  }
2305
2302
  decompressSync(input) {
2306
2303
  var _a, _b;
2307
- if (!import_loader_utils4.isBrowser && ((_a = this.options.brotli) == null ? void 0 : _a.useZlib)) {
2304
+ if (!import_loader_utils5.isBrowser && ((_a = this.options.brotli) == null ? void 0 : _a.useZlib)) {
2308
2305
  const buffer = import_zlib2.default.brotliDecompressSync(input);
2309
- return (0, import_loader_utils4.toArrayBuffer)(buffer);
2306
+ return (0, import_loader_utils5.toArrayBuffer)(buffer);
2310
2307
  }
2311
2308
  const brotliOptions = { ...DEFAULT_BROTLI_OPTIONS.brotli, ...(_b = this.options) == null ? void 0 : _b.brotli };
2312
2309
  const inputArray = new Uint8Array(input);
2310
+ const brotli = (0, import_loader_utils6.getJSModuleOrNull)("brotli");
2313
2311
  if (brotli) {
2314
2312
  const outputArray2 = brotli.decompress(inputArray, brotliOptions);
2315
2313
  return outputArray2.buffer;
@@ -2340,9 +2338,9 @@ var SnappyCompression = class extends Compression {
2340
2338
  };
2341
2339
 
2342
2340
  // dist/lib/lz4-compression.js
2343
- var import_loader_utils6 = require("@loaders.gl/loader-utils");
2341
+ var import_loader_utils8 = require("@loaders.gl/loader-utils");
2342
+ var import_loader_utils9 = require("@loaders.gl/loader-utils");
2344
2343
  var LZ4_MAGIC_NUMBER = 407708164;
2345
- var lz4js;
2346
2344
  var LZ4Compression = class extends Compression {
2347
2345
  name = "lz4";
2348
2346
  extensions = ["lz4"];
@@ -2350,15 +2348,15 @@ var LZ4Compression = class extends Compression {
2350
2348
  isSupported = true;
2351
2349
  options;
2352
2350
  constructor(options) {
2353
- var _a, _b;
2354
2351
  super(options);
2355
2352
  this.options = options;
2356
- lz4js = lz4js || ((_b = (_a = this.options) == null ? void 0 : _a.modules) == null ? void 0 : _b.lz4js);
2357
- if (!lz4js) {
2358
- throw new Error(this.name);
2359
- }
2353
+ (0, import_loader_utils9.registerJSModules)(options == null ? void 0 : options.modules);
2354
+ }
2355
+ async preload(modules = {}) {
2356
+ (0, import_loader_utils9.registerJSModules)(modules);
2360
2357
  }
2361
2358
  compressSync(input) {
2359
+ const lz4js = (0, import_loader_utils9.getJSModule)("lz4js", this.name);
2362
2360
  const inputArray = new Uint8Array(input);
2363
2361
  return lz4js.compress(inputArray).buffer;
2364
2362
  }
@@ -2369,6 +2367,7 @@ var LZ4Compression = class extends Compression {
2369
2367
  * If data provided without magic number we will parse it as block
2370
2368
  */
2371
2369
  decompressSync(data, maxSize) {
2370
+ const lz4js = (0, import_loader_utils9.getJSModule)("lz4js", this.name);
2372
2371
  try {
2373
2372
  const isMagicNumberExists = this.checkMagicNumber(data);
2374
2373
  const inputArray = new Uint8Array(data);
@@ -2382,7 +2381,7 @@ var LZ4Compression = class extends Compression {
2382
2381
  let uncompressed = new Uint8Array(maxSize);
2383
2382
  const uncompressedSize = this.decodeBlock(inputArray, uncompressed);
2384
2383
  uncompressed = uncompressed.slice(0, uncompressedSize);
2385
- return (0, import_loader_utils6.toArrayBuffer)(uncompressed);
2384
+ return (0, import_loader_utils8.toArrayBuffer)(uncompressed);
2386
2385
  } catch (error) {
2387
2386
  throw this.improveError(error);
2388
2387
  }
@@ -2446,7 +2445,10 @@ var LZ4Compression = class extends Compression {
2446
2445
  };
2447
2446
 
2448
2447
  // dist/lib/zstd-compression.js
2449
- var ZstdCodec;
2448
+ var import_loader_utils10 = require("@loaders.gl/loader-utils");
2449
+ var import_loader_utils11 = require("@loaders.gl/loader-utils");
2450
+ var CHUNK_SIZE = 1e6;
2451
+ var zstdPromise;
2450
2452
  var zstd;
2451
2453
  var ZstdCompression = class extends Compression {
2452
2454
  name = "zstd";
@@ -2459,34 +2461,46 @@ var ZstdCompression = class extends Compression {
2459
2461
  * @param options
2460
2462
  */
2461
2463
  constructor(options) {
2462
- var _a, _b;
2463
2464
  super(options);
2464
2465
  this.options = options;
2465
- ZstdCodec = (_b = (_a = this.options) == null ? void 0 : _a.modules) == null ? void 0 : _b["zstd-codec"];
2466
- if (!ZstdCodec) {
2467
- console.warn(`${this.name} library not installed`);
2468
- }
2466
+ (0, import_loader_utils10.registerJSModules)(options == null ? void 0 : options.modules);
2469
2467
  }
2470
- async preload() {
2471
- if (!zstd && ZstdCodec) {
2472
- zstd = await new Promise((resolve) => ZstdCodec.run((zstd2) => resolve(zstd2)));
2468
+ async preload(modules = {}) {
2469
+ (0, import_loader_utils10.registerJSModules)(modules);
2470
+ (0, import_loader_utils11.checkJSModule)("zstd-codec", this.name);
2471
+ const ZstdCodec = (0, import_loader_utils11.getJSModuleOrNull)("zstd-codec");
2472
+ if (!zstdPromise && ZstdCodec) {
2473
+ zstdPromise = new Promise((resolve) => ZstdCodec.run((zstd2) => resolve(zstd2)));
2474
+ zstd = await zstdPromise;
2473
2475
  }
2474
2476
  }
2475
2477
  compressSync(input) {
2478
+ (0, import_loader_utils11.getJSModule)("zstd-codec", this.name);
2476
2479
  const simpleZstd = new zstd.Simple();
2477
2480
  const inputArray = new Uint8Array(input);
2478
2481
  return simpleZstd.compress(inputArray).buffer;
2479
2482
  }
2480
2483
  decompressSync(input) {
2484
+ (0, import_loader_utils11.getJSModule)("zstd-codec", this.name);
2481
2485
  const simpleZstd = new zstd.Simple();
2482
2486
  const inputArray = new Uint8Array(input);
2483
2487
  return simpleZstd.decompress(inputArray).buffer;
2484
2488
  }
2489
+ async decompress(input, size) {
2490
+ await this.preload();
2491
+ const simpleZstd = new zstd.Streaming();
2492
+ const inputArray = new Uint8Array(input);
2493
+ const chunks = [];
2494
+ for (let i = 0; i <= inputArray.length; i += CHUNK_SIZE) {
2495
+ chunks.push(inputArray.subarray(i, i + CHUNK_SIZE));
2496
+ }
2497
+ const decompressResult = await simpleZstd.decompressChunks(chunks);
2498
+ return decompressResult.buffer;
2499
+ }
2485
2500
  };
2486
2501
 
2487
2502
  // dist/lib/lzo-compression.js
2488
- var import_loader_utils7 = require("@loaders.gl/loader-utils");
2489
- var lzo;
2503
+ var import_loader_utils12 = require("@loaders.gl/loader-utils");
2490
2504
  var LZOCompression = class extends Compression {
2491
2505
  name = "lzo";
2492
2506
  extensions = [];
@@ -2499,25 +2513,24 @@ var LZOCompression = class extends Compression {
2499
2513
  * @param options
2500
2514
  */
2501
2515
  constructor(options) {
2502
- var _a, _b;
2503
2516
  super(options);
2504
2517
  this.options = options;
2505
- lzo = lzo || ((_b = (_a = this.options) == null ? void 0 : _a.modules) == null ? void 0 : _b.lzo);
2506
- if (!lzo) {
2507
- throw new Error(this.name);
2508
- }
2518
+ (0, import_loader_utils12.registerJSModules)(options == null ? void 0 : options.modules);
2509
2519
  }
2510
- async preload() {
2520
+ async preload(modules = {}) {
2521
+ (0, import_loader_utils12.registerJSModules)(modules);
2511
2522
  }
2512
2523
  async compress(input) {
2513
2524
  await this.preload();
2514
- const inputBuffer = (0, import_loader_utils7.toBuffer)(input);
2525
+ const lzo = (0, import_loader_utils12.getJSModule)("lzo", this.name);
2526
+ const inputBuffer = (0, import_loader_utils12.toBuffer)(input);
2515
2527
  return lzo.compress(inputBuffer).buffer;
2516
2528
  }
2517
2529
  async decompress(input) {
2518
2530
  try {
2519
2531
  await this.preload();
2520
- const inputBuffer = (0, import_loader_utils7.toBuffer)(input);
2532
+ const lzo = (0, import_loader_utils12.getJSModule)("lzo", this.name);
2533
+ const inputBuffer = (0, import_loader_utils12.toBuffer)(input);
2521
2534
  return lzo.decompress(inputBuffer).buffer;
2522
2535
  } catch (error) {
2523
2536
  throw error;
@@ -2527,7 +2540,7 @@ var LZOCompression = class extends Compression {
2527
2540
 
2528
2541
  // dist/compress-on-worker.js
2529
2542
  var import_worker_utils = require("@loaders.gl/worker-utils");
2530
- var VERSION = true ? "4.2.0-alpha.5" : "latest";
2543
+ var VERSION = true ? "4.2.0-beta.1" : "latest";
2531
2544
  var CompressionWorker = {
2532
2545
  id: "compression",
2533
2546
  name: "compression",