@loaders.gl/compression 3.4.0-alpha.1 → 3.4.0-alpha.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.
- package/dist/compression-worker.js +2 -2
- package/dist/compression-worker.js.map +3 -3
- package/dist/dist.min.js +3 -3
- package/dist/dist.min.js.map +3 -3
- package/dist/es5/compression-worker.js +1 -1
- package/dist/es5/lib/brotli-compression.js +2 -2
- package/dist/es5/lib/brotli-compression.js.map +1 -1
- package/dist/es5/lib/deflate-compression.js +4 -4
- package/dist/es5/lib/deflate-compression.js.map +1 -1
- package/dist/esm/compression-worker.js +1 -1
- package/dist/esm/lib/brotli-compression.js +3 -3
- package/dist/esm/lib/brotli-compression.js.map +1 -1
- package/dist/esm/lib/deflate-compression.js +3 -3
- package/dist/esm/lib/deflate-compression.js.map +1 -1
- package/dist/lib/brotli-compression.js +2 -2
- package/dist/lib/deflate-compression.js +4 -4
- package/package.json +4 -4
- package/src/lib/brotli-compression.ts +3 -3
- package/src/lib/deflate-compression.ts +5 -5
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports._typecheckCompressionWorker = exports.CompressionWorker = void 0;
|
|
7
7
|
exports.compressOnWorker = compressOnWorker;
|
|
8
8
|
var _workerUtils = require("@loaders.gl/worker-utils");
|
|
9
|
-
var VERSION = typeof "3.4.0-alpha.
|
|
9
|
+
var VERSION = typeof "3.4.0-alpha.2" !== 'undefined' ? "3.4.0-alpha.2" : 'latest';
|
|
10
10
|
var CompressionWorker = {
|
|
11
11
|
id: 'compression',
|
|
12
12
|
name: 'compression',
|
|
@@ -87,7 +87,7 @@ var BrotliCompression = function (_Compression) {
|
|
|
87
87
|
break;
|
|
88
88
|
}
|
|
89
89
|
_context2.next = 3;
|
|
90
|
-
return (0, _loaderUtils.
|
|
90
|
+
return (0, _loaderUtils.promisify1)(_zlib.default.brotliCompress)(input);
|
|
91
91
|
case 3:
|
|
92
92
|
buffer = _context2.sent;
|
|
93
93
|
return _context2.abrupt("return", (0, _loaderUtils.toArrayBuffer)(buffer));
|
|
@@ -137,7 +137,7 @@ var BrotliCompression = function (_Compression) {
|
|
|
137
137
|
break;
|
|
138
138
|
}
|
|
139
139
|
_context3.next = 3;
|
|
140
|
-
return (0, _loaderUtils.
|
|
140
|
+
return (0, _loaderUtils.promisify1)(_zlib.default.brotliDecompress)(input);
|
|
141
141
|
case 3:
|
|
142
142
|
buffer = _context3.sent;
|
|
143
143
|
return _context3.abrupt("return", (0, _loaderUtils.toArrayBuffer)(buffer));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brotli-compression.js","names":["DEFAULT_BROTLI_OPTIONS","brotli","mode","quality","lgwin","BrotliCompression","options","modules","console","warn","name","input","isBrowser","useZlib","
|
|
1
|
+
{"version":3,"file":"brotli-compression.js","names":["DEFAULT_BROTLI_OPTIONS","brotli","mode","quality","lgwin","BrotliCompression","options","modules","console","warn","name","input","isBrowser","useZlib","promisify1","zlib","brotliCompress","buffer","toArrayBuffer","compressSync","brotliCompressSync","brotliOptions","inputArray","Uint8Array","Error","outputArray","compress","brotliDecompress","decompressSync","brotliDecompressSync","decompress","BrotliDecode","undefined","Compression"],"sources":["../../../src/lib/brotli-compression.ts"],"sourcesContent":["// BROTLI\nimport type {CompressionOptions} from './compression';\nimport {Compression} from './compression';\nimport {isBrowser, toArrayBuffer} from '@loaders.gl/loader-utils';\nimport type brotliNamespace from 'brotli';\n// import brotli from 'brotli'; // https://bundlephobia.com/package/brotli\nimport {BrotliDecode} from '../brotli/decode';\nimport zlib from 'zlib';\nimport {promisify1} from '@loaders.gl/loader-utils';\n\nexport type BrotliCompressionOptions = CompressionOptions & {\n brotli?: {\n mode?: number;\n quality?: number;\n lgwin?: number;\n useZlib?: boolean;\n };\n};\n\nconst DEFAULT_BROTLI_OPTIONS = {\n brotli: {\n mode: 0,\n quality: 8,\n lgwin: 22\n }\n};\n\nlet brotli: typeof brotliNamespace;\n\n/**\n * brotli compression / decompression\n */\nexport class BrotliCompression extends Compression {\n readonly name: string = 'brotli';\n readonly extensions = ['br'];\n readonly contentEncodings = ['br'];\n readonly isSupported = true;\n readonly options: BrotliCompressionOptions;\n\n constructor(options: BrotliCompressionOptions) {\n super(options);\n this.options = options;\n }\n\n /**\n * brotli is an injectable dependency due to big size\n * @param options\n */\n async preload(): Promise<void> {\n brotli = brotli || this.options?.modules?.brotli;\n if (!brotli) {\n // eslint-disable-next-line no-console\n console.warn(`${this.name} library not installed`);\n }\n }\n\n async compress(input: ArrayBuffer): Promise<ArrayBuffer> {\n // On Node.js we can use built-in zlib\n if (!isBrowser && this.options.brotli?.useZlib) {\n const buffer = await promisify1(zlib.brotliCompress)(input);\n return toArrayBuffer(buffer);\n }\n return this.compressSync(input);\n }\n\n compressSync(input: ArrayBuffer): ArrayBuffer {\n // On Node.js we can use built-in zlib\n if (!isBrowser && this.options.brotli?.useZlib) {\n const buffer = zlib.brotliCompressSync(input);\n return toArrayBuffer(buffer);\n }\n const brotliOptions = {...DEFAULT_BROTLI_OPTIONS.brotli, ...this.options?.brotli};\n const inputArray = new Uint8Array(input);\n\n if (!brotli) {\n throw new Error('brotli compression: brotli module not installed');\n }\n\n // @ts-ignore brotli types state that only Buffers are accepted...\n const outputArray = brotli.compress(inputArray, brotliOptions);\n return outputArray.buffer;\n }\n\n async decompress(input: ArrayBuffer): Promise<ArrayBuffer> {\n // On Node.js we can use built-in zlib\n if (!isBrowser && this.options.brotli?.useZlib) {\n const buffer = await promisify1(zlib.brotliDecompress)(input);\n return toArrayBuffer(buffer);\n }\n return this.decompressSync(input);\n }\n\n decompressSync(input: ArrayBuffer): ArrayBuffer {\n // On Node.js we can use built-in zlib\n if (!isBrowser && this.options.brotli?.useZlib) {\n const buffer = zlib.brotliDecompressSync(input);\n return toArrayBuffer(buffer);\n }\n\n const brotliOptions = {...DEFAULT_BROTLI_OPTIONS.brotli, ...this.options?.brotli};\n const inputArray = new Uint8Array(input);\n\n if (brotli) {\n // @ts-ignore brotli types state that only Buffers are accepted...\n const outputArray = brotli.decompress(inputArray, brotliOptions);\n return outputArray.buffer;\n }\n const outputArray = BrotliDecode(inputArray, undefined);\n return outputArray.buffer;\n }\n}\n"],"mappings":"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"}
|
|
@@ -61,14 +61,14 @@ var DeflateCompression = function (_Compression) {
|
|
|
61
61
|
break;
|
|
62
62
|
}
|
|
63
63
|
_context.next = 4;
|
|
64
|
-
return (0, _loaderUtils.
|
|
64
|
+
return (0, _loaderUtils.promisify1)(_zlib.default.gzip)(input);
|
|
65
65
|
case 4:
|
|
66
66
|
_context.t0 = _context.sent;
|
|
67
67
|
_context.next = 10;
|
|
68
68
|
break;
|
|
69
69
|
case 7:
|
|
70
70
|
_context.next = 9;
|
|
71
|
-
return (0, _loaderUtils.
|
|
71
|
+
return (0, _loaderUtils.promisify1)(_zlib.default.deflate)(input);
|
|
72
72
|
case 9:
|
|
73
73
|
_context.t0 = _context.sent;
|
|
74
74
|
case 10:
|
|
@@ -107,14 +107,14 @@ var DeflateCompression = function (_Compression) {
|
|
|
107
107
|
break;
|
|
108
108
|
}
|
|
109
109
|
_context2.next = 4;
|
|
110
|
-
return (0, _loaderUtils.
|
|
110
|
+
return (0, _loaderUtils.promisify1)(_zlib.default.gunzip)(input);
|
|
111
111
|
case 4:
|
|
112
112
|
_context2.t0 = _context2.sent;
|
|
113
113
|
_context2.next = 10;
|
|
114
114
|
break;
|
|
115
115
|
case 7:
|
|
116
116
|
_context2.next = 9;
|
|
117
|
-
return (0, _loaderUtils.
|
|
117
|
+
return (0, _loaderUtils.promisify1)(_zlib.default.inflate)(input);
|
|
118
118
|
case 9:
|
|
119
119
|
_context2.t0 = _context2.sent;
|
|
120
120
|
case 10:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deflate-compression.js","names":["DeflateCompression","options","input","isBrowser","deflate","useZlib","gzip","promisify","zlib","buffer","toArrayBuffer","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"],"sources":["../../../src/lib/deflate-compression.ts"],"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"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"deflate-compression.js","names":["DeflateCompression","options","input","isBrowser","deflate","useZlib","gzip","promisify1","zlib","buffer","toArrayBuffer","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"],"sources":["../../../src/lib/deflate-compression.ts"],"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 {promisify1} 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 promisify1(zlib.gzip)(input)\n : await promisify1(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 promisify1(zlib.gunzip)(input)\n : await promisify1(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"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { processOnWorker } from '@loaders.gl/worker-utils';
|
|
2
2
|
|
|
3
|
-
const VERSION = typeof "3.4.0-alpha.
|
|
3
|
+
const VERSION = typeof "3.4.0-alpha.2" !== 'undefined' ? "3.4.0-alpha.2" : 'latest';
|
|
4
4
|
export const CompressionWorker = {
|
|
5
5
|
id: 'compression',
|
|
6
6
|
name: 'compression',
|
|
@@ -4,7 +4,7 @@ import { Compression } from './compression';
|
|
|
4
4
|
import { isBrowser, toArrayBuffer } from '@loaders.gl/loader-utils';
|
|
5
5
|
import { BrotliDecode } from '../brotli/decode';
|
|
6
6
|
import zlib from 'zlib';
|
|
7
|
-
import {
|
|
7
|
+
import { promisify1 } from '@loaders.gl/loader-utils';
|
|
8
8
|
const DEFAULT_BROTLI_OPTIONS = {
|
|
9
9
|
brotli: {
|
|
10
10
|
mode: 0,
|
|
@@ -35,7 +35,7 @@ export class BrotliCompression extends Compression {
|
|
|
35
35
|
async compress(input) {
|
|
36
36
|
var _this$options$brotli;
|
|
37
37
|
if (!isBrowser && (_this$options$brotli = this.options.brotli) !== null && _this$options$brotli !== void 0 && _this$options$brotli.useZlib) {
|
|
38
|
-
const buffer = await
|
|
38
|
+
const buffer = await promisify1(zlib.brotliCompress)(input);
|
|
39
39
|
return toArrayBuffer(buffer);
|
|
40
40
|
}
|
|
41
41
|
return this.compressSync(input);
|
|
@@ -61,7 +61,7 @@ export class BrotliCompression extends Compression {
|
|
|
61
61
|
async decompress(input) {
|
|
62
62
|
var _this$options$brotli3;
|
|
63
63
|
if (!isBrowser && (_this$options$brotli3 = this.options.brotli) !== null && _this$options$brotli3 !== void 0 && _this$options$brotli3.useZlib) {
|
|
64
|
-
const buffer = await
|
|
64
|
+
const buffer = await promisify1(zlib.brotliDecompress)(input);
|
|
65
65
|
return toArrayBuffer(buffer);
|
|
66
66
|
}
|
|
67
67
|
return this.decompressSync(input);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brotli-compression.js","names":["Compression","isBrowser","toArrayBuffer","BrotliDecode","zlib","
|
|
1
|
+
{"version":3,"file":"brotli-compression.js","names":["Compression","isBrowser","toArrayBuffer","BrotliDecode","zlib","promisify1","DEFAULT_BROTLI_OPTIONS","brotli","mode","quality","lgwin","BrotliCompression","constructor","options","preload","modules","console","warn","name","compress","input","useZlib","buffer","brotliCompress","compressSync","brotliCompressSync","brotliOptions","inputArray","Uint8Array","Error","outputArray","decompress","brotliDecompress","decompressSync","brotliDecompressSync","undefined"],"sources":["../../../src/lib/brotli-compression.ts"],"sourcesContent":["// BROTLI\nimport type {CompressionOptions} from './compression';\nimport {Compression} from './compression';\nimport {isBrowser, toArrayBuffer} from '@loaders.gl/loader-utils';\nimport type brotliNamespace from 'brotli';\n// import brotli from 'brotli'; // https://bundlephobia.com/package/brotli\nimport {BrotliDecode} from '../brotli/decode';\nimport zlib from 'zlib';\nimport {promisify1} from '@loaders.gl/loader-utils';\n\nexport type BrotliCompressionOptions = CompressionOptions & {\n brotli?: {\n mode?: number;\n quality?: number;\n lgwin?: number;\n useZlib?: boolean;\n };\n};\n\nconst DEFAULT_BROTLI_OPTIONS = {\n brotli: {\n mode: 0,\n quality: 8,\n lgwin: 22\n }\n};\n\nlet brotli: typeof brotliNamespace;\n\n/**\n * brotli compression / decompression\n */\nexport class BrotliCompression extends Compression {\n readonly name: string = 'brotli';\n readonly extensions = ['br'];\n readonly contentEncodings = ['br'];\n readonly isSupported = true;\n readonly options: BrotliCompressionOptions;\n\n constructor(options: BrotliCompressionOptions) {\n super(options);\n this.options = options;\n }\n\n /**\n * brotli is an injectable dependency due to big size\n * @param options\n */\n async preload(): Promise<void> {\n brotli = brotli || this.options?.modules?.brotli;\n if (!brotli) {\n // eslint-disable-next-line no-console\n console.warn(`${this.name} library not installed`);\n }\n }\n\n async compress(input: ArrayBuffer): Promise<ArrayBuffer> {\n // On Node.js we can use built-in zlib\n if (!isBrowser && this.options.brotli?.useZlib) {\n const buffer = await promisify1(zlib.brotliCompress)(input);\n return toArrayBuffer(buffer);\n }\n return this.compressSync(input);\n }\n\n compressSync(input: ArrayBuffer): ArrayBuffer {\n // On Node.js we can use built-in zlib\n if (!isBrowser && this.options.brotli?.useZlib) {\n const buffer = zlib.brotliCompressSync(input);\n return toArrayBuffer(buffer);\n }\n const brotliOptions = {...DEFAULT_BROTLI_OPTIONS.brotli, ...this.options?.brotli};\n const inputArray = new Uint8Array(input);\n\n if (!brotli) {\n throw new Error('brotli compression: brotli module not installed');\n }\n\n // @ts-ignore brotli types state that only Buffers are accepted...\n const outputArray = brotli.compress(inputArray, brotliOptions);\n return outputArray.buffer;\n }\n\n async decompress(input: ArrayBuffer): Promise<ArrayBuffer> {\n // On Node.js we can use built-in zlib\n if (!isBrowser && this.options.brotli?.useZlib) {\n const buffer = await promisify1(zlib.brotliDecompress)(input);\n return toArrayBuffer(buffer);\n }\n return this.decompressSync(input);\n }\n\n decompressSync(input: ArrayBuffer): ArrayBuffer {\n // On Node.js we can use built-in zlib\n if (!isBrowser && this.options.brotli?.useZlib) {\n const buffer = zlib.brotliDecompressSync(input);\n return toArrayBuffer(buffer);\n }\n\n const brotliOptions = {...DEFAULT_BROTLI_OPTIONS.brotli, ...this.options?.brotli};\n const inputArray = new Uint8Array(input);\n\n if (brotli) {\n // @ts-ignore brotli types state that only Buffers are accepted...\n const outputArray = brotli.decompress(inputArray, brotliOptions);\n return outputArray.buffer;\n }\n const outputArray = BrotliDecode(inputArray, undefined);\n return outputArray.buffer;\n }\n}\n"],"mappings":";;AAEA,SAAQA,WAAW,QAAO,eAAe;AACzC,SAAQC,SAAS,EAAEC,aAAa,QAAO,0BAA0B;AAGjE,SAAQC,YAAY,QAAO,kBAAkB;AAC7C,OAAOC,IAAI,MAAM,MAAM;AACvB,SAAQC,UAAU,QAAO,0BAA0B;AAWnD,MAAMC,sBAAsB,GAAG;EAC7BC,MAAM,EAAE;IACNC,IAAI,EAAE,CAAC;IACPC,OAAO,EAAE,CAAC;IACVC,KAAK,EAAE;EACT;AACF,CAAC;AAED,IAAIH,MAA8B;;AAKlC,OAAO,MAAMI,iBAAiB,SAASX,WAAW,CAAC;EAOjDY,WAAW,CAACC,OAAiC,EAAE;IAC7C,KAAK,CAACA,OAAO,CAAC;IAAC,8BAPO,QAAQ;IAAA,oCACV,CAAC,IAAI,CAAC;IAAA,0CACA,CAAC,IAAI,CAAC;IAAA,qCACX,IAAI;IAAA;IAKzB,IAAI,CAACA,OAAO,GAAGA,OAAO;EACxB;;EAMA,MAAMC,OAAO,GAAkB;IAAA;IAC7BP,MAAM,GAAGA,MAAM,sBAAI,IAAI,CAACM,OAAO,2EAAZ,cAAcE,OAAO,0DAArB,sBAAuBR,MAAM;IAChD,IAAI,CAACA,MAAM,EAAE;MAEXS,OAAO,CAACC,IAAI,WAAI,IAAI,CAACC,IAAI,4BAAyB;IACpD;EACF;EAEA,MAAMC,QAAQ,CAACC,KAAkB,EAAwB;IAAA;IAEvD,IAAI,CAACnB,SAAS,4BAAI,IAAI,CAACY,OAAO,CAACN,MAAM,iDAAnB,qBAAqBc,OAAO,EAAE;MAC9C,MAAMC,MAAM,GAAG,MAAMjB,UAAU,CAACD,IAAI,CAACmB,cAAc,CAAC,CAACH,KAAK,CAAC;MAC3D,OAAOlB,aAAa,CAACoB,MAAM,CAAC;IAC9B;IACA,OAAO,IAAI,CAACE,YAAY,CAACJ,KAAK,CAAC;EACjC;EAEAI,YAAY,CAACJ,KAAkB,EAAe;IAAA;IAE5C,IAAI,CAACnB,SAAS,6BAAI,IAAI,CAACY,OAAO,CAACN,MAAM,kDAAnB,sBAAqBc,OAAO,EAAE;MAC9C,MAAMC,MAAM,GAAGlB,IAAI,CAACqB,kBAAkB,CAACL,KAAK,CAAC;MAC7C,OAAOlB,aAAa,CAACoB,MAAM,CAAC;IAC9B;IACA,MAAMI,aAAa,GAAG;MAAC,GAAGpB,sBAAsB,CAACC,MAAM;MAAE,sBAAG,IAAI,CAACM,OAAO,mDAAZ,eAAcN,MAAM;IAAA,CAAC;IACjF,MAAMoB,UAAU,GAAG,IAAIC,UAAU,CAACR,KAAK,CAAC;IAExC,IAAI,CAACb,MAAM,EAAE;MACX,MAAM,IAAIsB,KAAK,CAAC,iDAAiD,CAAC;IACpE;;IAGA,MAAMC,WAAW,GAAGvB,MAAM,CAACY,QAAQ,CAACQ,UAAU,EAAED,aAAa,CAAC;IAC9D,OAAOI,WAAW,CAACR,MAAM;EAC3B;EAEA,MAAMS,UAAU,CAACX,KAAkB,EAAwB;IAAA;IAEzD,IAAI,CAACnB,SAAS,6BAAI,IAAI,CAACY,OAAO,CAACN,MAAM,kDAAnB,sBAAqBc,OAAO,EAAE;MAC9C,MAAMC,MAAM,GAAG,MAAMjB,UAAU,CAACD,IAAI,CAAC4B,gBAAgB,CAAC,CAACZ,KAAK,CAAC;MAC7D,OAAOlB,aAAa,CAACoB,MAAM,CAAC;IAC9B;IACA,OAAO,IAAI,CAACW,cAAc,CAACb,KAAK,CAAC;EACnC;EAEAa,cAAc,CAACb,KAAkB,EAAe;IAAA;IAE9C,IAAI,CAACnB,SAAS,6BAAI,IAAI,CAACY,OAAO,CAACN,MAAM,kDAAnB,sBAAqBc,OAAO,EAAE;MAC9C,MAAMC,MAAM,GAAGlB,IAAI,CAAC8B,oBAAoB,CAACd,KAAK,CAAC;MAC/C,OAAOlB,aAAa,CAACoB,MAAM,CAAC;IAC9B;IAEA,MAAMI,aAAa,GAAG;MAAC,GAAGpB,sBAAsB,CAACC,MAAM;MAAE,sBAAG,IAAI,CAACM,OAAO,mDAAZ,eAAcN,MAAM;IAAA,CAAC;IACjF,MAAMoB,UAAU,GAAG,IAAIC,UAAU,CAACR,KAAK,CAAC;IAExC,IAAIb,MAAM,EAAE;MAEV,MAAMuB,WAAW,GAAGvB,MAAM,CAACwB,UAAU,CAACJ,UAAU,EAAED,aAAa,CAAC;MAChE,OAAOI,WAAW,CAACR,MAAM;IAC3B;IACA,MAAMQ,WAAW,GAAG3B,YAAY,CAACwB,UAAU,EAAEQ,SAAS,CAAC;IACvD,OAAOL,WAAW,CAACR,MAAM;EAC3B;AACF"}
|
|
@@ -4,7 +4,7 @@ import { Compression } from './compression';
|
|
|
4
4
|
import { isBrowser, toArrayBuffer } from '@loaders.gl/loader-utils';
|
|
5
5
|
import pako from 'pako';
|
|
6
6
|
import zlib from 'zlib';
|
|
7
|
-
import {
|
|
7
|
+
import { promisify1 } from '@loaders.gl/loader-utils';
|
|
8
8
|
export class DeflateCompression extends Compression {
|
|
9
9
|
constructor() {
|
|
10
10
|
let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
@@ -21,7 +21,7 @@ export class DeflateCompression extends Compression {
|
|
|
21
21
|
var _this$options$deflate;
|
|
22
22
|
if (!isBrowser && (_this$options$deflate = this.options.deflate) !== null && _this$options$deflate !== void 0 && _this$options$deflate.useZlib) {
|
|
23
23
|
var _this$options$deflate2;
|
|
24
|
-
const buffer = (_this$options$deflate2 = this.options.deflate) !== null && _this$options$deflate2 !== void 0 && _this$options$deflate2.gzip ? await
|
|
24
|
+
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);
|
|
25
25
|
return toArrayBuffer(buffer);
|
|
26
26
|
}
|
|
27
27
|
return this.compressSync(input);
|
|
@@ -30,7 +30,7 @@ export class DeflateCompression extends Compression {
|
|
|
30
30
|
var _this$options$deflate3;
|
|
31
31
|
if (!isBrowser && (_this$options$deflate3 = this.options.deflate) !== null && _this$options$deflate3 !== void 0 && _this$options$deflate3.useZlib) {
|
|
32
32
|
var _this$options$deflate4;
|
|
33
|
-
const buffer = (_this$options$deflate4 = this.options.deflate) !== null && _this$options$deflate4 !== void 0 && _this$options$deflate4.gzip ? await
|
|
33
|
+
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);
|
|
34
34
|
return toArrayBuffer(buffer);
|
|
35
35
|
}
|
|
36
36
|
return this.decompressSync(input);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deflate-compression.js","names":["Compression","isBrowser","toArrayBuffer","pako","zlib","promisify","DeflateCompression","constructor","options","compress","input","deflate","useZlib","buffer","gzip","compressSync","decompress","gunzip","inflate","decompressSync","gzipSync","deflateSync","pakoOptions","inputArray","Uint8Array","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"],"sources":["../../../src/lib/deflate-compression.ts"],"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"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"deflate-compression.js","names":["Compression","isBrowser","toArrayBuffer","pako","zlib","promisify1","DeflateCompression","constructor","options","compress","input","deflate","useZlib","buffer","gzip","compressSync","decompress","gunzip","inflate","decompressSync","gzipSync","deflateSync","pakoOptions","inputArray","Uint8Array","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"],"sources":["../../../src/lib/deflate-compression.ts"],"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 {promisify1} 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 promisify1(zlib.gzip)(input)\n : await promisify1(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 promisify1(zlib.gunzip)(input)\n : await promisify1(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"],"mappings":"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"}
|
|
@@ -44,7 +44,7 @@ class BrotliCompression extends compression_1.Compression {
|
|
|
44
44
|
async compress(input) {
|
|
45
45
|
// On Node.js we can use built-in zlib
|
|
46
46
|
if (!loader_utils_1.isBrowser && this.options.brotli?.useZlib) {
|
|
47
|
-
const buffer = await (0, loader_utils_2.
|
|
47
|
+
const buffer = await (0, loader_utils_2.promisify1)(zlib_1.default.brotliCompress)(input);
|
|
48
48
|
return (0, loader_utils_1.toArrayBuffer)(buffer);
|
|
49
49
|
}
|
|
50
50
|
return this.compressSync(input);
|
|
@@ -67,7 +67,7 @@ class BrotliCompression extends compression_1.Compression {
|
|
|
67
67
|
async decompress(input) {
|
|
68
68
|
// On Node.js we can use built-in zlib
|
|
69
69
|
if (!loader_utils_1.isBrowser && this.options.brotli?.useZlib) {
|
|
70
|
-
const buffer = await (0, loader_utils_2.
|
|
70
|
+
const buffer = await (0, loader_utils_2.promisify1)(zlib_1.default.brotliDecompress)(input);
|
|
71
71
|
return (0, loader_utils_1.toArrayBuffer)(buffer);
|
|
72
72
|
}
|
|
73
73
|
return this.decompressSync(input);
|
|
@@ -26,8 +26,8 @@ class DeflateCompression extends compression_1.Compression {
|
|
|
26
26
|
// On Node.js we can use built-in zlib
|
|
27
27
|
if (!loader_utils_1.isBrowser && this.options.deflate?.useZlib) {
|
|
28
28
|
const buffer = this.options.deflate?.gzip
|
|
29
|
-
? await (0, loader_utils_2.
|
|
30
|
-
: await (0, loader_utils_2.
|
|
29
|
+
? await (0, loader_utils_2.promisify1)(zlib_1.default.gzip)(input)
|
|
30
|
+
: await (0, loader_utils_2.promisify1)(zlib_1.default.deflate)(input);
|
|
31
31
|
return (0, loader_utils_1.toArrayBuffer)(buffer);
|
|
32
32
|
}
|
|
33
33
|
return this.compressSync(input);
|
|
@@ -36,8 +36,8 @@ class DeflateCompression extends compression_1.Compression {
|
|
|
36
36
|
// On Node.js we can use built-in zlib
|
|
37
37
|
if (!loader_utils_1.isBrowser && this.options.deflate?.useZlib) {
|
|
38
38
|
const buffer = this.options.deflate?.gzip
|
|
39
|
-
? await (0, loader_utils_2.
|
|
40
|
-
: await (0, loader_utils_2.
|
|
39
|
+
? await (0, loader_utils_2.promisify1)(zlib_1.default.gunzip)(input)
|
|
40
|
+
: await (0, loader_utils_2.promisify1)(zlib_1.default.inflate)(input);
|
|
41
41
|
return (0, loader_utils_1.toArrayBuffer)(buffer);
|
|
42
42
|
}
|
|
43
43
|
return this.decompressSync(input);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loaders.gl/compression",
|
|
3
|
-
"version": "3.4.0-alpha.
|
|
3
|
+
"version": "3.4.0-alpha.2",
|
|
4
4
|
"description": "Decompression and compression plugins for loaders.gl",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
|
@@ -38,8 +38,8 @@
|
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"@babel/runtime": "^7.3.1",
|
|
41
|
-
"@loaders.gl/loader-utils": "3.4.0-alpha.
|
|
42
|
-
"@loaders.gl/worker-utils": "3.4.0-alpha.
|
|
41
|
+
"@loaders.gl/loader-utils": "3.4.0-alpha.2",
|
|
42
|
+
"@loaders.gl/worker-utils": "3.4.0-alpha.2",
|
|
43
43
|
"@types/brotli": "^1.3.0",
|
|
44
44
|
"@types/pako": "^1.0.1",
|
|
45
45
|
"lzo-wasm": "^0.0.4",
|
|
@@ -58,5 +58,5 @@
|
|
|
58
58
|
"lzo": "^0.4.11",
|
|
59
59
|
"zstd-codec": "^0.1"
|
|
60
60
|
},
|
|
61
|
-
"gitHead": "
|
|
61
|
+
"gitHead": "f1c00c124d8d0c41a138ff40afb0d1a00711bf2e"
|
|
62
62
|
}
|
|
@@ -6,7 +6,7 @@ import type brotliNamespace from 'brotli';
|
|
|
6
6
|
// import brotli from 'brotli'; // https://bundlephobia.com/package/brotli
|
|
7
7
|
import {BrotliDecode} from '../brotli/decode';
|
|
8
8
|
import zlib from 'zlib';
|
|
9
|
-
import {
|
|
9
|
+
import {promisify1} from '@loaders.gl/loader-utils';
|
|
10
10
|
|
|
11
11
|
export type BrotliCompressionOptions = CompressionOptions & {
|
|
12
12
|
brotli?: {
|
|
@@ -57,7 +57,7 @@ export class BrotliCompression extends Compression {
|
|
|
57
57
|
async compress(input: ArrayBuffer): Promise<ArrayBuffer> {
|
|
58
58
|
// On Node.js we can use built-in zlib
|
|
59
59
|
if (!isBrowser && this.options.brotli?.useZlib) {
|
|
60
|
-
const buffer = await
|
|
60
|
+
const buffer = await promisify1(zlib.brotliCompress)(input);
|
|
61
61
|
return toArrayBuffer(buffer);
|
|
62
62
|
}
|
|
63
63
|
return this.compressSync(input);
|
|
@@ -84,7 +84,7 @@ export class BrotliCompression extends Compression {
|
|
|
84
84
|
async decompress(input: ArrayBuffer): Promise<ArrayBuffer> {
|
|
85
85
|
// On Node.js we can use built-in zlib
|
|
86
86
|
if (!isBrowser && this.options.brotli?.useZlib) {
|
|
87
|
-
const buffer = await
|
|
87
|
+
const buffer = await promisify1(zlib.brotliDecompress)(input);
|
|
88
88
|
return toArrayBuffer(buffer);
|
|
89
89
|
}
|
|
90
90
|
return this.decompressSync(input);
|
|
@@ -4,7 +4,7 @@ import {Compression} from './compression';
|
|
|
4
4
|
import {isBrowser, toArrayBuffer} from '@loaders.gl/loader-utils';
|
|
5
5
|
import pako from 'pako'; // https://bundlephobia.com/package/pako
|
|
6
6
|
import zlib from 'zlib';
|
|
7
|
-
import {
|
|
7
|
+
import {promisify1} from '@loaders.gl/loader-utils';
|
|
8
8
|
|
|
9
9
|
export type DeflateCompressionOptions = CompressionOptions & {
|
|
10
10
|
deflate?: pako.InflateOptions & pako.DeflateOptions & {useZlib?: boolean};
|
|
@@ -32,8 +32,8 @@ export class DeflateCompression extends Compression {
|
|
|
32
32
|
// On Node.js we can use built-in zlib
|
|
33
33
|
if (!isBrowser && this.options.deflate?.useZlib) {
|
|
34
34
|
const buffer = this.options.deflate?.gzip
|
|
35
|
-
? await
|
|
36
|
-
: await
|
|
35
|
+
? await promisify1(zlib.gzip)(input)
|
|
36
|
+
: await promisify1(zlib.deflate)(input);
|
|
37
37
|
return toArrayBuffer(buffer);
|
|
38
38
|
}
|
|
39
39
|
return this.compressSync(input);
|
|
@@ -43,8 +43,8 @@ export class DeflateCompression extends Compression {
|
|
|
43
43
|
// On Node.js we can use built-in zlib
|
|
44
44
|
if (!isBrowser && this.options.deflate?.useZlib) {
|
|
45
45
|
const buffer = this.options.deflate?.gzip
|
|
46
|
-
? await
|
|
47
|
-
: await
|
|
46
|
+
? await promisify1(zlib.gunzip)(input)
|
|
47
|
+
: await promisify1(zlib.inflate)(input);
|
|
48
48
|
return toArrayBuffer(buffer);
|
|
49
49
|
}
|
|
50
50
|
return this.decompressSync(input);
|