@loaders.gl/compression 4.0.0-alpha.4 → 4.0.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 (47) hide show
  1. package/dist/brotli/decode.d.ts +5 -0
  2. package/dist/brotli/decode.d.ts.map +1 -0
  3. package/dist/brotli/decode.js +2213 -0
  4. package/dist/brotli/decode.js.map +1 -0
  5. package/dist/bundle.d.ts +2 -0
  6. package/dist/bundle.d.ts.map +1 -0
  7. package/dist/compression-worker.d.ts +21 -0
  8. package/dist/compression-worker.d.ts.map +1 -0
  9. package/dist/compression-worker.js +4 -14
  10. package/dist/compression-worker.js.map +7 -1
  11. package/dist/dist.min.js +9 -2
  12. package/dist/dist.min.js.map +7 -1
  13. package/dist/index.d.ts +13 -0
  14. package/dist/index.d.ts.map +1 -0
  15. package/dist/lib/brotli-compression.d.ts +31 -0
  16. package/dist/lib/brotli-compression.d.ts.map +1 -0
  17. package/dist/lib/brotli-compression.js +17 -3
  18. package/dist/lib/brotli-compression.js.map +1 -1
  19. package/dist/lib/compression.d.ts +31 -0
  20. package/dist/lib/compression.d.ts.map +1 -0
  21. package/dist/lib/deflate-compression.d.ts +32 -0
  22. package/dist/lib/deflate-compression.d.ts.map +1 -0
  23. package/dist/lib/gzip-compression.d.ts +17 -0
  24. package/dist/lib/gzip-compression.d.ts.map +1 -0
  25. package/dist/lib/lz4-compression.d.ts +37 -0
  26. package/dist/lib/lz4-compression.d.ts.map +1 -0
  27. package/dist/lib/lzo-compression.d.ts +21 -0
  28. package/dist/lib/lzo-compression.d.ts.map +1 -0
  29. package/dist/lib/no-compression.d.ts +18 -0
  30. package/dist/lib/no-compression.d.ts.map +1 -0
  31. package/dist/lib/snappy-compression.d.ts +16 -0
  32. package/dist/lib/snappy-compression.d.ts.map +1 -0
  33. package/dist/lib/zstd-compression.d.ts +21 -0
  34. package/dist/lib/zstd-compression.d.ts.map +1 -0
  35. package/dist/lib/zstd-compression.js +4 -2
  36. package/dist/lib/zstd-compression.js.map +1 -1
  37. package/dist/types.d.ts +2 -0
  38. package/dist/types.d.ts.map +1 -0
  39. package/dist/workers/worker.d.ts +2 -0
  40. package/dist/workers/worker.d.ts.map +1 -0
  41. package/dist/workers/worker.js +1 -10
  42. package/dist/workers/worker.js.map +1 -1
  43. package/package.json +7 -7
  44. package/src/brotli/decode.ts +2441 -0
  45. package/src/lib/brotli-compression.ts +19 -4
  46. package/src/lib/zstd-compression.ts +5 -2
  47. package/src/workers/worker.ts +10 -10
@@ -4,6 +4,7 @@ import {Compression} from './compression';
4
4
  import {isBrowser, toArrayBuffer} from '@loaders.gl/loader-utils';
5
5
  import type brotliNamespace from 'brotli';
6
6
  // import brotli from 'brotli'; // https://bundlephobia.com/package/brotli
7
+ import {BrotliDecode} from '../brotli/decode';
7
8
  import zlib from 'zlib';
8
9
  import {promisify} from '@loaders.gl/loader-utils';
9
10
 
@@ -48,7 +49,8 @@ export class BrotliCompression extends Compression {
48
49
  async preload(): Promise<void> {
49
50
  brotli = brotli || this.options?.modules?.brotli;
50
51
  if (!brotli) {
51
- throw new Error(this.name);
52
+ // eslint-disable-next-line no-console
53
+ console.warn(`${this.name} library not installed`);
52
54
  }
53
55
  }
54
56
 
@@ -69,8 +71,14 @@ export class BrotliCompression extends Compression {
69
71
  }
70
72
  const brotliOptions = {...DEFAULT_BROTLI_OPTIONS.brotli, ...this.options?.brotli};
71
73
  const inputArray = new Uint8Array(input);
74
+
75
+ if (!brotli) {
76
+ throw new Error('brotli compression: brotli module not installed');
77
+ }
78
+
72
79
  // @ts-ignore brotli types state that only Buffers are accepted...
73
- return brotli.compress(inputArray, brotliOptions);
80
+ const outputArray = brotli.compress(inputArray, brotliOptions);
81
+ return outputArray.buffer;
74
82
  }
75
83
 
76
84
  async decompress(input: ArrayBuffer): Promise<ArrayBuffer> {
@@ -88,9 +96,16 @@ export class BrotliCompression extends Compression {
88
96
  const buffer = zlib.brotliDecompressSync(input);
89
97
  return toArrayBuffer(buffer);
90
98
  }
99
+
91
100
  const brotliOptions = {...DEFAULT_BROTLI_OPTIONS.brotli, ...this.options?.brotli};
92
101
  const inputArray = new Uint8Array(input);
93
- // @ts-ignore brotli types state that only Buffers are accepted...
94
- return brotli.decompress(inputArray, brotliOptions);
102
+
103
+ if (brotli) {
104
+ // @ts-ignore brotli types state that only Buffers are accepted...
105
+ const outputArray = brotli.decompress(inputArray, brotliOptions);
106
+ return outputArray.buffer;
107
+ }
108
+ const outputArray = BrotliDecode(inputArray, undefined);
109
+ return outputArray.buffer;
95
110
  }
96
111
  }
@@ -26,12 +26,15 @@ export class ZstdCompression extends Compression {
26
26
 
27
27
  ZstdCodec = this.options?.modules?.['zstd-codec'];
28
28
  if (!ZstdCodec) {
29
- throw new Error(this.name);
29
+ // eslint-disable-next-line no-console
30
+ console.warn(`${this.name} library not installed`);
30
31
  }
31
32
  }
32
33
 
33
34
  async preload(): Promise<void> {
34
- zstd = zstd || (await new Promise((resolve) => ZstdCodec.run((zstd) => resolve(zstd))));
35
+ if (!zstd && ZstdCodec) {
36
+ zstd = await new Promise((resolve) => ZstdCodec.run((zstd) => resolve(zstd)));
37
+ }
35
38
  }
36
39
 
37
40
  compressSync(input: ArrayBuffer): ArrayBuffer {
@@ -13,23 +13,23 @@ import {ZstdCompression} from '../lib/zstd-compression';
13
13
  // Import big dependencies
14
14
 
15
15
  // import brotli from 'brotli'; - brotli has problems with decompress in browsers
16
- import brotliDecompress from 'brotli/decompress';
16
+ // import brotliDecompress from 'brotli/decompress';
17
17
  import lz4js from 'lz4js';
18
18
  // import lzo from 'lzo';
19
- import {ZstdCodec} from 'zstd-codec';
19
+ // import {ZstdCodec} from 'zstd-codec';
20
20
 
21
21
  // Inject large dependencies through Compression constructor options
22
22
  const modules = {
23
23
  // brotli has problems with decompress in browsers
24
- brotli: {
25
- decompress: brotliDecompress,
26
- compress: () => {
27
- throw new Error('brotli compress');
28
- }
29
- },
30
- lz4js,
24
+ // brotli: {
25
+ // decompress: brotliDecompress,
26
+ // compress: () => {
27
+ // throw new Error('brotli compress');
28
+ // }
29
+ // },
30
+ lz4js
31
31
  // lzo,
32
- 'zstd-codec': ZstdCodec
32
+ // 'zstd-codec': ZstdCodec
33
33
  };
34
34
 
35
35
  /** @type {Compression[]} */