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

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 (59) hide show
  1. package/dist/brotli/decode.js +2311 -1739
  2. package/dist/compress-on-worker.js +16 -8
  3. package/dist/compression-worker.js +1 -1
  4. package/dist/compression-worker.js.map +2 -2
  5. package/dist/dist.dev.js +548 -140
  6. package/dist/dist.min.js +16 -0
  7. package/dist/index.cjs +77 -152
  8. package/dist/index.cjs.map +7 -0
  9. package/dist/index.d.ts +12 -12
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +0 -1
  12. package/dist/lib/brotli-compression.d.ts +2 -2
  13. package/dist/lib/brotli-compression.d.ts.map +1 -1
  14. package/dist/lib/brotli-compression.js +70 -67
  15. package/dist/lib/compression.js +50 -43
  16. package/dist/lib/deflate-compression.d.ts +2 -2
  17. package/dist/lib/deflate-compression.d.ts.map +1 -1
  18. package/dist/lib/deflate-compression.js +119 -107
  19. package/dist/lib/gzip-compression.d.ts +2 -2
  20. package/dist/lib/gzip-compression.d.ts.map +1 -1
  21. package/dist/lib/gzip-compression.js +10 -14
  22. package/dist/lib/lz4-compression.d.ts +2 -2
  23. package/dist/lib/lz4-compression.d.ts.map +1 -1
  24. package/dist/lib/lz4-compression.js +126 -75
  25. package/dist/lib/lzo-compression.d.ts +2 -2
  26. package/dist/lib/lzo-compression.d.ts.map +1 -1
  27. package/dist/lib/lzo-compression.js +48 -28
  28. package/dist/lib/no-compression.d.ts +2 -2
  29. package/dist/lib/no-compression.d.ts.map +1 -1
  30. package/dist/lib/no-compression.js +24 -22
  31. package/dist/lib/snappy-compression.d.ts +2 -2
  32. package/dist/lib/snappy-compression.d.ts.map +1 -1
  33. package/dist/lib/snappy-compression.js +21 -17
  34. package/dist/lib/zstd-compression.d.ts +2 -2
  35. package/dist/lib/zstd-compression.d.ts.map +1 -1
  36. package/dist/lib/zstd-compression.js +37 -28
  37. package/dist/types.d.ts +1 -1
  38. package/dist/types.d.ts.map +1 -1
  39. package/dist/types.js +0 -1
  40. package/dist/workers/compression-worker-node.d.ts +1 -1
  41. package/dist/workers/compression-worker-node.d.ts.map +1 -1
  42. package/dist/workers/compression-worker-node.js +0 -1
  43. package/dist/workers/compression-worker.js +56 -44
  44. package/package.json +12 -9
  45. package/dist/brotli/decode.js.map +0 -1
  46. package/dist/compress-on-worker.js.map +0 -1
  47. package/dist/index.js.map +0 -1
  48. package/dist/lib/brotli-compression.js.map +0 -1
  49. package/dist/lib/compression.js.map +0 -1
  50. package/dist/lib/deflate-compression.js.map +0 -1
  51. package/dist/lib/gzip-compression.js.map +0 -1
  52. package/dist/lib/lz4-compression.js.map +0 -1
  53. package/dist/lib/lzo-compression.js.map +0 -1
  54. package/dist/lib/no-compression.js.map +0 -1
  55. package/dist/lib/snappy-compression.js.map +0 -1
  56. package/dist/lib/zstd-compression.js.map +0 -1
  57. package/dist/types.js.map +0 -1
  58. package/dist/workers/compression-worker-node.js.map +0 -1
  59. package/dist/workers/compression-worker.js.map +0 -1
@@ -1,87 +1,138 @@
1
+ // Copyright (c) 2012 Pierre Curto
2
+ // Permission is hereby granted, free of charge, to any person obtaining a copy
3
+ // of this software and associated documentation files (the "Software"), to deal
4
+ // in the Software without restriction, including without limitation the rights
5
+ // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
6
+ // copies of the Software, and to permit persons to whom the Software is
7
+ // furnished to do so, subject to the following conditions:
8
+ // The above copyright notice and this permission notice shall be included in
9
+ // all copies or substantial portions of the Software.
10
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
11
+ // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
12
+ // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
13
+ // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
14
+ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
15
+ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
16
+ // THE SOFTWARE.
17
+ /* eslint-disable complexity */
18
+ /* eslint-disable max-statements */
19
+ // LZ4
1
20
  import { toArrayBuffer } from '@loaders.gl/loader-utils';
2
21
  import { Compression } from "./compression.js";
22
+ // import lz4js from 'lz4js'; // https://bundlephobia.com/package/lz4
3
23
  const LZ4_MAGIC_NUMBER = 0x184d2204;
4
24
  let lz4js;
25
+ /**
26
+ * LZ4 compression / decompression
27
+ */
5
28
  export class LZ4Compression extends Compression {
6
- constructor(options) {
7
- var _this$options, _this$options$modules;
8
- super(options);
9
- this.name = 'lz4';
10
- this.extensions = ['lz4'];
11
- this.contentEncodings = ['x-lz4'];
12
- this.isSupported = true;
13
- this.options = void 0;
14
- this.options = options;
15
- lz4js = lz4js || ((_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.lz4js);
16
- if (!lz4js) {
17
- throw new Error(this.name);
29
+ name = 'lz4';
30
+ extensions = ['lz4'];
31
+ contentEncodings = ['x-lz4'];
32
+ isSupported = true;
33
+ options;
34
+ constructor(options) {
35
+ super(options);
36
+ this.options = options;
37
+ lz4js = lz4js || this.options?.modules?.lz4js;
38
+ if (!lz4js) {
39
+ throw new Error(this.name);
40
+ }
18
41
  }
19
- }
20
- compressSync(input) {
21
- const inputArray = new Uint8Array(input);
22
- return lz4js.compress(inputArray).buffer;
23
- }
24
- decompressSync(data, maxSize) {
25
- try {
26
- const isMagicNumberExists = this.checkMagicNumber(data);
27
- const inputArray = new Uint8Array(data);
28
- if (isMagicNumberExists) {
29
- return lz4js.decompress(inputArray, maxSize).buffer;
30
- }
31
- if (!maxSize) {
32
- const error = new Error('Need to provide maxSize');
33
- throw this.improveError(error);
34
- }
35
- let uncompressed = new Uint8Array(maxSize);
36
- const uncompressedSize = this.decodeBlock(inputArray, uncompressed);
37
- uncompressed = uncompressed.slice(0, uncompressedSize);
38
- return toArrayBuffer(uncompressed);
39
- } catch (error) {
40
- throw this.improveError(error);
42
+ compressSync(input) {
43
+ const inputArray = new Uint8Array(input);
44
+ return lz4js.compress(inputArray).buffer;
41
45
  }
42
- }
43
- decodeBlock(data, output, startIndex, endIndex) {
44
- startIndex = startIndex || 0;
45
- endIndex = endIndex || data.length - startIndex;
46
- let uncompressedSize = 0;
47
- for (let index = startIndex; index < endIndex;) {
48
- const token = data[index++];
49
- let literalsLength = token >> 4;
50
- if (literalsLength > 0) {
51
- let length = literalsLength + 240;
52
- while (length === 255) {
53
- length = data[index++];
54
- literalsLength += length;
46
+ /**
47
+ * Decompresses an ArrayBuffer containing an Lz4 frame. maxSize is optional; if not
48
+ * provided, a maximum size will be determined by examining the data. The
49
+ * returned ArrayBuffer will always be perfectly sized.
50
+ * If data provided without magic number we will parse it as block
51
+ */
52
+ decompressSync(data, maxSize) {
53
+ try {
54
+ const isMagicNumberExists = this.checkMagicNumber(data);
55
+ const inputArray = new Uint8Array(data);
56
+ if (isMagicNumberExists) {
57
+ return lz4js.decompress(inputArray, maxSize).buffer;
58
+ }
59
+ if (!maxSize) {
60
+ const error = new Error('Need to provide maxSize');
61
+ throw this.improveError(error);
62
+ }
63
+ let uncompressed = new Uint8Array(maxSize);
64
+ const uncompressedSize = this.decodeBlock(inputArray, uncompressed);
65
+ uncompressed = uncompressed.slice(0, uncompressedSize);
66
+ return toArrayBuffer(uncompressed);
55
67
  }
56
- const end = index + literalsLength;
57
- while (index < end) {
58
- output[uncompressedSize++] = data[index++];
68
+ catch (error) {
69
+ throw this.improveError(error);
59
70
  }
60
- if (index === endIndex) {
61
- return uncompressedSize;
71
+ }
72
+ /**
73
+ * Decode lz4 file as block
74
+ * Solution taken from here
75
+ * https://github.com/pierrec/node-lz4/blob/0dac687262403fd34f905b963da7220692f2a4a1/lib/binding.js#L25
76
+ * @param input
77
+ * @param output
78
+ * @param startIndex
79
+ * @param endIndex
80
+ */
81
+ decodeBlock(data, output, startIndex, endIndex) {
82
+ startIndex = startIndex || 0;
83
+ endIndex = endIndex || data.length - startIndex;
84
+ let uncompressedSize = 0;
85
+ // Process each sequence in the incoming data
86
+ for (let index = startIndex; index < endIndex;) {
87
+ const token = data[index++];
88
+ // Literals
89
+ let literalsLength = token >> 4;
90
+ if (literalsLength > 0) {
91
+ // length of literals
92
+ let length = literalsLength + 240;
93
+ while (length === 255) {
94
+ length = data[index++];
95
+ literalsLength += length;
96
+ }
97
+ // Copy the literals
98
+ const end = index + literalsLength;
99
+ while (index < end) {
100
+ output[uncompressedSize++] = data[index++];
101
+ }
102
+ // End of buffer?
103
+ if (index === endIndex) {
104
+ return uncompressedSize;
105
+ }
106
+ }
107
+ // Match copy
108
+ // 2 bytes offset (little endian)
109
+ const offset = data[index++] | (data[index++] << 8);
110
+ // 0 is an invalid offset value
111
+ if (offset === 0 || offset > uncompressedSize) {
112
+ return -(index - 2);
113
+ }
114
+ // length of match copy
115
+ let matchLength = token & 0xf;
116
+ let length = matchLength + 240;
117
+ while (length === 255) {
118
+ length = data[index++];
119
+ matchLength += length;
120
+ }
121
+ // Copy the match
122
+ let pos = uncompressedSize - offset; // position of the match copy in the current output
123
+ const end = uncompressedSize + matchLength + 4; // minmatch = 4
124
+ while (uncompressedSize < end) {
125
+ output[uncompressedSize++] = output[pos++];
126
+ }
62
127
  }
63
- }
64
- const offset = data[index++] | data[index++] << 8;
65
- if (offset === 0 || offset > uncompressedSize) {
66
- return -(index - 2);
67
- }
68
- let matchLength = token & 0xf;
69
- let length = matchLength + 240;
70
- while (length === 255) {
71
- length = data[index++];
72
- matchLength += length;
73
- }
74
- let pos = uncompressedSize - offset;
75
- const end = uncompressedSize + matchLength + 4;
76
- while (uncompressedSize < end) {
77
- output[uncompressedSize++] = output[pos++];
78
- }
128
+ return uncompressedSize;
129
+ }
130
+ /**
131
+ * Compare file magic with lz4 magic number
132
+ * @param input
133
+ */
134
+ checkMagicNumber(data) {
135
+ const magic = new Uint32Array(data.slice(0, 4));
136
+ return magic[0] === LZ4_MAGIC_NUMBER;
79
137
  }
80
- return uncompressedSize;
81
- }
82
- checkMagicNumber(data) {
83
- const magic = new Uint32Array(data.slice(0, 4));
84
- return magic[0] === LZ4_MAGIC_NUMBER;
85
- }
86
138
  }
87
- //# sourceMappingURL=lz4-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
  * Lempel-Ziv-Oberheimer compression / decompression
5
5
  */
@@ -1 +1 @@
1
- {"version":3,"file":"lzo-compression.d.ts","sourceRoot":"","sources":["../../src/lib/lzo-compression.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,eAAe,CAAC;AACtD,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAW1C;;GAEG;AACH,qBAAa,cAAe,SAAQ,WAAW;IAC7C,QAAQ,CAAC,IAAI,SAAS;IACtB,QAAQ,CAAC,UAAU,UAAM;IACzB,QAAQ,CAAC,gBAAgB,UAAM;IAC/B,QAAQ,CAAC,WAAW,SAAS;IAC7B,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IAErC;;;OAGG;gBACS,OAAO,EAAE,kBAAkB;IAUjC,OAAO;IAKP,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAOlD,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;CAY3D"}
1
+ {"version":3,"file":"lzo-compression.d.ts","sourceRoot":"","sources":["../../src/lib/lzo-compression.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,kBAAkB,EAAC,yBAAsB;AACtD,OAAO,EAAC,WAAW,EAAC,yBAAsB;AAW1C;;GAEG;AACH,qBAAa,cAAe,SAAQ,WAAW;IAC7C,QAAQ,CAAC,IAAI,SAAS;IACtB,QAAQ,CAAC,UAAU,UAAM;IACzB,QAAQ,CAAC,gBAAgB,UAAM;IAC/B,QAAQ,CAAC,WAAW,SAAS;IAC7B,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IAErC;;;OAGG;gBACS,OAAO,EAAE,kBAAkB;IAUjC,OAAO;IAKP,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAOlD,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;CAY3D"}
@@ -1,35 +1,55 @@
1
+ // LZO
2
+ // import {loadLibrary} from '@loaders.gl/worker-utils';
1
3
  import { toBuffer } from '@loaders.gl/loader-utils';
2
4
  import { Compression } from "./compression.js";
5
+ // import {isBrowser} from '@loaders.gl/loader-utils';
6
+ // import lzo from 'lzo'; // https://bundlephobia.com/package/lzo
7
+ // import {decompress} from 'lzo-wasm';
8
+ // const LZO_WASM_JS_URL = './node_modules/lzo-wasm/lzo-wasm.js';
9
+ // const LZO_WASM_WASM_URL = './node_modules/lzo-wasm/lzo-wasm.wasm';
3
10
  let lzo;
11
+ /**
12
+ * Lempel-Ziv-Oberheimer compression / decompression
13
+ */
4
14
  export class LZOCompression extends Compression {
5
- constructor(options) {
6
- var _this$options, _this$options$modules;
7
- super(options);
8
- this.name = 'lzo';
9
- this.extensions = [];
10
- this.contentEncodings = [];
11
- this.isSupported = false;
12
- this.options = void 0;
13
- this.options = options;
14
- lzo = lzo || ((_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.lzo);
15
- if (!lzo) {
16
- throw new Error(this.name);
15
+ name = 'lzo';
16
+ extensions = [];
17
+ contentEncodings = [];
18
+ isSupported = false; // !isBrowser;
19
+ options;
20
+ /**
21
+ * lzo is an injectable dependency due to big size
22
+ * @param options
23
+ */
24
+ constructor(options) {
25
+ super(options);
26
+ this.options = options;
27
+ lzo = lzo || this.options?.modules?.lzo;
28
+ if (!lzo) {
29
+ throw new Error(this.name);
30
+ }
17
31
  }
18
- }
19
- async preload() {}
20
- async compress(input) {
21
- await this.preload();
22
- const inputBuffer = toBuffer(input);
23
- return lzo.compress(inputBuffer).buffer;
24
- }
25
- async decompress(input) {
26
- try {
27
- await this.preload();
28
- const inputBuffer = toBuffer(input);
29
- return lzo.decompress(inputBuffer).buffer;
30
- } catch (error) {
31
- throw error;
32
+ async preload() {
33
+ // await loadLibrary(LZO_WASM_JS_URL);
34
+ // await loadLibrary(LZO_WASM_WASM_URL);
35
+ }
36
+ async compress(input) {
37
+ await this.preload();
38
+ // const inputArray = new Uint8Array(input);
39
+ const inputBuffer = toBuffer(input);
40
+ return lzo.compress(inputBuffer).buffer;
41
+ }
42
+ async decompress(input) {
43
+ try {
44
+ await this.preload();
45
+ // const inputArray = new Uint8Array(input);
46
+ const inputBuffer = toBuffer(input);
47
+ return lzo.decompress(inputBuffer).buffer;
48
+ }
49
+ catch (error) {
50
+ // TODO - solve SharedArrayBuffer issues
51
+ // return decompress(input);
52
+ throw error;
53
+ }
32
54
  }
33
- }
34
55
  }
35
- //# sourceMappingURL=lzo-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
  * Applies no compression.
5
5
  */
@@ -1 +1 @@
1
- {"version":3,"file":"no-compression.d.ts","sourceRoot":"","sources":["../../src/lib/no-compression.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,eAAe,CAAC;AACtD,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAE1C;;GAEG;AACH,qBAAa,aAAc,SAAQ,WAAW;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAkB;IACvC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,CAAM;IACnC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAM;IACzC,QAAQ,CAAC,WAAW,QAAQ;IAE5B,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;gBAEzB,OAAO,CAAC,EAAE,kBAAkB;IAKxC,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW;IAI7C,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW;IAIxC,eAAe,CACpB,aAAa,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,GAChE,aAAa,CAAC,WAAW,CAAC;IAItB,iBAAiB,CACtB,aAAa,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,GAChE,aAAa,CAAC,WAAW,CAAC;CAG9B"}
1
+ {"version":3,"file":"no-compression.d.ts","sourceRoot":"","sources":["../../src/lib/no-compression.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,kBAAkB,EAAC,yBAAsB;AACtD,OAAO,EAAC,WAAW,EAAC,yBAAsB;AAE1C;;GAEG;AACH,qBAAa,aAAc,SAAQ,WAAW;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAkB;IACvC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,CAAM;IACnC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAM;IACzC,QAAQ,CAAC,WAAW,QAAQ;IAE5B,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;gBAEzB,OAAO,CAAC,EAAE,kBAAkB;IAKxC,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW;IAI7C,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW;IAIxC,eAAe,CACpB,aAAa,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,GAChE,aAAa,CAAC,WAAW,CAAC;IAItB,iBAAiB,CACtB,aAAa,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,GAChE,aAAa,CAAC,WAAW,CAAC;CAG9B"}
@@ -1,25 +1,27 @@
1
1
  import { Compression } from "./compression.js";
2
+ /**
3
+ * Applies no compression.
4
+ */
2
5
  export class NoCompression extends Compression {
3
- constructor(options) {
4
- super(options);
5
- this.name = 'uncompressed';
6
- this.extensions = [];
7
- this.contentEncodings = [];
8
- this.isSupported = true;
9
- this.options = void 0;
10
- this.options = options || {};
11
- }
12
- compressSync(input) {
13
- return input;
14
- }
15
- decompressSync(input) {
16
- return input;
17
- }
18
- async *compressBatches(asyncIterator) {
19
- return yield* asyncIterator;
20
- }
21
- async *decompressBatches(asyncIterator) {
22
- return yield* asyncIterator;
23
- }
6
+ name = 'uncompressed';
7
+ extensions = [];
8
+ contentEncodings = [];
9
+ isSupported = true;
10
+ options;
11
+ constructor(options) {
12
+ super(options);
13
+ this.options = options || {};
14
+ }
15
+ compressSync(input) {
16
+ return input;
17
+ }
18
+ decompressSync(input) {
19
+ return input;
20
+ }
21
+ async *compressBatches(asyncIterator) {
22
+ return yield* asyncIterator;
23
+ }
24
+ async *decompressBatches(asyncIterator) {
25
+ return yield* asyncIterator;
26
+ }
24
27
  }
25
- //# sourceMappingURL=no-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
  * Snappy/zippy compression / decompression
5
5
  */
@@ -1 +1 @@
1
- {"version":3,"file":"snappy-compression.d.ts","sourceRoot":"","sources":["../../src/lib/snappy-compression.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,eAAe,CAAC;AACtD,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAG1C;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,WAAW;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAY;IACjC,QAAQ,CAAC,UAAU,UAAM;IACzB,QAAQ,CAAC,gBAAgB,UAAM;IAC/B,QAAQ,CAAC,WAAW,QAAQ;IAC5B,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;gBAEzB,OAAO,CAAC,EAAE,kBAAkB;IAKxC,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW;IAK7C,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW;CAIhD"}
1
+ {"version":3,"file":"snappy-compression.d.ts","sourceRoot":"","sources":["../../src/lib/snappy-compression.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,kBAAkB,EAAC,yBAAsB;AACtD,OAAO,EAAC,WAAW,EAAC,yBAAsB;AAG1C;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,WAAW;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAY;IACjC,QAAQ,CAAC,UAAU,UAAM;IACzB,QAAQ,CAAC,gBAAgB,UAAM;IAC/B,QAAQ,CAAC,WAAW,QAAQ;IAC5B,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;gBAEzB,OAAO,CAAC,EAAE,kBAAkB;IAKxC,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW;IAK7C,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW;CAIhD"}
@@ -1,20 +1,24 @@
1
1
  import { Compression } from "./compression.js";
2
- import { compress, uncompress } from 'snappyjs';
2
+ import { compress, uncompress } from 'snappyjs'; // https://bundlephobia.com/package/snappy
3
+ /**
4
+ * Snappy/zippy compression / decompression
5
+ */
3
6
  export class SnappyCompression extends Compression {
4
- constructor(options) {
5
- super(options);
6
- this.name = 'snappy';
7
- this.extensions = [];
8
- this.contentEncodings = [];
9
- this.isSupported = true;
10
- this.options = void 0;
11
- this.options = options || {};
12
- }
13
- compressSync(input) {
14
- return compress(input);
15
- }
16
- decompressSync(input) {
17
- return uncompress(input);
18
- }
7
+ name = 'snappy';
8
+ extensions = [];
9
+ contentEncodings = [];
10
+ isSupported = true;
11
+ options;
12
+ constructor(options) {
13
+ super(options);
14
+ this.options = options || {};
15
+ }
16
+ compressSync(input) {
17
+ // Accepts arrayBuffer - https://github.com/zhipeng-jia/snappyjs#usage
18
+ return compress(input);
19
+ }
20
+ decompressSync(input) {
21
+ // Accepts arrayBuffer - https://github.com/zhipeng-jia/snappyjs#usage
22
+ return uncompress(input);
23
+ }
19
24
  }
20
- //# sourceMappingURL=snappy-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
  * Zstandard compression / decompression
5
5
  */
@@ -1 +1 @@
1
- {"version":3,"file":"zstd-compression.d.ts","sourceRoot":"","sources":["../../src/lib/zstd-compression.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,eAAe,CAAC;AACtD,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAM1C;;GAEG;AACH,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAU;IAC/B,QAAQ,CAAC,UAAU,UAAM;IACzB,QAAQ,CAAC,gBAAgB,UAAM;IAC/B,QAAQ,CAAC,WAAW,QAAQ;IAC5B,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IAErC;;;OAGG;gBACS,OAAO,EAAE,kBAAkB;IAWjC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAM9B,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW;IAM7C,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW;CAOhD"}
1
+ {"version":3,"file":"zstd-compression.d.ts","sourceRoot":"","sources":["../../src/lib/zstd-compression.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,kBAAkB,EAAC,yBAAsB;AACtD,OAAO,EAAC,WAAW,EAAC,yBAAsB;AAM1C;;GAEG;AACH,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAU;IAC/B,QAAQ,CAAC,UAAU,UAAM;IACzB,QAAQ,CAAC,gBAAgB,UAAM;IAC/B,QAAQ,CAAC,WAAW,QAAQ;IAC5B,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IAErC;;;OAGG;gBACS,OAAO,EAAE,kBAAkB;IAWjC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAM9B,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW;IAM7C,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW;CAOhD"}
@@ -1,35 +1,44 @@
1
1
  import { Compression } from "./compression.js";
2
+ // import {ZstdCodec} from 'zstd-codec'; // https://bundlephobia.com/package/zstd-codec
2
3
  let ZstdCodec;
3
4
  let zstd;
5
+ /**
6
+ * Zstandard compression / decompression
7
+ */
4
8
  export class ZstdCompression extends Compression {
5
- constructor(options) {
6
- var _this$options, _this$options$modules;
7
- super(options);
8
- this.name = 'zstd';
9
- this.extensions = [];
10
- this.contentEncodings = [];
11
- this.isSupported = true;
12
- this.options = void 0;
13
- this.options = options;
14
- ZstdCodec = (_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['zstd-codec'];
15
- if (!ZstdCodec) {
16
- console.warn(`${this.name} library not installed`);
9
+ name = 'zstd';
10
+ extensions = [];
11
+ contentEncodings = [];
12
+ isSupported = true;
13
+ options;
14
+ /**
15
+ * zstd-codec is an injectable dependency due to big size
16
+ * @param options
17
+ */
18
+ constructor(options) {
19
+ super(options);
20
+ this.options = options;
21
+ ZstdCodec = this.options?.modules?.['zstd-codec'];
22
+ if (!ZstdCodec) {
23
+ // eslint-disable-next-line no-console
24
+ console.warn(`${this.name} library not installed`);
25
+ }
17
26
  }
18
- }
19
- async preload() {
20
- if (!zstd && ZstdCodec) {
21
- zstd = await new Promise(resolve => ZstdCodec.run(zstd => resolve(zstd)));
27
+ async preload() {
28
+ if (!zstd && ZstdCodec) {
29
+ zstd = await new Promise((resolve) => ZstdCodec.run((zstd) => resolve(zstd)));
30
+ }
31
+ }
32
+ compressSync(input) {
33
+ const simpleZstd = new zstd.Simple();
34
+ const inputArray = new Uint8Array(input);
35
+ return simpleZstd.compress(inputArray).buffer;
36
+ }
37
+ decompressSync(input) {
38
+ const simpleZstd = new zstd.Simple();
39
+ // var ddict = new zstd.Dict.Decompression(dictData);
40
+ // var jsonBytes = simpleZstd.decompressUsingDict(jsonZstData, ddict);
41
+ const inputArray = new Uint8Array(input);
42
+ return simpleZstd.decompress(inputArray).buffer;
22
43
  }
23
- }
24
- compressSync(input) {
25
- const simpleZstd = new zstd.Simple();
26
- const inputArray = new Uint8Array(input);
27
- return simpleZstd.compress(inputArray).buffer;
28
- }
29
- decompressSync(input) {
30
- const simpleZstd = new zstd.Simple();
31
- const inputArray = new Uint8Array(input);
32
- return simpleZstd.decompress(inputArray).buffer;
33
- }
34
44
  }
35
- //# sourceMappingURL=zstd-compression.js.map
package/dist/types.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export type { Compression, CompressionOptions } from './lib/compression';
1
+ export type { Compression, CompressionOptions } from "./lib/compression.js";
2
2
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,YAAY,EAAC,WAAW,EAAE,kBAAkB,EAAC,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,YAAY,EAAC,WAAW,EAAE,kBAAkB,EAAC,6BAA0B"}
package/dist/types.js CHANGED
@@ -1,2 +1 @@
1
1
  export {};
2
- //# sourceMappingURL=types.js.map
@@ -1,2 +1,2 @@
1
- import './compression-worker';
1
+ import "./compression-worker.js";
2
2
  //# sourceMappingURL=compression-worker-node.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"compression-worker-node.d.ts","sourceRoot":"","sources":["../../src/workers/compression-worker-node.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC"}
1
+ {"version":3,"file":"compression-worker-node.d.ts","sourceRoot":"","sources":["../../src/workers/compression-worker-node.ts"],"names":[],"mappings":"AAAA,iCAA8B"}
@@ -1,2 +1 @@
1
1
  import "./compression-worker.js";
2
- //# sourceMappingURL=compression-worker-node.js.map