zip-writer 2.0.0 → 2.1.0

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
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/zip-writer.svg)](https://www.npmjs.com/package/zip-writer)
4
4
  [![GitHub CI](https://github.com/gmaclennan/zip-writer/actions/workflows/test.yml/badge.svg)](https://github.com/gmaclennan/zip-writer/actions/workflows/test.yml)
5
- [![bundle size](https://deno.bundlejs.com/badge?q=zip-writer@1.1.2&treeshake=[*])](https://bundlejs.com/?q=zip-writer%401.1.2&treeshake=%5B*%5D)
5
+ [![bundle size](https://deno.bundlejs.com/badge?q=zip-writer&treeshake=[*])](https://bundlejs.com/?q=zip-writer&treeshake=%5B*%5D)
6
6
 
7
7
  A modern streaming ZIP archive writer for JavaScript that uses the
8
8
  [Web Streams API](https://developer.mozilla.org/en-US/docs/Web/API/Streams_API)
@@ -56,6 +56,48 @@ console.log(info);
56
56
  await zipWriter.finalize();
57
57
  ```
58
58
 
59
+ ## Helper Functions
60
+
61
+ ### `readableFromBytes()`
62
+
63
+ A helper function for creating a `ReadableStream` from a `Uint8Array` with
64
+ proper backpressure handling. This is useful when you need to convert byte data
65
+ into a stream for use with `addEntry()`. On supported platforms, you can use
66
+ [`ReadableStream.from()`](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream/from_static)
67
+ instead.
68
+
69
+ This is not included in the main bundle to keep the size small.
70
+
71
+ **Import:**
72
+
73
+ ```ts
74
+ import { readableFromBytes } from "zip-writable/readable-from-bytes";
75
+ ```
76
+
77
+ **Parameters:**
78
+
79
+ - `data: Uint8Array` - The byte array to convert to a stream
80
+
81
+ **Returns:** `ReadableStream<Uint8Array>` - A readable stream that chunks the
82
+ data with proper backpressure
83
+
84
+ **Example:**
85
+
86
+ ```ts
87
+ import { ZipWriter } from "zip-writable";
88
+ import { readableFromBytes } from "zip-writable/readable-from-bytes";
89
+
90
+ const zipWriter = new ZipWriter();
91
+
92
+ const data = new TextEncoder().encode("Hello, World!");
93
+ await zipWriter.addEntry({
94
+ readable: readableFromBytes(data),
95
+ name: "hello.txt",
96
+ });
97
+
98
+ await zipWriter.finalize();
99
+ ```
100
+
59
101
  ## API Reference
60
102
 
61
103
  ### `ZipWriter`
@@ -18,6 +18,8 @@ export declare const EOCD_SIZE = 22;
18
18
  export declare const EOCD64_SIZE = 56;
19
19
  export declare const EOCD64_LOCATOR_SIZE = 20;
20
20
  export declare const ZIP64_LIMIT: bigint;
21
+ export declare const MAX_2_BYTE = 65535;
22
+ export declare const MAX_4_BYTE = 4294967295;
21
23
  /** Little-endian for DataView methods */
22
24
  export declare const LITTLE_ENDIAN = true;
23
25
  /** Big-endian for DataView methods */
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,2BAA2B,aAAa,CAAC;AACtD,eAAO,MAAM,yBAAyB,aAAa,CAAC;AACpD,eAAO,MAAM,2BAA2B,aAAa,CAAC;AACtD,eAAO,MAAM,4BAA4B,aAAa,CAAC;AACvD,eAAO,MAAM,kCAAkC,aAAa,CAAC;AAC7D,eAAO,MAAM,0CAA0C,aAAa,CAAC;AAGrE,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAC1C,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAGvC,eAAO,MAAM,qBAAqB,OAAwB,CAAC;AAG3D,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAC1C,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAG5C,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAChD,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAC7C,eAAO,MAAM,SAAS,KAAK,CAAC;AAC5B,eAAO,MAAM,WAAW,KAAK,CAAC;AAC9B,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAGtC,eAAO,MAAM,WAAW,QAAqB,CAAC;AAE9C,yCAAyC;AACzC,eAAO,MAAM,aAAa,OAAO,CAAC;AAClC,sCAAsC;AACtC,eAAO,MAAM,UAAU,QAAQ,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,2BAA2B,aAAa,CAAC;AACtD,eAAO,MAAM,yBAAyB,aAAa,CAAC;AACpD,eAAO,MAAM,2BAA2B,aAAa,CAAC;AACtD,eAAO,MAAM,4BAA4B,aAAa,CAAC;AACvD,eAAO,MAAM,kCAAkC,aAAa,CAAC;AAC7D,eAAO,MAAM,0CAA0C,aAAa,CAAC;AAGrE,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAC1C,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAGvC,eAAO,MAAM,qBAAqB,OAAwB,CAAC;AAG3D,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAC1C,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAG5C,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAChD,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAC7C,eAAO,MAAM,SAAS,KAAK,CAAC;AAC5B,eAAO,MAAM,WAAW,KAAK,CAAC;AAC9B,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAGtC,eAAO,MAAM,WAAW,QAAqB,CAAC;AAC9C,eAAO,MAAM,UAAU,QAAS,CAAC;AACjC,eAAO,MAAM,UAAU,aAAa,CAAC;AAErC,yCAAyC;AACzC,eAAO,MAAM,aAAa,OAAO,CAAC;AAClC,sCAAsC;AACtC,eAAO,MAAM,UAAU,QAAQ,CAAC"}
package/dist/constants.js CHANGED
@@ -10,7 +10,7 @@ export const VERSION_MADE_BY = 45; // Version 4.5 (ZIP64 support)
10
10
  export const VERSION_NEEDED_STANDARD = 20; // Version 2.0
11
11
  export const VERSION_NEEDED_ZIP64 = 45; // Version 4.5 for ZIP64
12
12
  // Flags
13
- export const GENERAL_PURPOSE_FLAGS = 0b0000_1000_0000_1000; // Bit 3: data descriptor, Bit 11: UTF-8
13
+ export const GENERAL_PURPOSE_FLAGS = 0b0000_1000_0000_1000; // Bit 3: crc and file-sizes unknown when header was written, Bit 11: UTF-8
14
14
  // Compression methods
15
15
  export const COMPRESSION_METHOD_STORE = 0;
16
16
  export const COMPRESSION_METHOD_DEFLATE = 8;
@@ -24,6 +24,8 @@ export const EOCD64_SIZE = 56;
24
24
  export const EOCD64_LOCATOR_SIZE = 20;
25
25
  // Limits
26
26
  export const ZIP64_LIMIT = BigInt(0xffffffff);
27
+ export const MAX_2_BYTE = 0xffff;
28
+ export const MAX_4_BYTE = 0xffffffff;
27
29
  /** Little-endian for DataView methods */
28
30
  export const LITTLE_ENDIAN = true;
29
31
  /** Big-endian for DataView methods */
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,MAAM,CAAC,MAAM,2BAA2B,GAAG,UAAU,CAAC,CAAC,eAAe;AACtE,MAAM,CAAC,MAAM,yBAAyB,GAAG,UAAU,CAAC,CAAC,eAAe;AACpE,MAAM,CAAC,MAAM,2BAA2B,GAAG,UAAU,CAAC,CAAC,eAAe;AACtE,MAAM,CAAC,MAAM,4BAA4B,GAAG,UAAU,CAAC,CAAC,eAAe;AACvE,MAAM,CAAC,MAAM,kCAAkC,GAAG,UAAU,CAAC,CAAC,eAAe;AAC7E,MAAM,CAAC,MAAM,0CAA0C,GAAG,UAAU,CAAC,CAAC,eAAe;AAErF,oBAAoB;AACpB,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC,CAAC,8BAA8B;AACjE,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,CAAC,CAAC,cAAc;AACzD,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC,CAAC,wBAAwB;AAEhE,QAAQ;AACR,MAAM,CAAC,MAAM,qBAAqB,GAAG,qBAAqB,CAAC,CAAC,wCAAwC;AAEpG,sBAAsB;AACtB,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAC1C,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC;AAE5C,iBAAiB;AACjB,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AACzC,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,CAAC;AAChD,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AACvC,MAAM,CAAC,MAAM,0BAA0B,GAAG,EAAE,CAAC;AAC7C,MAAM,CAAC,MAAM,SAAS,GAAG,EAAE,CAAC;AAC5B,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC;AAC9B,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAEtC,SAAS;AACT,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAE9C,yCAAyC;AACzC,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC;AAClC,sCAAsC;AACtC,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,MAAM,CAAC,MAAM,2BAA2B,GAAG,UAAU,CAAC,CAAC,eAAe;AACtE,MAAM,CAAC,MAAM,yBAAyB,GAAG,UAAU,CAAC,CAAC,eAAe;AACpE,MAAM,CAAC,MAAM,2BAA2B,GAAG,UAAU,CAAC,CAAC,eAAe;AACtE,MAAM,CAAC,MAAM,4BAA4B,GAAG,UAAU,CAAC,CAAC,eAAe;AACvE,MAAM,CAAC,MAAM,kCAAkC,GAAG,UAAU,CAAC,CAAC,eAAe;AAC7E,MAAM,CAAC,MAAM,0CAA0C,GAAG,UAAU,CAAC,CAAC,eAAe;AAErF,oBAAoB;AACpB,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC,CAAC,8BAA8B;AACjE,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,CAAC,CAAC,cAAc;AACzD,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC,CAAC,wBAAwB;AAEhE,QAAQ;AACR,MAAM,CAAC,MAAM,qBAAqB,GAAG,qBAAqB,CAAC,CAAC,2EAA2E;AAEvI,sBAAsB;AACtB,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAC1C,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC;AAE5C,iBAAiB;AACjB,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AACzC,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,CAAC;AAChD,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AACvC,MAAM,CAAC,MAAM,0BAA0B,GAAG,EAAE,CAAC;AAC7C,MAAM,CAAC,MAAM,SAAS,GAAG,EAAE,CAAC;AAC5B,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC;AAC9B,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAEtC,SAAS;AACT,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAC9C,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC;AACjC,MAAM,CAAC,MAAM,UAAU,GAAG,UAAU,CAAC;AAErC,yCAAyC;AACzC,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC;AAClC,sCAAsC;AACtC,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC"}
package/dist/index.d.ts CHANGED
@@ -20,7 +20,7 @@ export interface Entry extends EntryOptions {
20
20
  /** Readable stream of entry data */
21
21
  readable: ReadableStream<ArrayBufferView<ArrayBufferLike>>;
22
22
  }
23
- export interface EntryInfoZip64 extends EntryOptionsInternal {
23
+ export interface EntryInfoInternal extends EntryOptionsInternal {
24
24
  /** Byte offset of the local file header within the ZIP archive */
25
25
  startOffset: bigint;
26
26
  /** CRC32 checksum of the uncompressed data */
@@ -30,7 +30,7 @@ export interface EntryInfoZip64 extends EntryOptionsInternal {
30
30
  /** Compressed size in bytes */
31
31
  compressedSize: bigint;
32
32
  /** Entry information is in ZIP64 format */
33
- zip64: true;
33
+ zip64: boolean;
34
34
  }
35
35
  export interface ZipInfo {
36
36
  /** Does the archive use ZIP64 format? */
@@ -42,13 +42,14 @@ export interface ZipInfo {
42
42
  /** Total size of the ZIP file */
43
43
  fileSize: bigint;
44
44
  }
45
+ export type EntryInfoZip64 = Omit<EntryInfoInternal, "nameBytes" | "commentBytes" | "zip64"> & {
46
+ zip64: true;
47
+ };
45
48
  export type EntryInfoStandard = {
46
49
  [K in keyof EntryInfoZip64]: EntryInfoZip64[K] extends bigint ? number : K extends "zip64" ? false : EntryInfoZip64[K];
47
50
  };
48
- export type EntryInfoInternal = EntryInfoZip64 | EntryInfoStandard;
49
- type OmitUnion<T, U extends keyof T> = T extends U ? never : Omit<T, U>;
50
- export type EntryInfo = OmitUnion<EntryInfoInternal, "nameBytes" | "commentBytes">;
51
- export declare class ZipWriter<TIsZip64 extends boolean = false> {
51
+ export type EntryInfo = EntryInfoZip64 | EntryInfoStandard;
52
+ export declare class ZipWriter {
52
53
  #private;
53
54
  /**
54
55
  * @param crc Optional CRC32 function to use. Defaults to zlib.crc32 on Node and a pure JS implementation in browsers.
@@ -107,5 +108,4 @@ export declare class ZipWriter<TIsZip64 extends boolean = false> {
107
108
  entries?: EntryInfo[];
108
109
  }): Promise<ZipInfo>;
109
110
  }
110
- export {};
111
111
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAoBA,MAAM,WAAW,YAAY;IAC3B,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB;IACjB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,wBAAwB;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,oBAAqB,SAAQ,YAAY;IACxD,yBAAyB;IACzB,SAAS,EAAE,UAAU,CAAC;IACtB,4BAA4B;IAC5B,YAAY,EAAE,UAAU,CAAC;CAC1B;AAED,MAAM,WAAW,KAAM,SAAQ,YAAY;IACzC,oCAAoC;IACpC,QAAQ,EAAE,cAAc,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,CAAC;CAC5D;AAED,MAAM,WAAW,cAAe,SAAQ,oBAAoB;IAC1D,kEAAkE;IAClE,WAAW,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,gBAAgB,EAAE,MAAM,CAAC;IACzB,+BAA+B;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,2CAA2C;IAC3C,KAAK,EAAE,IAAI,CAAC;CACb;AAED,MAAM,WAAW,OAAO;IACtB,yCAAyC;IACzC,KAAK,EAAE,OAAO,CAAC;IACf,6CAA6C;IAC7C,uBAAuB,EAAE,MAAM,CAAC;IAChC,2CAA2C;IAC3C,qBAAqB,EAAE,MAAM,CAAC;IAC9B,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,iBAAiB,GAAG;KAC7B,CAAC,IAAI,MAAM,cAAc,GAAG,cAAc,CAAC,CAAC,CAAC,SAAS,MAAM,GACzD,MAAM,GACN,CAAC,SAAS,OAAO,GACf,KAAK,GACL,cAAc,CAAC,CAAC,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,cAAc,GAAG,iBAAiB,CAAC;AAEnE,KAAK,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAExE,MAAM,MAAM,SAAS,GAAG,SAAS,CAC/B,iBAAiB,EACjB,WAAW,GAAG,cAAc,CAC7B,CAAC;AAIF,qBAAa,SAAS,CAAC,QAAQ,SAAS,OAAO,GAAG,KAAK;;IAoBrD;;OAEG;gBACS,EACV,KAAoB,GACrB,GAAE;QACD,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;KAC9D;IAIN,IAAI,QAAQ,qDAEX;IAED;;OAEG;IACH,OAAO,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAS/B;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,QAAQ,CAAC,EAAE,QAAQ,EAAE,GAAG,YAAY,EAAE,EAAE,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC;IAmKlE;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAE;QAAE,OAAO,CAAC,EAAE,SAAS,EAAE,CAAA;KAAO,GAAG,OAAO,CAAC,OAAO,CAAC;CAgFxE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,YAAY;IAC3B,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB;IACjB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,wBAAwB;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,oBAAqB,SAAQ,YAAY;IACxD,yBAAyB;IACzB,SAAS,EAAE,UAAU,CAAC;IACtB,4BAA4B;IAC5B,YAAY,EAAE,UAAU,CAAC;CAC1B;AAED,MAAM,WAAW,KAAM,SAAQ,YAAY;IACzC,oCAAoC;IACpC,QAAQ,EAAE,cAAc,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,CAAC;CAC5D;AAED,MAAM,WAAW,iBAAkB,SAAQ,oBAAoB;IAC7D,kEAAkE;IAClE,WAAW,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,gBAAgB,EAAE,MAAM,CAAC;IACzB,+BAA+B;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,2CAA2C;IAC3C,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,OAAO;IACtB,yCAAyC;IACzC,KAAK,EAAE,OAAO,CAAC;IACf,6CAA6C;IAC7C,uBAAuB,EAAE,MAAM,CAAC;IAChC,2CAA2C;IAC3C,qBAAqB,EAAE,MAAM,CAAC;IAC9B,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,cAAc,GAAG,IAAI,CAC/B,iBAAiB,EACjB,WAAW,GAAG,cAAc,GAAG,OAAO,CACvC,GAAG;IACF,KAAK,EAAE,IAAI,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;KAC7B,CAAC,IAAI,MAAM,cAAc,GAAG,cAAc,CAAC,CAAC,CAAC,SAAS,MAAM,GACzD,MAAM,GACN,CAAC,SAAS,OAAO,GACf,KAAK,GACL,cAAc,CAAC,CAAC,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,cAAc,GAAG,iBAAiB,CAAC;AAI3D,qBAAa,SAAS;;IAoBpB;;OAEG;gBACS,EACV,KAAoB,GACrB,GAAE;QACD,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;KAC9D;IAIN,IAAI,QAAQ,qDAEX;IAED;;OAEG;IACH,OAAO,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAM/B;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,QAAQ,CAAC,EAAE,QAAQ,EAAE,GAAG,YAAY,EAAE,EAAE,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC;IA4JlE;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAE;QAAE,OAAO,CAAC,EAAE,SAAS,EAAE,CAAA;KAAO,GAAG,OAAO,CAAC,OAAO,CAAC;CAiExE"}
package/dist/index.js CHANGED
@@ -1,7 +1,6 @@
1
- import { getDataDescriptorStandard, getDataDescriptorZip64, getLocalFileHeader, } from "./write-entry.js";
2
- import { getCDFH, getEOCDZip64, getEOCDStandard, } from "./write-central-directory.js";
3
- import { ZIP64_LIMIT } from "./constants.js";
4
- import { noop, validateEntryOptions } from "./utils.js";
1
+ import { getDataDescriptor, getLocalFileHeader } from "./write-entry.js";
2
+ import { getCDFH, getEOCD } from "./write-central-directory.js";
3
+ import { entryNeedsZip64, eocdNeedsZip64, getPublicEntryInfo, noop, validateEntryOptions, } from "./utils.js";
5
4
  import { crc32 as crc32Default } from "#crc32";
6
5
  import Mutex from "p-mutex";
7
6
  const BUFFER_SIZE = 16 * 1024; // 16 KB
@@ -39,10 +38,7 @@ export class ZipWriter {
39
38
  * Get an array of entry information for all entries added so far to the ZIP archive.
40
39
  */
41
40
  entries() {
42
- return this.#mutex.withLock(() => this.#entries.map((entry) => {
43
- const { nameBytes, commentBytes, ...publicEntryInfo } = entry;
44
- return publicEntryInfo;
45
- }));
41
+ return this.#mutex.withLock(() => this.#entries.map((entry) => getPublicEntryInfo(entry)));
46
42
  }
47
43
  /**
48
44
  * Create a new entry in the Zip archive. Use the returned
@@ -133,35 +129,23 @@ export class ZipWriter {
133
129
  // Await here to ensure all data has been written, so we know this.#offset is accurate
134
130
  await writer.ready;
135
131
  const compressedSize = this.#offset - fileStartOffset;
136
- const needsZip64 = uncompressedSize > ZIP64_LIMIT ||
137
- compressedSize > ZIP64_LIMIT ||
138
- startOffset > ZIP64_LIMIT;
139
- let entryInfo;
132
+ const needsZip64 = entryNeedsZip64({
133
+ uncompressedSize,
134
+ compressedSize,
135
+ startOffset,
136
+ });
137
+ const entryInfo = {
138
+ ...entryOptionsInternal,
139
+ startOffset,
140
+ crc32: checksum,
141
+ uncompressedSize,
142
+ compressedSize,
143
+ zip64: needsZip64,
144
+ };
140
145
  try {
141
146
  // This is in a try...catch because writing the data descriptor could fail,
142
147
  // and we want to abort the output zip readable stream if that happens.
143
- if (needsZip64) {
144
- entryInfo = {
145
- ...entryOptionsInternal,
146
- startOffset,
147
- crc32: checksum,
148
- uncompressedSize,
149
- compressedSize,
150
- zip64: true,
151
- };
152
- await writer.write(getDataDescriptorZip64(entryInfo));
153
- }
154
- else {
155
- entryInfo = {
156
- ...entryOptionsInternal,
157
- startOffset: Number(startOffset),
158
- crc32: checksum,
159
- uncompressedSize: Number(uncompressedSize),
160
- compressedSize: Number(compressedSize),
161
- zip64: false,
162
- };
163
- await writer.write(getDataDescriptorStandard(entryInfo));
164
- }
148
+ await writer.write(getDataDescriptor(entryInfo));
165
149
  }
166
150
  catch (err) {
167
151
  /* istanbul ignore next -- @preserve */
@@ -174,9 +158,7 @@ export class ZipWriter {
174
158
  }
175
159
  writer.releaseLock();
176
160
  this.#entries.push(entryInfo);
177
- // Clone to avoid mutation affecting our internal state
178
- const { nameBytes, commentBytes, ...publicEntryInfo } = entryInfo;
179
- return publicEntryInfo;
161
+ return getPublicEntryInfo(entryInfo);
180
162
  });
181
163
  // Avoid an uncaught rejection if the user doesn't await entryInfoPromise
182
164
  // - error handling can be done on the readable stream
@@ -192,7 +174,7 @@ export class ZipWriter {
192
174
  #setEntries(entries) {
193
175
  const currentEntriesByOffset = new Map();
194
176
  for (const entry of this.#entries) {
195
- currentEntriesByOffset.set(BigInt(entry.startOffset), entry);
177
+ currentEntriesByOffset.set(entry.startOffset, entry);
196
178
  }
197
179
  // Entries can't have their offset, crc32, compressed size, or uncompressed
198
180
  // size changed, but they can be removed, reordered, or have the name and
@@ -205,15 +187,19 @@ export class ZipWriter {
205
187
  if (existingEntry.crc32 !== entry.crc32) {
206
188
  throw new Error(`Cannot set entries: entry at offset ${entry.startOffset} has different CRC32`);
207
189
  }
208
- if (existingEntry.uncompressedSize !== entry.uncompressedSize) {
190
+ if (existingEntry.uncompressedSize !== BigInt(entry.uncompressedSize)) {
209
191
  throw new Error(`Cannot set entries: entry at offset ${entry.startOffset} has different uncompressed size`);
210
192
  }
211
- if (existingEntry.compressedSize !== entry.compressedSize) {
193
+ if (existingEntry.compressedSize !== BigInt(entry.compressedSize)) {
212
194
  throw new Error(`Cannot set entries: entry at offset ${entry.startOffset} has different compressed size`);
213
195
  }
214
196
  }
197
+ // TODO: edge-case a user could pass an entry with an invalid zip64 flag
215
198
  this.#entries = entries.map((entry) => ({
216
199
  ...entry,
200
+ uncompressedSize: BigInt(entry.uncompressedSize),
201
+ compressedSize: BigInt(entry.compressedSize),
202
+ startOffset: BigInt(entry.startOffset),
217
203
  nameBytes: textEncoder.encode(entry.name),
218
204
  commentBytes: entry.comment
219
205
  ? textEncoder.encode(entry.comment)
@@ -271,21 +257,16 @@ export class ZipWriter {
271
257
  }
272
258
  await writer.ready;
273
259
  const centralDirectorySize = this.#offset - centralDirectoryStart;
274
- // Determine if the archive needs ZIP64 based on entries or central directory
275
- const eocdNeedsZip64 = this.#entries.length > 0xffff ||
276
- centralDirectoryStart > ZIP64_LIMIT ||
277
- centralDirectorySize > ZIP64_LIMIT;
278
- let eocd;
279
- if (eocdNeedsZip64) {
280
- eocd = getEOCDZip64(BigInt(this.#entries.length), centralDirectoryStart, centralDirectorySize);
281
- }
282
- else {
283
- eocd = getEOCDStandard(this.#entries.length, Number(centralDirectoryStart), Number(centralDirectorySize));
284
- }
260
+ const eocdOptions = {
261
+ centralDirectoryStart,
262
+ centralDirectorySize,
263
+ entriesCount: this.#entries.length,
264
+ };
265
+ const eocd = getEOCD(eocdOptions);
285
266
  await writer.write(eocd);
286
267
  await writer.close();
287
268
  return {
288
- zip64: eocdNeedsZip64 || entryUsesZip64,
269
+ zip64: eocdNeedsZip64(eocdOptions) || entryUsesZip64,
289
270
  uncompressedEntriesSize,
290
271
  compressedEntriesSize,
291
272
  fileSize: this.#offset,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EACL,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,IAAI,EACJ,oBAAoB,GACrB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,KAAK,IAAI,YAAY,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,KAAK,MAAM,SAAS,CAAC;AAE5B,MAAM,WAAW,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,QAAQ;AACvC,MAAM,aAAa,GAAG,IAAI,yBAAyB,CAAC;IAClD,aAAa,EAAE,WAAW;CAC3B,CAAC,CAAC;AAoEH,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAEtC,MAAM,OAAO,SAAS;IACpB,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACpB,UAAU,GAAG,IAAI,eAAe,CAC9B;QACE,SAAS,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;YAC/B,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC3C,CAAC;KACF;IACD,gEAAgE;IAChE,aAAa;IACb,wEAAwE;IACxE,yBAAyB;IACzB,aAAa,CACd,CAAC;IACF,QAAQ,GAAkC,EAAE,CAAC;IAC7C,MAAM,CAAC;IACP,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;IACrB,UAAU,GAAG,KAAK,CAAC;IAEnB;;OAEG;IACH,YAAY,EACV,KAAK,GAAG,YAAY,MAGlB,EAAE;QACJ,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAC/B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CACxD,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,QAAQ,CAAC,EAAE,QAAQ,EAAE,GAAG,YAAY,EAAS;QAC3C,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,IAAI,SAAS,CAAC,mDAAmD,CAAC,CAAC;QAC3E,CAAC;QACD,iDAAiD;QACjD,MAAM,oBAAoB,GAAyB;YACjD,GAAG,YAAY;YACf,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC;YAChD,YAAY,EAAE,YAAY,CAAC,OAAO;gBAChC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC;gBAC1C,CAAC,CAAC,IAAI,UAAU,EAAE;SACrB,CAAC;QACF,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;QAC3C,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YACvD,gCAAgC;YAChC,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;YAClD,MAAM,MAAM,CAAC,KAAK,CAAC;YACnB,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC;YACjC,IAAI,CAAC;gBACH,oEAAoE;gBACpE,0DAA0D;gBAC1D,MAAM,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,CAAC,CAAC;gBAC7D,4EAA4E;gBAC5E,MAAM,MAAM,CAAC,KAAK,CAAC;YACrB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,6DAA6D;gBAC7D,uCAAuC;gBACvC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACrB,wEAAwE;gBACxE,iDAAiD;gBACjD,uCAAuC;gBACvC,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACxB,uCAAuC;gBACvC,MAAM,CAAC,WAAW,EAAE,CAAC;gBACrB,uCAAuC;gBACvC,MAAM,GAAG,CAAC;YACZ,CAAC;YAED,MAAM,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC;YAErC,wBAAwB;YACxB,IAAI,gBAAgB,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,QAAQ,GAAG,CAAC,CAAC;YACjB,MAAM,gBAAgB,GAAG,IAAI,eAAe,CAAC;gBAC3C,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;oBACrC,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;oBAC5C,gBAAgB,IAAI,UAAU,CAAC;oBAC/B,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;oBACxC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC5B,CAAC;aACF,CAAC,CAAC;YACH,MAAM,iBAAiB,GAAG,YAAY,CAAC,KAAK;gBAC1C,CAAC,CAAC,IAAI,eAAe,EAAE;gBACvB,CAAC,CAAC,IAAI,iBAAiB,CAAC,aAAa,CAAC,CAAC;YACzC,MAAM,QAAQ;iBACX,WAAW,CAAC,gBAAgB,CAAC;iBAC7B,WAAW,CAAC,iBAAiB,CAAC;iBAC9B,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;YAE5D,8BAA8B;YAC9B,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;YAC9C,sFAAsF;YACtF,MAAM,MAAM,CAAC,KAAK,CAAC;YACnB,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,GAAG,eAAe,CAAC;YACtD,MAAM,UAAU,GAAG,eAAe,CAAC;gBACjC,gBAAgB;gBAChB,cAAc;gBACd,WAAW;aACZ,CAAC,CAAC;YACH,MAAM,SAAS,GAAsB;gBACnC,GAAG,oBAAoB;gBACvB,WAAW;gBACX,KAAK,EAAE,QAAQ;gBACf,gBAAgB;gBAChB,cAAc;gBACd,KAAK,EAAE,UAAU;aAClB,CAAC;YACF,IAAI,CAAC;gBACH,2EAA2E;gBAC3E,uEAAuE;gBACvE,MAAM,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC;YACnD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,uCAAuC;gBACvC,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACxB,uCAAuC;gBACvC,MAAM,CAAC,WAAW,EAAE,CAAC;gBACrB,sFAAsF;gBACtF,uCAAuC;gBACvC,MAAM,GAAG,CAAC;YACZ,CAAC;YACD,MAAM,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC9B,OAAO,kBAAkB,CAAC,SAAS,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QACH,yEAAyE;QACzE,sDAAsD;QACtD,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7B,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,OAAoB;QAC9B,MAAM,sBAAsB,GAAG,IAAI,GAAG,EAGnC,CAAC;QACJ,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QACvD,CAAC;QACD,2EAA2E;QAC3E,yEAAyE;QACzE,mBAAmB;QACnB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,aAAa,GAAG,sBAAsB,CAAC,GAAG,CAC9C,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAC1B,CAAC;YACF,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CACb,uCAAuC,KAAK,CAAC,WAAW,iBAAiB,CAC1E,CAAC;YACJ,CAAC;YACD,IAAI,aAAa,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC;gBACxC,MAAM,IAAI,KAAK,CACb,uCAAuC,KAAK,CAAC,WAAW,sBAAsB,CAC/E,CAAC;YACJ,CAAC;YACD,IAAI,aAAa,CAAC,gBAAgB,KAAK,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACtE,MAAM,IAAI,KAAK,CACb,uCAAuC,KAAK,CAAC,WAAW,kCAAkC,CAC3F,CAAC;YACJ,CAAC;YACD,IAAI,aAAa,CAAC,cAAc,KAAK,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;gBAClE,MAAM,IAAI,KAAK,CACb,uCAAuC,KAAK,CAAC,WAAW,gCAAgC,CACzF,CAAC;YACJ,CAAC;QACH,CAAC;QACD,wEAAwE;QACxE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACtC,GAAG,KAAK;YACR,gBAAgB,EAAE,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC;YAChD,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC;YAC5C,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC;YACtC,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;YACzC,YAAY,EAAE,KAAK,CAAC,OAAO;gBACzB,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;gBACnC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC;SACtB,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,EAAE,OAAO,KAAgC,EAAE;QAClD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,IAAI,SAAS,CAAC,oCAAoC,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YACrD,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC;oBACH,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAC5B,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,qEAAqE;oBACrE,sEAAsE;oBACtE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACpC,MAAM,GAAG,CAAC;gBACZ,CAAC;YACH,CAAC;YACD,kDAAkD;YAClD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;YACpD,MAAM,MAAM,CAAC,KAAK,CAAC;YACnB,MAAM,qBAAqB,GAAG,IAAI,CAAC,OAAO,CAAC;YAE3C,IAAI,CAAC;gBACH,IAAI,cAAc,GAAG,KAAK,CAAC;gBAC3B,IAAI,uBAAuB,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBACxC,IAAI,qBAAqB,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBACtC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;wBAChB,cAAc,GAAG,IAAI,CAAC;oBACxB,CAAC;oBACD,uBAAuB,IAAI,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;oBAC1D,qBAAqB,IAAI,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;oBACtD,MAAM,MAAM,CAAC,KAAK,CAAC;oBACnB,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;gBACrC,CAAC;gBAED,MAAM,MAAM,CAAC,KAAK,CAAC;gBACnB,MAAM,oBAAoB,GAAG,IAAI,CAAC,OAAO,GAAG,qBAAqB,CAAC;gBAClE,MAAM,WAAW,GAAG;oBAClB,qBAAqB;oBACrB,oBAAoB;oBACpB,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM;iBACnC,CAAC;gBACF,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;gBAElC,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACzB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;gBAErB,OAAO;oBACL,KAAK,EAAE,cAAc,CAAC,WAAW,CAAC,IAAI,cAAc;oBACpD,uBAAuB;oBACvB,qBAAqB;oBACrB,QAAQ,EAAE,IAAI,CAAC,OAAO;iBACvB,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACxB,MAAM,GAAG,CAAC;YACZ,CAAC;oBAAS,CAAC;gBACT,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,CAAC;QACH,CAAC,CAAC,CAAC;QACH,2EAA2E;QAC3E,8CAA8C;QAC9C,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3B,OAAO,cAAc,CAAC;IACxB,CAAC;CACF"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Helper for creating a ReadableStream from a Uint8Array
3
+ * with proper backpressure handling.
4
+ *
5
+ * @param data The input Uint8Array
6
+ */
7
+ export declare function readableFromBytes(data: Uint8Array<ArrayBuffer>): ReadableStream<ArrayBufferView<ArrayBufferLike>>;
8
+ //# sourceMappingURL=readable-from-bytes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readable-from-bytes.d.ts","sourceRoot":"","sources":["../src/readable-from-bytes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,oDAsB9D"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Helper for creating a ReadableStream from a Uint8Array
3
+ * with proper backpressure handling.
4
+ *
5
+ * @param data The input Uint8Array
6
+ */
7
+ export function readableFromBytes(data) {
8
+ let offset = 0;
9
+ return new ReadableStream({
10
+ pull(controller) {
11
+ if (offset >= data.byteLength) {
12
+ controller.close();
13
+ return;
14
+ }
15
+ const chunkSize = Math.min(
16
+ // desiredSize can't be null here - it's only null after close()
17
+ // It could be <=0 under some circumstances, so ensure at least 1 byte is read
18
+ Math.max(controller.desiredSize, 1), data.byteLength - offset);
19
+ const chunk = data.subarray(offset, offset + chunkSize);
20
+ controller.enqueue(chunk);
21
+ offset += chunkSize;
22
+ },
23
+ }, new ByteLengthQueuingStrategy({ highWaterMark: 16 * 1024 }));
24
+ }
25
+ //# sourceMappingURL=readable-from-bytes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readable-from-bytes.js","sourceRoot":"","sources":["../src/readable-from-bytes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAA6B;IAC7D,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,OAAO,IAAI,cAAc,CACvB;QACE,IAAI,CAAC,UAAU;YACb,IAAI,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC9B,UAAU,CAAC,KAAK,EAAE,CAAC;gBACnB,OAAO;YACT,CAAC;YACD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG;YACxB,gEAAgE;YAChE,8EAA8E;YAC9E,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,WAAY,EAAE,CAAC,CAAC,EACpC,IAAI,CAAC,UAAU,GAAG,MAAM,CACzB,CAAC;YACF,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;YACxD,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC1B,MAAM,IAAI,SAAS,CAAC;QACtB,CAAC;KACF,EACD,IAAI,yBAAyB,CAAC,EAAE,aAAa,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC,CAC5D,CAAC;AACJ,CAAC"}
package/dist/utils.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import type { EntryInfo, EntryInfoInternal } from "./index.js";
1
2
  export declare function getDosTime(date: Date): number;
2
3
  export declare function getDosDate(date: Date): number;
3
4
  export declare function noop(): void;
@@ -20,5 +21,12 @@ declare const OFFSETS: {
20
21
  setBigUint64: number;
21
22
  };
22
23
  export declare function writeDataView(view: DataView, values: DataViewValue[], offset?: number): number;
24
+ export declare function entryNeedsZip64({ uncompressedSize, compressedSize, startOffset, }: Pick<EntryInfoInternal, "uncompressedSize" | "compressedSize" | "startOffset">): boolean;
25
+ export declare function eocdNeedsZip64(options: {
26
+ centralDirectoryStart: bigint;
27
+ centralDirectorySize: bigint;
28
+ entriesCount: number;
29
+ }): boolean;
30
+ export declare function getPublicEntryInfo(entryInfo: EntryInfoInternal): EntryInfo;
23
31
  export {};
24
32
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAM7C;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAM7C;AAED,wBAAgB,IAAI,SAAK;AAEzB;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,SAAS,EACT,YAAY,EACZ,IAAI,GACL,EAAE;IACD,SAAS,EAAE,UAAU,CAAC;IACtB,YAAY,EAAE,UAAU,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,IAAI,CAuBP;AAED,KAAK,aAAa,CAAC,CAAC,SAAS,MAAM,OAAO,OAAO,GAAG,MAAM,OAAO,OAAO,IACtE,CAAC,SAAS,cAAc,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAEzE,eAAO,MAAM,MAAM,cAAc,CAAC;AAClC,eAAO,MAAM,MAAM,cAAc,CAAC;AAClC,eAAO,MAAM,MAAM,iBAAiB,CAAC;AAGrC,QAAA,MAAM,OAAO;;;;CAImB,CAAC;AAEjC,wBAAgB,aAAa,CAC3B,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,aAAa,EAAE,EACvB,MAAM,GAAE,MAAU,GACjB,MAAM,CAOR"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,SAAS,EACT,iBAAiB,EAGlB,MAAM,YAAY,CAAC;AAEpB,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAM7C;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAM7C;AAED,wBAAgB,IAAI,SAAK;AAEzB;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,SAAS,EACT,YAAY,EACZ,IAAI,GACL,EAAE;IACD,SAAS,EAAE,UAAU,CAAC;IACtB,YAAY,EAAE,UAAU,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,IAAI,CAuBP;AAED,KAAK,aAAa,CAAC,CAAC,SAAS,MAAM,OAAO,OAAO,GAAG,MAAM,OAAO,OAAO,IACtE,CAAC,SAAS,cAAc,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAEzE,eAAO,MAAM,MAAM,cAAc,CAAC;AAClC,eAAO,MAAM,MAAM,cAAc,CAAC;AAClC,eAAO,MAAM,MAAM,iBAAiB,CAAC;AAGrC,QAAA,MAAM,OAAO;;;;CAImB,CAAC;AAEjC,wBAAgB,aAAa,CAC3B,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,aAAa,EAAE,EACvB,MAAM,GAAE,MAAU,GACjB,MAAM,CAOR;AAED,wBAAgB,eAAe,CAAC,EAC9B,gBAAgB,EAChB,cAAc,EACd,WAAW,GACZ,EAAE,IAAI,CACL,iBAAiB,EACjB,kBAAkB,GAAG,gBAAgB,GAAG,aAAa,CACtD,GAAG,OAAO,CAMV;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE;IACtC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAMV;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,iBAAiB,GAAG,SAAS,CAgB1E"}
package/dist/utils.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { ZIP64_LIMIT } from "./constants.js";
1
2
  export function getDosTime(date) {
2
3
  return ((date.getHours() << 11) |
3
4
  (date.getMinutes() << 5) |
@@ -45,4 +46,32 @@ export function writeDataView(view, values, offset = 0) {
45
46
  }
46
47
  return offset;
47
48
  }
49
+ export function entryNeedsZip64({ uncompressedSize, compressedSize, startOffset, }) {
50
+ return (uncompressedSize >= ZIP64_LIMIT ||
51
+ compressedSize >= ZIP64_LIMIT ||
52
+ startOffset >= ZIP64_LIMIT);
53
+ }
54
+ export function eocdNeedsZip64(options) {
55
+ return (options.centralDirectoryStart >= ZIP64_LIMIT ||
56
+ options.centralDirectorySize >= ZIP64_LIMIT ||
57
+ options.entriesCount >= 0xffff);
58
+ }
59
+ export function getPublicEntryInfo(entryInfo) {
60
+ const { nameBytes, commentBytes, ...rest } = entryInfo;
61
+ if (rest.zip64) {
62
+ return {
63
+ ...rest,
64
+ zip64: true,
65
+ };
66
+ }
67
+ else {
68
+ return {
69
+ ...rest,
70
+ zip64: false,
71
+ uncompressedSize: Number(rest.uncompressedSize),
72
+ compressedSize: Number(rest.compressedSize),
73
+ startOffset: Number(rest.startOffset),
74
+ };
75
+ }
76
+ }
48
77
  //# sourceMappingURL=utils.js.map
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,UAAU,CAAC,IAAU;IACnC,OAAO,CACL,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;QACvB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACxB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CACzB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAU;IACnC,OAAO,CACL,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,OAAO,EAAE,CACf,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,IAAI,KAAI,CAAC;AAEzB;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,EACnC,SAAS,EACT,YAAY,EACZ,IAAI,GAKL;IACC,gBAAgB;IAChB,IAAI,SAAS,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;QAC9B,MAAM,IAAI,UAAU,CAClB,wDAAwD,SAAS,CAAC,MAAM,SAAS,CAClF,CAAC;IACJ,CAAC;IAED,mBAAmB;IACnB,IAAI,YAAY,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;QACjC,MAAM,IAAI,UAAU,CAClB,2DAA2D,YAAY,CAAC,MAAM,SAAS,CACxF,CAAC;IACJ,CAAC;IAED,4FAA4F;IAC5F,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,MAAM,EAAE,CAAC;YACzD,MAAM,IAAI,UAAU,CAClB,yDAAyD,IAAI,GAAG,CACjE,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAKD,MAAM,CAAC,MAAM,MAAM,GAAG,WAAW,CAAC;AAClC,MAAM,CAAC,MAAM,MAAM,GAAG,WAAW,CAAC;AAClC,MAAM,CAAC,MAAM,MAAM,GAAG,cAAc,CAAC;AAGrC,MAAM,OAAO,GAAG;IACd,SAAS,EAAE,CAAC;IACZ,SAAS,EAAE,CAAC;IACZ,YAAY,EAAE,CAAC;CACe,CAAC;AAEjC,MAAM,UAAU,aAAa,CAC3B,IAAc,EACd,MAAuB,EACvB,SAAiB,CAAC;IAElB,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC,IAAI,MAAM,EAAE,CAAC;QACnD,mBAAmB;QACnB,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;QAC1C,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
@@ -10,5 +10,9 @@ export declare function getEOCDStandard(entriesCount: number, centralDirectoryOf
10
10
  /**
11
11
  * Generate the ZIP64 End of Central Directory record.
12
12
  */
13
- export declare function getEOCDZip64(entriesCount: bigint, centralDirectoryOffset: bigint, centralDirectorySize: bigint): Uint8Array<ArrayBuffer>;
13
+ export declare function getEOCD(options: {
14
+ entriesCount: number;
15
+ centralDirectoryStart: bigint;
16
+ centralDirectorySize: bigint;
17
+ }): Uint8Array<ArrayBuffer>;
14
18
  //# sourceMappingURL=write-central-directory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"write-central-directory.d.ts","sourceRoot":"","sources":["../src/write-central-directory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,iBAAiB,EAGlB,MAAM,YAAY,CAAC;AAgCpB;;GAEG;AACH,wBAAgB,OAAO,CAAC,SAAS,EAAE,iBAAiB,GAAG,UAAU,CAAC,WAAW,CAAC,CAM7E;AAuJD;;GAEG;AACH,wBAAgB,eAAe,CAC7B,YAAY,EAAE,MAAM,EACpB,sBAAsB,EAAE,MAAM,EAC9B,oBAAoB,EAAE,MAAM,GAC3B,UAAU,CAAC,WAAW,CAAC,CAwBzB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,YAAY,EAAE,MAAM,EACpB,sBAAsB,EAAE,MAAM,EAC9B,oBAAoB,EAAE,MAAM,GAC3B,UAAU,CAAC,WAAW,CAAC,CA6DzB"}
1
+ {"version":3,"file":"write-central-directory.d.ts","sourceRoot":"","sources":["../src/write-central-directory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,iBAAiB,EAGlB,MAAM,YAAY,CAAC;AAiCpB;;GAEG;AACH,wBAAgB,OAAO,CAAC,SAAS,EAAE,iBAAiB,GAAG,UAAU,CAAC,WAAW,CAAC,CAoG7E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,YAAY,EAAE,MAAM,EACpB,sBAAsB,EAAE,MAAM,EAC9B,oBAAoB,EAAE,MAAM,GAC3B,UAAU,CAAC,WAAW,CAAC,CAwBzB;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,oBAAoB,EAAE,MAAM,CAAC;CAC9B,GAAG,UAAU,CAAC,WAAW,CAAC,CAkF1B"}
@@ -1,90 +1,29 @@
1
- import { CENTRAL_DIRECTORY_SIGNATURE, END_OF_CENTRAL_DIR_SIGNATURE, ZIP64_END_OF_CENTRAL_DIR_SIGNATURE, ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIGNATURE, VERSION_MADE_BY, VERSION_NEEDED_STANDARD, VERSION_NEEDED_ZIP64, GENERAL_PURPOSE_FLAGS, COMPRESSION_METHOD_STORE, COMPRESSION_METHOD_DEFLATE, ZIP64_LIMIT, CENTRAL_DIRECTORY_HEADER_SIZE, EOCD_SIZE, EOCD64_SIZE, EOCD64_LOCATOR_SIZE, BIG_ENDIAN, LITTLE_ENDIAN, } from "./constants.js";
2
- import { getDosTime, getDosDate, writeDataView, UINT16, UINT32, UINT64, validateEntryOptions, } from "./utils.js";
3
- const textEncoder = new TextEncoder();
1
+ import { CENTRAL_DIRECTORY_SIGNATURE, END_OF_CENTRAL_DIR_SIGNATURE, ZIP64_END_OF_CENTRAL_DIR_SIGNATURE, ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIGNATURE, VERSION_MADE_BY, VERSION_NEEDED_STANDARD, VERSION_NEEDED_ZIP64, GENERAL_PURPOSE_FLAGS, COMPRESSION_METHOD_STORE, COMPRESSION_METHOD_DEFLATE, ZIP64_LIMIT, CENTRAL_DIRECTORY_HEADER_SIZE, EOCD_SIZE, EOCD64_SIZE, EOCD64_LOCATOR_SIZE, BIG_ENDIAN, LITTLE_ENDIAN, MAX_2_BYTE, MAX_4_BYTE, } from "./constants.js";
2
+ import { getDosTime, getDosDate, writeDataView, UINT16, UINT32, UINT64, validateEntryOptions, eocdNeedsZip64, } from "./utils.js";
4
3
  /**
5
4
  * Generate the Central Directory File Header for the given entry info.
6
5
  */
7
6
  export function getCDFH(entryInfo) {
8
- if (entryInfo.zip64) {
9
- return getCDFHZip64(entryInfo);
10
- }
11
- else {
12
- return getCDFHStandard(entryInfo);
13
- }
14
- }
15
- function getCDFHStandard(entryInfo) {
16
- const { nameBytes, commentBytes } = entryInfo;
7
+ const { nameBytes, commentBytes, zip64 } = entryInfo;
17
8
  validateEntryOptions(entryInfo);
18
- const headerSize = CENTRAL_DIRECTORY_HEADER_SIZE + nameBytes.length + commentBytes.length;
19
- const header = new Uint8Array(headerSize);
20
- const view = new DataView(header.buffer);
21
- const date = entryInfo.date || new Date();
22
- const externalAttrs = entryInfo.mode ? entryInfo.mode << 16 : 0;
23
- const compressionMethod = entryInfo.store
24
- ? COMPRESSION_METHOD_STORE
25
- : COMPRESSION_METHOD_DEFLATE;
26
- let offset = writeDataView(view, [
27
- // Central directory file header signature
28
- [UINT32, CENTRAL_DIRECTORY_SIGNATURE, BIG_ENDIAN],
29
- // Version made by
30
- [UINT16, VERSION_MADE_BY, LITTLE_ENDIAN],
31
- // Version needed to extract
32
- [UINT16, VERSION_NEEDED_STANDARD, LITTLE_ENDIAN],
33
- // General purpose bit flag
34
- [UINT16, GENERAL_PURPOSE_FLAGS, LITTLE_ENDIAN],
35
- // Compression method
36
- [UINT16, compressionMethod, LITTLE_ENDIAN],
37
- // Last mod file time & date
38
- [UINT16, getDosTime(date), LITTLE_ENDIAN],
39
- [UINT16, getDosDate(date), LITTLE_ENDIAN],
40
- // CRC-32
41
- [UINT32, entryInfo.crc32, LITTLE_ENDIAN],
42
- // Compressed size
43
- [UINT32, entryInfo.compressedSize, LITTLE_ENDIAN],
44
- // Uncompressed size
45
- [UINT32, entryInfo.uncompressedSize, LITTLE_ENDIAN],
46
- // File name length
47
- [UINT16, nameBytes.length, LITTLE_ENDIAN],
48
- // Extra field length
49
- [UINT16, 0, LITTLE_ENDIAN],
50
- // File comment length
51
- [UINT16, commentBytes.length, LITTLE_ENDIAN],
52
- // Disk number start
53
- [UINT16, 0, LITTLE_ENDIAN],
54
- // Internal file attributes
55
- [UINT16, 0, LITTLE_ENDIAN],
56
- // External file attributes (Unix permissions if provided)
57
- [UINT32, externalAttrs, LITTLE_ENDIAN],
58
- // Relative offset of local header
59
- [UINT32, entryInfo.startOffset, LITTLE_ENDIAN],
60
- ]);
61
- // File name
62
- header.set(nameBytes, offset);
63
- offset += nameBytes.length;
64
- // File comment
65
- if (commentBytes.length > 0) {
66
- header.set(commentBytes, offset);
9
+ let extraField = new Uint8Array(0);
10
+ if (zip64) {
11
+ // Extra field for ZIP64
12
+ extraField = new Uint8Array(28); // ZIP64 extra field
13
+ const extraView = new DataView(extraField.buffer);
14
+ writeDataView(extraView, [
15
+ // ZIP64 extra field tag
16
+ [UINT16, 0x0001, LITTLE_ENDIAN],
17
+ // Size of extra field data (3x 8-byte fields)
18
+ [UINT16, 24, LITTLE_ENDIAN],
19
+ // Original size
20
+ [UINT64, entryInfo.uncompressedSize, LITTLE_ENDIAN],
21
+ // Compressed size
22
+ [UINT64, entryInfo.compressedSize, LITTLE_ENDIAN],
23
+ // Relative header offset
24
+ [UINT64, entryInfo.startOffset, LITTLE_ENDIAN],
25
+ ]);
67
26
  }
68
- return header;
69
- }
70
- function getCDFHZip64(entryInfo) {
71
- const { nameBytes, commentBytes } = entryInfo;
72
- validateEntryOptions(entryInfo);
73
- // Extra field for ZIP64
74
- const extraField = new Uint8Array(28); // ZIP64 extra field
75
- const extraView = new DataView(extraField.buffer);
76
- writeDataView(extraView, [
77
- // ZIP64 extra field tag
78
- [UINT16, 0x0001, LITTLE_ENDIAN],
79
- // Size of extra field data (3x 8-byte fields)
80
- [UINT16, 24, LITTLE_ENDIAN],
81
- // Original size
82
- [UINT64, entryInfo.uncompressedSize, LITTLE_ENDIAN],
83
- // Compressed size
84
- [UINT64, entryInfo.compressedSize, LITTLE_ENDIAN],
85
- // Relative header offset
86
- [UINT64, entryInfo.startOffset, LITTLE_ENDIAN],
87
- ]);
88
27
  const headerSize = CENTRAL_DIRECTORY_HEADER_SIZE +
89
28
  nameBytes.length +
90
29
  extraField.length +
@@ -102,7 +41,11 @@ function getCDFHZip64(entryInfo) {
102
41
  // Version made by
103
42
  [UINT16, VERSION_MADE_BY, LITTLE_ENDIAN],
104
43
  // Version needed to extract
105
- [UINT16, VERSION_NEEDED_ZIP64, LITTLE_ENDIAN],
44
+ [
45
+ UINT16,
46
+ zip64 ? VERSION_NEEDED_ZIP64 : VERSION_NEEDED_STANDARD,
47
+ LITTLE_ENDIAN,
48
+ ],
106
49
  // General purpose bit flag
107
50
  [UINT16, GENERAL_PURPOSE_FLAGS, LITTLE_ENDIAN],
108
51
  // Compression method
@@ -113,9 +56,17 @@ function getCDFHZip64(entryInfo) {
113
56
  // CRC-32
114
57
  [UINT32, entryInfo.crc32, LITTLE_ENDIAN],
115
58
  // Compressed size (0xFFFFFFFF for ZIP64)
116
- [UINT32, 0xffffffff, LITTLE_ENDIAN],
59
+ [
60
+ UINT32,
61
+ zip64 ? MAX_4_BYTE : Number(entryInfo.compressedSize),
62
+ LITTLE_ENDIAN,
63
+ ],
117
64
  // Uncompressed size (0xFFFFFFFF for ZIP64)
118
- [UINT32, 0xffffffff, LITTLE_ENDIAN],
65
+ [
66
+ UINT32,
67
+ zip64 ? MAX_4_BYTE : Number(entryInfo.uncompressedSize),
68
+ LITTLE_ENDIAN,
69
+ ],
119
70
  // File name length
120
71
  [UINT16, nameBytes.length, LITTLE_ENDIAN],
121
72
  // Extra field length
@@ -129,14 +80,16 @@ function getCDFHZip64(entryInfo) {
129
80
  // External file attributes (Unix permissions if provided)
130
81
  [UINT32, externalAttrs, LITTLE_ENDIAN],
131
82
  // Relative offset of local header (0xFFFFFFFF for ZIP64)
132
- [UINT32, 0xffffffff, LITTLE_ENDIAN],
83
+ [UINT32, zip64 ? 0xffffffff : Number(entryInfo.startOffset), LITTLE_ENDIAN],
133
84
  ]);
134
85
  // File name
135
86
  header.set(nameBytes, offset);
136
87
  offset += nameBytes.length;
137
88
  // Extra field
138
- header.set(extraField, offset);
139
- offset += extraField.length;
89
+ if (extraField.length > 0) {
90
+ header.set(extraField, offset);
91
+ offset += extraField.length;
92
+ }
140
93
  // File comment
141
94
  if (commentBytes.length > 0) {
142
95
  header.set(commentBytes, offset);
@@ -172,42 +125,51 @@ export function getEOCDStandard(entriesCount, centralDirectoryOffset, centralDir
172
125
  /**
173
126
  * Generate the ZIP64 End of Central Directory record.
174
127
  */
175
- export function getEOCDZip64(entriesCount, centralDirectoryOffset, centralDirectorySize) {
176
- const totalSize = EOCD64_SIZE + EOCD64_LOCATOR_SIZE + EOCD_SIZE;
128
+ export function getEOCD(options) {
129
+ const zip64 = eocdNeedsZip64(options);
130
+ const { entriesCount, centralDirectoryStart, centralDirectorySize } = options;
131
+ const totalSize = zip64
132
+ ? EOCD64_SIZE + EOCD64_LOCATOR_SIZE + EOCD_SIZE
133
+ : EOCD_SIZE;
177
134
  const buffer = new Uint8Array(totalSize);
178
135
  const view = new DataView(buffer.buffer);
179
- let offset = writeDataView(view, [
180
- // === ZIP64 End of Central Directory Record ===
181
- // End of central dir signature
182
- [UINT32, ZIP64_END_OF_CENTRAL_DIR_SIGNATURE, BIG_ENDIAN],
183
- // Size of zip64 end of central directory record excluding the leading 12 bytes
184
- [UINT64, BigInt(EOCD64_SIZE - 12), LITTLE_ENDIAN],
185
- // Version made by
186
- [UINT16, VERSION_MADE_BY, LITTLE_ENDIAN],
187
- // Version needed to extract
188
- [UINT16, VERSION_NEEDED_ZIP64, LITTLE_ENDIAN],
189
- // Number of this disk
190
- [UINT32, 0, LITTLE_ENDIAN],
191
- // Disk where central directory starts
192
- [UINT32, 0, LITTLE_ENDIAN],
193
- // Number of central directory records on this disk
194
- [UINT64, entriesCount, LITTLE_ENDIAN],
195
- // Total number of central directory records
196
- [UINT64, entriesCount, LITTLE_ENDIAN],
197
- // Size of central directory
198
- [UINT64, centralDirectorySize, LITTLE_ENDIAN],
199
- // Offset of start of central directory
200
- [UINT64, centralDirectoryOffset, LITTLE_ENDIAN],
201
- // === ZIP64 End of Central Directory Locator ===
202
- // Zip64 end of central dir locator signature
203
- [UINT32, ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIGNATURE, BIG_ENDIAN],
204
- // Number of the disk with the start of the zip64 end of central directory
205
- [UINT32, 0, LITTLE_ENDIAN],
206
- // Relative offset of the zip64 end of central directory record
207
- [UINT64, centralDirectoryOffset + centralDirectorySize, LITTLE_ENDIAN],
208
- // Total number of disks
209
- [UINT32, 1, LITTLE_ENDIAN],
210
- // === Standard End of Central Directory Record ===
136
+ let offset = 0;
137
+ if (zip64) {
138
+ offset = writeDataView(view, [
139
+ // === ZIP64 End of Central Directory Record ===
140
+ // End of central dir signature
141
+ [UINT32, ZIP64_END_OF_CENTRAL_DIR_SIGNATURE, BIG_ENDIAN],
142
+ // Size of zip64 end of central directory record excluding the leading 12 bytes
143
+ [UINT64, BigInt(EOCD64_SIZE - 12), LITTLE_ENDIAN],
144
+ // Version made by
145
+ [UINT16, VERSION_MADE_BY, LITTLE_ENDIAN],
146
+ // Version needed to extract
147
+ [UINT16, VERSION_NEEDED_ZIP64, LITTLE_ENDIAN],
148
+ // Number of this disk
149
+ [UINT32, 0, LITTLE_ENDIAN],
150
+ // Disk where central directory starts
151
+ [UINT32, 0, LITTLE_ENDIAN],
152
+ // Number of central directory records on this disk
153
+ [UINT64, BigInt(entriesCount), LITTLE_ENDIAN],
154
+ // Total number of central directory records
155
+ [UINT64, BigInt(entriesCount), LITTLE_ENDIAN],
156
+ // Size of central directory
157
+ [UINT64, centralDirectorySize, LITTLE_ENDIAN],
158
+ // Offset of start of central directory
159
+ [UINT64, centralDirectoryStart, LITTLE_ENDIAN],
160
+ // === ZIP64 End of Central Directory Locator ===
161
+ // Zip64 end of central dir locator signature
162
+ [UINT32, ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIGNATURE, BIG_ENDIAN],
163
+ // Number of the disk with the start of the zip64 end of central directory
164
+ [UINT32, 0, LITTLE_ENDIAN],
165
+ // Relative offset of the zip64 end of central directory record
166
+ [UINT64, centralDirectoryStart + centralDirectorySize, LITTLE_ENDIAN],
167
+ // Total number of disks
168
+ [UINT32, 1, LITTLE_ENDIAN],
169
+ ]);
170
+ }
171
+ // === Standard End of Central Directory Record ===
172
+ writeDataView(view, [
211
173
  // End of central dir signature
212
174
  [UINT32, END_OF_CENTRAL_DIR_SIGNATURE, BIG_ENDIAN],
213
175
  // Number of this disk
@@ -215,16 +177,24 @@ export function getEOCDZip64(entriesCount, centralDirectoryOffset, centralDirect
215
177
  // Disk where central directory starts
216
178
  [UINT16, 0, LITTLE_ENDIAN],
217
179
  // Number of central directory records on this disk
218
- [UINT16, 0xffff, LITTLE_ENDIAN],
180
+ [UINT16, zip64 ? MAX_2_BYTE : entriesCount, LITTLE_ENDIAN],
219
181
  // Total number of central directory records
220
- [UINT16, 0xffff, LITTLE_ENDIAN],
182
+ [UINT16, zip64 ? MAX_2_BYTE : entriesCount, LITTLE_ENDIAN],
221
183
  // Size of central directory
222
- [UINT32, 0xffffffff, LITTLE_ENDIAN],
184
+ [
185
+ UINT32,
186
+ zip64 ? MAX_4_BYTE : Number(centralDirectorySize),
187
+ LITTLE_ENDIAN,
188
+ ],
223
189
  // Offset of start of central directory
224
- [UINT32, 0xffffffff, LITTLE_ENDIAN],
190
+ [
191
+ UINT32,
192
+ zip64 ? MAX_4_BYTE : Number(centralDirectoryStart),
193
+ LITTLE_ENDIAN,
194
+ ],
225
195
  // ZIP file comment length
226
196
  [UINT16, 0, LITTLE_ENDIAN],
227
- ]);
197
+ ], offset);
228
198
  return buffer;
229
199
  }
230
200
  //# sourceMappingURL=write-central-directory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"write-central-directory.js","sourceRoot":"","sources":["../src/write-central-directory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"write-central-directory.js","sourceRoot":"","sources":["../src/write-central-directory.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,9 @@
1
1
  import type { EntryOptionsInternal } from "./index.js";
2
2
  export declare function getLocalFileHeader(options: EntryOptionsInternal): Uint8Array<ArrayBuffer>;
3
- export declare function getDataDescriptorStandard(entryInfo: {
4
- uncompressedSize: number;
5
- compressedSize: number;
6
- crc32: number;
7
- }): Uint8Array<ArrayBuffer>;
8
- export declare function getDataDescriptorZip64(entryInfo: {
3
+ export declare function getDataDescriptor(entryInfo: {
9
4
  uncompressedSize: bigint;
10
5
  compressedSize: bigint;
6
+ startOffset: bigint;
11
7
  crc32: number;
12
8
  }): Uint8Array<ArrayBuffer>;
13
9
  //# sourceMappingURL=write-entry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"write-entry.d.ts","sourceRoot":"","sources":["../src/write-entry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAuBvD,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,oBAAoB,GAC5B,UAAU,CAAC,WAAW,CAAC,CAoCzB;AAED,wBAAgB,yBAAyB,CAAC,SAAS,EAAE;IACnD,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,UAAU,CAAC,WAAW,CAAC,CAgB1B;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE;IAChD,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,UAAU,CAAC,WAAW,CAAC,CAgB1B"}
1
+ {"version":3,"file":"write-entry.d.ts","sourceRoot":"","sources":["../src/write-entry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAwBvD,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,oBAAoB,GAC5B,UAAU,CAAC,WAAW,CAAC,CAoCzB;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE;IAC3C,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,UAAU,CAAC,WAAW,CAAC,CAsB1B"}
@@ -1,5 +1,5 @@
1
1
  import { LOCAL_FILE_HEADER_SIGNATURE, DATA_DESCRIPTOR_SIGNATURE, VERSION_NEEDED_STANDARD, GENERAL_PURPOSE_FLAGS, COMPRESSION_METHOD_STORE, COMPRESSION_METHOD_DEFLATE, LOCAL_FILE_HEADER_SIZE, DATA_DESCRIPTOR_SIZE, DATA_DESCRIPTOR_SIZE_ZIP64, LITTLE_ENDIAN, BIG_ENDIAN, } from "./constants.js";
2
- import { getDosTime, getDosDate, writeDataView, UINT16, UINT32, UINT64, } from "./utils.js";
2
+ import { getDosTime, getDosDate, writeDataView, UINT16, UINT32, UINT64, entryNeedsZip64, } from "./utils.js";
3
3
  export function getLocalFileHeader(options) {
4
4
  const headerSize = LOCAL_FILE_HEADER_SIZE + options.nameBytes.length;
5
5
  const header = new Uint8Array(headerSize);
@@ -35,33 +35,23 @@ export function getLocalFileHeader(options) {
35
35
  header.set(options.nameBytes, offset);
36
36
  return header;
37
37
  }
38
- export function getDataDescriptorStandard(entryInfo) {
39
- const descriptor = new Uint8Array(DATA_DESCRIPTOR_SIZE);
40
- const view = new DataView(descriptor.buffer);
41
- writeDataView(view, [
42
- // Data descriptor signature
43
- [UINT32, DATA_DESCRIPTOR_SIGNATURE, BIG_ENDIAN],
44
- // CRC-32 (4 bytes)
45
- [UINT32, entryInfo.crc32, LITTLE_ENDIAN],
46
- // Compressed size (4 bytes)
47
- [UINT32, entryInfo.compressedSize, LITTLE_ENDIAN],
48
- // Uncompressed size (4 bytes)
49
- [UINT32, entryInfo.uncompressedSize, LITTLE_ENDIAN],
50
- ]);
51
- return descriptor;
52
- }
53
- export function getDataDescriptorZip64(entryInfo) {
38
+ export function getDataDescriptor(entryInfo) {
54
39
  const descriptor = new Uint8Array(DATA_DESCRIPTOR_SIZE_ZIP64);
55
40
  const view = new DataView(descriptor.buffer);
41
+ const needsZip64 = entryNeedsZip64(entryInfo);
56
42
  writeDataView(view, [
57
43
  // Data descriptor signature
58
44
  [UINT32, DATA_DESCRIPTOR_SIGNATURE, BIG_ENDIAN],
59
45
  // CRC-32 (4 bytes)
60
46
  [UINT32, entryInfo.crc32, LITTLE_ENDIAN],
61
47
  // Compressed size (8 bytes)
62
- [UINT64, entryInfo.compressedSize, LITTLE_ENDIAN],
48
+ needsZip64
49
+ ? [UINT64, entryInfo.compressedSize, LITTLE_ENDIAN]
50
+ : [UINT32, Number(entryInfo.compressedSize), LITTLE_ENDIAN],
63
51
  // Uncompressed size (8 bytes)
64
- [UINT64, entryInfo.uncompressedSize, LITTLE_ENDIAN],
52
+ needsZip64
53
+ ? [UINT64, entryInfo.uncompressedSize, LITTLE_ENDIAN]
54
+ : [UINT32, Number(entryInfo.uncompressedSize), LITTLE_ENDIAN],
65
55
  ]);
66
56
  return descriptor;
67
57
  }
@@ -1 +1 @@
1
- {"version":3,"file":"write-entry.js","sourceRoot":"","sources":["../src/write-entry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"write-entry.js","sourceRoot":"","sources":["../src/write-entry.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,10 +1,14 @@
1
1
  {
2
2
  "name": "zip-writer",
3
- "version": "2.0.0",
3
+ "version": "2.1.0",
4
4
  "exports": {
5
5
  ".": {
6
6
  "types": "./dist/index.d.ts",
7
7
  "import": "./dist/index.js"
8
+ },
9
+ "./readable-from-bytes.js": {
10
+ "types": "./dist/readable-from-bytes.d.ts",
11
+ "import": "./dist/readable-from-bytes.js"
8
12
  }
9
13
  },
10
14
  "imports": {
@@ -18,7 +22,7 @@
18
22
  "test": "run-s test:types test:lint test:vitest",
19
23
  "prepare": "husky",
20
24
  "test:types": "tsc --noEmit",
21
- "test:lint": "eslint .",
25
+ "test:lint": "eslint",
22
26
  "test:vitest": "vitest",
23
27
  "bench": "vitest bench",
24
28
  "coverage": "vitest run --coverage",