unzipit 1.3.2 → 1.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -25,7 +25,7 @@ async function readFiles(url) {
25
25
  const {entries} = await unzip(url);
26
26
 
27
27
  // print all entries and their sizes
28
- for (const [name, entry] in Object.entries(entries)) {
28
+ for (const [name, entry] of Object.entries(entries)) {
29
29
  console.log(name, entry.size);
30
30
  }
31
31
 
@@ -255,10 +255,28 @@ Advantages over other libraries.
255
255
  you still have to manually go through all the entries even if
256
256
  you don't choose to read their contents. Further it's node only.
257
257
 
258
- This library does not require all content to be in memory. If you use a Blob
259
- the browser can effectively virtualize access so it doesn't have to be in memory.
260
- Only the entries you access use memory. As well, if you only need the data
261
- for images or video or audio then you can do things like
258
+ * fflate has 2 modes. One the entire contents of all
259
+ uncompressed files are provided therefore using lots
260
+ of memory. The other is like Yauzl where you're required
261
+ to handle every file but you can choose to ignore
262
+ certain ones. Further in this mode (maybe both modes) are
263
+ not standards compliant. It scans for files but that is not
264
+ a valid way to read a zip file. The only valid way to read a zip file
265
+ is to jump to the end of the file and find the table of
266
+ contents. So, fflate will fail on perfectly valid zip files.
267
+
268
+ Unzipit does not require all compressed content nor all uncompressed
269
+ content to be in memory. Only the entries you access use memory.
270
+ If you use a Blob as input the browser can effectively virtualize
271
+ access so it doesn't have to be in memory and unzipit will only
272
+ access the parts of the blob needed to read the content you request.
273
+
274
+ Further, if you use the `HTTPRangeReader` or similar, unzipit only
275
+ downloads/reads the parts of the zip file you actually use, saving you
276
+ bandwidth.
277
+
278
+ As well, if you only need the data for images or video or audio then you can do
279
+ things like
262
280
 
263
281
  ```js
264
282
  const {entries} = await unzip(url);
@@ -1,4 +1,4 @@
1
- /* unzipit@1.3.2, license MIT */
1
+ /* unzipit@1.3.6, license MIT */
2
2
  (function (factory) {
3
3
  typeof define === 'function' && define.amd ? define(factory) :
4
4
  factory();
@@ -1,12 +1,12 @@
1
- /* unzipit@1.3.2, license MIT */
2
- 'use strict';(function(w){"function"===typeof define&&define.amd?define(w):w()})(function(){function w(a,b){var c=a.length;if(b<=c)return a;b=new Uint8Array(Math.max(c<<1,b));b.set(a,0);return b}function aa(a,b,c,k){for(var e=0,d=0,m=k.length>>>1;d<c;){var p=a[d+b];k[d<<1]=0;k[(d<<1)+1]=p;p>e&&(e=p);d++}for(;d<m;)k[d<<1]=0,k[(d<<1)+1]=0,d++;return e}function z(a,b){var e=a.length,k,g;var d=c.bl_count;for(g=0;g<=b;g++)d[g]=0;for(g=1;g<e;g+=2)d[a[g]]++;g=c.next_code;var m=0;d[0]=0;for(k=1;k<=b;k++)m=
3
- m+d[k-1]<<1,g[k]=m;for(b=0;b<e;b+=2)d=a[b+1],0!=d&&(a[b]=g[d],g[d]++)}function A(a,b,e){for(var k=a.length,g=c.rev15,d=0;d<k;d+=2)if(0!=a[d+1]){var m=a[d+1],p=d>>1<<4|m,t=b-m;m=a[d]<<t;for(t=m+(1<<t);m!=t;)e[g[m]>>>15-b]=p,m++}}function C(a,b){for(var e=c.rev15,k=15-b,g=0;g<a.length;g+=2)a[g]=e[a[g]<<b-a[g+1]]>>>k}function x(a,b,c){return(a[b>>>3]|a[(b>>>3)+1]<<8)>>>(b&7)&(1<<c)-1}function N(a,b,c){return(a[b>>>3]|a[(b>>>3)+1]<<8|a[(b>>>3)+2]<<16)>>>(b&7)&(1<<c)-1}function O(a,b){return(a[b>>>3]|
4
- a[(b>>>3)+1]<<8|a[(b>>>3)+2]<<16)>>>(b&7)}function ea(a){return a.arrayBuffer?a.arrayBuffer():new Promise((b,c)=>{const e=new FileReader;e.addEventListener("loadend",()=>{b(e.result)});e.addEventListener("error",c);e.readAsArrayBuffer(a)})}async function fa(a){a=await ea(a);return new Uint8Array(a)}const c=function(){var a=Uint16Array,b=Uint32Array;return{next_code:new a(16),bl_count:new a(16),ordr:[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],of0:[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,
1
+ /* unzipit@1.3.6, license MIT */
2
+ 'use strict';(function(w){"function"===typeof define&&define.amd?define(w):w()})(function(){function w(a,b){var e=a.length;if(b<=e)return a;b=new Uint8Array(Math.max(e<<1,b));b.set(a,0);return b}function X(a,b,e,g){for(var f=0,c=0,m=g.length>>>1;c<e;){var p=a[c+b];g[c<<1]=0;g[(c<<1)+1]=p;p>f&&(f=p);c++}for(;c<m;)g[c<<1]=0,g[(c<<1)+1]=0,c++;return f}function z(a,b){var e=a.length,g,f;var c=d.bl_count;for(f=0;f<=b;f++)c[f]=0;for(f=1;f<e;f+=2)c[a[f]]++;f=d.next_code;var m=0;c[0]=0;for(g=1;g<=b;g++)m=
3
+ m+c[g-1]<<1,f[g]=m;for(b=0;b<e;b+=2)c=a[b+1],0!=c&&(a[b]=f[c],f[c]++)}function A(a,b,e){for(var g=a.length,f=d.rev15,c=0;c<g;c+=2)if(0!=a[c+1]){var m=a[c+1],p=c>>1<<4|m,t=b-m;m=a[c]<<t;for(t=m+(1<<t);m!=t;)e[f[m]>>>15-b]=p,m++}}function Y(a,b){for(var e=d.rev15,g=15-b,f=0;f<a.length;f+=2)a[f]=e[a[f]<<b-a[f+1]]>>>g}function x(a,b,e){return(a[b>>>3]|a[(b>>>3)+1]<<8)>>>(b&7)&(1<<e)-1}function K(a,b,e){return(a[b>>>3]|a[(b>>>3)+1]<<8|a[(b>>>3)+2]<<16)>>>(b&7)&(1<<e)-1}function L(a,b){return(a[b>>>3]|
4
+ a[(b>>>3)+1]<<8|a[(b>>>3)+2]<<16)>>>(b&7)}function fa(a){return a.arrayBuffer?a.arrayBuffer():new Promise((b,e)=>{const g=new FileReader;g.addEventListener("loadend",()=>{b(g.result)});g.addEventListener("error",e);g.readAsArrayBuffer(a)})}async function ha(a){a=await fa(a);return new Uint8Array(a)}const d=function(){var a=Uint16Array,b=Uint32Array;return{next_code:new a(16),bl_count:new a(16),ordr:[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],of0:[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,
5
5
  51,59,67,83,99,115,131,163,195,227,258,999,999,999],exb:[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,0,0,0],ldef:new a(32),df0:[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,65535,65535],dxb:[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,0,0],ddef:new b(32),flmap:new a(512),fltree:[],fdmap:new a(32),fdtree:[],lmap:new a(32768),ltree:[],ttree:[],dmap:new a(32768),dtree:[],imap:new a(512),itree:[],
6
- rev15:new a(32768),lhst:new b(286),dhst:new b(30),ihst:new b(19),lits:new b(15E3),strt:new a(65536),prev:new a(32768)}}();(function(){function a(a,b,c){for(;0!=b--;)a.push(0,c)}for(var b=0;32768>b;b++){var e=b;e=(e&2863311530)>>>1|(e&1431655765)<<1;e=(e&3435973836)>>>2|(e&858993459)<<2;e=(e&4042322160)>>>4|(e&252645135)<<4;e=(e&4278255360)>>>8|(e&16711935)<<8;c.rev15[b]=(e>>>16|e<<16)>>>17}for(b=0;32>b;b++)c.ldef[b]=c.of0[b]<<3|c.exb[b],c.ddef[b]=c.df0[b]<<4|c.dxb[b];a(c.fltree,144,8);a(c.fltree,
7
- 112,9);a(c.fltree,24,7);a(c.fltree,8,8);z(c.fltree,9);A(c.fltree,9,c.flmap);C(c.fltree,9);a(c.fdtree,32,5);z(c.fdtree,5);A(c.fdtree,5,c.fdmap);C(c.fdtree,5);a(c.itree,19,0);a(c.ltree,286,0);a(c.dtree,30,0);a(c.ttree,320,0)})();const D={table:function(){for(var a=new Uint32Array(256),b=0;256>b;b++){for(var c=b,k=0;8>k;k++)c=c&1?3988292384^c>>>1:c>>>1;a[b]=c}return a}(),update:function(a,b,c,k){for(var e=0;e<k;e++)a=D.table[(a^b[c+e])&255]^a>>>8;return a},crc:function(a,b,c){return D.update(4294967295,
8
- a,b,c)^4294967295}},B="undefined"!==typeof process&&process.versions&&"undefined"!==typeof process.versions.node&&"undefined"===typeof process.versions.electron,E=function(){if(B){const {parentPort:a}=require("worker_threads");return{postMessage:a.postMessage.bind(a),addEventListener:a.on.bind(a)}}return{postMessage:self.postMessage.bind(self),addEventListener(a,b){self.addEventListener(a,a=>{b(a.data)})}}}(),ha={inflate:async function(a){const {id:b,src:e,uncompressedSize:k,type:g}=a;try{var d="undefined"!==
9
- typeof Blob&&e instanceof Blob?await fa(e):new Uint8Array(e);const y=new Uint8Array(k);a=d;d=y;var m=Uint8Array;if(3==a[0]&&0==a[1])d||new m(0);else{var p=null==d;p&&(d=new m(a.length>>>2<<3));for(var t=0,u,F,P,Q,R=0,S=0,l=0,f=0,G,H;0==t;)if(t=N(a,f,1),u=N(a,f+1,2),f+=3,0==u){0!=(f&7)&&(f+=8-(f&7));var h=(f>>>3)+4,I=a[h-4]|a[h-3]<<8;p&&(d=w(d,l+I));d.set(new m(a.buffer,a.byteOffset+h,I),l);f=h+I<<3;l+=I}else{p&&(d=w(d,l+131072));1==u&&(G=c.flmap,H=c.fdmap,R=511,S=31);if(2==u){F=x(a,f,5)+257;P=x(a,
10
- f+5,5)+1;Q=x(a,f+10,4)+4;f+=14;for(h=0;38>h;h+=2)c.itree[h]=0,c.itree[h+1]=0;var n=1;for(h=0;h<Q;h++){var T=x(a,f+3*h,3);c.itree[(c.ordr[h]<<1)+1]=T;T>n&&(n=T)}f+=3*Q;z(c.itree,n);A(c.itree,n,c.imap);G=c.lmap;H=c.dmap;var C=c.imap;h=(1<<n)-1;n=F+P;for(var J=a,q=f,U=c.ttree,V=x,D=O,r=0;r<n;){var B=C[D(J,q)&h];q+=B&15;var v=B>>>4;if(15>=v)U[r]=v,r++;else{var ba=0,K=0;16==v?(K=3+V(J,q,2),q+=2,ba=U[r-1]):17==v?(K=3+V(J,q,3),q+=3):18==v&&(K=11+V(J,q,7),q+=7);for(v=r+K;r<v;)U[r]=ba,r++}}f=q;var W=aa(c.ttree,
11
- 0,F,c.ltree);R=(1<<W)-1;var X=aa(c.ttree,F,P,c.dtree);S=(1<<X)-1;z(c.ltree,W);A(c.ltree,W,G);z(c.dtree,X);A(c.dtree,X,H)}for(;;){var ca=G[O(a,f)&R];f+=ca&15;h=ca>>>4;if(0==h>>>8)d[l++]=h;else if(256==h)break;else{n=l+h-254;if(264<h){var Y=c.ldef[h-257];n=l+(Y>>>3)+x(a,f,Y&7);f+=Y&7}var da=H[O(a,f)&S];f+=da&15;var Z=c.ddef[da>>>4],L=(Z>>>4)+N(a,f,Z&15);f+=Z&15;for(p&&(d=w(d,l+131072));l<n;)d[l]=d[l++-L],d[l]=d[l++-L],d[l]=d[l++-L],d[l]=d[l++-L];l=n}}}d.length==l||d.slice(0,l)}u=[];let M;g?M=new Blob([y],
12
- {type:g}):(M=y.buffer,u.push(M));E.postMessage({id:b,data:M},u)}catch(y){console.error(y),E.postMessage({id:b,error:`${y.toString()}`})}}};E.addEventListener("message",function(a){const {type:b,data:c}=a;a=ha[b];if(!a)throw Error("no handler for type: "+b);a(c)});B||E.postMessage("start")});
6
+ rev15:new a(32768),lhst:new b(286),dhst:new b(30),ihst:new b(19),lits:new b(15E3),strt:new a(65536),prev:new a(32768)}}();(function(){function a(g,f,c){for(;0!=f--;)g.push(0,c)}for(var b=0;32768>b;b++){var e=b;e=(e&2863311530)>>>1|(e&1431655765)<<1;e=(e&3435973836)>>>2|(e&858993459)<<2;e=(e&4042322160)>>>4|(e&252645135)<<4;e=(e&4278255360)>>>8|(e&16711935)<<8;d.rev15[b]=(e>>>16|e<<16)>>>17}for(b=0;32>b;b++)d.ldef[b]=d.of0[b]<<3|d.exb[b],d.ddef[b]=d.df0[b]<<4|d.dxb[b];a(d.fltree,144,8);a(d.fltree,
7
+ 112,9);a(d.fltree,24,7);a(d.fltree,8,8);z(d.fltree,9);A(d.fltree,9,d.flmap);Y(d.fltree,9);a(d.fdtree,32,5);z(d.fdtree,5);A(d.fdtree,5,d.fdmap);Y(d.fdtree,5);a(d.itree,19,0);a(d.ltree,286,0);a(d.dtree,30,0);a(d.ttree,320,0)})();const Z={table:function(){for(var a=new Uint32Array(256),b=0;256>b;b++){for(var e=b,g=0;8>g;g++)e=e&1?3988292384^e>>>1:e>>>1;a[b]=e}return a}(),update:function(a,b,e,g){for(var f=0;f<g;f++)a=Z.table[(a^b[e+f])&255]^a>>>8;return a},crc:function(a,b,e){return Z.update(4294967295,
8
+ a,b,e)^4294967295}},aa="undefined"!==typeof process&&process.versions&&"undefined"!==typeof process.versions.node&&"undefined"===typeof process.versions.electron,B=function(){if(aa){const {parentPort:a}=require("worker_threads");return{postMessage:a.postMessage.bind(a),addEventListener:a.on.bind(a)}}return{postMessage:self.postMessage.bind(self),addEventListener(a,b){self.addEventListener(a,e=>{b(e.data)})}}}(),ka={inflate:async function(a){const {id:b,src:e,uncompressedSize:g,type:f}=a;try{var c=
9
+ "undefined"!==typeof Blob&&e instanceof Blob?await ha(e):new Uint8Array(e);const y=new Uint8Array(g);a=c;c=y;var m=Uint8Array;if(3==a[0]&&0==a[1])c||new m(0);else{var p=null==c;p&&(c=new m(a.length>>>2<<3));for(var t=0,u,C,M,N,O=0,P=0,l=0,h=0,D,E;0==t;)if(t=K(a,h,1),u=K(a,h+1,2),h+=3,0==u){0!=(h&7)&&(h+=8-(h&7));var k=(h>>>3)+4,F=a[k-4]|a[k-3]<<8;p&&(c=w(c,l+F));c.set(new m(a.buffer,a.byteOffset+k,F),l);h=k+F<<3;l+=F}else{p&&(c=w(c,l+131072));1==u&&(D=d.flmap,E=d.fdmap,O=511,P=31);if(2==u){C=x(a,
10
+ h,5)+257;M=x(a,h+5,5)+1;N=x(a,h+10,4)+4;h+=14;for(k=0;38>k;k+=2)d.itree[k]=0,d.itree[k+1]=0;var n=1;for(k=0;k<N;k++){var Q=x(a,h+3*k,3);d.itree[(d.ordr[k]<<1)+1]=Q;Q>n&&(n=Q)}h+=3*N;z(d.itree,n);A(d.itree,n,d.imap);D=d.lmap;E=d.dmap;var ia=d.imap;k=(1<<n)-1;n=C+M;for(var G=a,q=h,R=d.ttree,S=x,ja=L,r=0;r<n;){var ba=ia[ja(G,q)&k];q+=ba&15;var v=ba>>>4;if(15>=v)R[r]=v,r++;else{var ca=0,H=0;16==v?(H=3+S(G,q,2),q+=2,ca=R[r-1]):17==v?(H=3+S(G,q,3),q+=3):18==v&&(H=11+S(G,q,7),q+=7);for(v=r+H;r<v;)R[r]=ca,
11
+ r++}}h=q;var T=X(d.ttree,0,C,d.ltree);O=(1<<T)-1;var U=X(d.ttree,C,M,d.dtree);P=(1<<U)-1;z(d.ltree,T);A(d.ltree,T,D);z(d.dtree,U);A(d.dtree,U,E)}for(;;){var da=D[L(a,h)&O];h+=da&15;k=da>>>4;if(0==k>>>8)c[l++]=k;else if(256==k)break;else{n=l+k-254;if(264<k){var V=d.ldef[k-257];n=l+(V>>>3)+x(a,h,V&7);h+=V&7}var ea=E[L(a,h)&P];h+=ea&15;var W=d.ddef[ea>>>4],I=(W>>>4)+K(a,h,W&15);h+=W&15;for(p&&(c=w(c,l+131072));l<n;)c[l]=c[l++-I],c[l]=c[l++-I],c[l]=c[l++-I],c[l]=c[l++-I];l=n}}}c.length==l||c.slice(0,
12
+ l)}u=[];let J;f?J=new Blob([y],{type:f}):(J=y.buffer,u.push(J));B.postMessage({id:b,data:J},u)}catch(y){console.error(y),B.postMessage({id:b,error:`${y.toString()}`})}}};B.addEventListener("message",function(a){const {type:b,data:e}=a;a=ka[b];if(!a)throw Error("no handler for type: "+b);a(e)});aa||B.postMessage("start")});
@@ -1,4 +1,4 @@
1
- /* unzipit@1.3.2, license MIT */
1
+ /* unzipit@1.3.6, license MIT */
2
2
  function inflate(data, buf) {
3
3
  var u8=Uint8Array;
4
4
  if(data[0]==3 && data[1]==0) return (buf ? buf : new u8(0));
package/dist/unzipit.d.ts CHANGED
@@ -5,7 +5,7 @@ export type ZipInfo = {
5
5
 
6
6
  export type ZipInfoRaw = {
7
7
  zip: Zip,
8
- entries: [ZipEntry],
8
+ entries: ZipEntry[],
9
9
  };
10
10
 
11
11
  export type Zip = {
package/dist/unzipit.js CHANGED
@@ -1,8 +1,8 @@
1
- /* unzipit@1.3.2, license MIT */
1
+ /* unzipit@1.3.6, license MIT */
2
2
  (function (global, factory) {
3
3
  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
4
4
  typeof define === 'function' && define.amd ? define(['exports'], factory) :
5
- (global = global || self, factory(global.unzipit = {}));
5
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.unzipit = {}));
6
6
  }(this, (function (exports) { 'use strict';
7
7
 
8
8
  /* global SharedArrayBuffer, process */
@@ -719,6 +719,7 @@
719
719
  const EOCDR_WITHOUT_COMMENT_SIZE = 22;
720
720
  const MAX_COMMENT_SIZE = 0xffff; // 2-byte size
721
721
  const EOCDR_SIGNATURE = 0x06054b50;
722
+ const ZIP64_EOCDR_SIGNATURE = 0x06064b50;
722
723
 
723
724
  async function readAs(reader, offset, length) {
724
725
  return await reader.read(offset, length);
@@ -864,10 +865,10 @@
864
865
  // 16 - total number of disks
865
866
 
866
867
  // ZIP64 end of central directory record
867
- const zip64Eocdr = readAs(reader, zip64EocdrOffset, 56);
868
+ const zip64Eocdr = await readAs(reader, zip64EocdrOffset, 56);
868
869
 
869
870
  // 0 - zip64 end of central dir signature 4 bytes (0x06064b50)
870
- if (getUint32LE(zip64Eocdr, 0) !== EOCDR_SIGNATURE) {
871
+ if (getUint32LE(zip64Eocdr, 0) !== ZIP64_EOCDR_SIGNATURE) {
871
872
  throw new Error('invalid zip64 end of central directory record signature');
872
873
  }
873
874
  // 4 - size of zip64 end of central directory record 8 bytes
@@ -1,31 +1,31 @@
1
- /* unzipit@1.3.2, license MIT */
2
- 'use strict';(function(v,B){"object"===typeof exports&&"undefined"!==typeof module?B(exports):"function"===typeof define&&define.amd?define(["exports"],B):(v=v||self,B(v.unzipit={}))})(this,function(v){function B(a){return a.arrayBuffer?a.arrayBuffer():new Promise((b,c)=>{const e=new FileReader;e.addEventListener("loadend",()=>{b(e.result)});e.addEventListener("error",c);e.readAsArrayBuffer(a)})}async function ea(a){a=await B(a);return new Uint8Array(a)}function R(a){return"undefined"!==typeof Blob&&
3
- a instanceof Blob}function D(a){return"undefined"!==typeof SharedArrayBuffer&&a instanceof SharedArrayBuffer}function L(a,b){var c=a.length;if(b<=c)return a;b=new Uint8Array(Math.max(c<<1,b));b.set(a,0);return b}function fa(a,b,c,e,d,f){for(var k=S,g=T,h=0;h<c;){var n=a[g(e,d)&b];d+=n&15;var l=n>>>4;if(15>=l)f[h]=l,h++;else{var t=n=0;16==l?(t=3+k(e,d,2),d+=2,n=f[h-1]):17==l?(t=3+k(e,d,3),d+=3):18==l&&(t=11+k(e,d,7),d+=7);for(l=h+t;h<l;)f[h]=n,h++}}return d}function U(a,b,c,e){for(var d=0,f=0,k=e.length>>>
4
- 1;f<c;){var g=a[f+b];e[f<<1]=0;e[(f<<1)+1]=g;g>d&&(d=g);f++}for(;f<k;)e[f<<1]=0,e[(f<<1)+1]=0,f++;return d}function E(a,b){var c=a.length,e,d;var h=f.bl_count;for(d=0;d<=b;d++)h[d]=0;for(d=1;d<c;d+=2)h[a[d]]++;d=f.next_code;var k=0;h[0]=0;for(e=1;e<=b;e++)k=k+h[e-1]<<1,d[e]=k;for(b=0;b<c;b+=2)h=a[b+1],0!=h&&(a[b]=d[h],d[h]++)}function F(a,b,c){for(var e=a.length,d=f.rev15,h=0;h<e;h+=2)if(0!=a[h+1]){var k=a[h+1],g=h>>1<<4|k,z=b-k;k=a[h]<<z;for(z=k+(1<<z);k!=z;)c[d[k]>>>15-b]=g,k++}}function V(a,b){for(var c=
5
- f.rev15,e=15-b,d=0;d<a.length;d+=2)a[d]=c[a[d]<<b-a[d+1]]>>>e}function S(a,b,c){return(a[b>>>3]|a[(b>>>3)+1]<<8)>>>(b&7)&(1<<c)-1}function ia(a,b,c){return(a[b>>>3]|a[(b>>>3)+1]<<8|a[(b>>>3)+2]<<16)>>>(b&7)&(1<<c)-1}function T(a,b){return(a[b>>>3]|a[(b>>>3)+1]<<8|a[(b>>>3)+2]<<16)>>>(b&7)}function ja(a){x.push(a.target);M();const {id:b,error:c,data:e}=a.data;a=H.get(b);H.delete(b);c?a.reject(c):a.resolve(e)}function N(a){return new Promise((b,c)=>{const e=new Worker(a);e.onmessage=a=>{"start"===a.data?
6
- (e.onerror=void 0,e.onmessage=void 0,b(e)):c(Error(`unexpected message: ${a.data}`))};e.onerror=c})}async function ka(){if(0===x.length&&O<r.numWorkers){++O;try{const a=await P.createWorker(r.workerURL);I.push(a);x.push(a);P.addEventListener(a,ja)}catch(a){J=!1}}return x.pop()}async function M(){if(0!==A.length){if(r.useWorkers&&J){var a=await ka();if(J){if(a){if(0===A.length){x.push(a);M();return}const {id:b,src:c,uncompressedSize:e,type:d,resolve:g,reject:f}=A.shift();H.set(b,{id:b,resolve:g,reject:f});
7
- a.postMessage({type:"inflate",data:{id:b,type:d,src:c,uncompressedSize:e}},[])}return}}for(;A.length;){const {src:n,uncompressedSize:r,type:ha,resolve:x}=A.shift();a=n;R(n)&&(a=await ea(n));{var b=a;a=ha;var c=x;const n=new Uint8Array(r);var e=void 0,d=void 0,h,k=n,g=Uint8Array;if(3==b[0]&&0==b[1])k||new g(0);else{var z=ia,l=S,t=fa,v=T,K=null==k;K&&(k=new g(b.length>>>2<<3));for(var W=0,y=0,u=h=0,m=0;0==W;){W=z(b,m,1);var q=z(b,m+1,2);m+=3;if(0==q)0!=(m&7)&&(m+=8-(m&7)),m=(m>>>3)+4,q=b[m-4]|b[m-3]<<
8
- 8,K&&(k=L(k,u+q)),k.set(new g(b.buffer,b.byteOffset+m,q),u),m=m+q<<3,u+=q;else{K&&(k=L(k,u+131072));1==q&&(d=f.flmap,e=f.fdmap,y=511,h=31);if(2==q){q=l(b,m,5)+257;h=l(b,m+5,5)+1;e=l(b,m+10,4)+4;m+=14;for(d=0;38>d;d+=2)f.itree[d]=0,f.itree[d+1]=0;y=1;for(d=0;d<e;d++){var p=l(b,m+3*d,3);f.itree[(f.ordr[d]<<1)+1]=p;p>y&&(y=p)}m+=3*e;E(f.itree,y);F(f.itree,y,f.imap);d=f.lmap;e=f.dmap;m=t(f.imap,(1<<y)-1,q+h,b,m,f.ttree);p=U(f.ttree,0,q,f.ltree);y=(1<<p)-1;q=U(f.ttree,q,h,f.dtree);h=(1<<q)-1;E(f.ltree,
9
- p);F(f.ltree,p,d);E(f.dtree,q);F(f.dtree,q,e)}for(;;)if(q=d[v(b,m)&y],m+=q&15,p=q>>>4,0==p>>>8)k[u++]=p;else if(256==p)break;else{q=u+p-254;264<p&&(p=f.ldef[p-257],q=u+(p>>>3)+l(b,m,p&7),m+=p&7);p=e[v(b,m)&h];m+=p&15;p=f.ddef[p>>>4];var w=(p>>>4)+z(b,m,p&15);m+=p&15;for(K&&(k=L(k,u+131072));u<q;)k[u]=k[u++-w],k[u]=k[u++-w],k[u]=k[u++-w],k[u]=k[u++-w];u=q}}}k.length==u||k.slice(0,u)}c(a?new Blob([n],{type:a}):n.buffer)}}}}function X(a,b,c){return new Promise((e,d)=>{A.push({src:a,uncompressedSize:b,
10
- type:c,resolve:e,reject:d,id:la++});M()})}async function ma(){for(const a of I)await P.terminate(a);I.splice(0,I.length);x.splice(0,x.length);A.splice(0,A.length);H.clear();O=0;J=!0}async function C(a,b,c){return await a.read(b,c)}async function Q(a,b,c,e){return a.sliceAsBlob?await a.sliceAsBlob(b,c,e):await a.read(b,c)}function l(a,b){return a[b]+256*a[b+1]}function t(a,b){return a[b]+256*a[b+1]+65536*a[b+2]+16777216*a[b+3]}function w(a,b){return t(a,b)+4294967296*t(a,b+4)}function G(a,b){D(a.buffer)&&
11
- (a=new Uint8Array(a));return na.decode(a)}async function oa(a,b){var c=Math.min(65557,b);b-=c;var e=await C(a,b,c);for(c-=22;0<=c;--c){if(101010256!==t(e,c))continue;var d=new Uint8Array(e.buffer,e.byteOffset+c,e.byteLength-c);e=l(d,4);if(0!==e)throw Error(`multi-volume zip files are not supported. This is volume: ${e}`);e=l(d,10);const k=t(d,12),g=t(d,16);var f=l(d,20);const h=d.length-22;if(f!==h)throw Error(`invalid comment length. expected: ${h}, actual: ${f}`);d=new Uint8Array(d.buffer,d.byteOffset+
12
- 22,f);f=G(d);return 65535===e||4294967295===g?await pa(a,b+c,f,d):await Y(a,g,k,e,f,d)}throw Error("could not find end of central directory. maybe not zip file");}async function pa(a,b,c,e){b=await C(a,b-20,20);if(117853008!==t(b,0))throw Error("invalid zip64 end of central directory locator signature");b=w(b,8);var d=C(a,b,56);if(101010256!==t(d,0))throw Error("invalid zip64 end of central directory record signature");b=w(d,32);const f=w(d,40);d=w(d,48);return Y(a,d,f,b,c,e)}async function Y(a,b,
13
- c,e,d,f){let k=0;b=await C(a,b,c);c=[];for(let a=0;a<e;++a){var g=b.subarray(k,k+46),h=t(g,0);if(33639248!==h)throw Error(`invalid central directory file header signature: 0x${h.toString(16)}`);g={versionMadeBy:l(g,4),versionNeededToExtract:l(g,6),generalPurposeBitFlag:l(g,8),compressionMethod:l(g,10),lastModFileTime:l(g,12),lastModFileDate:l(g,14),crc32:t(g,16),compressedSize:t(g,20),uncompressedSize:t(g,24),fileNameLength:l(g,28),extraFieldLength:l(g,30),fileCommentLength:l(g,32),internalFileAttributes:l(g,
14
- 36),externalFileAttributes:t(g,38),relativeOffsetOfLocalHeader:t(g,42)};if(g.generalPurposeBitFlag&64)throw Error("strong encryption is not supported");k+=46;h=b.subarray(k,k+g.fileNameLength+g.extraFieldLength+g.fileCommentLength);g.nameBytes=h.slice(0,g.fileNameLength);g.name=G(g.nameBytes);var n=g.fileNameLength+g.extraFieldLength;const a=h.slice(g.fileNameLength,n);g.extraFields=[];for(var r=0;r<a.length-3;){const b=l(a,r+0);var v=l(a,r+2);r+=4;v=r+v;if(v>a.length)throw Error("extra field length exceeds extra field buffer size");
15
- g.extraFields.push({id:b,data:a.slice(r,v)});r=v}g.commentBytes=h.slice(n,n+g.fileCommentLength);g.comment=G(g.commentBytes);k+=h.length;if(4294967295===g.uncompressedSize||4294967295===g.compressedSize||4294967295===g.relativeOffsetOfLocalHeader){h=g.extraFields.find(a=>1===a.id);if(!h)return Error("expected zip64 extended information extra field");h=h.data;n=0;if(4294967295===g.uncompressedSize){if(n+8>h.length)throw Error("zip64 extended information extra field does not include uncompressed size");
16
- g.uncompressedSize=w(h,n);n+=8}if(4294967295===g.compressedSize){if(n+8>h.length)throw Error("zip64 extended information extra field does not include compressed size");g.compressedSize=w(h,n);n+=8}if(4294967295===g.relativeOffsetOfLocalHeader){if(n+8>h.length)throw Error("zip64 extended information extra field does not include relative header offset");g.relativeOffsetOfLocalHeader=w(h,n);n+=8}}if(h=g.extraFields.find(a=>28789===a.id&&6<=a.data.length&&1===a.data[0]&&t(a.data,1),qa.unsigned(g.nameBytes)))g.fileName=
17
- G(h.data.slice(5));if(0===g.compressionMethod&&(h=g.uncompressedSize,0!==(g.generalPurposeBitFlag&1)&&(h+=12),g.compressedSize!==h))throw Error(`compressed size mismatch for stored file: ${g.compressedSize} != ${h}`);c.push(g)}return{zip:{comment:d,commentBytes:f},entries:c.map(b=>new ra(a,b))}}async function Z(a,b){if(b.generalPurposeBitFlag&1)throw Error("encrypted entries not supported");var c=await C(a,b.relativeOffsetOfLocalHeader,30);a=await a.getLength();var e=t(c,0);if(67324752!==e)throw Error(`invalid local file header signature: 0x${e.toString(16)}`);
18
- e=l(c,26);var d=l(c,28);c=b.relativeOffsetOfLocalHeader+c.length+e+d;if(0===b.compressionMethod)e=!1;else if(8===b.compressionMethod)e=!0;else throw Error(`unsupported compression method: ${b.compressionMethod}`);d=c+b.compressedSize;if(0!==b.compressedSize&&d>a)throw Error(`file data overflows file bounds: ${c} + ${b.compressedSize} > ${a}`);return{decompress:e,fileDataStart:c}}async function sa(a,b){const {decompress:c,fileDataStart:e}=await Z(a,b);if(!c)return b=await C(a,e,b.compressedSize),
19
- 0===b.byteOffset&&b.byteLength===b.buffer.byteLength?b.buffer:b.slice().buffer;a=await Q(a,e,b.compressedSize);return await X(a,b.uncompressedSize)}async function ta(a,b,c){const {decompress:e,fileDataStart:d}=await Z(a,b);if(!e)return b=await Q(a,d,b.compressedSize,c),R(b)?b:new Blob([D(b.buffer)?new Uint8Array(b):b],{type:c});a=await Q(a,d,b.compressedSize);return await X(a,b.uncompressedSize,c)}async function aa(a){if("undefined"!==typeof Blob&&a instanceof Blob)a=new ba(a);else if(a instanceof
20
- ArrayBuffer||a&&a.buffer&&a.buffer instanceof ArrayBuffer)a=new ca(a);else if(D(a)||D(a.buffer))a=new ca(a);else if("string"===typeof a){var b=await fetch(a);if(!b.ok)throw Error(`failed http request ${a}, status: ${b.status}: ${b.statusText}`);a=await b.blob();a=new ba(a)}else if("function"!==typeof a.getLength||"function"!==typeof a.read)throw Error("unsupported source type");b=await a.getLength();if(b>Number.MAX_SAFE_INTEGER)throw Error(`file too large. size: ${b}. Only file sizes up 4503599627370496 bytes are supported`);
21
- return await oa(a,b)}const ua="undefined"!==typeof process&&process.versions&&"undefined"!==typeof process.versions.node&&"undefined"===typeof process.versions.electron;class ca{constructor(a){this.typedArray=a instanceof ArrayBuffer||D(a)?new Uint8Array(a):new Uint8Array(a.buffer,a.byteOffset,a.byteLength)}async getLength(){return this.typedArray.byteLength}async read(a,b){return new Uint8Array(this.typedArray.buffer,this.typedArray.byteOffset+a,b)}}class ba{constructor(a){this.blob=a}async getLength(){return this.blob.size}async read(a,
22
- b){a=this.blob.slice(a,a+b);a=await B(a);return new Uint8Array(a)}async sliceAsBlob(a,b,c=""){return this.blob.slice(a,a+b,c)}}class va{constructor(a){this.url=a}async getLength(){if(void 0===this.length){const a=await fetch(this.url,{method:"HEAD"});if(!a.ok)throw Error(`failed http request ${this.url}, status: ${a.status}: ${a.statusText}`);this.length=parseInt(a.headers.get("content-length"));if(Number.isNaN(this.length))throw Error("could not get length");}return this.length}async read(a,b){if(0===
23
- b)return new Uint8Array(0);const c=await fetch(this.url,{headers:{Range:`bytes=${a}-${a+b-1}`}});if(!c.ok)throw Error(`failed http request ${this.url}, status: ${c.status} offset: ${a} size: ${b}: ${c.statusText}`);a=await c.arrayBuffer();return new Uint8Array(a)}}const f=function(){var a=Uint16Array,b=Uint32Array;return{next_code:new a(16),bl_count:new a(16),ordr:[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],of0:[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,
24
- 258,999,999,999],exb:[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,0,0,0],ldef:new a(32),df0:[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,65535,65535],dxb:[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,0,0],ddef:new b(32),flmap:new a(512),fltree:[],fdmap:new a(32),fdtree:[],lmap:new a(32768),ltree:[],ttree:[],dmap:new a(32768),dtree:[],imap:new a(512),itree:[],rev15:new a(32768),lhst:new b(286),
25
- dhst:new b(30),ihst:new b(19),lits:new b(15E3),strt:new a(65536),prev:new a(32768)}}();(function(){function a(a,b,c){for(;0!=b--;)a.push(0,c)}for(var b=0;32768>b;b++){var c=b;c=(c&2863311530)>>>1|(c&1431655765)<<1;c=(c&3435973836)>>>2|(c&858993459)<<2;c=(c&4042322160)>>>4|(c&252645135)<<4;c=(c&4278255360)>>>8|(c&16711935)<<8;f.rev15[b]=(c>>>16|c<<16)>>>17}for(b=0;32>b;b++)f.ldef[b]=f.of0[b]<<3|f.exb[b],f.ddef[b]=f.df0[b]<<4|f.dxb[b];a(f.fltree,144,8);a(f.fltree,112,9);a(f.fltree,24,7);a(f.fltree,
26
- 8,8);E(f.fltree,9);F(f.fltree,9,f.flmap);V(f.fltree,9);a(f.fdtree,32,5);E(f.fdtree,5);F(f.fdtree,5,f.fdmap);V(f.fdtree,5);a(f.itree,19,0);a(f.ltree,286,0);a(f.dtree,30,0);a(f.ttree,320,0)})();const da={table:function(){for(var a=new Uint32Array(256),b=0;256>b;b++){for(var c=b,e=0;8>e;e++)c=c&1?3988292384^c>>>1:c>>>1;a[b]=c}return a}(),update:function(a,b,c,e){for(var d=0;d<e;d++)a=da.table[(a^b[c+d])&255]^a>>>8;return a},crc:function(a,b,c){return da.update(4294967295,a,b,c)^4294967295}},r={numWorkers:1,
27
- workerURL:"",useWorkers:!1};let la=0,O=0,J=!0;const I=[],x=[],A=[],H=new Map,P=function(){if(ua){const {Worker:a}=module.require("worker_threads");return{async createWorker(b){return new a(b)},addEventListener(a,c){a.on("message",b=>{c({target:a,data:b})})},async terminate(a){await a.terminate()}}}return{async createWorker(a){try{return await N(a)}catch(c){console.warn("could not load worker:",a)}let b;try{const c=await fetch(a,{mode:"cors"});if(!c.ok)throw Error(`could not load: ${a}`);b=await c.text();
28
- a=URL.createObjectURL(new Blob([b],{type:"application/javascript"}));const e=await N(a);r.workerURL=a;return e}catch(c){console.warn("could not load worker via fetch:",a)}if(void 0!==b)try{a=`data:application/javascript;base64,${btoa(b)}`;const c=await N(a);r.workerURL=a;return c}catch(c){console.warn("could not load worker via dataURI")}console.warn("workers will not be used");throw Error("can not start workers");},addEventListener(a,b){a.addEventListener("message",b)},async terminate(a){a.terminate()}}}();
29
- class ra{constructor(a,b){this._reader=a;this._rawEntry=b;this.name=b.name;this.nameBytes=b.nameBytes;this.size=b.uncompressedSize;this.compressedSize=b.compressedSize;this.comment=b.comment;this.commentBytes=b.commentBytes;this.compressionMethod=b.compressionMethod;a=b.lastModFileDate;var c=b.lastModFileTime;this.lastModDate=new Date((a>>9&127)+1980,(a>>5&15)-1,a&31,c>>11&31,c>>5&63,2*(c&31),0);this.isDirectory=0===b.uncompressedSize&&b.name.endsWith("/");this.encrypted=!!(b.generalPurposeBitFlag&
30
- 1)}async blob(a="application/octet-stream"){return await ta(this._reader,this._rawEntry,a)}async arrayBuffer(){return await sa(this._reader,this._rawEntry)}async text(){const a=await this.arrayBuffer();return G(new Uint8Array(a))}async json(){const a=await this.text();return JSON.parse(a)}}const qa={unsigned(){return 0}},na=new TextDecoder;v.HTTPRangeReader=va;v.cleanup=function(){ma()};v.setOptions=function(a){r.workerURL=a.workerURL||r.workerURL;a.workerURL&&(r.useWorkers=!0);r.useWorkers=void 0!==
31
- a.useWorkers?a.useWorkers:r.useWorkers;r.numWorkers=a.numWorkers||r.numWorkers};v.unzip=async function(a){const {zip:b,entries:c}=await aa(a);return{zip:b,entries:Object.fromEntries(c.map(a=>[a.name,a]))}};v.unzipRaw=aa;Object.defineProperty(v,"__esModule",{value:!0})});
1
+ /* unzipit@1.3.6, license MIT */
2
+ 'use strict';(function(z,G){"object"===typeof exports&&"undefined"!==typeof module?G(exports):"function"===typeof define&&define.amd?define(["exports"],G):(z="undefined"!==typeof globalThis?globalThis:z||self,G(z.unzipit={}))})(this,function(z){function G(a){return a.arrayBuffer?a.arrayBuffer():new Promise((b,c)=>{const e=new FileReader;e.addEventListener("loadend",()=>{b(e.result)});e.addEventListener("error",c);e.readAsArrayBuffer(a)})}async function na(a){a=await G(a);return new Uint8Array(a)}
3
+ function aa(a){return"undefined"!==typeof Blob&&a instanceof Blob}function I(a){return"undefined"!==typeof SharedArrayBuffer&&a instanceof SharedArrayBuffer}function R(a,b){var c=a.length;if(b<=c)return a;b=new Uint8Array(Math.max(c<<1,b));b.set(a,0);return b}function oa(a,b,c,e,d,h){for(var k=ba,f=ca,l=0;l<c;){var n=a[f(e,d)&b];d+=n&15;var u=n>>>4;if(15>=u)h[l]=u,l++;else{var x=n=0;16==u?(x=3+k(e,d,2),d+=2,n=h[l-1]):17==u?(x=3+k(e,d,3),d+=3):18==u&&(x=11+k(e,d,7),d+=7);for(u=l+x;l<u;)h[l]=n,l++}}return d}
4
+ function da(a,b,c,e){for(var d=0,h=0,k=e.length>>>1;h<c;){var f=a[h+b];e[h<<1]=0;e[(h<<1)+1]=f;f>d&&(d=f);h++}for(;h<k;)e[h<<1]=0,e[(h<<1)+1]=0,h++;return d}function J(a,b){var c=a.length,e,d;var h=g.bl_count;for(d=0;d<=b;d++)h[d]=0;for(d=1;d<c;d+=2)h[a[d]]++;d=g.next_code;var k=0;h[0]=0;for(e=1;e<=b;e++)k=k+h[e-1]<<1,d[e]=k;for(b=0;b<c;b+=2)h=a[b+1],0!=h&&(a[b]=d[h],d[h]++)}function K(a,b,c){for(var e=a.length,d=g.rev15,h=0;h<e;h+=2)if(0!=a[h+1]){var k=a[h+1],f=h>>1<<4|k,l=b-k;k=a[h]<<l;for(l=k+
5
+ (1<<l);k!=l;)c[d[k]>>>15-b]=f,k++}}function ea(a,b){for(var c=g.rev15,e=15-b,d=0;d<a.length;d+=2)a[d]=c[a[d]<<b-a[d+1]]>>>e}function ba(a,b,c){return(a[b>>>3]|a[(b>>>3)+1]<<8)>>>(b&7)&(1<<c)-1}function pa(a,b,c){return(a[b>>>3]|a[(b>>>3)+1]<<8|a[(b>>>3)+2]<<16)>>>(b&7)&(1<<c)-1}function ca(a,b){return(a[b>>>3]|a[(b>>>3)+1]<<8|a[(b>>>3)+2]<<16)>>>(b&7)}function qa(a){D.push(a.target);S();const {id:b,error:c,data:e}=a.data;a=N.get(b);N.delete(b);c?a.reject(c):a.resolve(e)}function T(a){return new Promise((b,
6
+ c)=>{const e=new Worker(a);e.onmessage=d=>{"start"===d.data?(e.onerror=void 0,e.onmessage=void 0,b(e)):c(Error(`unexpected message: ${d.data}`))};e.onerror=c})}async function ra(){if(0===D.length&&U<y.numWorkers){++U;try{const a=await V.createWorker(y.workerURL);O.push(a);D.push(a);V.addEventListener(a,qa)}catch(a){P=!1}}return D.pop()}async function S(){if(0!==B.length){if(y.useWorkers&&P){var a=await ra();if(P){if(a){if(0===B.length){D.push(a);S();return}const {id:E,src:W,uncompressedSize:X,type:Y,
7
+ resolve:L,reject:sa}=B.shift();N.set(E,{id:E,resolve:L,reject:sa});a.postMessage({type:"inflate",data:{id:E,type:Y,src:W,uncompressedSize:X}},[])}return}}for(;B.length;){const {src:E,uncompressedSize:W,type:X,resolve:Y}=B.shift();a=E;aa(E)&&(a=await na(E));{var b=a;a=X;var c=Y;const L=new Uint8Array(W);var e=void 0,d=void 0,h,k=L,f=Uint8Array;if(3==b[0]&&0==b[1])k||new f(0);else{var l=pa,n=ba,u=oa,x=ca,A=null==k;A&&(k=new f(b.length>>>2<<3));for(var C=0,t=0,r=h=0,m=0;0==C;){C=l(b,m,1);var q=l(b,m+
8
+ 1,2);m+=3;if(0==q)0!=(m&7)&&(m+=8-(m&7)),m=(m>>>3)+4,q=b[m-4]|b[m-3]<<8,A&&(k=R(k,r+q)),k.set(new f(b.buffer,b.byteOffset+m,q),r),m=m+q<<3,r+=q;else{A&&(k=R(k,r+131072));1==q&&(d=g.flmap,e=g.fdmap,t=511,h=31);if(2==q){q=n(b,m,5)+257;h=n(b,m+5,5)+1;e=n(b,m+10,4)+4;m+=14;for(d=0;38>d;d+=2)g.itree[d]=0,g.itree[d+1]=0;t=1;for(d=0;d<e;d++){var p=n(b,m+3*d,3);g.itree[(g.ordr[d]<<1)+1]=p;p>t&&(t=p)}m+=3*e;J(g.itree,t);K(g.itree,t,g.imap);d=g.lmap;e=g.dmap;m=u(g.imap,(1<<t)-1,q+h,b,m,g.ttree);p=da(g.ttree,
9
+ 0,q,g.ltree);t=(1<<p)-1;q=da(g.ttree,q,h,g.dtree);h=(1<<q)-1;J(g.ltree,p);K(g.ltree,p,d);J(g.dtree,q);K(g.dtree,q,e)}for(;;)if(q=d[x(b,m)&t],m+=q&15,p=q>>>4,0==p>>>8)k[r++]=p;else if(256==p)break;else{q=r+p-254;264<p&&(p=g.ldef[p-257],q=r+(p>>>3)+n(b,m,p&7),m+=p&7);p=e[x(b,m)&h];m+=p&15;p=g.ddef[p>>>4];var Q=(p>>>4)+l(b,m,p&15);m+=p&15;for(A&&(k=R(k,r+131072));r<q;)k[r]=k[r++-Q],k[r]=k[r++-Q],k[r]=k[r++-Q],k[r]=k[r++-Q];r=q}}}k.length==r||k.slice(0,r)}c(a?new Blob([L],{type:a}):L.buffer)}}}}function fa(a,
10
+ b,c){return new Promise((e,d)=>{B.push({src:a,uncompressedSize:b,type:c,resolve:e,reject:d,id:ta++});S()})}async function ua(){for(const a of O)await V.terminate(a);O.splice(0,O.length);D.splice(0,D.length);B.splice(0,B.length);N.clear();U=0;P=!0}async function H(a,b,c){return await a.read(b,c)}async function Z(a,b,c,e){return a.sliceAsBlob?await a.sliceAsBlob(b,c,e):await a.read(b,c)}function v(a,b){return a[b]+256*a[b+1]}function w(a,b){return a[b]+256*a[b+1]+65536*a[b+2]+16777216*a[b+3]}function F(a,
11
+ b){return w(a,b)+4294967296*w(a,b+4)}function M(a,b){I(a.buffer)&&(a=new Uint8Array(a));return va.decode(a)}async function wa(a,b){var c=Math.min(65557,b);b-=c;var e=await H(a,b,c);for(c-=22;0<=c;--c){if(101010256!==w(e,c))continue;var d=new Uint8Array(e.buffer,e.byteOffset+c,e.byteLength-c);e=v(d,4);if(0!==e)throw Error(`multi-volume zip files are not supported. This is volume: ${e}`);e=v(d,10);const k=w(d,12),f=w(d,16);var h=v(d,20);const l=d.length-22;if(h!==l)throw Error(`invalid comment length. expected: ${l}, actual: ${h}`);
12
+ d=new Uint8Array(d.buffer,d.byteOffset+22,h);h=M(d);return 65535===e||4294967295===f?await xa(a,b+c,h,d):await ha(a,f,k,e,h,d)}throw Error("could not find end of central directory. maybe not zip file");}async function xa(a,b,c,e){b=await H(a,b-20,20);if(117853008!==w(b,0))throw Error("invalid zip64 end of central directory locator signature");b=F(b,8);var d=await H(a,b,56);if(101075792!==w(d,0))throw Error("invalid zip64 end of central directory record signature");b=F(d,32);const h=F(d,40);d=F(d,
13
+ 48);return ha(a,d,h,b,c,e)}async function ha(a,b,c,e,d,h){let k=0;b=await H(a,b,c);c=[];for(let A=0;A<e;++A){var f=b.subarray(k,k+46),l=w(f,0);if(33639248!==l)throw Error(`invalid central directory file header signature: 0x${l.toString(16)}`);f={versionMadeBy:v(f,4),versionNeededToExtract:v(f,6),generalPurposeBitFlag:v(f,8),compressionMethod:v(f,10),lastModFileTime:v(f,12),lastModFileDate:v(f,14),crc32:w(f,16),compressedSize:w(f,20),uncompressedSize:w(f,24),fileNameLength:v(f,28),extraFieldLength:v(f,
14
+ 30),fileCommentLength:v(f,32),internalFileAttributes:v(f,36),externalFileAttributes:w(f,38),relativeOffsetOfLocalHeader:w(f,42)};if(f.generalPurposeBitFlag&64)throw Error("strong encryption is not supported");k+=46;l=b.subarray(k,k+f.fileNameLength+f.extraFieldLength+f.fileCommentLength);f.nameBytes=l.slice(0,f.fileNameLength);f.name=M(f.nameBytes);var n=f.fileNameLength+f.extraFieldLength;const C=l.slice(f.fileNameLength,n);f.extraFields=[];for(var u=0;u<C.length-3;){const t=v(C,u+0);var x=v(C,u+
15
+ 2);u+=4;x=u+x;if(x>C.length)throw Error("extra field length exceeds extra field buffer size");f.extraFields.push({id:t,data:C.slice(u,x)});u=x}f.commentBytes=l.slice(n,n+f.fileCommentLength);f.comment=M(f.commentBytes);k+=l.length;if(4294967295===f.uncompressedSize||4294967295===f.compressedSize||4294967295===f.relativeOffsetOfLocalHeader){l=f.extraFields.find(t=>1===t.id);if(!l)return Error("expected zip64 extended information extra field");l=l.data;n=0;if(4294967295===f.uncompressedSize){if(n+8>
16
+ l.length)throw Error("zip64 extended information extra field does not include uncompressed size");f.uncompressedSize=F(l,n);n+=8}if(4294967295===f.compressedSize){if(n+8>l.length)throw Error("zip64 extended information extra field does not include compressed size");f.compressedSize=F(l,n);n+=8}if(4294967295===f.relativeOffsetOfLocalHeader){if(n+8>l.length)throw Error("zip64 extended information extra field does not include relative header offset");f.relativeOffsetOfLocalHeader=F(l,n);n+=8}}if(l=f.extraFields.find(t=>
17
+ 28789===t.id&&6<=t.data.length&&1===t.data[0]&&w(t.data,1),ya.unsigned(f.nameBytes)))f.fileName=M(l.data.slice(5));if(0===f.compressionMethod&&(l=f.uncompressedSize,0!==(f.generalPurposeBitFlag&1)&&(l+=12),f.compressedSize!==l))throw Error(`compressed size mismatch for stored file: ${f.compressedSize} != ${l}`);c.push(f)}return{zip:{comment:d,commentBytes:h},entries:c.map(A=>new za(a,A))}}async function ia(a,b){if(b.generalPurposeBitFlag&1)throw Error("encrypted entries not supported");var c=await H(a,
18
+ b.relativeOffsetOfLocalHeader,30);a=await a.getLength();var e=w(c,0);if(67324752!==e)throw Error(`invalid local file header signature: 0x${e.toString(16)}`);e=v(c,26);var d=v(c,28);c=b.relativeOffsetOfLocalHeader+c.length+e+d;if(0===b.compressionMethod)e=!1;else if(8===b.compressionMethod)e=!0;else throw Error(`unsupported compression method: ${b.compressionMethod}`);d=c+b.compressedSize;if(0!==b.compressedSize&&d>a)throw Error(`file data overflows file bounds: ${c} + ${b.compressedSize} > ${a}`);
19
+ return{decompress:e,fileDataStart:c}}async function Aa(a,b){const {decompress:c,fileDataStart:e}=await ia(a,b);if(!c)return b=await H(a,e,b.compressedSize),0===b.byteOffset&&b.byteLength===b.buffer.byteLength?b.buffer:b.slice().buffer;a=await Z(a,e,b.compressedSize);return await fa(a,b.uncompressedSize)}async function Ba(a,b,c){const {decompress:e,fileDataStart:d}=await ia(a,b);if(!e)return b=await Z(a,d,b.compressedSize,c),aa(b)?b:new Blob([I(b.buffer)?new Uint8Array(b):b],{type:c});a=await Z(a,
20
+ d,b.compressedSize);return await fa(a,b.uncompressedSize,c)}async function ja(a){if("undefined"!==typeof Blob&&a instanceof Blob)a=new ka(a);else if(a instanceof ArrayBuffer||a&&a.buffer&&a.buffer instanceof ArrayBuffer)a=new la(a);else if(I(a)||I(a.buffer))a=new la(a);else if("string"===typeof a){var b=await fetch(a);if(!b.ok)throw Error(`failed http request ${a}, status: ${b.status}: ${b.statusText}`);a=await b.blob();a=new ka(a)}else if("function"!==typeof a.getLength||"function"!==typeof a.read)throw Error("unsupported source type");
21
+ b=await a.getLength();if(b>Number.MAX_SAFE_INTEGER)throw Error(`file too large. size: ${b}. Only file sizes up 4503599627370496 bytes are supported`);return await wa(a,b)}const Ca="undefined"!==typeof process&&process.versions&&"undefined"!==typeof process.versions.node&&"undefined"===typeof process.versions.electron;class la{constructor(a){this.typedArray=a instanceof ArrayBuffer||I(a)?new Uint8Array(a):new Uint8Array(a.buffer,a.byteOffset,a.byteLength)}async getLength(){return this.typedArray.byteLength}async read(a,
22
+ b){return new Uint8Array(this.typedArray.buffer,this.typedArray.byteOffset+a,b)}}class ka{constructor(a){this.blob=a}async getLength(){return this.blob.size}async read(a,b){a=this.blob.slice(a,a+b);a=await G(a);return new Uint8Array(a)}async sliceAsBlob(a,b,c=""){return this.blob.slice(a,a+b,c)}}class Da{constructor(a){this.url=a}async getLength(){if(void 0===this.length){const a=await fetch(this.url,{method:"HEAD"});if(!a.ok)throw Error(`failed http request ${this.url}, status: ${a.status}: ${a.statusText}`);
23
+ this.length=parseInt(a.headers.get("content-length"));if(Number.isNaN(this.length))throw Error("could not get length");}return this.length}async read(a,b){if(0===b)return new Uint8Array(0);const c=await fetch(this.url,{headers:{Range:`bytes=${a}-${a+b-1}`}});if(!c.ok)throw Error(`failed http request ${this.url}, status: ${c.status} offset: ${a} size: ${b}: ${c.statusText}`);a=await c.arrayBuffer();return new Uint8Array(a)}}const g=function(){var a=Uint16Array,b=Uint32Array;return{next_code:new a(16),
24
+ bl_count:new a(16),ordr:[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],of0:[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,999,999,999],exb:[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,0,0,0],ldef:new a(32),df0:[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,65535,65535],dxb:[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,0,0],ddef:new b(32),flmap:new a(512),
25
+ fltree:[],fdmap:new a(32),fdtree:[],lmap:new a(32768),ltree:[],ttree:[],dmap:new a(32768),dtree:[],imap:new a(512),itree:[],rev15:new a(32768),lhst:new b(286),dhst:new b(30),ihst:new b(19),lits:new b(15E3),strt:new a(65536),prev:new a(32768)}}();(function(){function a(e,d,h){for(;0!=d--;)e.push(0,h)}for(var b=0;32768>b;b++){var c=b;c=(c&2863311530)>>>1|(c&1431655765)<<1;c=(c&3435973836)>>>2|(c&858993459)<<2;c=(c&4042322160)>>>4|(c&252645135)<<4;c=(c&4278255360)>>>8|(c&16711935)<<8;g.rev15[b]=(c>>>
26
+ 16|c<<16)>>>17}for(b=0;32>b;b++)g.ldef[b]=g.of0[b]<<3|g.exb[b],g.ddef[b]=g.df0[b]<<4|g.dxb[b];a(g.fltree,144,8);a(g.fltree,112,9);a(g.fltree,24,7);a(g.fltree,8,8);J(g.fltree,9);K(g.fltree,9,g.flmap);ea(g.fltree,9);a(g.fdtree,32,5);J(g.fdtree,5);K(g.fdtree,5,g.fdmap);ea(g.fdtree,5);a(g.itree,19,0);a(g.ltree,286,0);a(g.dtree,30,0);a(g.ttree,320,0)})();const ma={table:function(){for(var a=new Uint32Array(256),b=0;256>b;b++){for(var c=b,e=0;8>e;e++)c=c&1?3988292384^c>>>1:c>>>1;a[b]=c}return a}(),update:function(a,
27
+ b,c,e){for(var d=0;d<e;d++)a=ma.table[(a^b[c+d])&255]^a>>>8;return a},crc:function(a,b,c){return ma.update(4294967295,a,b,c)^4294967295}},y={numWorkers:1,workerURL:"",useWorkers:!1};let ta=0,U=0,P=!0;const O=[],D=[],B=[],N=new Map,V=function(){if(Ca){const {Worker:a}=module.require("worker_threads");return{async createWorker(b){return new a(b)},addEventListener(b,c){b.on("message",e=>{c({target:b,data:e})})},async terminate(b){await b.terminate()}}}return{async createWorker(a){try{return await T(a)}catch(c){console.warn("could not load worker:",
28
+ a)}let b;try{const c=await fetch(a,{mode:"cors"});if(!c.ok)throw Error(`could not load: ${a}`);b=await c.text();a=URL.createObjectURL(new Blob([b],{type:"application/javascript"}));const e=await T(a);y.workerURL=a;return e}catch(c){console.warn("could not load worker via fetch:",a)}if(void 0!==b)try{a=`data:application/javascript;base64,${btoa(b)}`;const c=await T(a);y.workerURL=a;return c}catch(c){console.warn("could not load worker via dataURI")}console.warn("workers will not be used");throw Error("can not start workers");
29
+ },addEventListener(a,b){a.addEventListener("message",b)},async terminate(a){a.terminate()}}}();class za{constructor(a,b){this._reader=a;this._rawEntry=b;this.name=b.name;this.nameBytes=b.nameBytes;this.size=b.uncompressedSize;this.compressedSize=b.compressedSize;this.comment=b.comment;this.commentBytes=b.commentBytes;this.compressionMethod=b.compressionMethod;a=b.lastModFileDate;var c=b.lastModFileTime;this.lastModDate=new Date((a>>9&127)+1980,(a>>5&15)-1,a&31,c>>11&31,c>>5&63,2*(c&31),0);this.isDirectory=
30
+ 0===b.uncompressedSize&&b.name.endsWith("/");this.encrypted=!!(b.generalPurposeBitFlag&1)}async blob(a="application/octet-stream"){return await Ba(this._reader,this._rawEntry,a)}async arrayBuffer(){return await Aa(this._reader,this._rawEntry)}async text(){const a=await this.arrayBuffer();return M(new Uint8Array(a))}async json(){const a=await this.text();return JSON.parse(a)}}const ya={unsigned(){return 0}},va=new TextDecoder;z.HTTPRangeReader=Da;z.cleanup=function(){ua()};z.setOptions=function(a){y.workerURL=
31
+ a.workerURL||y.workerURL;a.workerURL&&(y.useWorkers=!0);y.useWorkers=void 0!==a.useWorkers?a.useWorkers:y.useWorkers;y.numWorkers=a.numWorkers||y.numWorkers};z.unzip=async function(a){const {zip:b,entries:c}=await ja(a);return{zip:b,entries:Object.fromEntries(c.map(e=>[e.name,e]))}};z.unzipRaw=ja;Object.defineProperty(z,"__esModule",{value:!0})});
@@ -5,7 +5,7 @@ export type ZipInfo = {
5
5
 
6
6
  export type ZipInfoRaw = {
7
7
  zip: Zip,
8
- entries: [ZipEntry],
8
+ entries: ZipEntry[],
9
9
  };
10
10
 
11
11
  export type Zip = {
@@ -1,4 +1,4 @@
1
- /* unzipit@1.3.2, license MIT */
1
+ /* unzipit@1.3.6, license MIT */
2
2
  /* global SharedArrayBuffer, process */
3
3
 
4
4
  function readBlobAsArrayBuffer(blob) {
@@ -713,6 +713,7 @@ class ZipEntry {
713
713
  const EOCDR_WITHOUT_COMMENT_SIZE = 22;
714
714
  const MAX_COMMENT_SIZE = 0xffff; // 2-byte size
715
715
  const EOCDR_SIGNATURE = 0x06054b50;
716
+ const ZIP64_EOCDR_SIGNATURE = 0x06064b50;
716
717
 
717
718
  async function readAs(reader, offset, length) {
718
719
  return await reader.read(offset, length);
@@ -858,10 +859,10 @@ async function readZip64CentralDirectory(reader, offset, comment, commentBytes)
858
859
  // 16 - total number of disks
859
860
 
860
861
  // ZIP64 end of central directory record
861
- const zip64Eocdr = readAs(reader, zip64EocdrOffset, 56);
862
+ const zip64Eocdr = await readAs(reader, zip64EocdrOffset, 56);
862
863
 
863
864
  // 0 - zip64 end of central dir signature 4 bytes (0x06064b50)
864
- if (getUint32LE(zip64Eocdr, 0) !== EOCDR_SIGNATURE) {
865
+ if (getUint32LE(zip64Eocdr, 0) !== ZIP64_EOCDR_SIGNATURE) {
865
866
  throw new Error('invalid zip64 end of central directory record signature');
866
867
  }
867
868
  // 4 - size of zip64 end of central directory record 8 bytes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "unzipit",
3
- "version": "1.3.2",
3
+ "version": "1.3.6",
4
4
  "description": "random access unzip library for JavaScript",
5
5
  "main": "dist/unzipit.js",
6
6
  "module": "dist/unzipit.module.js",
@@ -34,21 +34,21 @@
34
34
  },
35
35
  "homepage": "https://greggman.github.io/unzipit",
36
36
  "devDependencies": {
37
- "@types/chai": "^4.2.11",
38
- "@types/mocha": "^7.0.2",
37
+ "@types/chai": "^4.2.12",
38
+ "@types/mocha": "^8.0.3",
39
39
  "chai": "^4.2.0",
40
- "eslint": "^7.4.0",
41
- "eslint-plugin-html": "^6.0.2",
40
+ "eslint": "^7.9.0",
41
+ "eslint-plugin-html": "^6.1.0",
42
42
  "eslint-plugin-one-variable-per-var": "0.0.3",
43
43
  "eslint-plugin-optional-comma-spacing": "0.0.4",
44
44
  "eslint-plugin-require-trailing-comma": "0.0.1",
45
45
  "express": "^4.17.1",
46
- "google-closure-compiler": "^20200628.0.0",
47
- "mocha": "^8.0.1",
48
- "puppeteer": "^5.0.0",
49
- "rollup": "^2.21.0",
46
+ "google-closure-compiler": "^20200830.0.0",
47
+ "mocha": "^8.1.3",
48
+ "puppeteer": "^5.3.0",
49
+ "rollup": "^2.27.1",
50
50
  "rollup-plugin-node-resolve": "^5.2.0",
51
- "typescript": "^3.9.6"
51
+ "typescript": "^4.0.2"
52
52
  },
53
53
  "dependencies": {
54
54
  "uzip-module": "^1.0.2"