@zip.js/zip.js 2.8.59 → 2.8.61
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/deno.json +2 -2
- package/dist/zip-core-external.js +167 -37
- package/dist/zip-core-external.min.js +1 -1
- package/dist/zip-core.js +143 -20
- package/dist/zip-core.min.js +1 -1
- package/dist/zip-fs-core-external.js +173 -45
- package/dist/zip-fs-core-external.min.js +1 -1
- package/dist/zip-fs-core.js +5326 -3928
- package/dist/zip-fs-core.min.js +1 -1
- package/dist/zip-fs-external.js +173 -45
- package/dist/zip-fs-external.min.js +1 -1
- package/dist/zip-fs-native.js +151 -30
- package/dist/zip-fs-native.min.js +1 -1
- package/dist/zip-fs.js +176 -45
- package/dist/zip-fs.min.js +1 -1
- package/dist/zip-legacy.js +145 -22
- package/dist/zip-legacy.min.js +1 -1
- package/dist/zip-native.js +145 -22
- 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 +170 -37
- package/dist/zip.min.js +1 -1
- package/index-native.cjs +151 -30
- package/index-native.min.js +1 -1
- package/index.cjs +176 -45
- package/index.d.cts +134 -1
- package/index.d.ts +134 -1
- package/index.min.js +1 -1
- package/lib/core/codec-registry.js +5 -0
- package/lib/core/compression-methods.js +93 -0
- package/lib/core/streams/zip-entry-stream.js +7 -3
- package/lib/core/streams/zlib-wasm/zlib-streams.js +18 -8
- package/lib/core/version.js +31 -0
- package/lib/core/web-worker-inline-native.js +1 -1
- package/lib/core/web-worker-inline-wasm.js +1 -1
- package/lib/core/zip-fs.js +5 -4
- package/lib/core/zip-writer.js +38 -31
- package/lib/zip-core-base.js +7 -0
- package/lib/zip-fs-core.js +32 -0
- package/package.json +4 -3
- package/release.sh +47 -0
- package/sync-versions.js +26 -0
package/dist/zip-legacy.js
CHANGED
|
@@ -414,7 +414,7 @@
|
|
|
414
414
|
Object.assign(config, DEFAULT_CONFIGURATION);
|
|
415
415
|
}
|
|
416
416
|
|
|
417
|
-
const o=[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],e=[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],t=[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],n=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],w=new Uint8Array(288);w.fill(8,0,144),w.fill(9,144,256),w.fill(7,256,280),w.fill(8,280,288);const U=new Uint8Array(30).fill(5);function s(o){const r=new Uint16Array(16);for(const e of o)r[e]++;r[0]=0;const e=new Uint16Array(17);for(let o=1;o<=15;o++)e[o+1]=e[o]+r[o];const t=new Uint16Array(o.length);for(let r=0;r<o.length;r++)o[r]&&(t[e[o[r]]++]=r);return {o:r,symbols:t}}const x="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",c=(B=()=>function(x){let c=0,B=0,q=0,C=new Uint8Array(1024),f=0,h=0;for(;!h;){h=Y(1);const o=Y(2);if(0==o)g();else if(1==o)u(s(w),s(U));else {if(2!=o)throw new Error("invalid deflate block type");u(...z());}}return C.subarray(0,f);function i(){if(c>=x.length)throw new Error("unexpected end of deflate data");return x[c++]}function Y(o){for(;q<o;)B|=i()<<q,q+=8;const r=B&(1<<o)-1;return B>>>=o,q-=o,r}function g(){B=0,q=0;const o=i()|i()<<8;c+=2,O(f+o);for(let r=0;r<o;r++)C[f++]=i();}function u(n,w){let U=l(n);for(;256!=U;){if(U<256)O(f+1),C[f++]=U;else {const n=U-257,s=o[n]+Y(r[n]),x=l(w),c=e[x]+Y(t[x]);O(f+s);const B=f-c;for(let o=0;o<s;o++)C[f++]=C[B+o];}U=l(n);}}function z(){const o=Y(5)+257,r=Y(5)+1,e=Y(4)+4,t=new Uint8Array(19);for(let o=0;o<e;o++)t[n[o]]=Y(3);const w=s(t),U=new Uint8Array(o+r);let x=0;for(;x<U.length;){const o=l(w);if(o<16)U[x++]=o;else if(16==o){const o=U[x-1];let r=Y(2)+3;for(;r--;)U[x++]=o;}else x+=17==o?Y(3)+3:Y(7)+11;}return [s(U.subarray(0,o)),s(U.subarray(o))]}function l(o){const{o:r,symbols:e}=o;let t=0,n=0,w=0;for(let o=1;o<=15;o++){t|=Y(1);const U=r[o];if(t-n<U)return e[w+(t-n)];w+=U,n=n+U<<1,t<<=1;}throw new Error("invalid huffman code")}function O(o){if(C.length<o){let r=2*C.length;for(;r<o;)r*=2;const e=new Uint8Array(r);e.set(C.subarray(0,f)),C=e;}}}(function(o){const r=(o=String(o).replace(/[^A-Za-z0-9+/=]/g,"")).length,e=[];for(let t=0;t<r;t+=4){const r=x.indexOf(o[t])<<18|x.indexOf(o[t+1])<<12|(63&x.indexOf(o[t+2]))<<6|63&x.indexOf(o[t+3]);e.push(r>>16&255),"="!==o[t+2]&&e.push(r>>8&255),"="!==o[t+3]&&e.push(255&r);}return new Uint8Array(e)}("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")),o=>o({workerURI:o=>{const r="text/javascript";let e=B();if("string"==typeof e&&(e=(new TextEncoder).encode(e)),o){const o=new Blob([e],{type:r});return URL.createObjectURL(o)}return "data:"+r+";base64,"+function(o){let r="";const e=o.length;let t=0;for(;t+2<e;t+=3){const e=o[t]<<16|o[t+1]<<8|o[t+2];r+=x[e>>18&63]+x[e>>12&63]+x[e>>6&63]+x[63&e];}const n=e-t;if(1===n){const e=o[t]<<16;r+=x[e>>18&63]+x[e>>12&63]+"==";}else if(2===n){const e=o[t]<<16|o[t+1]<<8;r+=x[e>>18&63]+x[e>>12&63]+x[e>>6&63]+"=";}return r}(e)}}));var B;
|
|
417
|
+
const n=[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],o=[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],f=[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],r=[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],t=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],e=new Uint8Array(288);e.fill(8,0,144),e.fill(9,144,256),e.fill(7,256,280),e.fill(8,280,288);const V=new Uint8Array(30).fill(5);function i(n){const o=new Uint16Array(16);for(const f of n)o[f]++;o[0]=0;const f=new Uint16Array(17);for(let n=1;n<=15;n++)f[n+1]=f[n]+o[n];const r=new Uint16Array(n.length);for(let o=0;o<n.length;o++)n[o]&&(r[f[n[o]]++]=o);return {o:o,symbols:r}}const g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=(B=()=>function(g){let s=0,B=0,A=0,q=new Uint8Array(1024),c=0,h=0;for(;!h;){h=u(1);const n=u(2);if(0==n)w();else if(1==n)E(i(e),i(V));else {if(2!=n)throw new Error("invalid deflate block type");E(...v());}}return q.subarray(0,c);function x(){if(s>=g.length)throw new Error("unexpected end of deflate data");return g[s++]}function u(n){for(;A<n;)B|=x()<<A,A+=8;const o=B&(1<<n)-1;return B>>>=n,A-=n,o}function w(){B=0,A=0;const n=x()|x()<<8;s+=2,G(c+n);for(let o=0;o<n;o++)q[c++]=x();}function E(t,e){let V=z(t);for(;256!=V;){if(V<256)G(c+1),q[c++]=V;else {const t=V-257,i=n[t]+u(o[t]),g=z(e),s=f[g]+u(r[g]);G(c+i);const B=c-s;for(let n=0;n<i;n++)q[c++]=q[B+n];}V=z(t);}}function v(){const n=u(5)+257,o=u(5)+1,f=u(4)+4,r=new Uint8Array(19);for(let n=0;n<f;n++)r[t[n]]=u(3);const e=i(r),V=new Uint8Array(n+o);let g=0;for(;g<V.length;){const n=z(e);if(n<16)V[g++]=n;else if(16==n){const n=V[g-1];let o=u(2)+3;for(;o--;)V[g++]=n;}else g+=17==n?u(3)+3:u(7)+11;}return [i(V.subarray(0,n)),i(V.subarray(n))]}function z(n){const{o:o,symbols:f}=n;let r=0,t=0,e=0;for(let n=1;n<=15;n++){r|=u(1);const V=o[n];if(r-t<V)return f[e+(r-t)];e+=V,t=t+V<<1,r<<=1;}throw new Error("invalid huffman code")}function G(n){if(q.length<n){let o=2*q.length;for(;o<n;)o*=2;const f=new Uint8Array(o);f.set(q.subarray(0,c)),q=f;}}}(function(n){const o=(n=String(n).replace(/[^A-Za-z0-9+/=]/g,"")).length,f=[];for(let r=0;r<o;r+=4){const o=g.indexOf(n[r])<<18|g.indexOf(n[r+1])<<12|(63&g.indexOf(n[r+2]))<<6|63&g.indexOf(n[r+3]);f.push(o>>16&255),"="!==n[r+2]&&f.push(o>>8&255),"="!==n[r+3]&&f.push(255&o);}return new Uint8Array(f)}("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")),n=>n({workerURI:n=>{const o="text/javascript";let f=B();if("string"==typeof f&&(f=(new TextEncoder).encode(f)),n){const n=new Blob([f],{type:o});return URL.createObjectURL(n)}return "data:"+o+";base64,"+function(n){let o="";const f=n.length;let r=0;for(;r+2<f;r+=3){const f=n[r]<<16|n[r+1]<<8|n[r+2];o+=g[f>>18&63]+g[f>>12&63]+g[f>>6&63]+g[63&f];}const t=f-r;if(1===t){const f=n[r]<<16;o+=g[f>>18&63]+g[f>>12&63]+"==";}else if(2===t){const f=n[r]<<16|n[r+1]<<8;o+=g[f>>18&63]+g[f>>12&63]+g[f>>6&63]+"=";}return o}(f)}}));var B;
|
|
418
418
|
|
|
419
419
|
/*
|
|
420
420
|
Copyright (c) 2026 Gildas Lormeau. All rights reserved.
|
|
@@ -2084,6 +2084,10 @@
|
|
|
2084
2084
|
return registeredCodecs.get(compressionMethod);
|
|
2085
2085
|
}
|
|
2086
2086
|
|
|
2087
|
+
function getRegisteredCodecs() {
|
|
2088
|
+
return Array.from(registeredCodecs.values(), codec => Object.assign({}, codec, codecStreams.get(codec.format)));
|
|
2089
|
+
}
|
|
2090
|
+
|
|
2087
2091
|
function getCodecStreams(format) {
|
|
2088
2092
|
return codecStreams.get(format);
|
|
2089
2093
|
}
|
|
@@ -2147,7 +2151,7 @@
|
|
|
2147
2151
|
|
|
2148
2152
|
constructor(options, { chunkSize, CompressionStreamFallback, CompressionStream }) {
|
|
2149
2153
|
super({});
|
|
2150
|
-
const { compressed, encrypted, useCompressionStream, zipCrypto, computeCrc32, level, deflate64, format, compressionMethod } = options;
|
|
2154
|
+
const { compressed, encrypted, useCompressionStream, zipCrypto, computeCrc32, level, deflate64, format, compressionMethod, inputSize } = options;
|
|
2151
2155
|
const stream = this;
|
|
2152
2156
|
let crc32Stream, encryptionStream, gzipCrc32Stream;
|
|
2153
2157
|
let readable = super.readable;
|
|
@@ -2160,7 +2164,7 @@
|
|
|
2160
2164
|
}
|
|
2161
2165
|
if (compressed) {
|
|
2162
2166
|
if (codecStreams) {
|
|
2163
|
-
readable = pipeThroughBackpressured(readable, createCodecStream(codecStreams.CompressionStream, format, { level, chunkSize, compressionMethod }));
|
|
2167
|
+
readable = pipeThroughBackpressured(readable, createCodecStream(codecStreams.CompressionStream, format, { level, chunkSize, compressionMethod, uncompressedSize: inputSize }));
|
|
2164
2168
|
} else if (useGzipCrc32) {
|
|
2165
2169
|
gzipCrc32Stream = new GzipToRawDeflateStream();
|
|
2166
2170
|
readable = pipeThroughBackpressured(readable, new CompressionStream(FORMAT_GZIP));
|
|
@@ -6652,6 +6656,13 @@
|
|
|
6652
6656
|
const { comment } = metadataInfo;
|
|
6653
6657
|
const extraField = options[PROPERTY_NAME_EXTRA_FIELD];
|
|
6654
6658
|
zipWriter.fileEntries.set(name, UNDEFINED_VALUE);
|
|
6659
|
+
const previousFileEntry = zipWriter.lastFileEntry;
|
|
6660
|
+
const pendingFileEntry = {};
|
|
6661
|
+
let releaseLockFileEntry;
|
|
6662
|
+
if (metadataInfo.resolvedOptions.keepOrder) {
|
|
6663
|
+
pendingFileEntry.lockFileEntry = new Promise(resolve => releaseLockFileEntry = resolve);
|
|
6664
|
+
}
|
|
6665
|
+
zipWriter.lastFileEntry = pendingFileEntry;
|
|
6655
6666
|
let fileEntry;
|
|
6656
6667
|
try {
|
|
6657
6668
|
const { resolvedOptions } = metadataInfo;
|
|
@@ -6673,10 +6684,21 @@
|
|
|
6673
6684
|
const headerInfo = getHeaderInfo(options);
|
|
6674
6685
|
const dataDescriptorInfo = getDataDescriptorInfo(options);
|
|
6675
6686
|
const metadataSize = getLength(headerInfo.localHeaderArray, dataDescriptorInfo.dataDescriptorArray);
|
|
6676
|
-
fileEntry = await getFileEntry(zipWriter, name, reader, {
|
|
6687
|
+
fileEntry = await getFileEntry(zipWriter, name, reader, {
|
|
6688
|
+
headerInfo,
|
|
6689
|
+
dataDescriptorInfo,
|
|
6690
|
+
metadataSize,
|
|
6691
|
+
fileEntry: pendingFileEntry,
|
|
6692
|
+
previousFileEntry,
|
|
6693
|
+
releaseLockFileEntry
|
|
6694
|
+
}, options);
|
|
6677
6695
|
} catch (error) {
|
|
6678
6696
|
zipWriter.fileEntries.delete(name);
|
|
6679
6697
|
throw error;
|
|
6698
|
+
} finally {
|
|
6699
|
+
if (releaseLockFileEntry) {
|
|
6700
|
+
releaseLockFileEntry(previousFileEntry && previousFileEntry.lockFileEntry);
|
|
6701
|
+
}
|
|
6680
6702
|
}
|
|
6681
6703
|
Object.assign(fileEntry, {
|
|
6682
6704
|
name,
|
|
@@ -7062,27 +7084,23 @@
|
|
|
7062
7084
|
signal
|
|
7063
7085
|
} = options;
|
|
7064
7086
|
const {
|
|
7065
|
-
headerInfo
|
|
7087
|
+
headerInfo,
|
|
7088
|
+
fileEntry: pendingFileEntry,
|
|
7089
|
+
previousFileEntry,
|
|
7090
|
+
releaseLockFileEntry
|
|
7066
7091
|
} = entryInfo;
|
|
7067
7092
|
const usdz = zipWriter.options[OPTION_USDZ];
|
|
7068
|
-
|
|
7069
|
-
let fileEntry = {};
|
|
7093
|
+
let fileEntry = pendingFileEntry;
|
|
7070
7094
|
let bufferedWrite;
|
|
7071
7095
|
let releaseLockWriter;
|
|
7072
|
-
let releaseLockCurrentFileEntry;
|
|
7073
7096
|
let writingBufferedEntryData;
|
|
7074
7097
|
let writingEntryData;
|
|
7075
7098
|
let writerSizeBeforeEntry;
|
|
7076
7099
|
let flushedBufferedSize = 0;
|
|
7077
7100
|
let fileWriter;
|
|
7101
|
+
const lockPreviousFileEntry = keepOrder && previousFileEntry ? previousFileEntry.lockFileEntry : UNDEFINED_VALUE;
|
|
7078
7102
|
fileEntries.set(name, fileEntry);
|
|
7079
|
-
zipWriter.lastFileEntry = fileEntry;
|
|
7080
7103
|
try {
|
|
7081
|
-
let lockPreviousFileEntry;
|
|
7082
|
-
if (keepOrder) {
|
|
7083
|
-
lockPreviousFileEntry = previousFileEntry && previousFileEntry.lockFileEntry;
|
|
7084
|
-
requestLockCurrentFileEntry();
|
|
7085
|
-
}
|
|
7086
7104
|
if (options.bufferedWrite || !keepOrder || zipWriter.writerLocked || zipWriter.bufferedWrites || (!dataDescriptor && !emptyEntry)) {
|
|
7087
7105
|
bufferedWrite = true;
|
|
7088
7106
|
zipWriter.bufferedWrites++;
|
|
@@ -7095,6 +7113,7 @@
|
|
|
7095
7113
|
await initStream(writer);
|
|
7096
7114
|
} else {
|
|
7097
7115
|
fileWriter = writer;
|
|
7116
|
+
await lockPreviousFileEntry;
|
|
7098
7117
|
await requestLockWriter();
|
|
7099
7118
|
}
|
|
7100
7119
|
await initStream(fileWriter);
|
|
@@ -7107,7 +7126,6 @@
|
|
|
7107
7126
|
}
|
|
7108
7127
|
const { localHeaderArray } = headerInfo;
|
|
7109
7128
|
if (!bufferedWrite) {
|
|
7110
|
-
await lockPreviousFileEntry;
|
|
7111
7129
|
await skipDiskIfNeeded();
|
|
7112
7130
|
}
|
|
7113
7131
|
const diskNumberStart = getDiskNumber(writer);
|
|
@@ -7172,8 +7190,8 @@
|
|
|
7172
7190
|
if (bufferedWrite) {
|
|
7173
7191
|
zipWriter.bufferedWrites--;
|
|
7174
7192
|
}
|
|
7175
|
-
if (
|
|
7176
|
-
|
|
7193
|
+
if (releaseLockFileEntry) {
|
|
7194
|
+
releaseLockFileEntry(lockPreviousFileEntry);
|
|
7177
7195
|
}
|
|
7178
7196
|
if (releaseLockWriter) {
|
|
7179
7197
|
releaseLockWriter();
|
|
@@ -7187,10 +7205,6 @@
|
|
|
7187
7205
|
}
|
|
7188
7206
|
}
|
|
7189
7207
|
|
|
7190
|
-
function requestLockCurrentFileEntry() {
|
|
7191
|
-
fileEntry.lockFileEntry = new Promise(resolve => releaseLockCurrentFileEntry = resolve);
|
|
7192
|
-
}
|
|
7193
|
-
|
|
7194
7208
|
async function requestLockWriter() {
|
|
7195
7209
|
zipWriter.writerLocked = true;
|
|
7196
7210
|
const { lockWriter } = zipWriter;
|
|
@@ -7325,6 +7339,7 @@
|
|
|
7325
7339
|
const workerOptions = {
|
|
7326
7340
|
options: {
|
|
7327
7341
|
codecType: CODEC_DEFLATE,
|
|
7342
|
+
inputSize: size,
|
|
7328
7343
|
level,
|
|
7329
7344
|
rawPassword,
|
|
7330
7345
|
password,
|
|
@@ -8435,6 +8450,111 @@
|
|
|
8435
8450
|
*/
|
|
8436
8451
|
|
|
8437
8452
|
|
|
8453
|
+
function getSupportedCompressionMethods() {
|
|
8454
|
+
const { CompressionStream, DecompressionStream, CompressionStreamFallback, DecompressionStreamFallback } = getConfiguration();
|
|
8455
|
+
const supportedMethods = [{
|
|
8456
|
+
compressionMethod: COMPRESSION_METHOD_STORE,
|
|
8457
|
+
compression: true,
|
|
8458
|
+
decompression: true,
|
|
8459
|
+
registered: false
|
|
8460
|
+
}, {
|
|
8461
|
+
compressionMethod: COMPRESSION_METHOD_DEFLATE,
|
|
8462
|
+
compression: formatSupported(CompressionStreamFallback, FORMAT_DEFLATE_RAW) ||
|
|
8463
|
+
formatSupported(CompressionStream, FORMAT_DEFLATE_RAW) || formatSupported(CompressionStream, FORMAT_GZIP),
|
|
8464
|
+
decompression: formatSupported(DecompressionStreamFallback, FORMAT_DEFLATE_RAW) ||
|
|
8465
|
+
formatSupported(DecompressionStream, FORMAT_DEFLATE_RAW) || formatSupported(DecompressionStream, FORMAT_GZIP),
|
|
8466
|
+
registered: false
|
|
8467
|
+
}, {
|
|
8468
|
+
compressionMethod: COMPRESSION_METHOD_DEFLATE_64,
|
|
8469
|
+
compression: false,
|
|
8470
|
+
decompression: formatSupported(DecompressionStreamFallback, FORMAT_DEFLATE64_RAW) ||
|
|
8471
|
+
formatSupported(DecompressionStream, FORMAT_DEFLATE64_RAW),
|
|
8472
|
+
registered: false
|
|
8473
|
+
}];
|
|
8474
|
+
for (const codec of getRegisteredCodecs()) {
|
|
8475
|
+
const codecStreams = getCodecStreams(codec.format);
|
|
8476
|
+
supportedMethods.push({
|
|
8477
|
+
compressionMethod: codec.compressionMethod,
|
|
8478
|
+
// deno-lint-ignore valid-typeof
|
|
8479
|
+
compression: codecStreams ? typeof codecStreams.CompressionStream == FUNCTION_TYPE : UNDEFINED_VALUE,
|
|
8480
|
+
// deno-lint-ignore valid-typeof
|
|
8481
|
+
decompression: codecStreams ? typeof codecStreams.DecompressionStream == FUNCTION_TYPE : UNDEFINED_VALUE,
|
|
8482
|
+
registered: true
|
|
8483
|
+
});
|
|
8484
|
+
}
|
|
8485
|
+
return supportedMethods;
|
|
8486
|
+
}
|
|
8487
|
+
|
|
8488
|
+
function formatSupported(StreamClass, format) {
|
|
8489
|
+
if (!StreamClass) {
|
|
8490
|
+
return false;
|
|
8491
|
+
}
|
|
8492
|
+
const { supportedFormats } = StreamClass;
|
|
8493
|
+
if (supportedFormats) {
|
|
8494
|
+
return supportedFormats.includes(format);
|
|
8495
|
+
}
|
|
8496
|
+
return supportsFormat(StreamClass, format);
|
|
8497
|
+
}
|
|
8498
|
+
|
|
8499
|
+
/*
|
|
8500
|
+
Copyright (c) 2025 Gildas Lormeau. All rights reserved.
|
|
8501
|
+
|
|
8502
|
+
Redistribution and use in source and binary forms, with or without
|
|
8503
|
+
modification, are permitted provided that the following conditions are met:
|
|
8504
|
+
|
|
8505
|
+
1. Redistributions of source code must retain the above copyright notice,
|
|
8506
|
+
this list of conditions and the following disclaimer.
|
|
8507
|
+
|
|
8508
|
+
2. Redistributions in binary form must reproduce the above copyright
|
|
8509
|
+
notice, this list of conditions and the following disclaimer in
|
|
8510
|
+
the documentation and/or other materials provided with the distribution.
|
|
8511
|
+
|
|
8512
|
+
3. The names of the authors may not be used to endorse or promote products
|
|
8513
|
+
derived from this software without specific prior written permission.
|
|
8514
|
+
|
|
8515
|
+
THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
|
|
8516
|
+
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
|
8517
|
+
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,
|
|
8518
|
+
INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
8519
|
+
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
8520
|
+
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
|
|
8521
|
+
OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
8522
|
+
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
8523
|
+
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
|
8524
|
+
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
8525
|
+
*/
|
|
8526
|
+
|
|
8527
|
+
const VERSION = "2.8.61";
|
|
8528
|
+
|
|
8529
|
+
/*
|
|
8530
|
+
Copyright (c) 2025 Gildas Lormeau. All rights reserved.
|
|
8531
|
+
|
|
8532
|
+
Redistribution and use in source and binary forms, with or without
|
|
8533
|
+
modification, are permitted provided that the following conditions are met:
|
|
8534
|
+
|
|
8535
|
+
1. Redistributions of source code must retain the above copyright notice,
|
|
8536
|
+
this list of conditions and the following disclaimer.
|
|
8537
|
+
|
|
8538
|
+
2. Redistributions in binary form must reproduce the above copyright
|
|
8539
|
+
notice, this list of conditions and the following disclaimer in
|
|
8540
|
+
the documentation and/or other materials provided with the distribution.
|
|
8541
|
+
|
|
8542
|
+
3. The names of the authors may not be used to endorse or promote products
|
|
8543
|
+
derived from this software without specific prior written permission.
|
|
8544
|
+
|
|
8545
|
+
THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
|
|
8546
|
+
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
|
8547
|
+
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,
|
|
8548
|
+
INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
8549
|
+
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
8550
|
+
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
|
|
8551
|
+
OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
8552
|
+
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
8553
|
+
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
|
8554
|
+
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
8555
|
+
*/
|
|
8556
|
+
|
|
8557
|
+
|
|
8438
8558
|
const DEFAULT_THRESHOLD$2 = 1024 * 1024;
|
|
8439
8559
|
const DEFAULT_DIRECTORY_NAME$1 = ".zip.js-temp";
|
|
8440
8560
|
|
|
@@ -8882,7 +9002,7 @@
|
|
|
8882
9002
|
*/
|
|
8883
9003
|
|
|
8884
9004
|
|
|
8885
|
-
|
|
9005
|
+
s(setDefaultConfiguration);
|
|
8886
9006
|
|
|
8887
9007
|
exports.BlobReader = BlobReader;
|
|
8888
9008
|
exports.BlobWriter = BlobWriter;
|
|
@@ -8966,6 +9086,7 @@
|
|
|
8966
9086
|
exports.TextWriter = TextWriter;
|
|
8967
9087
|
exports.Uint8ArrayReader = Uint8ArrayReader;
|
|
8968
9088
|
exports.Uint8ArrayWriter = Uint8ArrayWriter;
|
|
9089
|
+
exports.VERSION = VERSION;
|
|
8969
9090
|
exports.WARNING_APPENDED_DATA = WARNING_APPENDED_DATA;
|
|
8970
9091
|
exports.WARNING_COMPRESSED_PATCHED_DATA = WARNING_COMPRESSED_PATCHED_DATA;
|
|
8971
9092
|
exports.WARNING_DUPLICATE_FILENAME = WARNING_DUPLICATE_FILENAME;
|
|
@@ -8990,6 +9111,8 @@
|
|
|
8990
9111
|
exports.createOPFSTempStream = createOPFSTempStream;
|
|
8991
9112
|
exports.createSyncAccessHandleTempStream = createSyncAccessHandleTempStream;
|
|
8992
9113
|
exports.getMimeType = getMimeType;
|
|
9114
|
+
exports.getRegisteredCodecs = getRegisteredCodecs;
|
|
9115
|
+
exports.getSupportedCompressionMethods = getSupportedCompressionMethods;
|
|
8993
9116
|
exports.isZipFile = isZipFile;
|
|
8994
9117
|
exports.registerCodec = registerCodec;
|
|
8995
9118
|
exports.resetConfiguration = resetConfiguration;
|