unzipit 1.4.2 → 1.4.3
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 +33 -0
- package/dist/unzipit-worker.js +1 -1
- package/dist/unzipit-worker.min.js +1 -1
- package/dist/unzipit-worker.module.js +1 -1
- package/dist/unzipit.d.ts +4 -2
- package/dist/unzipit.js +1 -1
- package/dist/unzipit.min.js +1 -1
- package/dist/unzipit.module.d.ts +4 -2
- package/dist/unzipit.module.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -15,6 +15,7 @@ Random access unzip library for browser and node based JavaScript
|
|
|
15
15
|
# How to use
|
|
16
16
|
|
|
17
17
|
Live Example: [https://jsfiddle.net/greggman/awez4sd7/](https://jsfiddle.net/greggman/awez4sd7/)
|
|
18
|
+
Live Parallel Example: [https://jsfiddle.net/greggman/cgdjm07f/](https://jsfiddle.net/greggman/cgdjm07f/)
|
|
18
19
|
|
|
19
20
|
## without workers
|
|
20
21
|
|
|
@@ -63,6 +64,23 @@ async function readFiles(url) {
|
|
|
63
64
|
}
|
|
64
65
|
```
|
|
65
66
|
|
|
67
|
+
## In Parallel
|
|
68
|
+
|
|
69
|
+
```js
|
|
70
|
+
import {unzip, setOptions} from 'unzipit';
|
|
71
|
+
|
|
72
|
+
setOptions({workerURL: 'path/to/unzipit-worker.module.js'});
|
|
73
|
+
|
|
74
|
+
async function readFiles(url) {
|
|
75
|
+
const {entries} = await unzipit.unzip(url);
|
|
76
|
+
const names = Object.keys(entries);
|
|
77
|
+
const blobs = await Promise.all(Object.values(entries).map(e => e.blob()));
|
|
78
|
+
|
|
79
|
+
// names and blobs are now parallel arrays so do whatever you want.
|
|
80
|
+
const blobsByName = Object.fromEntries(names.map((name, i) => [name, blobs[i]]));
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
66
84
|
You can also pass a [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob),
|
|
67
85
|
[`ArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer),
|
|
68
86
|
[`SharedArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer),
|
|
@@ -476,6 +494,21 @@ The zip standard predates unicode so it's possible and apparently not uncommon f
|
|
|
476
494
|
to have non-unicode names. `entry.nameBytes` contains the raw bytes of the filename.
|
|
477
495
|
so you are free to decode the name using your own methods. See example above.
|
|
478
496
|
|
|
497
|
+
## Filename issues in general.
|
|
498
|
+
|
|
499
|
+
unzipit doesn't and can't know if a filename is valid for your use case. A zip file
|
|
500
|
+
can have any name with any characters in the filename data. All unzipit can do is give you
|
|
501
|
+
the filename as a string from the zip file. It's up to you do deal with it, for example
|
|
502
|
+
to strip out or replace characters in the filename that are incompatible with your OS.
|
|
503
|
+
For example [this zip file](https://github.com/greggman/unzipit/files/10998616/problem-filenames.zip)
|
|
504
|
+
has these filenames: `'this#file\\name%is&iffy'`, `'???And This one???'`, `'fo:oo'` which
|
|
505
|
+
I believe are problematic on Windows. A user found a file with double slashes as in `foo//bar`
|
|
506
|
+
so you'll need to decide what to do with that.
|
|
507
|
+
|
|
508
|
+
There is also the issue a user could make a malicious filename. For example "../../.bash_profile"
|
|
509
|
+
on the hope that some program doesn't check the names and just uses the paths as is.
|
|
510
|
+
If you're going to use unzipit to create files you should check and sanitize your paths.
|
|
511
|
+
|
|
479
512
|
## ArrayBuffer and SharedArrayBuffer caveats
|
|
480
513
|
|
|
481
514
|
If you pass in an `ArrayBuffer` or `SharedArrayBuffer` you need to keep the data unchanged
|
package/dist/unzipit-worker.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* unzipit@1.4.
|
|
1
|
+
/* unzipit@1.4.3, license MIT */
|
|
2
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
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
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,
|
package/dist/unzipit.d.ts
CHANGED
|
@@ -47,8 +47,10 @@ export type UnzipitOptions = {
|
|
|
47
47
|
|
|
48
48
|
export type TypedArray = Int8Array | Uint8Array | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array;
|
|
49
49
|
|
|
50
|
-
export class HTTPRangeReader {
|
|
51
|
-
|
|
50
|
+
export class HTTPRangeReader implements Reader {
|
|
51
|
+
constructor(url: string);
|
|
52
|
+
getLength(): Promise<number>;
|
|
53
|
+
read(offset: number, size: number): Promise<Uint8Array>;
|
|
52
54
|
}
|
|
53
55
|
|
|
54
56
|
export function unzip(src: string | ArrayBuffer | TypedArray | Blob | Reader): Promise<ZipInfo>;
|
package/dist/unzipit.js
CHANGED
package/dist/unzipit.min.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* unzipit@1.4.
|
|
1
|
+
/* unzipit@1.4.3, license MIT */
|
|
2
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
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
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+
|
package/dist/unzipit.module.d.ts
CHANGED
|
@@ -47,8 +47,10 @@ export type UnzipitOptions = {
|
|
|
47
47
|
|
|
48
48
|
export type TypedArray = Int8Array | Uint8Array | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array;
|
|
49
49
|
|
|
50
|
-
export class HTTPRangeReader {
|
|
51
|
-
|
|
50
|
+
export class HTTPRangeReader implements Reader {
|
|
51
|
+
constructor(url: string);
|
|
52
|
+
getLength(): Promise<number>;
|
|
53
|
+
read(offset: number, size: number): Promise<Uint8Array>;
|
|
52
54
|
}
|
|
53
55
|
|
|
54
56
|
export function unzip(src: string | ArrayBuffer | TypedArray | Blob | Reader): Promise<ZipInfo>;
|
package/dist/unzipit.module.js
CHANGED