@loaders.gl/compression 4.2.0-alpha.4 → 4.2.0-alpha.5

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 (57) hide show
  1. package/dist/brotli/decode.js +2311 -1739
  2. package/dist/compress-on-worker.js +15 -7
  3. package/dist/dist.dev.js +576 -198
  4. package/dist/dist.min.js +16 -0
  5. package/dist/index.cjs +36 -119
  6. package/dist/index.cjs.map +7 -0
  7. package/dist/index.d.ts +12 -12
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +0 -1
  10. package/dist/lib/brotli-compression.d.ts +2 -2
  11. package/dist/lib/brotli-compression.d.ts.map +1 -1
  12. package/dist/lib/brotli-compression.js +69 -67
  13. package/dist/lib/compression.js +50 -43
  14. package/dist/lib/deflate-compression.d.ts +2 -2
  15. package/dist/lib/deflate-compression.d.ts.map +1 -1
  16. package/dist/lib/deflate-compression.js +118 -107
  17. package/dist/lib/gzip-compression.d.ts +2 -2
  18. package/dist/lib/gzip-compression.d.ts.map +1 -1
  19. package/dist/lib/gzip-compression.js +10 -14
  20. package/dist/lib/lz4-compression.d.ts +2 -2
  21. package/dist/lib/lz4-compression.d.ts.map +1 -1
  22. package/dist/lib/lz4-compression.js +125 -75
  23. package/dist/lib/lzo-compression.d.ts +2 -2
  24. package/dist/lib/lzo-compression.d.ts.map +1 -1
  25. package/dist/lib/lzo-compression.js +47 -28
  26. package/dist/lib/no-compression.d.ts +2 -2
  27. package/dist/lib/no-compression.d.ts.map +1 -1
  28. package/dist/lib/no-compression.js +23 -22
  29. package/dist/lib/snappy-compression.d.ts +2 -2
  30. package/dist/lib/snappy-compression.d.ts.map +1 -1
  31. package/dist/lib/snappy-compression.js +20 -17
  32. package/dist/lib/zstd-compression.d.ts +2 -2
  33. package/dist/lib/zstd-compression.d.ts.map +1 -1
  34. package/dist/lib/zstd-compression.js +36 -28
  35. package/dist/types.d.ts +1 -1
  36. package/dist/types.d.ts.map +1 -1
  37. package/dist/types.js +0 -1
  38. package/dist/workers/compression-worker-node.d.ts +1 -1
  39. package/dist/workers/compression-worker-node.d.ts.map +1 -1
  40. package/dist/workers/compression-worker-node.js +0 -1
  41. package/dist/workers/compression-worker.js +56 -44
  42. package/package.json +10 -7
  43. package/dist/brotli/decode.js.map +0 -1
  44. package/dist/compress-on-worker.js.map +0 -1
  45. package/dist/index.js.map +0 -1
  46. package/dist/lib/brotli-compression.js.map +0 -1
  47. package/dist/lib/compression.js.map +0 -1
  48. package/dist/lib/deflate-compression.js.map +0 -1
  49. package/dist/lib/gzip-compression.js.map +0 -1
  50. package/dist/lib/lz4-compression.js.map +0 -1
  51. package/dist/lib/lzo-compression.js.map +0 -1
  52. package/dist/lib/no-compression.js.map +0 -1
  53. package/dist/lib/snappy-compression.js.map +0 -1
  54. package/dist/lib/zstd-compression.js.map +0 -1
  55. package/dist/types.js.map +0 -1
  56. package/dist/workers/compression-worker-node.js.map +0 -1
  57. package/dist/workers/compression-worker.js.map +0 -1
package/dist/index.d.ts CHANGED
@@ -1,13 +1,13 @@
1
- export type { CompressionOptions } from './lib/compression';
2
- export { Compression } from './lib/compression';
3
- export { NoCompression } from './lib/no-compression';
4
- export { DeflateCompression } from './lib/deflate-compression';
5
- export { GZipCompression } from './lib/gzip-compression';
6
- export { BrotliCompression } from './lib/brotli-compression';
7
- export { SnappyCompression } from './lib/snappy-compression';
8
- export { LZ4Compression } from './lib/lz4-compression';
9
- export { ZstdCompression } from './lib/zstd-compression';
10
- export { LZOCompression } from './lib/lzo-compression';
11
- export type { CompressionWorkerOptions } from './compress-on-worker';
12
- export { CompressionWorker, compressOnWorker } from './compress-on-worker';
1
+ export type { CompressionOptions } from "./lib/compression.js";
2
+ export { Compression } from "./lib/compression.js";
3
+ export { NoCompression } from "./lib/no-compression.js";
4
+ export { DeflateCompression } from "./lib/deflate-compression.js";
5
+ export { GZipCompression } from "./lib/gzip-compression.js";
6
+ export { BrotliCompression } from "./lib/brotli-compression.js";
7
+ export { SnappyCompression } from "./lib/snappy-compression.js";
8
+ export { LZ4Compression } from "./lib/lz4-compression.js";
9
+ export { ZstdCompression } from "./lib/zstd-compression.js";
10
+ export { LZOCompression } from "./lib/lzo-compression.js";
11
+ export type { CompressionWorkerOptions } from "./compress-on-worker.js";
12
+ export { CompressionWorker, compressOnWorker } from "./compress-on-worker.js";
13
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAC,kBAAkB,EAAC,MAAM,mBAAmB,CAAC;AAE1D,OAAO,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AAE9C,OAAO,EAAC,aAAa,EAAC,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAC,kBAAkB,EAAC,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAC,eAAe,EAAC,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAC,iBAAiB,EAAC,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAC,iBAAiB,EAAC,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAC,cAAc,EAAC,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAC,eAAe,EAAC,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAC,cAAc,EAAC,MAAM,uBAAuB,CAAC;AAErD,YAAY,EAAC,wBAAwB,EAAC,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAC,iBAAiB,EAAE,gBAAgB,EAAC,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAC,kBAAkB,EAAC,6BAA0B;AAE1D,OAAO,EAAC,WAAW,EAAC,6BAA0B;AAE9C,OAAO,EAAC,aAAa,EAAC,gCAA6B;AACnD,OAAO,EAAC,kBAAkB,EAAC,qCAAkC;AAC7D,OAAO,EAAC,eAAe,EAAC,kCAA+B;AACvD,OAAO,EAAC,iBAAiB,EAAC,oCAAiC;AAC3D,OAAO,EAAC,iBAAiB,EAAC,oCAAiC;AAC3D,OAAO,EAAC,cAAc,EAAC,iCAA8B;AACrD,OAAO,EAAC,eAAe,EAAC,kCAA+B;AACvD,OAAO,EAAC,cAAc,EAAC,iCAA8B;AAErD,YAAY,EAAC,wBAAwB,EAAC,gCAA6B;AACnE,OAAO,EAAC,iBAAiB,EAAE,gBAAgB,EAAC,gCAA6B"}
package/dist/index.js CHANGED
@@ -8,4 +8,3 @@ export { LZ4Compression } from "./lib/lz4-compression.js";
8
8
  export { ZstdCompression } from "./lib/zstd-compression.js";
9
9
  export { LZOCompression } from "./lib/lzo-compression.js";
10
10
  export { CompressionWorker, compressOnWorker } from "./compress-on-worker.js";
11
- //# sourceMappingURL=index.js.map
@@ -1,5 +1,5 @@
1
- import type { CompressionOptions } from './compression';
2
- import { Compression } from './compression';
1
+ import type { CompressionOptions } from "./compression.js";
2
+ import { Compression } from "./compression.js";
3
3
  export type BrotliCompressionOptions = CompressionOptions & {
4
4
  brotli?: {
5
5
  mode?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"brotli-compression.d.ts","sourceRoot":"","sources":["../../src/lib/brotli-compression.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,eAAe,CAAC;AACtD,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAQ1C,MAAM,MAAM,wBAAwB,GAAG,kBAAkB,GAAG;IAC1D,MAAM,CAAC,EAAE;QACP,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;CACH,CAAC;AAYF;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,WAAW;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAY;IACjC,QAAQ,CAAC,UAAU,WAAU;IAC7B,QAAQ,CAAC,gBAAgB,WAAU;IACnC,QAAQ,CAAC,WAAW,QAAQ;IAC5B,QAAQ,CAAC,OAAO,EAAE,wBAAwB,CAAC;gBAE/B,OAAO,EAAE,wBAAwB;IAK7C;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQxB,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IASxD,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW;IAkBvC,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAS1D,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW;CAkBhD"}
1
+ {"version":3,"file":"brotli-compression.d.ts","sourceRoot":"","sources":["../../src/lib/brotli-compression.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,kBAAkB,EAAC,yBAAsB;AACtD,OAAO,EAAC,WAAW,EAAC,yBAAsB;AAQ1C,MAAM,MAAM,wBAAwB,GAAG,kBAAkB,GAAG;IAC1D,MAAM,CAAC,EAAE;QACP,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;CACH,CAAC;AAYF;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,WAAW;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAY;IACjC,QAAQ,CAAC,UAAU,WAAU;IAC7B,QAAQ,CAAC,gBAAgB,WAAU;IACnC,QAAQ,CAAC,WAAW,QAAQ;IAC5B,QAAQ,CAAC,OAAO,EAAE,wBAAwB,CAAC;gBAE/B,OAAO,EAAE,wBAAwB;IAK7C;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQxB,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IASxD,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW;IAkBvC,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAS1D,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW;CAkBhD"}
@@ -1,83 +1,85 @@
1
1
  import { Compression } from "./compression.js";
2
2
  import { isBrowser, toArrayBuffer } from '@loaders.gl/loader-utils';
3
+ // import brotli from 'brotli'; // https://bundlephobia.com/package/brotli
3
4
  import { BrotliDecode } from "../brotli/decode.js";
4
5
  import zlib from 'zlib';
5
6
  import { promisify1 } from '@loaders.gl/loader-utils';
6
7
  const DEFAULT_BROTLI_OPTIONS = {
7
- brotli: {
8
- mode: 0,
9
- quality: 8,
10
- lgwin: 22
11
- }
8
+ brotli: {
9
+ mode: 0,
10
+ quality: 8,
11
+ lgwin: 22
12
+ }
12
13
  };
13
14
  let brotli;
15
+ /**
16
+ * brotli compression / decompression
17
+ */
14
18
  export class BrotliCompression extends Compression {
15
- constructor(options) {
16
- super(options);
17
- this.name = 'brotli';
18
- this.extensions = ['br'];
19
- this.contentEncodings = ['br'];
20
- this.isSupported = true;
21
- this.options = void 0;
22
- this.options = options;
23
- }
24
- async preload() {
25
- var _this$options, _this$options$modules;
26
- brotli = brotli || ((_this$options = this.options) === null || _this$options === void 0 ? void 0 : (_this$options$modules = _this$options.modules) === null || _this$options$modules === void 0 ? void 0 : _this$options$modules.brotli);
27
- if (!brotli) {
28
- console.warn(`${this.name} library not installed`);
29
- }
30
- }
31
- async compress(input) {
32
- var _this$options$brotli;
33
- if (!isBrowser && (_this$options$brotli = this.options.brotli) !== null && _this$options$brotli !== void 0 && _this$options$brotli.useZlib) {
34
- const buffer = await promisify1(zlib.brotliCompress)(input);
35
- return toArrayBuffer(buffer);
19
+ constructor(options) {
20
+ super(options);
21
+ this.name = 'brotli';
22
+ this.extensions = ['br'];
23
+ this.contentEncodings = ['br'];
24
+ this.isSupported = true;
25
+ this.options = options;
36
26
  }
37
- return this.compressSync(input);
38
- }
39
- compressSync(input) {
40
- var _this$options$brotli2, _this$options2;
41
- if (!isBrowser && (_this$options$brotli2 = this.options.brotli) !== null && _this$options$brotli2 !== void 0 && _this$options$brotli2.useZlib) {
42
- const buffer = zlib.brotliCompressSync(input);
43
- return toArrayBuffer(buffer);
27
+ /**
28
+ * brotli is an injectable dependency due to big size
29
+ * @param options
30
+ */
31
+ async preload() {
32
+ brotli = brotli || this.options?.modules?.brotli;
33
+ if (!brotli) {
34
+ // eslint-disable-next-line no-console
35
+ console.warn(`${this.name} library not installed`);
36
+ }
44
37
  }
45
- const brotliOptions = {
46
- ...DEFAULT_BROTLI_OPTIONS.brotli,
47
- ...((_this$options2 = this.options) === null || _this$options2 === void 0 ? void 0 : _this$options2.brotli)
48
- };
49
- const inputArray = new Uint8Array(input);
50
- if (!brotli) {
51
- throw new Error('brotli compression: brotli module not installed');
38
+ async compress(input) {
39
+ // On Node.js we can use built-in zlib
40
+ if (!isBrowser && this.options.brotli?.useZlib) {
41
+ const buffer = await promisify1(zlib.brotliCompress)(input);
42
+ return toArrayBuffer(buffer);
43
+ }
44
+ return this.compressSync(input);
52
45
  }
53
- const outputArray = brotli.compress(inputArray, brotliOptions);
54
- return outputArray.buffer;
55
- }
56
- async decompress(input) {
57
- var _this$options$brotli3;
58
- if (!isBrowser && (_this$options$brotli3 = this.options.brotli) !== null && _this$options$brotli3 !== void 0 && _this$options$brotli3.useZlib) {
59
- const buffer = await promisify1(zlib.brotliDecompress)(input);
60
- return toArrayBuffer(buffer);
46
+ compressSync(input) {
47
+ // On Node.js we can use built-in zlib
48
+ if (!isBrowser && this.options.brotli?.useZlib) {
49
+ const buffer = zlib.brotliCompressSync(input);
50
+ return toArrayBuffer(buffer);
51
+ }
52
+ const brotliOptions = { ...DEFAULT_BROTLI_OPTIONS.brotli, ...this.options?.brotli };
53
+ const inputArray = new Uint8Array(input);
54
+ if (!brotli) {
55
+ throw new Error('brotli compression: brotli module not installed');
56
+ }
57
+ // @ts-ignore brotli types state that only Buffers are accepted...
58
+ const outputArray = brotli.compress(inputArray, brotliOptions);
59
+ return outputArray.buffer;
61
60
  }
62
- return this.decompressSync(input);
63
- }
64
- decompressSync(input) {
65
- var _this$options$brotli4, _this$options3;
66
- if (!isBrowser && (_this$options$brotli4 = this.options.brotli) !== null && _this$options$brotli4 !== void 0 && _this$options$brotli4.useZlib) {
67
- const buffer = zlib.brotliDecompressSync(input);
68
- return toArrayBuffer(buffer);
61
+ async decompress(input) {
62
+ // On Node.js we can use built-in zlib
63
+ if (!isBrowser && this.options.brotli?.useZlib) {
64
+ const buffer = await promisify1(zlib.brotliDecompress)(input);
65
+ return toArrayBuffer(buffer);
66
+ }
67
+ return this.decompressSync(input);
69
68
  }
70
- const brotliOptions = {
71
- ...DEFAULT_BROTLI_OPTIONS.brotli,
72
- ...((_this$options3 = this.options) === null || _this$options3 === void 0 ? void 0 : _this$options3.brotli)
73
- };
74
- const inputArray = new Uint8Array(input);
75
- if (brotli) {
76
- const outputArray = brotli.decompress(inputArray, brotliOptions);
77
- return outputArray.buffer;
69
+ decompressSync(input) {
70
+ // On Node.js we can use built-in zlib
71
+ if (!isBrowser && this.options.brotli?.useZlib) {
72
+ const buffer = zlib.brotliDecompressSync(input);
73
+ return toArrayBuffer(buffer);
74
+ }
75
+ const brotliOptions = { ...DEFAULT_BROTLI_OPTIONS.brotli, ...this.options?.brotli };
76
+ const inputArray = new Uint8Array(input);
77
+ if (brotli) {
78
+ // @ts-ignore brotli types state that only Buffers are accepted...
79
+ const outputArray = brotli.decompress(inputArray, brotliOptions);
80
+ return outputArray.buffer;
81
+ }
82
+ const outputArray = BrotliDecode(inputArray, undefined);
83
+ return outputArray.buffer;
78
84
  }
79
- const outputArray = BrotliDecode(inputArray, undefined);
80
- return outputArray.buffer;
81
- }
82
85
  }
83
- //# sourceMappingURL=brotli-compression.js.map
@@ -1,46 +1,53 @@
1
+ // Compression interface
1
2
  import { concatenateArrayBuffersAsync } from '@loaders.gl/loader-utils';
3
+ /** Compression */
2
4
  export class Compression {
3
- constructor(options) {
4
- this.name = void 0;
5
- this.extensions = void 0;
6
- this.contentEncodings = void 0;
7
- this.isSupported = void 0;
8
- this.compressBatches = this.compressBatches.bind(this);
9
- this.decompressBatches = this.decompressBatches.bind(this);
10
- }
11
- async preload() {
12
- return;
13
- }
14
- async compress(input) {
15
- await this.preload();
16
- return this.compressSync(input);
17
- }
18
- async decompress(input, size) {
19
- await this.preload();
20
- return this.decompressSync(input, size);
21
- }
22
- compressSync(input) {
23
- throw new Error(`${this.name}: sync compression not supported`);
24
- }
25
- decompressSync(input, size) {
26
- throw new Error(`${this.name}: sync decompression not supported`);
27
- }
28
- async *compressBatches(asyncIterator) {
29
- const input = await this.concatenate(asyncIterator);
30
- yield this.compress(input);
31
- }
32
- async *decompressBatches(asyncIterator) {
33
- const input = await this.concatenate(asyncIterator);
34
- yield this.decompress(input);
35
- }
36
- concatenate(asyncIterator) {
37
- return concatenateArrayBuffersAsync(asyncIterator);
38
- }
39
- improveError(error) {
40
- if (!error.message.includes(this.name)) {
41
- error.message = `${this.name} ${error.message}`;
42
- }
43
- return error;
44
- }
5
+ constructor(options) {
6
+ this.compressBatches = this.compressBatches.bind(this);
7
+ this.decompressBatches = this.decompressBatches.bind(this);
8
+ }
9
+ /** Preloads any dynamic libraries. May enable sync functions */
10
+ async preload() {
11
+ return;
12
+ }
13
+ /** Asynchronously compress data */
14
+ async compress(input) {
15
+ await this.preload();
16
+ return this.compressSync(input);
17
+ }
18
+ /** Asynchronously decompress data */
19
+ async decompress(input, size) {
20
+ await this.preload();
21
+ return this.decompressSync(input, size);
22
+ }
23
+ /** Synchronously compress data */
24
+ compressSync(input) {
25
+ throw new Error(`${this.name}: sync compression not supported`);
26
+ }
27
+ /** Synchronously compress data */
28
+ decompressSync(input, size) {
29
+ throw new Error(`${this.name}: sync decompression not supported`);
30
+ }
31
+ /** Compress batches */
32
+ async *compressBatches(asyncIterator) {
33
+ // TODO - implement incremental compression
34
+ const input = await this.concatenate(asyncIterator);
35
+ yield this.compress(input);
36
+ }
37
+ /** Decompress batches */
38
+ async *decompressBatches(asyncIterator) {
39
+ // TODO - implement incremental compression
40
+ const input = await this.concatenate(asyncIterator);
41
+ yield this.decompress(input);
42
+ }
43
+ // HELPERS
44
+ concatenate(asyncIterator) {
45
+ return concatenateArrayBuffersAsync(asyncIterator);
46
+ }
47
+ improveError(error) {
48
+ if (!error.message.includes(this.name)) {
49
+ error.message = `${this.name} ${error.message}`;
50
+ }
51
+ return error;
52
+ }
45
53
  }
46
- //# sourceMappingURL=compression.js.map
@@ -1,5 +1,5 @@
1
- import type { CompressionOptions } from './compression';
2
- import { Compression } from './compression';
1
+ import type { CompressionOptions } from "./compression.js";
2
+ import { Compression } from "./compression.js";
3
3
  import pako from 'pako';
4
4
  export type DeflateCompressionOptions = CompressionOptions & {
5
5
  deflate?: pako.InflateOptions & pako.DeflateOptions & {
@@ -1 +1 @@
1
- {"version":3,"file":"deflate-compression.d.ts","sourceRoot":"","sources":["../../src/lib/deflate-compression.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,eAAe,CAAC;AACtD,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAE1C,OAAO,IAAI,MAAM,MAAM,CAAC;AAIxB,MAAM,MAAM,yBAAyB,GAAG,kBAAkB,GAAG;IAC3D,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,GAAG;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAC,CAAC;IAC1E,kEAAkE;IAClE,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,CAAC;AAEF;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,WAAW;IACjD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAa;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,CAAM;IACnC,QAAQ,CAAC,gBAAgB,WAAe;IACxC,QAAQ,CAAC,WAAW,QAAQ;IAE5B,QAAQ,CAAC,OAAO,EAAE,yBAAyB,CAAC;IAE5C,OAAO,CAAC,OAAO,CAAqB;gBAExB,OAAO,GAAE,yBAA8B;IAK7C,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAWlD,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAW1D,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW;IAY7C,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW;IAYxC,eAAe,CACpB,aAAa,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,GAChE,aAAa,CAAC,WAAW,CAAC;IAMtB,iBAAiB,CACtB,aAAa,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,GAChE,aAAa,CAAC,WAAW,CAAC;IAMtB,gBAAgB,CACrB,aAAa,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,EAC1C,aAAa,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,GAChE,aAAa,CAAC,WAAW,CAAC;IAwB7B,OAAO,CAAC,KAAK,KAAA;IAIb,MAAM,CAAC,MAAM,KAAA;IAMb,UAAU,IAAI,WAAW,EAAE;IAO3B,SAAS,CAAC,IAAI,GAAE,MAAU,GAAG,MAAM;CAuBpC"}
1
+ {"version":3,"file":"deflate-compression.d.ts","sourceRoot":"","sources":["../../src/lib/deflate-compression.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,kBAAkB,EAAC,yBAAsB;AACtD,OAAO,EAAC,WAAW,EAAC,yBAAsB;AAE1C,OAAO,IAAI,MAAM,MAAM,CAAC;AAIxB,MAAM,MAAM,yBAAyB,GAAG,kBAAkB,GAAG;IAC3D,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,GAAG;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAC,CAAC;IAC1E,kEAAkE;IAClE,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,CAAC;AAEF;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,WAAW;IACjD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAa;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,CAAM;IACnC,QAAQ,CAAC,gBAAgB,WAAe;IACxC,QAAQ,CAAC,WAAW,QAAQ;IAE5B,QAAQ,CAAC,OAAO,EAAE,yBAAyB,CAAC;IAE5C,OAAO,CAAC,OAAO,CAAqB;gBAExB,OAAO,GAAE,yBAA8B;IAK7C,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAWlD,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAW1D,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW;IAY7C,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW;IAYxC,eAAe,CACpB,aAAa,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,GAChE,aAAa,CAAC,WAAW,CAAC;IAMtB,iBAAiB,CACtB,aAAa,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,GAChE,aAAa,CAAC,WAAW,CAAC;IAMtB,gBAAgB,CACrB,aAAa,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,EAC1C,aAAa,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,GAChE,aAAa,CAAC,WAAW,CAAC;IAwB7B,OAAO,CAAC,KAAK,KAAA;IAIb,MAAM,CAAC,MAAM,KAAA;IAMb,UAAU,IAAI,WAAW,EAAE;IAO3B,SAAS,CAAC,IAAI,GAAE,MAAU,GAAG,MAAM;CAuBpC"}
@@ -1,119 +1,130 @@
1
1
  import { Compression } from "./compression.js";
2
2
  import { isBrowser, toArrayBuffer } from '@loaders.gl/loader-utils';
3
- import pako from 'pako';
3
+ import pako from 'pako'; // https://bundlephobia.com/package/pako
4
4
  import zlib from 'zlib';
5
5
  import { promisify1 } from '@loaders.gl/loader-utils';
6
+ /**
7
+ * DEFLATE compression / decompression
8
+ */
6
9
  export class DeflateCompression extends Compression {
7
- constructor() {
8
- let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
9
- super(options);
10
- this.name = 'deflate';
11
- this.extensions = [];
12
- this.contentEncodings = ['deflate'];
13
- this.isSupported = true;
14
- this.options = void 0;
15
- this._chunks = [];
16
- this.options = options;
17
- }
18
- async compress(input) {
19
- var _this$options$deflate;
20
- if (!isBrowser && (_this$options$deflate = this.options.deflate) !== null && _this$options$deflate !== void 0 && _this$options$deflate.useZlib) {
21
- var _this$options$deflate2;
22
- const buffer = (_this$options$deflate2 = this.options.deflate) !== null && _this$options$deflate2 !== void 0 && _this$options$deflate2.gzip ? await promisify1(zlib.gzip)(input) : await promisify1(zlib.deflate)(input);
23
- return toArrayBuffer(buffer);
10
+ constructor(options = {}) {
11
+ super(options);
12
+ this.name = 'deflate';
13
+ this.extensions = [];
14
+ this.contentEncodings = ['deflate'];
15
+ this.isSupported = true;
16
+ this._chunks = [];
17
+ this.options = options;
24
18
  }
25
- return this.compressSync(input);
26
- }
27
- async decompress(input) {
28
- var _this$options$deflate3;
29
- if (!isBrowser && (_this$options$deflate3 = this.options.deflate) !== null && _this$options$deflate3 !== void 0 && _this$options$deflate3.useZlib) {
30
- var _this$options$deflate4;
31
- const buffer = (_this$options$deflate4 = this.options.deflate) !== null && _this$options$deflate4 !== void 0 && _this$options$deflate4.gzip ? await promisify1(zlib.gunzip)(input) : await promisify1(zlib.inflate)(input);
32
- return toArrayBuffer(buffer);
19
+ async compress(input) {
20
+ // On Node.js we can use built-in zlib
21
+ if (!isBrowser && this.options.deflate?.useZlib) {
22
+ const buffer = this.options.deflate?.gzip
23
+ ? await promisify1(zlib.gzip)(input)
24
+ : await promisify1(zlib.deflate)(input);
25
+ return toArrayBuffer(buffer);
26
+ }
27
+ return this.compressSync(input);
33
28
  }
34
- return this.decompressSync(input);
35
- }
36
- compressSync(input) {
37
- var _this$options$deflate5, _this$options, _this$options2;
38
- if (!isBrowser && (_this$options$deflate5 = this.options.deflate) !== null && _this$options$deflate5 !== void 0 && _this$options$deflate5.useZlib) {
39
- var _this$options$deflate6;
40
- const buffer = (_this$options$deflate6 = this.options.deflate) !== null && _this$options$deflate6 !== void 0 && _this$options$deflate6.gzip ? zlib.gzipSync(input) : zlib.deflateSync(input);
41
- return toArrayBuffer(buffer);
29
+ async decompress(input) {
30
+ // On Node.js we can use built-in zlib
31
+ if (!isBrowser && this.options.deflate?.useZlib) {
32
+ const buffer = this.options.deflate?.gzip
33
+ ? await promisify1(zlib.gunzip)(input)
34
+ : await promisify1(zlib.inflate)(input);
35
+ return toArrayBuffer(buffer);
36
+ }
37
+ return this.decompressSync(input);
42
38
  }
43
- const pakoOptions = ((_this$options = this.options) === null || _this$options === void 0 ? void 0 : _this$options.deflate) || {};
44
- const inputArray = new Uint8Array(input);
45
- const deflate = (_this$options2 = this.options) !== null && _this$options2 !== void 0 && _this$options2.raw ? pako.deflateRaw : pako.deflate;
46
- return deflate(inputArray, pakoOptions).buffer;
47
- }
48
- decompressSync(input) {
49
- var _this$options$deflate7, _this$options3, _this$options4;
50
- if (!isBrowser && (_this$options$deflate7 = this.options.deflate) !== null && _this$options$deflate7 !== void 0 && _this$options$deflate7.useZlib) {
51
- var _this$options$deflate8;
52
- const buffer = (_this$options$deflate8 = this.options.deflate) !== null && _this$options$deflate8 !== void 0 && _this$options$deflate8.gzip ? zlib.gunzipSync(input) : zlib.inflateSync(input);
53
- return toArrayBuffer(buffer);
39
+ compressSync(input) {
40
+ // On Node.js we can use built-in zlib
41
+ if (!isBrowser && this.options.deflate?.useZlib) {
42
+ const buffer = this.options.deflate?.gzip ? zlib.gzipSync(input) : zlib.deflateSync(input);
43
+ return toArrayBuffer(buffer);
44
+ }
45
+ const pakoOptions = this.options?.deflate || {};
46
+ const inputArray = new Uint8Array(input);
47
+ const deflate = this.options?.raw ? pako.deflateRaw : pako.deflate;
48
+ return deflate(inputArray, pakoOptions).buffer;
54
49
  }
55
- const pakoOptions = ((_this$options3 = this.options) === null || _this$options3 === void 0 ? void 0 : _this$options3.deflate) || {};
56
- const inputArray = new Uint8Array(input);
57
- const inflate = (_this$options4 = this.options) !== null && _this$options4 !== void 0 && _this$options4.raw ? pako.inflateRaw : pako.inflate;
58
- return inflate(inputArray, pakoOptions).buffer;
59
- }
60
- async *compressBatches(asyncIterator) {
61
- var _this$options5;
62
- const pakoOptions = ((_this$options5 = this.options) === null || _this$options5 === void 0 ? void 0 : _this$options5.deflate) || {};
63
- const pakoProcessor = new pako.Deflate(pakoOptions);
64
- yield* this.transformBatches(pakoProcessor, asyncIterator);
65
- }
66
- async *decompressBatches(asyncIterator) {
67
- var _this$options6;
68
- const pakoOptions = ((_this$options6 = this.options) === null || _this$options6 === void 0 ? void 0 : _this$options6.deflate) || {};
69
- const pakoProcessor = new pako.Inflate(pakoOptions);
70
- yield* this.transformBatches(pakoProcessor, asyncIterator);
71
- }
72
- async *transformBatches(pakoProcessor, asyncIterator) {
73
- pakoProcessor.onData = this._onData.bind(this);
74
- pakoProcessor.onEnd = this._onEnd.bind(this);
75
- for await (const chunk of asyncIterator) {
76
- const uint8Array = new Uint8Array(chunk);
77
- const ok = pakoProcessor.push(uint8Array, false);
78
- if (!ok) {
79
- throw new Error(`${this._getError()}write`);
80
- }
81
- const chunks = this._getChunks();
82
- yield* chunks;
50
+ decompressSync(input) {
51
+ // On Node.js we can use built-in zlib
52
+ if (!isBrowser && this.options.deflate?.useZlib) {
53
+ const buffer = this.options.deflate?.gzip ? zlib.gunzipSync(input) : zlib.inflateSync(input);
54
+ return toArrayBuffer(buffer);
55
+ }
56
+ const pakoOptions = this.options?.deflate || {};
57
+ const inputArray = new Uint8Array(input);
58
+ const inflate = this.options?.raw ? pako.inflateRaw : pako.inflate;
59
+ return inflate(inputArray, pakoOptions).buffer;
83
60
  }
84
- const emptyChunk = new Uint8Array(0);
85
- const ok = pakoProcessor.push(emptyChunk, true);
86
- if (!ok) {}
87
- const chunks = this._getChunks();
88
- yield* chunks;
89
- }
90
- _onData(chunk) {
91
- this._chunks.push(chunk);
92
- }
93
- _onEnd(status) {
94
- if (status !== 0) {
95
- throw new Error(this._getError(status) + this._chunks.length);
61
+ async *compressBatches(asyncIterator) {
62
+ const pakoOptions = this.options?.deflate || {};
63
+ const pakoProcessor = new pako.Deflate(pakoOptions);
64
+ yield* this.transformBatches(pakoProcessor, asyncIterator);
65
+ }
66
+ async *decompressBatches(asyncIterator) {
67
+ const pakoOptions = this.options?.deflate || {};
68
+ const pakoProcessor = new pako.Inflate(pakoOptions);
69
+ yield* this.transformBatches(pakoProcessor, asyncIterator);
70
+ }
71
+ async *transformBatches(pakoProcessor, asyncIterator) {
72
+ pakoProcessor.onData = this._onData.bind(this);
73
+ pakoProcessor.onEnd = this._onEnd.bind(this);
74
+ for await (const chunk of asyncIterator) {
75
+ const uint8Array = new Uint8Array(chunk);
76
+ const ok = pakoProcessor.push(uint8Array, false); // false -> not last chunk
77
+ if (!ok) {
78
+ throw new Error(`${this._getError()}write`);
79
+ }
80
+ const chunks = this._getChunks();
81
+ yield* chunks;
82
+ }
83
+ // End
84
+ const emptyChunk = new Uint8Array(0);
85
+ const ok = pakoProcessor.push(emptyChunk, true); // true -> last chunk
86
+ if (!ok) {
87
+ // For some reason we get error but it still works???
88
+ // throw new Error(this._getError() + 'end');
89
+ }
90
+ const chunks = this._getChunks();
91
+ yield* chunks;
92
+ }
93
+ _onData(chunk) {
94
+ this._chunks.push(chunk);
95
+ }
96
+ _onEnd(status) {
97
+ if (status !== 0) {
98
+ throw new Error(this._getError(status) + this._chunks.length);
99
+ }
100
+ }
101
+ _getChunks() {
102
+ const chunks = this._chunks;
103
+ this._chunks = [];
104
+ return chunks;
105
+ }
106
+ // TODO - For some reason we don't get the error message from pako in _onEnd?
107
+ _getError(code = 0) {
108
+ const MESSAGES = {
109
+ /* Z_NEED_DICT 2 */
110
+ 2: 'need dictionary',
111
+ /* Z_STREAM_END 1 */
112
+ 1: 'stream end',
113
+ /* Z_OK 0 */
114
+ 0: '',
115
+ /* Z_ERRNO (-1) */
116
+ '-1': 'file error',
117
+ /* Z_STREAM_ERROR (-2) */
118
+ '-2': 'stream error',
119
+ /* Z_DATA_ERROR (-3) */
120
+ '-3': 'data error',
121
+ /* Z_MEM_ERROR (-4) */
122
+ '-4': 'insufficient memory',
123
+ /* Z_BUF_ERROR (-5) */
124
+ '-5': 'buffer error',
125
+ /* Z_VERSION_ERROR (-6) */
126
+ '-6': 'incompatible version'
127
+ };
128
+ return `${this.name}: ${MESSAGES[code]}`;
96
129
  }
97
- }
98
- _getChunks() {
99
- const chunks = this._chunks;
100
- this._chunks = [];
101
- return chunks;
102
- }
103
- _getError() {
104
- let code = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
105
- const MESSAGES = {
106
- 2: 'need dictionary',
107
- 1: 'stream end',
108
- 0: '',
109
- '-1': 'file error',
110
- '-2': 'stream error',
111
- '-3': 'data error',
112
- '-4': 'insufficient memory',
113
- '-5': 'buffer error',
114
- '-6': 'incompatible version'
115
- };
116
- return `${this.name}: ${MESSAGES[code]}`;
117
- }
118
130
  }
119
- //# sourceMappingURL=deflate-compression.js.map
@@ -1,5 +1,5 @@
1
- import type { CompressionOptions } from './compression';
2
- import { DeflateCompression } from './deflate-compression';
1
+ import type { CompressionOptions } from "./compression.js";
2
+ import { DeflateCompression } from "./deflate-compression.js";
3
3
  import pako from 'pako';
4
4
  export type GZipCompressionOptions = CompressionOptions & {
5
5
  gzip?: pako.InflateOptions & pako.DeflateOptions;
@@ -1 +1 @@
1
- {"version":3,"file":"gzip-compression.d.ts","sourceRoot":"","sources":["../../src/lib/gzip-compression.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,eAAe,CAAC;AACtD,OAAO,EAAC,kBAAkB,EAAC,MAAM,uBAAuB,CAAC;AACzD,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,MAAM,sBAAsB,GAAG,kBAAkB,GAAG;IACxD,IAAI,CAAC,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;CAClD,CAAC;AAEF;;GAEG;AACH,qBAAa,eAAgB,SAAQ,kBAAkB;IACrD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAU;IAC/B,QAAQ,CAAC,UAAU,WAAkB;IACrC,QAAQ,CAAC,gBAAgB,WAAsB;IAC/C,QAAQ,CAAC,WAAW,QAAQ;gBAEhB,OAAO,CAAC,EAAE,sBAAsB;CAG7C"}
1
+ {"version":3,"file":"gzip-compression.d.ts","sourceRoot":"","sources":["../../src/lib/gzip-compression.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,kBAAkB,EAAC,yBAAsB;AACtD,OAAO,EAAC,kBAAkB,EAAC,iCAA8B;AACzD,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,MAAM,sBAAsB,GAAG,kBAAkB,GAAG;IACxD,IAAI,CAAC,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;CAClD,CAAC;AAEF;;GAEG;AACH,qBAAa,eAAgB,SAAQ,kBAAkB;IACrD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAU;IAC/B,QAAQ,CAAC,UAAU,WAAkB;IACrC,QAAQ,CAAC,gBAAgB,WAAsB;IAC/C,QAAQ,CAAC,WAAW,QAAQ;gBAEhB,OAAO,CAAC,EAAE,sBAAsB;CAG7C"}
@@ -1,17 +1,13 @@
1
1
  import { DeflateCompression } from "./deflate-compression.js";
2
+ /**
3
+ * GZIP compression / decompression
4
+ */
2
5
  export class GZipCompression extends DeflateCompression {
3
- constructor(options) {
4
- super({
5
- ...options,
6
- deflate: {
7
- ...(options === null || options === void 0 ? void 0 : options.gzip),
8
- gzip: true
9
- }
10
- });
11
- this.name = 'gzip';
12
- this.extensions = ['gz', 'gzip'];
13
- this.contentEncodings = ['gzip', 'x-gzip'];
14
- this.isSupported = true;
15
- }
6
+ constructor(options) {
7
+ super({ ...options, deflate: { ...options?.gzip, gzip: true } });
8
+ this.name = 'gzip';
9
+ this.extensions = ['gz', 'gzip'];
10
+ this.contentEncodings = ['gzip', 'x-gzip'];
11
+ this.isSupported = true;
12
+ }
16
13
  }
17
- //# sourceMappingURL=gzip-compression.js.map
@@ -1,5 +1,5 @@
1
- import type { CompressionOptions } from './compression';
2
- import { Compression } from './compression';
1
+ import type { CompressionOptions } from "./compression.js";
2
+ import { Compression } from "./compression.js";
3
3
  /**
4
4
  * LZ4 compression / decompression
5
5
  */
@@ -1 +1 @@
1
- {"version":3,"file":"lz4-compression.d.ts","sourceRoot":"","sources":["../../src/lib/lz4-compression.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,eAAe,CAAC;AACtD,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAM1C;;GAEG;AACH,qBAAa,cAAe,SAAQ,WAAW;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAS;IAC9B,QAAQ,CAAC,UAAU,WAAW;IAC9B,QAAQ,CAAC,gBAAgB,WAAa;IACtC,QAAQ,CAAC,WAAW,QAAQ;IAC5B,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;gBAEzB,OAAO,EAAE,kBAAkB;IAUvC,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW;IAK7C;;;;;OAKG;IACH,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW;IAwBhE;;;;;;;;OAQG;IACH,WAAW,CACT,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,UAAU,EAClB,UAAU,CAAC,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM;IAgET;;;OAGG;IACH,gBAAgB,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO;CAI7C"}
1
+ {"version":3,"file":"lz4-compression.d.ts","sourceRoot":"","sources":["../../src/lib/lz4-compression.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAC,kBAAkB,EAAC,yBAAsB;AACtD,OAAO,EAAC,WAAW,EAAC,yBAAsB;AAM1C;;GAEG;AACH,qBAAa,cAAe,SAAQ,WAAW;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAS;IAC9B,QAAQ,CAAC,UAAU,WAAW;IAC9B,QAAQ,CAAC,gBAAgB,WAAa;IACtC,QAAQ,CAAC,WAAW,QAAQ;IAC5B,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;gBAEzB,OAAO,EAAE,kBAAkB;IAUvC,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW;IAK7C;;;;;OAKG;IACH,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW;IAwBhE;;;;;;;;OAQG;IACH,WAAW,CACT,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,UAAU,EAClB,UAAU,CAAC,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM;IAgET;;;OAGG;IACH,gBAAgB,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO;CAI7C"}