@zip.js/zip.js 2.8.42 → 2.8.44
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/README.md +0 -37
- package/deno.json +1 -1
- package/dist/zip-core-external.js +178 -77
- package/dist/zip-core-external.min.js +1 -1
- package/dist/zip-core.js +179 -76
- package/dist/zip-core.min.js +1 -1
- package/dist/zip-fs-core-external.js +178 -77
- package/dist/zip-fs-core-external.min.js +1 -1
- package/dist/zip-fs-core.js +177 -76
- package/dist/zip-fs-core.min.js +1 -1
- package/dist/zip-fs-external.js +178 -77
- package/dist/zip-fs-external.min.js +1 -1
- package/dist/zip-fs-native.js +180 -77
- package/dist/zip-fs-native.min.js +1 -1
- package/dist/zip-fs.js +180 -77
- package/dist/zip-fs.min.js +1 -1
- package/dist/zip-legacy.js +180 -77
- package/dist/zip-legacy.min.js +1 -1
- package/dist/zip-native.js +180 -77
- package/dist/zip-native.min.js +1 -1
- package/dist/zip-web-worker-native.js +1 -1
- package/dist/zip-web-worker.js +1 -1
- package/dist/zip.js +180 -77
- package/dist/zip.min.js +1 -1
- package/index-native.cjs +180 -77
- package/index-native.min.js +1 -1
- package/index.cjs +180 -77
- package/index.d.cts +80 -7
- package/index.d.ts +80 -7
- package/index.min.js +1 -1
- package/lib/core/codec-pool.js +6 -2
- package/lib/core/codec-worker.js +23 -2
- package/lib/core/options.js +4 -0
- package/lib/core/streams/aes-crypto-stream.js +4 -4
- package/lib/core/streams/codec-stream.js +8 -2
- package/lib/core/streams/common-crypto.js +2 -0
- package/lib/core/streams/zip-entry-stream.js +102 -36
- package/lib/core/web-worker-inline-native.js +1 -1
- package/lib/core/web-worker-inline-wasm.js +1 -1
- package/lib/core/web-worker-wasm.js +4 -8
- package/lib/core/zip-entry.js +3 -0
- package/lib/core/zip-reader.js +35 -26
- package/lib/core/zip-writer.js +22 -10
- package/lib/zip-core-reader.js +2 -0
- package/package.json +1 -1
- package/worker-message-property-names.js +1 -1
package/lib/core/codec-pool.js
CHANGED
|
@@ -33,6 +33,8 @@ import {
|
|
|
33
33
|
CODEC_INFLATE,
|
|
34
34
|
CODEC_DEFLATE,
|
|
35
35
|
ERR_INVALID_SIGNATURE,
|
|
36
|
+
ERR_INVALID_CRC32,
|
|
37
|
+
ERR_INVALID_AUTHENTICATION_CODE,
|
|
36
38
|
ERR_INVALID_UNCOMPRESSED_SIZE,
|
|
37
39
|
ERR_INVALID_PASSWORD,
|
|
38
40
|
ERR_INVALID_COMPRESSED_DATA,
|
|
@@ -52,6 +54,8 @@ export {
|
|
|
52
54
|
CODEC_DEFLATE,
|
|
53
55
|
CODEC_INFLATE,
|
|
54
56
|
ERR_INVALID_SIGNATURE,
|
|
57
|
+
ERR_INVALID_CRC32,
|
|
58
|
+
ERR_INVALID_AUTHENTICATION_CODE,
|
|
55
59
|
ERR_INVALID_UNCOMPRESSED_SIZE,
|
|
56
60
|
ERR_INVALID_PASSWORD,
|
|
57
61
|
ERR_INVALID_COMPRESSED_DATA,
|
|
@@ -62,7 +66,7 @@ let indexWorker = 0;
|
|
|
62
66
|
|
|
63
67
|
async function runWorker(stream, workerOptions) {
|
|
64
68
|
const { options, config } = workerOptions;
|
|
65
|
-
const { transferStreams, useWebWorkers, useCompressionStream, compressed,
|
|
69
|
+
const { transferStreams, useWebWorkers, useCompressionStream, compressed, checkCrc32, computeCrc32, encrypted, format, codecURI } = options;
|
|
66
70
|
const { workerURI, maxWorkers } = config;
|
|
67
71
|
if (format) {
|
|
68
72
|
if (codecURI) {
|
|
@@ -71,7 +75,7 @@ async function runWorker(stream, workerOptions) {
|
|
|
71
75
|
await ensureCodecStreams(format, options.codecURI);
|
|
72
76
|
}
|
|
73
77
|
workerOptions.transferStreams = transferStreams || (transferStreams === UNDEFINED_VALUE && config.transferStreams);
|
|
74
|
-
const streamCopy = !compressed && !
|
|
78
|
+
const streamCopy = !compressed && !checkCrc32 && !computeCrc32 && !encrypted;
|
|
75
79
|
const workerSupported = format === UNDEFINED_VALUE || Boolean(options.codecURI);
|
|
76
80
|
workerOptions.useWebWorkers = !streamCopy && workerSupported && (useWebWorkers || (useWebWorkers === UNDEFINED_VALUE && config.useWebWorkers));
|
|
77
81
|
workerOptions.workerURI = workerOptions.useWebWorkers && workerURI ? workerURI : UNDEFINED_VALUE;
|
package/lib/core/codec-worker.js
CHANGED
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
27
27
|
*/
|
|
28
28
|
|
|
29
|
-
/* global Worker, URL, TransformStream, AbortController, structuredClone, DOMException */
|
|
29
|
+
/* global Worker, URL, TransformStream, AbortController, structuredClone, DOMException, setTimeout, clearTimeout */
|
|
30
30
|
|
|
31
31
|
import {
|
|
32
32
|
UNDEFINED_VALUE,
|
|
@@ -40,6 +40,7 @@ import {
|
|
|
40
40
|
CodecStream,
|
|
41
41
|
ChunkStream,
|
|
42
42
|
supportsDeflateRaw,
|
|
43
|
+
supportsGzip,
|
|
43
44
|
MESSAGE_EVENT_TYPE,
|
|
44
45
|
MESSAGE_START,
|
|
45
46
|
MESSAGE_PULL,
|
|
@@ -65,13 +66,33 @@ let initModule = () => { };
|
|
|
65
66
|
export {
|
|
66
67
|
CodecWorker,
|
|
67
68
|
configureWorker,
|
|
68
|
-
resetWebWorkerSupport
|
|
69
|
+
resetWebWorkerSupport,
|
|
70
|
+
supportsDeflate
|
|
69
71
|
};
|
|
70
72
|
|
|
71
73
|
function configureWorker({ initModule: initModuleFunction }) {
|
|
72
74
|
initModule = initModuleFunction;
|
|
73
75
|
}
|
|
74
76
|
|
|
77
|
+
async function supportsDeflate(config) {
|
|
78
|
+
const { CompressionStream: NativeStream, CompressionStreamZlib: ZlibStream } = config;
|
|
79
|
+
if (ZlibStream && !ZlibStream.requiresModule) {
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
if (supportsDeflateRaw(NativeStream) || supportsGzip(NativeStream)) {
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
if (ZlibStream) {
|
|
86
|
+
try {
|
|
87
|
+
await initModule(config);
|
|
88
|
+
return true;
|
|
89
|
+
} catch {
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
|
|
75
96
|
function resetWebWorkerSupport() {
|
|
76
97
|
webWorkerSupported = UNDEFINED_VALUE;
|
|
77
98
|
}
|
package/lib/core/options.js
CHANGED
|
@@ -40,6 +40,8 @@ const OPTION_CHECK_OVERLAPPING_ENTRY_ONLY = "checkOverlappingEntryOnly";
|
|
|
40
40
|
const OPTION_CHECK_OVERLAPPING_ENTRY = "checkOverlappingEntry";
|
|
41
41
|
const OPTION_CHECK_AMBIGUITY = "checkAmbiguity";
|
|
42
42
|
const OPTION_CHECK_SIGNATURE = "checkSignature";
|
|
43
|
+
const OPTION_CHECK_CRC32 = "checkCrc32";
|
|
44
|
+
const OPTION_CHECK_AUTHENTICATION_CODE = "checkAuthenticationCode";
|
|
43
45
|
const OPTION_USE_WEB_WORKERS = "useWebWorkers";
|
|
44
46
|
const OPTION_USE_COMPRESSION_STREAM = "useCompressionStream";
|
|
45
47
|
const OPTION_TRANSFER_STREAMS = "transferStreams";
|
|
@@ -80,6 +82,8 @@ export {
|
|
|
80
82
|
OPTION_CHECK_OVERLAPPING_ENTRY,
|
|
81
83
|
OPTION_CHECK_AMBIGUITY,
|
|
82
84
|
OPTION_CHECK_SIGNATURE,
|
|
85
|
+
OPTION_CHECK_CRC32,
|
|
86
|
+
OPTION_CHECK_AUTHENTICATION_CODE,
|
|
83
87
|
OPTION_USE_WEB_WORKERS,
|
|
84
88
|
OPTION_USE_COMPRESSION_STREAM,
|
|
85
89
|
OPTION_TRANSFER_STREAMS,
|
|
@@ -40,7 +40,7 @@ import {
|
|
|
40
40
|
} from "./codecs/sjcl.js";
|
|
41
41
|
import {
|
|
42
42
|
ERR_INVALID_PASSWORD,
|
|
43
|
-
|
|
43
|
+
ERR_INVALID_AUTHENTICATION_CODE,
|
|
44
44
|
ERR_ABORT_CHECK_PASSWORD,
|
|
45
45
|
getRandomValues
|
|
46
46
|
} from "./common-crypto.js";
|
|
@@ -71,7 +71,7 @@ let DERIVE_BITS_SUPPORTED = CRYPTO_API_SUPPORTED && SUBTLE_API_SUPPORTED && type
|
|
|
71
71
|
|
|
72
72
|
class AESDecryptionStream extends TransformStream {
|
|
73
73
|
|
|
74
|
-
constructor({ password, rawPassword, encryptionStrength, checkPasswordOnly }) {
|
|
74
|
+
constructor({ password, rawPassword, encryptionStrength, checkPasswordOnly, checkAuthenticationCode = true }) {
|
|
75
75
|
super({
|
|
76
76
|
start() {
|
|
77
77
|
initAesCrypto(this, password, rawPassword, encryptionStrength);
|
|
@@ -121,8 +121,8 @@ class AESDecryptionStream extends TransformStream {
|
|
|
121
121
|
for (let indexSignature = 0; indexSignature < SIGNATURE_LENGTH; indexSignature++) {
|
|
122
122
|
invalidSignature |= signature[indexSignature] ^ originalSignature[indexSignature];
|
|
123
123
|
}
|
|
124
|
-
if (invalidSignature) {
|
|
125
|
-
throw new Error(
|
|
124
|
+
if (invalidSignature && checkAuthenticationCode) {
|
|
125
|
+
throw new Error(ERR_INVALID_AUTHENTICATION_CODE);
|
|
126
126
|
}
|
|
127
127
|
controller.enqueue(decryptedChunkArray);
|
|
128
128
|
}
|
|
@@ -40,12 +40,15 @@ import { UNDEFINED_VALUE } from "../constants.js";
|
|
|
40
40
|
import {
|
|
41
41
|
ERR_INVALID_PASSWORD,
|
|
42
42
|
ERR_INVALID_SIGNATURE,
|
|
43
|
+
ERR_INVALID_CRC32,
|
|
44
|
+
ERR_INVALID_AUTHENTICATION_CODE,
|
|
43
45
|
ERR_INVALID_UNCOMPRESSED_SIZE,
|
|
44
46
|
ERR_INVALID_COMPRESSED_DATA,
|
|
45
47
|
ERR_ABORT_CHECK_PASSWORD,
|
|
46
48
|
InflateStream,
|
|
47
49
|
DeflateStream,
|
|
48
|
-
supportsDeflateRaw
|
|
50
|
+
supportsDeflateRaw,
|
|
51
|
+
supportsGzip
|
|
49
52
|
} from "./zip-entry-stream.js";
|
|
50
53
|
|
|
51
54
|
const DEFAULT_CHUNK_SIZE = 64 * 1024;
|
|
@@ -71,12 +74,15 @@ export {
|
|
|
71
74
|
MESSAGE_READY,
|
|
72
75
|
ERR_INVALID_PASSWORD,
|
|
73
76
|
ERR_INVALID_SIGNATURE,
|
|
77
|
+
ERR_INVALID_CRC32,
|
|
78
|
+
ERR_INVALID_AUTHENTICATION_CODE,
|
|
74
79
|
ERR_INVALID_UNCOMPRESSED_SIZE,
|
|
75
80
|
ERR_INVALID_COMPRESSED_DATA,
|
|
76
81
|
ERR_ABORT_CHECK_PASSWORD,
|
|
77
82
|
CodecStream,
|
|
78
83
|
ChunkStream,
|
|
79
|
-
supportsDeflateRaw
|
|
84
|
+
supportsDeflateRaw,
|
|
85
|
+
supportsGzip
|
|
80
86
|
};
|
|
81
87
|
|
|
82
88
|
class CodecStream extends TransformStream {
|
|
@@ -34,6 +34,7 @@ const GET_RANDOM_VALUES_SUPPORTED = typeof crypto != UNDEFINED_TYPE && typeof cr
|
|
|
34
34
|
|
|
35
35
|
const ERR_INVALID_PASSWORD = "Invalid password";
|
|
36
36
|
const ERR_INVALID_SIGNATURE = "Invalid signature";
|
|
37
|
+
const ERR_INVALID_AUTHENTICATION_CODE = ERR_INVALID_SIGNATURE;
|
|
37
38
|
const ERR_ABORT_CHECK_PASSWORD = "zipjs-abort-check-password";
|
|
38
39
|
const ERR_UNSUPPORTED_CRYPTO_API = "Crypto API not supported";
|
|
39
40
|
|
|
@@ -41,6 +42,7 @@ export {
|
|
|
41
42
|
getRandomValues,
|
|
42
43
|
ERR_INVALID_PASSWORD,
|
|
43
44
|
ERR_INVALID_SIGNATURE,
|
|
45
|
+
ERR_INVALID_AUTHENTICATION_CODE,
|
|
44
46
|
ERR_ABORT_CHECK_PASSWORD
|
|
45
47
|
};
|
|
46
48
|
|
|
@@ -26,9 +26,10 @@
|
|
|
26
26
|
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
27
27
|
*/
|
|
28
28
|
|
|
29
|
-
/* global TransformStream, ReadableStream */
|
|
29
|
+
/* global TransformStream, ReadableStream, setTimeout, clearTimeout */
|
|
30
30
|
// deno-lint-ignore-file no-this-alias
|
|
31
31
|
|
|
32
|
+
import { Crc32 } from "./codecs/crc32.js";
|
|
32
33
|
import { Crc32Stream } from "./crc32-stream.js";
|
|
33
34
|
import {
|
|
34
35
|
AESEncryptionStream,
|
|
@@ -41,6 +42,7 @@ import {
|
|
|
41
42
|
import {
|
|
42
43
|
ERR_INVALID_PASSWORD,
|
|
43
44
|
ERR_INVALID_SIGNATURE,
|
|
45
|
+
ERR_INVALID_AUTHENTICATION_CODE,
|
|
44
46
|
ERR_ABORT_CHECK_PASSWORD
|
|
45
47
|
} from "./common-crypto.js";
|
|
46
48
|
import { UNDEFINED_VALUE } from "../constants.js";
|
|
@@ -50,6 +52,7 @@ import { getCodecStreams } from "../codec-registry.js";
|
|
|
50
52
|
|
|
51
53
|
const ERR_INVALID_UNCOMPRESSED_SIZE = "Invalid uncompressed size";
|
|
52
54
|
const ERR_INVALID_COMPRESSED_DATA = "Invalid compressed data";
|
|
55
|
+
const ERR_INVALID_CRC32 = ERR_INVALID_SIGNATURE;
|
|
53
56
|
const ERR_UNSUPPORTED_COMPRESSION = "Compression method not supported";
|
|
54
57
|
const FORMAT_DEFLATE_RAW = "deflate-raw";
|
|
55
58
|
const FORMAT_DEFLATE64_RAW = "deflate64-raw";
|
|
@@ -57,19 +60,20 @@ const FORMAT_GZIP = "gzip";
|
|
|
57
60
|
const GZIP_HEADER_LENGTH = 10;
|
|
58
61
|
const GZIP_TRAILER_LENGTH = 8;
|
|
59
62
|
const GZIP_HEADER_BYTES = [0x1f, 0x8b, 0x08];
|
|
63
|
+
const GZIP_OUTPUT_STALL_TIMEOUT = 5000;
|
|
60
64
|
|
|
61
65
|
class DeflateStream extends TransformStream {
|
|
62
66
|
|
|
63
67
|
constructor(options, { chunkSize, CompressionStreamZlib, CompressionStream }) {
|
|
64
68
|
super({});
|
|
65
|
-
const { compressed, encrypted, useCompressionStream, zipCrypto,
|
|
69
|
+
const { compressed, encrypted, useCompressionStream, zipCrypto, computeCrc32, level, deflate64, format, compressionMethod } = options;
|
|
66
70
|
const stream = this;
|
|
67
71
|
let crc32Stream, encryptionStream, gzipCrc32Stream;
|
|
68
72
|
let readable = super.readable;
|
|
69
73
|
const codecStreams = format && getCodecStreams(format);
|
|
70
|
-
const useGzipCrc32 =
|
|
74
|
+
const useGzipCrc32 = computeCrc32 && compressed && !deflate64 && !codecStreams && (!encrypted || zipCrypto) &&
|
|
71
75
|
Boolean(useCompressionStream && CompressionStream);
|
|
72
|
-
if ((!encrypted || zipCrypto) &&
|
|
76
|
+
if ((!encrypted || zipCrypto) && computeCrc32 && !useGzipCrc32) {
|
|
73
77
|
crc32Stream = new Crc32Stream();
|
|
74
78
|
readable = pipeThrough(readable, crc32Stream);
|
|
75
79
|
}
|
|
@@ -108,7 +112,7 @@ class DeflateStream extends TransformStream {
|
|
|
108
112
|
if (encrypted && !zipCrypto) {
|
|
109
113
|
signature = encryptionStream.signature;
|
|
110
114
|
}
|
|
111
|
-
if ((!encrypted || zipCrypto) &&
|
|
115
|
+
if ((!encrypted || zipCrypto) && computeCrc32) {
|
|
112
116
|
signature = useGzipCrc32 ? gzipCrc32Stream.signature : new DataView(crc32Stream.value.buffer).getUint32(0);
|
|
113
117
|
}
|
|
114
118
|
stream.signature = signature;
|
|
@@ -157,26 +161,73 @@ class GzipToRawDeflateStream extends TransformStream {
|
|
|
157
161
|
}
|
|
158
162
|
}
|
|
159
163
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
164
|
+
function pipeThroughGzipDecompressionStream(readable, gzipStream, outputSize) {
|
|
165
|
+
const crc32 = new Crc32();
|
|
166
|
+
let outputLength = 0;
|
|
167
|
+
let inputDone = false;
|
|
168
|
+
let watchdogTimeout;
|
|
169
|
+
let resolveTrailerReady, rejectTrailerReady;
|
|
170
|
+
const trailerReady = new Promise((resolve, reject) => {
|
|
171
|
+
resolveTrailerReady = resolve;
|
|
172
|
+
rejectTrailerReady = reject;
|
|
173
|
+
});
|
|
174
|
+
trailerReady.catch(() => { });
|
|
175
|
+
if (!outputSize) {
|
|
176
|
+
resolveTrailerReady();
|
|
177
|
+
}
|
|
178
|
+
const gzipWrapStream = new TransformStream({
|
|
179
|
+
start(controller) {
|
|
180
|
+
const header = new Uint8Array(GZIP_HEADER_LENGTH);
|
|
181
|
+
header.set(GZIP_HEADER_BYTES);
|
|
182
|
+
controller.enqueue(header);
|
|
183
|
+
},
|
|
184
|
+
transform(chunk, controller) {
|
|
185
|
+
controller.enqueue(chunk);
|
|
186
|
+
},
|
|
187
|
+
async flush(controller) {
|
|
188
|
+
inputDone = true;
|
|
189
|
+
startWatchdog();
|
|
190
|
+
try {
|
|
191
|
+
await trailerReady;
|
|
192
|
+
} finally {
|
|
193
|
+
stopWatchdog();
|
|
178
194
|
}
|
|
179
|
-
|
|
195
|
+
const trailer = new Uint8Array(GZIP_TRAILER_LENGTH);
|
|
196
|
+
const dataView = getDataView(trailer);
|
|
197
|
+
dataView.setUint32(0, crc32.get(), true);
|
|
198
|
+
dataView.setUint32(4, outputSize, true);
|
|
199
|
+
controller.enqueue(trailer);
|
|
200
|
+
},
|
|
201
|
+
cancel(reason) {
|
|
202
|
+
rejectTrailerReady(reason);
|
|
203
|
+
}
|
|
204
|
+
});
|
|
205
|
+
const outputStream = new TransformStream({
|
|
206
|
+
transform(chunk, controller) {
|
|
207
|
+
crc32.append(chunk);
|
|
208
|
+
outputLength += chunk.length;
|
|
209
|
+
if (outputLength >= outputSize) {
|
|
210
|
+
resolveTrailerReady();
|
|
211
|
+
} else if (inputDone) {
|
|
212
|
+
startWatchdog();
|
|
213
|
+
}
|
|
214
|
+
controller.enqueue(chunk);
|
|
215
|
+
},
|
|
216
|
+
cancel(reason) {
|
|
217
|
+
rejectTrailerReady(reason);
|
|
218
|
+
}
|
|
219
|
+
});
|
|
220
|
+
readable = pipeThrough(readable, gzipWrapStream);
|
|
221
|
+
readable = pipeThroughBackpressured(readable, gzipStream);
|
|
222
|
+
return pipeThrough(readable, outputStream);
|
|
223
|
+
|
|
224
|
+
function startWatchdog() {
|
|
225
|
+
stopWatchdog();
|
|
226
|
+
watchdogTimeout = setTimeout(() => rejectTrailerReady(new Error(ERR_INVALID_UNCOMPRESSED_SIZE)), GZIP_OUTPUT_STALL_TIMEOUT);
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
function stopWatchdog() {
|
|
230
|
+
clearTimeout(watchdogTimeout);
|
|
180
231
|
}
|
|
181
232
|
}
|
|
182
233
|
|
|
@@ -184,7 +235,7 @@ class InflateStream extends TransformStream {
|
|
|
184
235
|
|
|
185
236
|
constructor(options, { chunkSize, DecompressionStreamZlib, DecompressionStream }) {
|
|
186
237
|
super({});
|
|
187
|
-
const { zipCrypto, encrypted,
|
|
238
|
+
const { zipCrypto, encrypted, checkCrc32, signature, compressed, useCompressionStream, deflate64, format, compressionMethod, rawBitFlag, outputSize } = options;
|
|
188
239
|
let crc32Stream, decryptionStream;
|
|
189
240
|
let readable = super.readable;
|
|
190
241
|
if (encrypted) {
|
|
@@ -203,7 +254,7 @@ class InflateStream extends TransformStream {
|
|
|
203
254
|
try {
|
|
204
255
|
readable = pipeThroughCompressionStream(readable, useCompressionStream, { chunkSize, deflate64 }, DecompressionStream, DecompressionStreamZlib);
|
|
205
256
|
} catch (error) {
|
|
206
|
-
if (deflate64 ||
|
|
257
|
+
if (deflate64 || outputSize === UNDEFINED_VALUE) {
|
|
207
258
|
throw error;
|
|
208
259
|
}
|
|
209
260
|
let gzipStream;
|
|
@@ -212,52 +263,67 @@ class InflateStream extends TransformStream {
|
|
|
212
263
|
} catch {
|
|
213
264
|
throw error;
|
|
214
265
|
}
|
|
215
|
-
readable =
|
|
216
|
-
readable = pipeThroughBackpressured(readable, gzipStream);
|
|
266
|
+
readable = pipeThroughGzipDecompressionStream(readable, gzipStream, outputSize);
|
|
217
267
|
}
|
|
218
268
|
}
|
|
219
269
|
readable = mapInflateStreamError(readable);
|
|
220
270
|
}
|
|
221
|
-
if (
|
|
271
|
+
if (checkCrc32) {
|
|
222
272
|
crc32Stream = new Crc32Stream();
|
|
223
273
|
readable = pipeThrough(readable, crc32Stream);
|
|
224
274
|
}
|
|
225
275
|
setReadable(this, readable, () => {
|
|
226
|
-
if (
|
|
276
|
+
if (checkCrc32) {
|
|
227
277
|
const dataViewSignature = new DataView(crc32Stream.value.buffer);
|
|
228
278
|
if (signature != dataViewSignature.getUint32(0, false)) {
|
|
229
|
-
throw new Error(
|
|
279
|
+
throw new Error(ERR_INVALID_CRC32);
|
|
230
280
|
}
|
|
231
281
|
}
|
|
232
282
|
});
|
|
233
283
|
}
|
|
234
284
|
}
|
|
235
285
|
|
|
236
|
-
const
|
|
286
|
+
const formatSupportByStream = new Map();
|
|
237
287
|
|
|
238
|
-
function
|
|
288
|
+
function supportsFormat(StreamClass, format) {
|
|
239
289
|
if (!StreamClass) {
|
|
240
290
|
return false;
|
|
241
291
|
}
|
|
242
|
-
let
|
|
292
|
+
let supportByFormat = formatSupportByStream.get(StreamClass);
|
|
293
|
+
if (!supportByFormat) {
|
|
294
|
+
supportByFormat = new Map();
|
|
295
|
+
formatSupportByStream.set(StreamClass, supportByFormat);
|
|
296
|
+
}
|
|
297
|
+
let supported = supportByFormat.get(format);
|
|
243
298
|
if (supported === UNDEFINED_VALUE) {
|
|
244
299
|
try {
|
|
245
|
-
new StreamClass(
|
|
300
|
+
new StreamClass(format);
|
|
246
301
|
supported = true;
|
|
247
302
|
} catch {
|
|
248
303
|
supported = false;
|
|
249
304
|
}
|
|
250
|
-
|
|
305
|
+
supportByFormat.set(format, supported);
|
|
251
306
|
}
|
|
252
307
|
return supported;
|
|
253
308
|
}
|
|
254
309
|
|
|
310
|
+
function supportsDeflateRaw(StreamClass) {
|
|
311
|
+
return supportsFormat(StreamClass, FORMAT_DEFLATE_RAW);
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
function supportsGzip(StreamClass) {
|
|
315
|
+
return supportsFormat(StreamClass, FORMAT_GZIP);
|
|
316
|
+
}
|
|
317
|
+
|
|
255
318
|
export {
|
|
256
319
|
DeflateStream,
|
|
257
320
|
InflateStream,
|
|
258
321
|
supportsDeflateRaw,
|
|
322
|
+
supportsGzip,
|
|
259
323
|
ERR_INVALID_PASSWORD,
|
|
260
324
|
ERR_INVALID_SIGNATURE,
|
|
325
|
+
ERR_INVALID_CRC32,
|
|
326
|
+
ERR_INVALID_AUTHENTICATION_CODE,
|
|
261
327
|
ERR_INVALID_UNCOMPRESSED_SIZE,
|
|
262
328
|
ERR_INVALID_COMPRESSED_DATA,
|
|
263
329
|
ERR_ABORT_CHECK_PASSWORD
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const l=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258],r=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],t=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],n=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],P=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],o=new Uint8Array(288);o.fill(8,0,144),o.fill(9,144,256),o.fill(7,256,280),o.fill(8,280,288);const b=new Uint8Array(30).fill(5);function s(l){const r=new Uint16Array(16);for(const t of l)r[t]++;r[0]=0;const t=new Uint16Array(17);for(let l=1;15>=l;l++)t[l+1]=t[l]+r[l];const n=new Uint16Array(l.length);for(let r=0;r<l.length;r++)l[r]&&(n[t[l[r]]++]=r);return{l:r,symbols:n}}const i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function f(f){f({workerURI:f=>{const a="text/javascript",e=(i=>{let f=0,a=0,e=0,F=new Uint8Array(1024),v=0,c=0;for(;!c;){c=d(1);const l=d(2);if(0==l)q();else if(1==l)p(s(o),s(b));else{if(2!=l)throw Error("invalid deflate block type");p(...M())}}return F.subarray(0,v);function K(){if(f>=i.length)throw Error("unexpected end of deflate data");return i[f++]}function d(l){for(;l>e;)a|=K()<<e,e+=8;const r=a&(1<<l)-1;return a>>>=l,e-=l,r}function q(){a=0,e=0;const l=K()|K()<<8;f+=2,j(v+l);for(let r=0;l>r;r++)F[v++]=K()}function p(P,o){let b=U(P);for(;256!=b;){if(256>b)j(v+1),F[v++]=b;else{const P=b-257,s=l[P]+d(r[P]),i=U(o),f=t[i]+d(n[i]);j(v+s);const a=v-f;for(let l=0;s>l;l++)F[v++]=F[a+l]}b=U(P)}}function M(){const l=d(5)+257,r=d(5)+1,t=d(4)+4,n=new Uint8Array(19);for(let l=0;t>l;l++)n[P[l]]=d(3);const o=s(n),b=new Uint8Array(l+r);let i=0;for(;i<b.length;){const l=U(o);if(16>l)b[i++]=l;else if(16==l){const l=b[i-1];let r=d(2)+3;for(;r--;)b[i++]=l}else i+=17==l?d(3)+3:d(7)+11}return[s(b.subarray(0,l)),s(b.subarray(l))]}function U(l){const{l:r,symbols:t}=l;let n=0,P=0,o=0;for(let l=1;15>=l;l++){n|=d(1);const b=r[l];if(b>n-P)return t[o+(n-P)];o+=b,P=P+b<<1,n<<=1}throw Error("invalid huffman code")}function j(l){if(F.length<l){let r=2*F.length;for(;l>r;)r*=2;const t=new Uint8Array(r);t.set(F.subarray(0,v)),F=t}}})((l=>{const r=(l=(l+"").replace(/[^A-Za-z0-9+/=]/g,"")).length,t=[];for(let n=0;r>n;n+=4){const r=i.indexOf(l[n])<<18|i.indexOf(l[n+1])<<12|(63&i.indexOf(l[n+2]))<<6|63&i.indexOf(l[n+3]);t.push(r>>16&255),"="!==l[n+2]&&t.push(r>>8&255),"="!==l[n+3]&&t.push(255&r)}return new Uint8Array(t)})("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"));if(f){const l=new Blob([e],{type:a});return URL.createObjectURL(l)}return"data:"+a+";base64,"+(l=>{let r="";const t=l.length;let n=0;for(;t>n+2;n+=3){const t=l[n]<<16|l[n+1]<<8|l[n+2];r+=i[t>>18&63]+i[t>>12&63]+i[t>>6&63]+i[63&t]}const P=t-n;if(1===P){const t=l[n]<<16;r+=i[t>>18&63]+i[t>>12&63]+"=="}else if(2===P){const t=l[n]<<16|l[n+1]<<8;r+=i[t>>18&63]+i[t>>12&63]+i[t>>6&63]+"="}return r})(e)}})}export{f as configureWebWorker};
|
|
1
|
+
const t=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258],e=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],o=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],n=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],h=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],r=new Uint8Array(288);r.fill(8,0,144),r.fill(9,144,256),r.fill(7,256,280),r.fill(8,280,288);const s=new Uint8Array(30).fill(5);function u(t){const e=new Uint16Array(16);for(const o of t)e[o]++;e[0]=0;const o=new Uint16Array(17);for(let t=1;15>=t;t++)o[t+1]=o[t]+e[t];const n=new Uint16Array(t.length);for(let e=0;e<t.length;e++)t[e]&&(n[o[t[e]]++]=e);return{o:e,symbols:n}}const b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function f(f){f({workerURI:f=>{const i="text/javascript",w=(b=>{let f=0,i=0,w=0,M=new Uint8Array(1024),c=0,z=0;for(;!z;){z=V(1);const t=V(2);if(0==t)a();else if(1==t)W(u(r),u(s));else{if(2!=t)throw Error("invalid deflate block type");W(...m())}}return M.subarray(0,c);function F(){if(f>=b.length)throw Error("unexpected end of deflate data");return b[f++]}function V(t){for(;t>w;)i|=F()<<w,w+=8;const e=i&(1<<t)-1;return i>>>=t,w-=t,e}function a(){i=0,w=0;const t=F()|F()<<8;f+=2,G(c+t);for(let e=0;t>e;e++)M[c++]=F()}function W(h,r){let s=Z(h);for(;256!=s;){if(256>s)G(c+1),M[c++]=s;else{const h=s-257,u=t[h]+V(e[h]),b=Z(r),f=o[b]+V(n[b]);G(c+u);const i=c-f;for(let t=0;u>t;t++)M[c++]=M[i+t]}s=Z(h)}}function m(){const t=V(5)+257,e=V(5)+1,o=V(4)+4,n=new Uint8Array(19);for(let t=0;o>t;t++)n[h[t]]=V(3);const r=u(n),s=new Uint8Array(t+e);let b=0;for(;b<s.length;){const t=Z(r);if(16>t)s[b++]=t;else if(16==t){const t=s[b-1];let e=V(2)+3;for(;e--;)s[b++]=t}else b+=17==t?V(3)+3:V(7)+11}return[u(s.subarray(0,t)),u(s.subarray(t))]}function Z(t){const{o:e,symbols:o}=t;let n=0,h=0,r=0;for(let t=1;15>=t;t++){n|=V(1);const s=e[t];if(s>n-h)return o[r+(n-h)];r+=s,h=h+s<<1,n<<=1}throw Error("invalid huffman code")}function G(t){if(M.length<t){let e=2*M.length;for(;t>e;)e*=2;const o=new Uint8Array(e);o.set(M.subarray(0,c)),M=o}}})((t=>{const e=(t=(t+"").replace(/[^A-Za-z0-9+/=]/g,"")).length,o=[];for(let n=0;e>n;n+=4){const e=b.indexOf(t[n])<<18|b.indexOf(t[n+1])<<12|(63&b.indexOf(t[n+2]))<<6|63&b.indexOf(t[n+3]);o.push(e>>16&255),"="!==t[n+2]&&o.push(e>>8&255),"="!==t[n+3]&&o.push(255&e)}return new Uint8Array(o)})("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"));if(f){const t=new Blob([w],{type:i});return URL.createObjectURL(t)}return"data:"+i+";base64,"+(t=>{let e="";const o=t.length;let n=0;for(;o>n+2;n+=3){const o=t[n]<<16|t[n+1]<<8|t[n+2];e+=b[o>>18&63]+b[o>>12&63]+b[o>>6&63]+b[63&o]}const h=o-n;if(1===h){const o=t[n]<<16;e+=b[o>>18&63]+b[o>>12&63]+"=="}else if(2===h){const o=t[n]<<16|t[n+1]<<8;e+=b[o>>18&63]+b[o>>12&63]+b[o>>6&63]+"="}return e})(w)}})}export{f as configureWebWorker};
|