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 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
@@ -1,4 +1,4 @@
1
- /* unzipit@1.4.2, license MIT */
1
+ /* unzipit@1.4.3, license MIT */
2
2
  (function (factory) {
3
3
  typeof define === 'function' && define.amd ? define(factory) :
4
4
  factory();
@@ -1,4 +1,4 @@
1
- /* unzipit@1.4.2, license MIT */
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,
@@ -1,4 +1,4 @@
1
- /* unzipit@1.4.2, license MIT */
1
+ /* unzipit@1.4.3, 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
@@ -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
- constructor(url: string);
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
@@ -1,4 +1,4 @@
1
- /* unzipit@1.4.2, license MIT */
1
+ /* unzipit@1.4.3, 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) :
@@ -1,4 +1,4 @@
1
- /* unzipit@1.4.2, license MIT */
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+
@@ -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
- constructor(url: string);
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>;
@@ -1,4 +1,4 @@
1
- /* unzipit@1.4.2, license MIT */
1
+ /* unzipit@1.4.3, license MIT */
2
2
  /* global SharedArrayBuffer, process */
3
3
 
4
4
  function readBlobAsArrayBuffer(blob) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "unzipit",
3
- "version": "1.4.2",
3
+ "version": "1.4.3",
4
4
  "description": "random access unzip library for JavaScript",
5
5
  "main": "dist/unzipit.js",
6
6
  "module": "dist/unzipit.module.js",