zip-writer 2.0.0 → 2.1.1

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,8 @@
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
+ [![codecov](https://codecov.io/github/gmaclennan/zip-writer/graph/badge.svg?token=SYS1Y4HIMD)](https://codecov.io/github/gmaclennan/zip-writer)
6
+ [![bundle size](https://deno.bundlejs.com/badge?q=zip-writer&treeshake=[*])](https://bundlejs.com/?q=zip-writer&treeshake=%5B*%5D)
6
7
 
7
8
  A modern streaming ZIP archive writer for JavaScript that uses the
8
9
  [Web Streams API](https://developer.mozilla.org/en-US/docs/Web/API/Streams_API)
@@ -56,6 +57,48 @@ console.log(info);
56
57
  await zipWriter.finalize();
57
58
  ```
58
59
 
60
+ ## Helper Functions
61
+
62
+ ### `readableFromBytes()`
63
+
64
+ A helper function for creating a `ReadableStream` from a `Uint8Array` with
65
+ proper backpressure handling. This is useful when you need to convert byte data
66
+ into a stream for use with `addEntry()`. On supported platforms, you can use
67
+ [`ReadableStream.from()`](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream/from_static)
68
+ instead.
69
+
70
+ This is not included in the main bundle to keep the size small.
71
+
72
+ **Import:**
73
+
74
+ ```ts
75
+ import { readableFromBytes } from "zip-writable/readable-from-bytes";
76
+ ```
77
+
78
+ **Parameters:**
79
+
80
+ - `data: Uint8Array` - The byte array to convert to a stream
81
+
82
+ **Returns:** `ReadableStream<Uint8Array>` - A readable stream that chunks the
83
+ data with proper backpressure
84
+
85
+ **Example:**
86
+
87
+ ```ts
88
+ import { ZipWriter } from "zip-writable";
89
+ import { readableFromBytes } from "zip-writable/readable-from-bytes";
90
+
91
+ const zipWriter = new ZipWriter();
92
+
93
+ const data = new TextEncoder().encode("Hello, World!");
94
+ await zipWriter.addEntry({
95
+ readable: readableFromBytes(data),
96
+ name: "hello.txt",
97
+ });
98
+
99
+ await zipWriter.finalize();
100
+ ```
101
+
59
102
  ## API Reference
60
103
 
61
104
  ### `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
@@ -1,54 +1,6 @@
1
- export interface EntryOptions {
2
- /** Entry name including internal path */
3
- name: string;
4
- /** Entry comment */
5
- comment?: string;
6
- /** Entry date */
7
- date?: Date;
8
- /** Entry permissions */
9
- mode?: number;
10
- /** Compression method to `STORE` (defaults to `DEFLATE`) */
11
- store?: boolean;
12
- }
13
- export interface EntryOptionsInternal extends EntryOptions {
14
- /** Encoded entry name */
15
- nameBytes: Uint8Array;
16
- /** Encoded entry comment */
17
- commentBytes: Uint8Array;
18
- }
19
- export interface Entry extends EntryOptions {
20
- /** Readable stream of entry data */
21
- readable: ReadableStream<ArrayBufferView<ArrayBufferLike>>;
22
- }
23
- export interface EntryInfoZip64 extends EntryOptionsInternal {
24
- /** Byte offset of the local file header within the ZIP archive */
25
- startOffset: bigint;
26
- /** CRC32 checksum of the uncompressed data */
27
- crc32: number;
28
- /** Uncompressed size in bytes */
29
- uncompressedSize: bigint;
30
- /** Compressed size in bytes */
31
- compressedSize: bigint;
32
- /** Entry information is in ZIP64 format */
33
- zip64: true;
34
- }
35
- export interface ZipInfo {
36
- /** Does the archive use ZIP64 format? */
37
- zip64: boolean;
38
- /** Total uncompressed size of all entries */
39
- uncompressedEntriesSize: bigint;
40
- /** Total compressed size of all entries */
41
- compressedEntriesSize: bigint;
42
- /** Total size of the ZIP file */
43
- fileSize: bigint;
44
- }
45
- export type EntryInfoStandard = {
46
- [K in keyof EntryInfoZip64]: EntryInfoZip64[K] extends bigint ? number : K extends "zip64" ? false : EntryInfoZip64[K];
47
- };
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> {
1
+ import type { Entry, EntryInfo, ZipInfo } from "./types.js";
2
+ export type { Entry, EntryInfo, ZipInfo };
3
+ export declare class ZipWriter {
52
4
  #private;
53
5
  /**
54
6
  * @param crc Optional CRC32 function to use. Defaults to zlib.crc32 on Node and a pure JS implementation in browsers.
@@ -107,5 +59,4 @@ export declare class ZipWriter<TIsZip64 extends boolean = false> {
107
59
  entries?: EntryInfo[];
108
60
  }): Promise<ZipInfo>;
109
61
  }
110
- export {};
111
62
  //# 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":"AAWA,OAAO,KAAK,EACV,KAAK,EACL,SAAS,EAGT,OAAO,EACR,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AAS1C,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;CA4ExE"}
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,25 +257,31 @@ 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);
260
+ const eocdOptions = {
261
+ centralDirectoryStart,
262
+ centralDirectorySize,
263
+ entriesCount: this.#entries.length,
264
+ };
265
+ const eocd = getEOCD(eocdOptions);
266
+ await writer.write(eocd);
267
+ await writer.close();
268
+ const zip64 = eocdNeedsZip64(eocdOptions) || entryUsesZip64;
269
+ if (zip64) {
270
+ return {
271
+ zip64: true,
272
+ uncompressedEntriesSize,
273
+ compressedEntriesSize,
274
+ fileSize: this.#offset,
275
+ };
281
276
  }
282
277
  else {
283
- eocd = getEOCDStandard(this.#entries.length, Number(centralDirectoryStart), Number(centralDirectorySize));
278
+ return {
279
+ zip64: false,
280
+ uncompressedEntriesSize: Number(uncompressedEntriesSize),
281
+ compressedEntriesSize: Number(compressedEntriesSize),
282
+ fileSize: Number(this.#offset),
283
+ };
284
284
  }
285
- await writer.write(eocd);
286
- await writer.close();
287
- return {
288
- zip64: eocdNeedsZip64 || entryUsesZip64,
289
- uncompressedEntriesSize,
290
- compressedEntriesSize,
291
- fileSize: this.#offset,
292
- };
293
285
  }
294
286
  catch (err) {
295
287
  await writer.abort(err);
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":"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"}
@@ -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"}
@@ -0,0 +1,58 @@
1
+ export interface EntryOptions {
2
+ /** Entry name including internal path */
3
+ name: string;
4
+ /** Entry comment */
5
+ comment?: string;
6
+ /** Entry date */
7
+ date?: Date;
8
+ /** Entry permissions */
9
+ mode?: number;
10
+ /** Compression method to `STORE` (defaults to `DEFLATE`) */
11
+ store?: boolean;
12
+ }
13
+ /** @private */
14
+ export interface EntryOptionsInternal extends EntryOptions {
15
+ /** Encoded entry name */
16
+ nameBytes: Uint8Array;
17
+ /** Encoded entry comment */
18
+ commentBytes: Uint8Array;
19
+ }
20
+ export interface Entry extends EntryOptions {
21
+ /** Readable stream of entry data */
22
+ readable: ReadableStream<ArrayBufferView<ArrayBufferLike>>;
23
+ }
24
+ /** @private */
25
+ export interface EntryInfoInternal extends EntryOptionsInternal {
26
+ /** Byte offset of the local file header within the ZIP archive */
27
+ startOffset: bigint;
28
+ /** CRC32 checksum of the uncompressed data */
29
+ crc32: number;
30
+ /** Uncompressed size in bytes */
31
+ uncompressedSize: bigint;
32
+ /** Compressed size in bytes */
33
+ compressedSize: bigint;
34
+ /** Entry information is in ZIP64 format */
35
+ zip64: boolean;
36
+ }
37
+ type BigIntToNumber<T> = {
38
+ [K in keyof T]: T[K] extends bigint ? number : K extends "zip64" ? false : T[K];
39
+ };
40
+ interface ZipInfoZip64 {
41
+ /** Does the archive use ZIP64 format? */
42
+ zip64: true;
43
+ /** Total uncompressed size of all entries */
44
+ uncompressedEntriesSize: bigint;
45
+ /** Total compressed size of all entries */
46
+ compressedEntriesSize: bigint;
47
+ /** Total size of the ZIP file */
48
+ fileSize: bigint;
49
+ }
50
+ export type ZipInfoStandard = BigIntToNumber<ZipInfoZip64>;
51
+ export type ZipInfo = ZipInfoZip64 | ZipInfoStandard;
52
+ export type EntryInfoZip64 = Omit<EntryInfoInternal, "nameBytes" | "commentBytes" | "zip64"> & {
53
+ zip64: true;
54
+ };
55
+ export type EntryInfoStandard = BigIntToNumber<EntryInfoZip64>;
56
+ export type EntryInfo = EntryInfoZip64 | EntryInfoStandard;
57
+ export {};
58
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,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,eAAe;AACf,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,eAAe;AACf,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,KAAK,cAAc,CAAC,CAAC,IAAI;KACtB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAC/B,MAAM,GACN,CAAC,SAAS,OAAO,GACf,KAAK,GACL,CAAC,CAAC,CAAC,CAAC;CACX,CAAC;AAEF,UAAU,YAAY;IACpB,yCAAyC;IACzC,KAAK,EAAE,IAAI,CAAC;IACZ,6CAA6C;IAC7C,uBAAuB,EAAE,MAAM,CAAC;IAChC,2CAA2C;IAC3C,qBAAqB,EAAE,MAAM,CAAC;IAC9B,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,eAAe,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC;AAE3D,MAAM,MAAM,OAAO,GAAG,YAAY,GAAG,eAAe,CAAC;AAErD,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,cAAc,CAAC,cAAc,CAAC,CAAC;AAE/D,MAAM,MAAM,SAAS,GAAG,cAAc,GAAG,iBAAiB,CAAC"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/dist/utils.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import type { EntryInfo, EntryInfoInternal } from "./types.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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"}
@@ -1,14 +1,14 @@
1
- import type { EntryInfoInternal } from "./index.js";
1
+ import type { EntryInfoInternal } from "./types.js";
2
2
  /**
3
3
  * Generate the Central Directory File Header for the given entry info.
4
4
  */
5
5
  export declare function getCDFH(entryInfo: EntryInfoInternal): Uint8Array<ArrayBuffer>;
6
- /**
7
- * Generate the End of Central Directory record with zip64 support.
8
- */
9
- export declare function getEOCDStandard(entriesCount: number, centralDirectoryOffset: number, centralDirectorySize: number): Uint8Array<ArrayBuffer>;
10
6
  /**
11
7
  * Generate the ZIP64 End of Central Directory record.
12
8
  */
13
- export declare function getEOCDZip64(entriesCount: bigint, centralDirectoryOffset: bigint, centralDirectorySize: bigint): Uint8Array<ArrayBuffer>;
9
+ export declare function getEOCD(options: {
10
+ entriesCount: number;
11
+ centralDirectoryStart: bigint;
12
+ centralDirectorySize: bigint;
13
+ }): Uint8Array<ArrayBuffer>;
14
14
  //# 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,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAiCpD;;GAEG;AACH,wBAAgB,OAAO,CAAC,SAAS,EAAE,iBAAiB,GAAG,UAAU,CAAC,WAAW,CAAC,CAoG7E;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,85 +80,70 @@ 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);
143
96
  }
144
97
  return header;
145
98
  }
146
- /**
147
- * Generate the End of Central Directory record with zip64 support.
148
- */
149
- export function getEOCDStandard(entriesCount, centralDirectoryOffset, centralDirectorySize) {
150
- const eocd = new Uint8Array(EOCD_SIZE);
151
- const view = new DataView(eocd.buffer);
152
- writeDataView(view, [
153
- // End of central dir signature
154
- [UINT32, END_OF_CENTRAL_DIR_SIGNATURE, BIG_ENDIAN],
155
- // Number of this disk
156
- [UINT16, 0, LITTLE_ENDIAN],
157
- // Disk where central directory starts
158
- [UINT16, 0, LITTLE_ENDIAN],
159
- // Number of central directory records on this disk
160
- [UINT16, entriesCount, LITTLE_ENDIAN],
161
- // Total number of central directory records
162
- [UINT16, entriesCount, LITTLE_ENDIAN],
163
- // Size of central directory
164
- [UINT32, centralDirectorySize, LITTLE_ENDIAN],
165
- // Offset of start of central directory
166
- [UINT32, centralDirectoryOffset, LITTLE_ENDIAN],
167
- // ZIP file comment length
168
- [UINT16, 0, LITTLE_ENDIAN],
169
- ]);
170
- return eocd;
171
- }
172
99
  /**
173
100
  * Generate the ZIP64 End of Central Directory record.
174
101
  */
175
- export function getEOCDZip64(entriesCount, centralDirectoryOffset, centralDirectorySize) {
176
- const totalSize = EOCD64_SIZE + EOCD64_LOCATOR_SIZE + EOCD_SIZE;
102
+ export function getEOCD(options) {
103
+ const zip64 = eocdNeedsZip64(options);
104
+ const { entriesCount, centralDirectoryStart, centralDirectorySize } = options;
105
+ const totalSize = zip64
106
+ ? EOCD64_SIZE + EOCD64_LOCATOR_SIZE + EOCD_SIZE
107
+ : EOCD_SIZE;
177
108
  const buffer = new Uint8Array(totalSize);
178
109
  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 ===
110
+ let offset = 0;
111
+ if (zip64) {
112
+ offset = writeDataView(view, [
113
+ // === ZIP64 End of Central Directory Record ===
114
+ // End of central dir signature
115
+ [UINT32, ZIP64_END_OF_CENTRAL_DIR_SIGNATURE, BIG_ENDIAN],
116
+ // Size of zip64 end of central directory record excluding the leading 12 bytes
117
+ [UINT64, BigInt(EOCD64_SIZE - 12), LITTLE_ENDIAN],
118
+ // Version made by
119
+ [UINT16, VERSION_MADE_BY, LITTLE_ENDIAN],
120
+ // Version needed to extract
121
+ [UINT16, VERSION_NEEDED_ZIP64, LITTLE_ENDIAN],
122
+ // Number of this disk
123
+ [UINT32, 0, LITTLE_ENDIAN],
124
+ // Disk where central directory starts
125
+ [UINT32, 0, LITTLE_ENDIAN],
126
+ // Number of central directory records on this disk
127
+ [UINT64, BigInt(entriesCount), LITTLE_ENDIAN],
128
+ // Total number of central directory records
129
+ [UINT64, BigInt(entriesCount), LITTLE_ENDIAN],
130
+ // Size of central directory
131
+ [UINT64, centralDirectorySize, LITTLE_ENDIAN],
132
+ // Offset of start of central directory
133
+ [UINT64, centralDirectoryStart, LITTLE_ENDIAN],
134
+ // === ZIP64 End of Central Directory Locator ===
135
+ // Zip64 end of central dir locator signature
136
+ [UINT32, ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIGNATURE, BIG_ENDIAN],
137
+ // Number of the disk with the start of the zip64 end of central directory
138
+ [UINT32, 0, LITTLE_ENDIAN],
139
+ // Relative offset of the zip64 end of central directory record
140
+ [UINT64, centralDirectoryStart + centralDirectorySize, LITTLE_ENDIAN],
141
+ // Total number of disks
142
+ [UINT32, 1, LITTLE_ENDIAN],
143
+ ]);
144
+ }
145
+ // === Standard End of Central Directory Record ===
146
+ writeDataView(view, [
211
147
  // End of central dir signature
212
148
  [UINT32, END_OF_CENTRAL_DIR_SIGNATURE, BIG_ENDIAN],
213
149
  // Number of this disk
@@ -215,16 +151,24 @@ export function getEOCDZip64(entriesCount, centralDirectoryOffset, centralDirect
215
151
  // Disk where central directory starts
216
152
  [UINT16, 0, LITTLE_ENDIAN],
217
153
  // Number of central directory records on this disk
218
- [UINT16, 0xffff, LITTLE_ENDIAN],
154
+ [UINT16, zip64 ? MAX_2_BYTE : entriesCount, LITTLE_ENDIAN],
219
155
  // Total number of central directory records
220
- [UINT16, 0xffff, LITTLE_ENDIAN],
156
+ [UINT16, zip64 ? MAX_2_BYTE : entriesCount, LITTLE_ENDIAN],
221
157
  // Size of central directory
222
- [UINT32, 0xffffffff, LITTLE_ENDIAN],
158
+ [
159
+ UINT32,
160
+ zip64 ? MAX_4_BYTE : Number(centralDirectorySize),
161
+ LITTLE_ENDIAN,
162
+ ],
223
163
  // Offset of start of central directory
224
- [UINT32, 0xffffffff, LITTLE_ENDIAN],
164
+ [
165
+ UINT32,
166
+ zip64 ? MAX_4_BYTE : Number(centralDirectoryStart),
167
+ LITTLE_ENDIAN,
168
+ ],
225
169
  // ZIP file comment length
226
170
  [UINT16, 0, LITTLE_ENDIAN],
227
- ]);
171
+ ], offset);
228
172
  return buffer;
229
173
  }
230
174
  //# 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
- import type { EntryOptionsInternal } from "./index.js";
1
+ import type { EntryOptionsInternal } from "./types.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.1",
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",