neozipkit 1.0.2 → 1.5.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.
Files changed (128) hide show
  1. package/NEOZIP_APPNOTE.md +625 -0
  2. package/README.md +44 -11
  3. package/WHATS_NEW.md +153 -10
  4. package/dist/browser/ZipkitBrowser.d.ts.map +1 -1
  5. package/dist/browser/ZipkitBrowser.js +4 -6
  6. package/dist/browser/ZipkitBrowser.js.map +1 -1
  7. package/dist/browser/zstd-browser-shim.d.ts +17 -9
  8. package/dist/browser/zstd-browser-shim.d.ts.map +1 -1
  9. package/dist/browser/zstd-browser-shim.js +99 -21
  10. package/dist/browser/zstd-browser-shim.js.map +1 -1
  11. package/dist/browser-esm/index.js +6534 -1275
  12. package/dist/browser-esm/index.js.map +4 -4
  13. package/dist/browser-umd/index.js +6534 -1275
  14. package/dist/browser-umd/index.js.map +4 -4
  15. package/dist/browser-umd/index.min.js +6 -3
  16. package/dist/core/ZipCompress.d.ts +6 -0
  17. package/dist/core/ZipCompress.d.ts.map +1 -1
  18. package/dist/core/ZipCompress.js +12 -11
  19. package/dist/core/ZipCompress.js.map +1 -1
  20. package/dist/core/ZipCopy.d.ts.map +1 -1
  21. package/dist/core/ZipCopy.js +33 -25
  22. package/dist/core/ZipCopy.js.map +1 -1
  23. package/dist/core/ZipDecompress.d.ts.map +1 -1
  24. package/dist/core/ZipDecompress.js +13 -8
  25. package/dist/core/ZipDecompress.js.map +1 -1
  26. package/dist/core/ZipEntry.d.ts +24 -0
  27. package/dist/core/ZipEntry.d.ts.map +1 -1
  28. package/dist/core/ZipEntry.js +146 -14
  29. package/dist/core/ZipEntry.js.map +1 -1
  30. package/dist/core/Zipkit.d.ts +43 -11
  31. package/dist/core/Zipkit.d.ts.map +1 -1
  32. package/dist/core/Zipkit.js +132 -82
  33. package/dist/core/Zipkit.js.map +1 -1
  34. package/dist/core/components/HashCalculator.d.ts +22 -1
  35. package/dist/core/components/HashCalculator.d.ts.map +1 -1
  36. package/dist/core/components/HashCalculator.js +49 -6
  37. package/dist/core/components/HashCalculator.js.map +1 -1
  38. package/dist/core/components/Util.d.ts +3 -4
  39. package/dist/core/components/Util.d.ts.map +1 -1
  40. package/dist/core/components/Util.js +10 -8
  41. package/dist/core/components/Util.js.map +1 -1
  42. package/dist/core/constants/Headers.d.ts +2 -3
  43. package/dist/core/constants/Headers.d.ts.map +1 -1
  44. package/dist/core/constants/Headers.js +15 -5
  45. package/dist/core/constants/Headers.js.map +1 -1
  46. package/dist/core/constants/MetaPaths.d.ts +38 -0
  47. package/dist/core/constants/MetaPaths.d.ts.map +1 -0
  48. package/dist/core/constants/MetaPaths.js +79 -0
  49. package/dist/core/constants/MetaPaths.js.map +1 -0
  50. package/dist/core/index.d.ts +5 -0
  51. package/dist/core/index.d.ts.map +1 -1
  52. package/dist/core/index.js +18 -1
  53. package/dist/core/index.js.map +1 -1
  54. package/dist/core/inflateZipPayload.d.ts +6 -0
  55. package/dist/core/inflateZipPayload.d.ts.map +1 -0
  56. package/dist/core/inflateZipPayload.js +28 -0
  57. package/dist/core/inflateZipPayload.js.map +1 -0
  58. package/dist/core/merkle/MerkleRoot.d.ts +109 -0
  59. package/dist/core/merkle/MerkleRoot.d.ts.map +1 -0
  60. package/dist/core/merkle/MerkleRoot.js +275 -0
  61. package/dist/core/merkle/MerkleRoot.js.map +1 -0
  62. package/dist/core/origin/OriginExtra.d.ts +43 -0
  63. package/dist/core/origin/OriginExtra.d.ts.map +1 -0
  64. package/dist/core/origin/OriginExtra.js +187 -0
  65. package/dist/core/origin/OriginExtra.js.map +1 -0
  66. package/dist/core/version.js +1 -1
  67. package/dist/core/zip64/Zip64.d.ts +138 -0
  68. package/dist/core/zip64/Zip64.d.ts.map +1 -0
  69. package/dist/core/zip64/Zip64.js +353 -0
  70. package/dist/core/zip64/Zip64.js.map +1 -0
  71. package/dist/node/ZipCompressNode.d.ts.map +1 -1
  72. package/dist/node/ZipCompressNode.js +40 -49
  73. package/dist/node/ZipCompressNode.js.map +1 -1
  74. package/dist/node/ZipCopyNode.d.ts.map +1 -1
  75. package/dist/node/ZipCopyNode.js +26 -26
  76. package/dist/node/ZipCopyNode.js.map +1 -1
  77. package/dist/node/ZipDecompressNode.d.ts.map +1 -1
  78. package/dist/node/ZipDecompressNode.js +21 -3
  79. package/dist/node/ZipDecompressNode.js.map +1 -1
  80. package/dist/node/ZipkitNode.d.ts +23 -1
  81. package/dist/node/ZipkitNode.d.ts.map +1 -1
  82. package/dist/node/ZipkitNode.js +158 -57
  83. package/dist/node/ZipkitNode.js.map +1 -1
  84. package/dist/node/ZstdNode.d.ts +14 -4
  85. package/dist/node/ZstdNode.d.ts.map +1 -1
  86. package/dist/node/ZstdNode.js +28 -4
  87. package/dist/node/ZstdNode.js.map +1 -1
  88. package/dist/node/buildZipBuffer.d.ts +49 -0
  89. package/dist/node/buildZipBuffer.d.ts.map +1 -0
  90. package/dist/node/buildZipBuffer.js +146 -0
  91. package/dist/node/buildZipBuffer.js.map +1 -0
  92. package/dist/node/index.d.ts +3 -0
  93. package/dist/node/index.d.ts.map +1 -1
  94. package/dist/node/index.js +6 -1
  95. package/dist/node/index.js.map +1 -1
  96. package/dist/node/inflateZipPayload.d.ts +5 -0
  97. package/dist/node/inflateZipPayload.d.ts.map +1 -0
  98. package/dist/node/inflateZipPayload.js +21 -0
  99. package/dist/node/inflateZipPayload.js.map +1 -0
  100. package/dist/types/index.js +2 -2
  101. package/node-esm.mjs +32 -0
  102. package/package.json +13 -6
  103. package/src/browser/ZipkitBrowser.ts +4 -6
  104. package/src/browser/zstd-browser-shim.ts +110 -28
  105. package/src/core/ZipCompress.ts +20 -13
  106. package/src/core/ZipCopy.ts +56 -27
  107. package/src/core/ZipDecompress.ts +14 -8
  108. package/src/core/ZipEntry.ts +200 -14
  109. package/src/core/Zipkit.ts +189 -98
  110. package/src/core/components/HashCalculator.ts +58 -6
  111. package/src/core/components/Util.ts +16 -7
  112. package/src/core/constants/Headers.ts +15 -4
  113. package/src/core/constants/MetaPaths.ts +86 -0
  114. package/src/core/index.ts +17 -0
  115. package/src/core/inflateZipPayload.ts +27 -0
  116. package/src/core/merkle/MerkleRoot.ts +312 -0
  117. package/src/core/origin/OriginExtra.ts +209 -0
  118. package/src/core/version.ts +1 -1
  119. package/src/core/zip64/Zip64.ts +473 -0
  120. package/src/node/ZipCompressNode.ts +40 -49
  121. package/src/node/ZipCopyNode.ts +31 -29
  122. package/src/node/ZipDecompressNode.ts +16 -3
  123. package/src/node/ZipkitNode.ts +203 -72
  124. package/src/node/ZstdNode.ts +33 -8
  125. package/src/node/buildZipBuffer.ts +221 -0
  126. package/src/node/index.ts +7 -0
  127. package/src/node/inflateZipPayload.ts +19 -0
  128. package/src/types/index.ts +2 -2
@@ -45,9 +45,11 @@ exports.isNativeZstdAvailable = isNativeZstdAvailable;
45
45
  exports.mapCompressionLevel = mapCompressionLevel;
46
46
  exports.createCompressTransform = createCompressTransform;
47
47
  exports.createDecompressTransform = createDecompressTransform;
48
+ exports.asZstdBuffer = asZstdBuffer;
48
49
  exports.compress = compress;
49
50
  exports.decompress = decompress;
50
51
  exports.compressSync = compressSync;
52
+ exports.compressSyncAtLevel = compressSyncAtLevel;
51
53
  exports.decompressSync = decompressSync;
52
54
  exports.compressChunks = compressChunks;
53
55
  exports.decompressStream = decompressStream;
@@ -87,23 +89,43 @@ function createDecompressTransform() {
87
89
  assertNativeZstd();
88
90
  return zlib.createZstdDecompress();
89
91
  }
92
+ function asZstdBuffer(data) {
93
+ if (Buffer.isBuffer(data))
94
+ return data;
95
+ if (data instanceof ArrayBuffer)
96
+ return Buffer.from(data);
97
+ return Buffer.from(data.buffer, data.byteOffset, data.byteLength);
98
+ }
90
99
  async function compress(data, level = 6) {
91
100
  assertNativeZstd();
92
- const result = await zstdCompressAsync(data, compressOptions(level));
101
+ const result = await zstdCompressAsync(asZstdBuffer(data), compressOptions(level));
93
102
  return Buffer.from(result);
94
103
  }
95
104
  async function decompress(data) {
96
105
  assertNativeZstd();
97
- const result = await zstdDecompressAsync(data);
106
+ const result = await zstdDecompressAsync(asZstdBuffer(data));
98
107
  return Buffer.from(result);
99
108
  }
100
109
  function compressSync(data, level = 6) {
101
110
  assertNativeZstd();
102
- return zlib.zstdCompressSync(data, compressOptions(level));
111
+ return zlib.zstdCompressSync(asZstdBuffer(data), compressOptions(level));
112
+ }
113
+ /**
114
+ * Compress with a raw zlib zstd level (1–19), without the 1–9 kit scale.
115
+ * ZipWiki pack uses level 7 on this scale.
116
+ */
117
+ function compressSyncAtLevel(data, zstdLevel) {
118
+ assertNativeZstd();
119
+ const level = Math.min(19, Math.max(1, Math.trunc(zstdLevel)));
120
+ return zlib.zstdCompressSync(asZstdBuffer(data), {
121
+ params: {
122
+ [zlib.constants.ZSTD_c_compressionLevel]: level,
123
+ },
124
+ });
103
125
  }
104
126
  function decompressSync(data) {
105
127
  assertNativeZstd();
106
- return zlib.zstdDecompressSync(data);
128
+ return zlib.zstdDecompressSync(asZstdBuffer(data));
107
129
  }
108
130
  /**
109
131
  * Stream-compress plaintext from a chunked reader (primary path for all sizes).
@@ -163,7 +185,9 @@ exports.ZstdNode = {
163
185
  compress,
164
186
  decompress,
165
187
  compressSync,
188
+ compressSyncAtLevel,
166
189
  decompressSync,
190
+ asZstdBuffer,
167
191
  compressChunks,
168
192
  decompressStream,
169
193
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ZstdNode.js","sourceRoot":"","sources":["../../src/node/ZstdNode.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASH,sDAOC;AAYD,kDAEC;AAUD,0DAGC;AAED,8DAGC;AAED,4BAIC;AAED,gCAIC;AAED,oCAGC;AAED,wCAGC;AAKD,wCAsCC;AAKD,4CAeC;AAnID,2CAA6B;AAC7B,mCAAkC;AAClC,+BAAiC;AAEjC,MAAM,iBAAiB,GAAG,IAAA,gBAAS,EAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACvD,MAAM,mBAAmB,GAAG,IAAA,gBAAS,EAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAE3D,SAAgB,qBAAqB;IACnC,OAAO,CACL,OAAO,IAAI,CAAC,kBAAkB,KAAK,UAAU;QAC7C,OAAO,IAAI,CAAC,oBAAoB,KAAK,UAAU;QAC/C,OAAO,IAAI,CAAC,YAAY,KAAK,UAAU;QACvC,OAAO,IAAI,CAAC,cAAc,KAAK,UAAU,CAC1C,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB;IACvB,IAAI,CAAC,qBAAqB,EAAE,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CACb,sDAAsD;YACpD,gCAAgC,CACnC,CAAC;IACJ,CAAC;AACH,CAAC;AAED,kEAAkE;AAClE,SAAgB,mBAAmB,CAAC,KAAa;IAC/C,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO;QACL,MAAM,EAAE;YACN,CAAC,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,EAAE,mBAAmB,CAAC,KAAK,CAAC;SACrE;KACF,CAAC;AACJ,CAAC;AAED,SAAgB,uBAAuB,CAAC,QAAgB,CAAC;IACvD,gBAAgB,EAAE,CAAC;IACnB,OAAO,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,SAAgB,yBAAyB;IACvC,gBAAgB,EAAE,CAAC;IACnB,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACrC,CAAC;AAEM,KAAK,UAAU,QAAQ,CAAC,IAAY,EAAE,QAAgB,CAAC;IAC5D,gBAAgB,EAAE,CAAC;IACnB,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;IACrE,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7B,CAAC;AAEM,KAAK,UAAU,UAAU,CAAC,IAAY;IAC3C,gBAAgB,EAAE,CAAC;IACnB,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC/C,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7B,CAAC;AAED,SAAgB,YAAY,CAAC,IAAY,EAAE,QAAgB,CAAC;IAC1D,gBAAgB,EAAE,CAAC;IACnB,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,SAAgB,cAAc,CAAC,IAAY;IACzC,gBAAgB,EAAE,CAAC;IACnB,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,cAAc,CAClC,SAAqD,EACrD,SAAiB,EACjB,SAAiB,EACjB,KAAa,EACb,YAAsC,EACtC,iBAA2D;IAE3D,KAAK,SAAS,CAAC,CAAC,WAAW;QACzB,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,OAAO,QAAQ,GAAG,SAAS,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,GAAG,QAAQ,CAAC,CAAC;YACvD,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACxC,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC;YACtB,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC;YACzB,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,iBAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9C,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAEzB,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,CAAC;QACH,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAClC,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAiB,CAAC,CAAC;YACxE,cAAc,IAAI,GAAG,CAAC,MAAM,CAAC;YAC7B,IAAI,iBAAiB,EAAE,CAAC;gBACtB,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;IACH,CAAC;YAAS,CAAC;QACT,QAAQ,CAAC,OAAO,EAAE,CAAC;QACnB,SAAS,CAAC,OAAO,EAAE,CAAC;IACtB,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;GAEG;AACI,KAAK,SAAS,CAAC,CAAC,gBAAgB,CACrC,gBAAuC;IAEvC,MAAM,SAAS,GAAG,yBAAyB,EAAE,CAAC;IAC9C,MAAM,QAAQ,GAAG,iBAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACjD,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAEzB,IAAI,CAAC;QACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;YACpC,MAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAmB,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;YAAS,CAAC;QACT,QAAQ,CAAC,OAAO,EAAE,CAAC;QACnB,SAAS,CAAC,OAAO,EAAE,CAAC;IACtB,CAAC;AACH,CAAC;AAEY,QAAA,QAAQ,GAAG;IACtB,qBAAqB;IACrB,mBAAmB;IACnB,uBAAuB;IACvB,yBAAyB;IACzB,QAAQ;IACR,UAAU;IACV,YAAY;IACZ,cAAc;IACd,cAAc;IACd,gBAAgB;CACjB,CAAC;AAEF,kBAAe,gBAAQ,CAAC"}
1
+ {"version":3,"file":"ZstdNode.js","sourceRoot":"","sources":["../../src/node/ZstdNode.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * In-memory and streaming ZIP writer.
3
+ * Zstd level is the raw zlib level (ZipWiki default 7). NeoEncrypt stays off.
4
+ * Caller extra blocks (ZipWiki 0x014F) are written beside optional 0x014E.
5
+ */
6
+ export type ZipPrecompressedMember = {
7
+ method: number;
8
+ data: Buffer;
9
+ crc32: number;
10
+ uncompressedSize: number;
11
+ /** Complete extra-field bytes copied onto the local and central headers. */
12
+ extra?: Buffer;
13
+ };
14
+ export type ZipBufferMember = {
15
+ name: string;
16
+ /** Uncompressed payload. Unused as stored bytes when `precompressed` is set. */
17
+ data: Buffer;
18
+ mtime?: Date;
19
+ /** DOS time word. Wins over `mtime` when set together with `dosDate`. */
20
+ dosTime?: number;
21
+ dosDate?: number;
22
+ /**
23
+ * Complete extra-field records (id, size, payload), e.g. ZipWiki 0x014F.
24
+ * Ignored when `precompressed.extra` is set — that blob is copied as-is.
25
+ */
26
+ additionalExtra?: Buffer;
27
+ /** Write Extra Field 0x014E (SHA-256 of uncompressed `data`). */
28
+ useSHA256?: boolean;
29
+ /** 0 store, 8 deflate, 93 zstd. Default 93. Ignored when `precompressed` is set. */
30
+ method?: 0 | 8 | 93;
31
+ /** zlib zstd level or raw deflate level. Default 7. */
32
+ level?: number;
33
+ /**
34
+ * Force Zip64 Extra `0x0001` on this member even when sizes fit classic fields.
35
+ * Pair with `forceZip64` on `buildZipBufferSync` / `writeZipFileSync` options
36
+ * (or set on every member) so the EOCD is Zip64 as well.
37
+ */
38
+ forceZip64?: boolean;
39
+ precompressed?: ZipPrecompressedMember;
40
+ };
41
+ export type BuildZipBufferOptions = {
42
+ /** Force Zip64 EOCD + per-member Extra when sizes fit classic fields. */
43
+ forceZip64?: boolean;
44
+ };
45
+ /** Build a ZIP in one buffer. Kept for tests and atomic in-memory rewrites. */
46
+ export declare function buildZipBufferSync(members: ZipBufferMember[], options?: BuildZipBufferOptions): Buffer;
47
+ /** Stream local headers, payloads, the central directory, and the EOCD to `filePath`. */
48
+ export declare function writeZipFileSync(filePath: string, members: ZipBufferMember[], options?: BuildZipBufferOptions): void;
49
+ //# sourceMappingURL=buildZipBuffer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildZipBuffer.d.ts","sourceRoot":"","sources":["../../src/node/buildZipBuffer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAYH,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;IACzB,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,gFAAgF;IAChF,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iEAAiE;IACjE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,oFAAoF;IACpF,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;IACpB,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,sBAAsB,CAAC;CACxC,CAAC;AAqHF,MAAM,MAAM,qBAAqB,GAAG;IAClC,yEAAyE;IACzE,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,eAAe,EAAE,EAC1B,OAAO,CAAC,EAAE,qBAAqB,GAC9B,MAAM,CAgBR;AAED,yFAAyF;AACzF,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,eAAe,EAAE,EAC1B,OAAO,CAAC,EAAE,qBAAqB,GAC9B,IAAI,CAoBN"}
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ /**
3
+ * In-memory and streaming ZIP writer.
4
+ * Zstd level is the raw zlib level (ZipWiki default 7). NeoEncrypt stays off.
5
+ * Caller extra blocks (ZipWiki 0x014F) are written beside optional 0x014E.
6
+ */
7
+ var __importDefault = (this && this.__importDefault) || function (mod) {
8
+ return (mod && mod.__esModule) ? mod : { "default": mod };
9
+ };
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.buildZipBufferSync = buildZipBufferSync;
12
+ exports.writeZipFileSync = writeZipFileSync;
13
+ const fs_1 = require("fs");
14
+ const zlib_1 = require("zlib");
15
+ const ZipEntry_1 = __importDefault(require("../core/ZipEntry"));
16
+ const ZipCrypto_1 = require("../core/encryption/ZipCrypto");
17
+ const ZstdNode_1 = require("./ZstdNode");
18
+ const Zip64_1 = require("../core/zip64/Zip64");
19
+ function dosFromDate(date) {
20
+ const year = date.getFullYear();
21
+ const month = date.getMonth() + 1;
22
+ const day = date.getDate();
23
+ const hours = date.getHours();
24
+ const minutes = date.getMinutes();
25
+ const seconds = Math.floor(date.getSeconds() / 2);
26
+ const y = Math.max(0, Math.min(127, year - 1980));
27
+ return {
28
+ time: ((hours & 0x1f) << 11) | ((minutes & 0x3f) << 5) | (seconds & 0x1f),
29
+ date: ((y & 0x7f) << 9) | ((month & 0x0f) << 5) | (day & 0x1f),
30
+ };
31
+ }
32
+ function compressPayload(data, method, level) {
33
+ if (method === 0 || data.length === 0) {
34
+ return { method: 0, data };
35
+ }
36
+ const compressed = method === 8
37
+ ? (0, zlib_1.deflateRawSync)(data, { level: Math.max(1, Math.min(9, level)) })
38
+ : (0, ZstdNode_1.compressSyncAtLevel)(data, Math.max(1, level));
39
+ if (compressed.length >= data.length) {
40
+ return { method: 0, data };
41
+ }
42
+ return { method, data: compressed };
43
+ }
44
+ function frameMembers(members, opts) {
45
+ const packTime = new Date();
46
+ const framed = [];
47
+ let offset = 0;
48
+ const forceAll = opts?.forceZip64 === true;
49
+ for (const member of members) {
50
+ const copied = member.precompressed;
51
+ const uncompressed = member.data ?? Buffer.alloc(0);
52
+ const level = member.level ?? 7;
53
+ const requested = member.method ?? 93;
54
+ const payload = copied
55
+ ? {
56
+ method: copied.method,
57
+ data: copied.data,
58
+ uncompressedSize: copied.uncompressedSize,
59
+ }
60
+ : {
61
+ ...compressPayload(uncompressed, requested, level),
62
+ uncompressedSize: uncompressed.length,
63
+ };
64
+ const crc = copied ? copied.crc32 >>> 0 : (0, ZipCrypto_1.crc32)(uncompressed) >>> 0;
65
+ const extra = copied?.extra ?? member.additionalExtra;
66
+ const dos = member.dosTime !== undefined && member.dosDate !== undefined
67
+ ? { time: member.dosTime, date: member.dosDate }
68
+ : dosFromDate(member.mtime ?? packTime);
69
+ const entry = new ZipEntry_1.default(member.name, null, false);
70
+ entry.bitFlags = 0;
71
+ entry.emitUnicodePath = false;
72
+ entry.isUpdated = true;
73
+ entry.filename = member.name;
74
+ entry.cmpMethod = payload.method;
75
+ entry.crc = crc;
76
+ entry.compressedSize = payload.data.length;
77
+ entry.uncompressedSize = payload.uncompressedSize;
78
+ entry.timeDateDOS = ((dos.date & 0xffff) << 16) | (dos.time & 0xffff);
79
+ entry.localHdrOffset = offset;
80
+ entry.forceZip64 = forceAll || member.forceZip64 === true;
81
+ (0, Zip64_1.assertBufferAllowsEntryZip64)(entry.uncompressedSize, entry.compressedSize, entry.localHdrOffset);
82
+ if (!copied && member.useSHA256 === true) {
83
+ entry.sha256 = (0, ZipCrypto_1.sha256)(uncompressed);
84
+ }
85
+ if (extra && extra.length > 0) {
86
+ entry.additionalExtra = extra;
87
+ }
88
+ const local = entry.createLocalHdr();
89
+ const central = entry.centralDirEntry();
90
+ framed.push({ local, payload: payload.data, central });
91
+ offset += local.length + payload.data.length;
92
+ }
93
+ return framed;
94
+ }
95
+ function eocd(entryCount, centralSize, centralOffset, forceZip64) {
96
+ return (0, Zip64_1.buildEndRecords)({
97
+ totalEntries: entryCount,
98
+ centralDirSize: centralSize,
99
+ centralDirOffset: centralOffset,
100
+ zip64EocdOffset: centralOffset + centralSize,
101
+ allowSizeOffsetZip64: false,
102
+ forceZip64: forceZip64 === true,
103
+ });
104
+ }
105
+ /** Build a ZIP in one buffer. Kept for tests and atomic in-memory rewrites. */
106
+ function buildZipBufferSync(members, options) {
107
+ const forceZip64 = options?.forceZip64 === true;
108
+ const framed = frameMembers(members, { forceZip64 });
109
+ const parts = [];
110
+ let centralSize = 0;
111
+ let payloadBytes = 0;
112
+ for (const part of framed) {
113
+ parts.push(part.local, part.payload);
114
+ payloadBytes += part.local.length + part.payload.length;
115
+ }
116
+ for (const part of framed) {
117
+ parts.push(part.central);
118
+ centralSize += part.central.length;
119
+ }
120
+ parts.push(eocd(framed.length, centralSize, payloadBytes, forceZip64));
121
+ return Buffer.concat(parts);
122
+ }
123
+ /** Stream local headers, payloads, the central directory, and the EOCD to `filePath`. */
124
+ function writeZipFileSync(filePath, members, options) {
125
+ const forceZip64 = options?.forceZip64 === true;
126
+ const framed = frameMembers(members, { forceZip64 });
127
+ const fd = (0, fs_1.openSync)(filePath, 'w');
128
+ try {
129
+ let payloadBytes = 0;
130
+ let centralSize = 0;
131
+ for (const part of framed) {
132
+ (0, fs_1.writeSync)(fd, part.local);
133
+ (0, fs_1.writeSync)(fd, part.payload);
134
+ payloadBytes += part.local.length + part.payload.length;
135
+ }
136
+ for (const part of framed) {
137
+ (0, fs_1.writeSync)(fd, part.central);
138
+ centralSize += part.central.length;
139
+ }
140
+ (0, fs_1.writeSync)(fd, eocd(framed.length, centralSize, payloadBytes, forceZip64));
141
+ }
142
+ finally {
143
+ (0, fs_1.closeSync)(fd);
144
+ }
145
+ }
146
+ //# sourceMappingURL=buildZipBuffer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildZipBuffer.js","sourceRoot":"","sources":["../../src/node/buildZipBuffer.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,9 @@ export { ZstdNode, isNativeZstdAvailable } from './ZstdNode';
20
20
  export { LegacyZstd, LEGACY_WASM_ZSTD_PADDING, parseZstdFrameContentSize, looksLikeLegacyWasmZstd, detectLegacyWasmZstd, repairLegacyWasmZstdPlaintext, } from './LegacyZstd';
21
21
  export type { LegacyZstdDetectResult, LegacyZstdConfidence, DetectLegacyZstdOptions } from './LegacyZstd';
22
22
  export { ZipCopyNode } from './ZipCopyNode';
23
+ export { buildZipBufferSync, writeZipFileSync } from './buildZipBuffer';
24
+ export type { ZipBufferMember, ZipPrecompressedMember, BuildZipBufferOptions, } from './buildZipBuffer';
25
+ export { inflateZipPayloadSync } from './inflateZipPayload';
23
26
  export type { CopyOptions, CopyResult, CopyEntriesOnlyResult, FinalizeZipOptions, } from './ZipCopyNode';
24
27
  export declare const PlatformUtils: {
25
28
  isBrowser: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,cAAc,SAAS,CAAC;AACxB,OAAO,MAAM,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,CAAC;AAGlB,OAAO,iBAAiB,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AAErD,eAAe,iBAAiB,CAAC;AACjC,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EACL,UAAU,EACV,wBAAwB,EACxB,yBAAyB,EACzB,uBAAuB,EACvB,oBAAoB,EACpB,6BAA6B,GAC9B,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAG1G,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EACV,WAAW,EACX,UAAU,EACV,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,eAAe,CAAC;AAGvB,eAAO,MAAM,aAAa;;;CAKzB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,cAAc,SAAS,CAAC;AACxB,OAAO,MAAM,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,CAAC;AAGlB,OAAO,iBAAiB,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AAErD,eAAe,iBAAiB,CAAC;AACjC,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EACL,UAAU,EACV,wBAAwB,EACxB,yBAAyB,EACzB,uBAAuB,EACvB,oBAAoB,EACpB,6BAA6B,GAC9B,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAG1G,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACxE,YAAY,EACV,eAAe,EACf,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,YAAY,EACV,WAAW,EACX,UAAU,EACV,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,eAAe,CAAC;AAGvB,eAAO,MAAM,aAAa;;;CAKzB,CAAC"}
@@ -26,7 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.PlatformUtils = exports.ZipCopyNode = exports.repairLegacyWasmZstdPlaintext = exports.detectLegacyWasmZstd = exports.looksLikeLegacyWasmZstd = exports.parseZstdFrameContentSize = exports.LEGACY_WASM_ZSTD_PADDING = exports.LegacyZstd = exports.isNativeZstdAvailable = exports.ZstdNode = exports.ZipDecompressNode = exports.ZipCompressNode = exports.ZipkitNode = exports.Zipkit = void 0;
29
+ exports.PlatformUtils = exports.inflateZipPayloadSync = exports.writeZipFileSync = exports.buildZipBufferSync = exports.ZipCopyNode = exports.repairLegacyWasmZstdPlaintext = exports.detectLegacyWasmZstd = exports.looksLikeLegacyWasmZstd = exports.parseZstdFrameContentSize = exports.LEGACY_WASM_ZSTD_PADDING = exports.LegacyZstd = exports.isNativeZstdAvailable = exports.ZstdNode = exports.ZipDecompressNode = exports.ZipCompressNode = exports.ZipkitNode = exports.Zipkit = void 0;
30
30
  // Core ZIP functionality (re-exported from core module, but NOT the default)
31
31
  __exportStar(require("../core"), exports);
32
32
  const core_1 = __importDefault(require("../core"));
@@ -54,6 +54,11 @@ Object.defineProperty(exports, "repairLegacyWasmZstdPlaintext", { enumerable: tr
54
54
  // Efficient ZIP copying using ZipEntry directly
55
55
  var ZipCopyNode_1 = require("./ZipCopyNode");
56
56
  Object.defineProperty(exports, "ZipCopyNode", { enumerable: true, get: function () { return ZipCopyNode_1.ZipCopyNode; } });
57
+ var buildZipBuffer_1 = require("./buildZipBuffer");
58
+ Object.defineProperty(exports, "buildZipBufferSync", { enumerable: true, get: function () { return buildZipBuffer_1.buildZipBufferSync; } });
59
+ Object.defineProperty(exports, "writeZipFileSync", { enumerable: true, get: function () { return buildZipBuffer_1.writeZipFileSync; } });
60
+ var inflateZipPayload_1 = require("./inflateZipPayload");
61
+ Object.defineProperty(exports, "inflateZipPayloadSync", { enumerable: true, get: function () { return inflateZipPayload_1.inflateZipPayloadSync; } });
57
62
  // Platform detection
58
63
  exports.PlatformUtils = {
59
64
  // Browser detection
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;;;;;;;;;;;;;;;;;;AAEH,6EAA6E;AAC7E,0CAAwB;AACxB,mDAA6B;AACpB,iBADF,cAAM,CACE;AAEf,+FAA+F;AAC/F,8DAA6C;AAC7C,2CAAqD;AAA5C,yHAAA,OAAO,OAAc;AAC9B,mFAAmF;AACnF,kBAAe,oBAAiB,CAAC;AAEjC,qDAAoD;AAA3C,kHAAA,eAAe,OAAA;AACxB,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA;AAC1B,uCAA6D;AAApD,oGAAA,QAAQ,OAAA;AAAE,iHAAA,qBAAqB,OAAA;AACxC,2CAOsB;AANpB,wGAAA,UAAU,OAAA;AACV,sHAAA,wBAAwB,OAAA;AACxB,uHAAA,yBAAyB,OAAA;AACzB,qHAAA,uBAAuB,OAAA;AACvB,kHAAA,oBAAoB,OAAA;AACpB,2HAAA,6BAA6B,OAAA;AAI/B,gDAAgD;AAChD,6CAA4C;AAAnC,0GAAA,WAAW,OAAA;AAQpB,qBAAqB;AACR,QAAA,aAAa,GAAG;IAC3B,oBAAoB;IACpB,SAAS,EAAE,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,QAAQ,KAAK,WAAW;IAC3E,oBAAoB;IACpB,MAAM,EAAE,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI;CACpF,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;;;;;;;;;;;;;;;;;;AAEH,6EAA6E;AAC7E,0CAAwB;AACxB,mDAA6B;AACpB,iBADF,cAAM,CACE;AAEf,+FAA+F;AAC/F,8DAA6C;AAC7C,2CAAqD;AAA5C,yHAAA,OAAO,OAAc;AAC9B,mFAAmF;AACnF,kBAAe,oBAAiB,CAAC;AAEjC,qDAAoD;AAA3C,kHAAA,eAAe,OAAA;AACxB,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA;AAC1B,uCAA6D;AAApD,oGAAA,QAAQ,OAAA;AAAE,iHAAA,qBAAqB,OAAA;AACxC,2CAOsB;AANpB,wGAAA,UAAU,OAAA;AACV,sHAAA,wBAAwB,OAAA;AACxB,uHAAA,yBAAyB,OAAA;AACzB,qHAAA,uBAAuB,OAAA;AACvB,kHAAA,oBAAoB,OAAA;AACpB,2HAAA,6BAA6B,OAAA;AAI/B,gDAAgD;AAChD,6CAA4C;AAAnC,0GAAA,WAAW,OAAA;AACpB,mDAAwE;AAA/D,oHAAA,kBAAkB,OAAA;AAAE,kHAAA,gBAAgB,OAAA;AAM7C,yDAA4D;AAAnD,0HAAA,qBAAqB,OAAA;AAQ9B,qBAAqB;AACR,QAAA,aAAa,GAAG;IAC3B,oBAAoB;IACpB,SAAS,EAAE,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,QAAQ,KAAK,WAAW;IAC3E,oBAAoB;IACpB,MAAM,EAAE,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI;CACpF,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Synchronous inflate for Node readers (store, raw deflate, native zstd).
3
+ */
4
+ export declare function inflateZipPayloadSync(method: number, compressed: Buffer): Buffer;
5
+ //# sourceMappingURL=inflateZipPayload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inflateZipPayload.d.ts","sourceRoot":"","sources":["../../src/node/inflateZipPayload.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAWhF"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ /**
3
+ * Synchronous inflate for Node readers (store, raw deflate, native zstd).
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.inflateZipPayloadSync = inflateZipPayloadSync;
7
+ const zlib_1 = require("zlib");
8
+ const ZstdNode_1 = require("./ZstdNode");
9
+ function inflateZipPayloadSync(method, compressed) {
10
+ if (method === 0) {
11
+ return Buffer.from(compressed);
12
+ }
13
+ if (method === 8) {
14
+ return (0, zlib_1.inflateRawSync)(compressed);
15
+ }
16
+ if (method === 93) {
17
+ return (0, ZstdNode_1.decompressSync)(compressed);
18
+ }
19
+ throw new Error(`unsupported compression method ${method}`);
20
+ }
21
+ //# sourceMappingURL=inflateZipPayload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inflateZipPayload.js","sourceRoot":"","sources":["../../src/node/inflateZipPayload.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAKH,sDAWC;AAdD,+BAAsC;AACtC,yCAA4C;AAE5C,SAAgB,qBAAqB,CAAC,MAAc,EAAE,UAAkB;IACtE,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;QACjB,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;QACjB,OAAO,IAAA,qBAAc,EAAC,UAAU,CAAC,CAAC;IACpC,CAAC;IACD,IAAI,MAAM,KAAK,EAAE,EAAE,CAAC;QAClB,OAAO,IAAA,yBAAc,EAAC,UAAU,CAAC,CAAC;IACpC,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,kCAAkC,MAAM,EAAE,CAAC,CAAC;AAC9D,CAAC"}
@@ -5,7 +5,7 @@
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.NEOZIPKIT_INFO = void 0;
7
7
  exports.NEOZIPKIT_INFO = {
8
- version: '0.7.0',
9
- releaseDate: '2026-04-06'
8
+ version: '1.5.0',
9
+ releaseDate: '2026-10-25'
10
10
  };
11
11
  //# sourceMappingURL=index.js.map
package/node-esm.mjs ADDED
@@ -0,0 +1,32 @@
1
+ /**
2
+ * ESM entry for `neozipkit/node`.
3
+ * The compiled kit is CommonJS; Node does not surface its getter exports as named ESM imports.
4
+ */
5
+ import { createRequire } from "node:module";
6
+
7
+ const require = createRequire(import.meta.url);
8
+ const kit = require("./dist/node/index.js");
9
+
10
+ export const ZipkitNode = kit.ZipkitNode;
11
+ export const Zipkit = kit.Zipkit;
12
+ export const buildZipBufferSync = kit.buildZipBufferSync;
13
+ export const writeZipFileSync = kit.writeZipFileSync;
14
+ export const inflateZipPayloadSync = kit.inflateZipPayloadSync;
15
+ export const ZipCopyNode = kit.ZipCopyNode;
16
+ export const crc32 = kit.crc32;
17
+ export const sha256 = kit.sha256;
18
+ export const isMetaInfPath = kit.isMetaInfPath;
19
+ export const computeArchiveMerkleRoot = kit.computeArchiveMerkleRoot;
20
+ export const computeMerkleRootV0FromDigests = kit.computeMerkleRootV0FromDigests;
21
+ export const computeMerkleRootV1FromContents = kit.computeMerkleRootV1FromContents;
22
+ export const computeMerkleRootV1FromLeaves = kit.computeMerkleRootV1FromLeaves;
23
+ export const contentDigest = kit.contentDigest;
24
+ export const leafHashV0 = kit.leafHashV0;
25
+ export const leafHashV1 = kit.leafHashV1;
26
+ export const matchMerkleRoot = kit.matchMerkleRoot;
27
+ export const merkleRootFromLeaves = kit.merkleRootFromLeaves;
28
+ export const normalizeMerklePath = kit.normalizeMerklePath;
29
+ export const parentHash = kit.parentHash;
30
+ export const ZstdNode = kit.ZstdNode;
31
+ export const isNativeZstdAvailable = kit.isNativeZstdAvailable;
32
+ export default kit.default ?? kit.ZipkitNode;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "neozipkit",
3
- "version": "1.0.2",
3
+ "version": "1.5.0",
4
4
  "description": "NeoZipKit - Advanced ZIP file creation, compression, and encryption",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
@@ -19,7 +19,10 @@
19
19
  },
20
20
  "./browser": {
21
21
  "types": "./dist/browser.d.ts",
22
- "default": "./dist/browser.js"
22
+ "browser": "./dist/browser-esm/index.js",
23
+ "import": "./dist/browser-esm/index.js",
24
+ "require": "./dist/browser.js",
25
+ "default": "./dist/browser-esm/index.js"
23
26
  },
24
27
  "./browser/*": {
25
28
  "types": "./dist/browser/*.d.ts",
@@ -36,9 +39,9 @@
36
39
  },
37
40
  "./node": {
38
41
  "types": "./dist/node/index.d.ts",
39
- "import": "./dist/node/index.js",
42
+ "import": "./node-esm.mjs",
40
43
  "require": "./dist/node/index.js",
41
- "default": "./dist/node/index.js"
44
+ "default": "./node-esm.mjs"
42
45
  },
43
46
  "./node/*": {
44
47
  "types": "./dist/node/*.d.ts",
@@ -88,8 +91,10 @@
88
91
  "files": [
89
92
  "dist/",
90
93
  "src/",
94
+ "node-esm.mjs",
91
95
  "README.md",
92
- "WHATS_NEW.md"
96
+ "WHATS_NEW.md",
97
+ "NEOZIP_APPNOTE.md"
93
98
  ],
94
99
  "scripts": {
95
100
  "clean": "node scripts/clean.js",
@@ -113,9 +118,11 @@
113
118
  "test:all": "npm run test:unit && npm run test:examples",
114
119
  "test:watch": "jest --watch",
115
120
  "test:coverage": "jest --coverage",
121
+ "test:zip64": "npx ts-node examples/create-zip64.ts",
116
122
  "audit": "pnpm audit",
117
123
  "publish:dry-run": "npm publish --access public --dry-run",
118
124
  "example:create-zip": "npx ts-node examples/create-zip.ts",
125
+ "example:create-zip64": "npx ts-node examples/create-zip64.ts",
119
126
  "example:extract-zip": "npx ts-node examples/extract-zip.ts",
120
127
  "example:list-zip": "npx ts-node examples/list-zip.ts",
121
128
  "example:copy-zip": "npx ts-node examples/copy-zip.ts",
@@ -156,12 +163,12 @@
156
163
  "@types/uuid": "^9.0.0",
157
164
  "esbuild": "^0.25.0",
158
165
  "jest": "29.7.0",
159
- "minimatch": "^10.2.1",
160
166
  "ts-jest": "29.1.2",
161
167
  "typescript": "^5.0.0"
162
168
  },
163
169
  "dependencies": {
164
170
  "buffer": "^6.0.3",
171
+ "minimatch": "^10.2.1",
165
172
  "pako": "^2.1.0",
166
173
  "uuid": "^9.0.0"
167
174
  }
@@ -8,7 +8,7 @@ import ZipEntry from '../core/ZipEntry';
8
8
  import { ZipCompress } from '../core/ZipCompress';
9
9
  import Errors from '../core/constants/Errors';
10
10
  import * as Headers from '../core/constants/Headers';
11
- import { TOKENIZED_METADATA, TIMESTAMP_SUBMITTED, TIMESTAMP_METADATA } from '../core/constants/Headers';
11
+ import { isMetaInfPath } from '../core/constants/MetaPaths';
12
12
  import { sha256, crc32 } from '../core/encryption/ZipCrypto';
13
13
  import { DATATYPE, getTypeOf } from '../core/components/Util';
14
14
  import type { FileData } from '../types';
@@ -172,7 +172,7 @@ export default class ZipkitBrowser extends Zipkit {
172
172
  for (const entry of zipEntries) {
173
173
  if (!entry.isUpdated) {
174
174
  // Check for META-INF metadata files even in copy mode
175
- if (entry.filename === TOKENIZED_METADATA || entry.filename === TIMESTAMP_SUBMITTED || entry.filename === TIMESTAMP_METADATA) {
175
+ if (isMetaInfPath(entry.filename || '')) {
176
176
  // Force this entry to be processed with special handling instead of copied
177
177
  entry.isUpdated = true;
178
178
  // Don't continue here - let it fall through to special handling below
@@ -207,7 +207,7 @@ export default class ZipkitBrowser extends Zipkit {
207
207
  }
208
208
 
209
209
  // Special handling for META-INF metadata files - store uncompressed with CRC-32
210
- if (entry.filename === TOKENIZED_METADATA || entry.filename === TIMESTAMP_SUBMITTED || entry.filename === TIMESTAMP_METADATA) {
210
+ if (isMetaInfPath(entry.filename || '')) {
211
211
  // For metadata files, use STORED compression (no compression)
212
212
  const buffer = Buffer.from(fileBuffer);
213
213
 
@@ -266,9 +266,7 @@ export default class ZipkitBrowser extends Zipkit {
266
266
  * @returns boolean - True if the file is a metadata file
267
267
  */
268
268
  private isMetadataFile(filename: string): boolean {
269
- return filename === TIMESTAMP_SUBMITTED ||
270
- filename === TIMESTAMP_METADATA ||
271
- filename === TOKENIZED_METADATA;
269
+ return isMetaInfPath(filename);
272
270
  }
273
271
 
274
272
  // --------------------------------------