neozipkit 0.2.1 → 0.3.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 (301) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +410 -186
  3. package/contracts/ABI.txt +889 -0
  4. package/contracts/Bytecode.txt +1 -0
  5. package/contracts/COMPILATION_NOTES.md +59 -0
  6. package/contracts/QUICK_DEPLOY.md +286 -0
  7. package/contracts/README.md +235 -131
  8. package/contracts/VERIFICATION.md +308 -0
  9. package/contracts/deploy-interactive.js +448 -0
  10. package/contracts/deployment-arbitrum-sepolia.json +12 -0
  11. package/contracts/deployment-arbitrum.json +12 -0
  12. package/contracts/deployment-eth-sepolia.json +12 -0
  13. package/contracts/hardhat.config.js +114 -0
  14. package/contracts/package.json +20 -0
  15. package/contracts/scripts/compile-and-extract.js +119 -0
  16. package/contracts/scripts/verify-contract.js +223 -0
  17. package/contracts/src/{NZIP-NFT-Private.sol → NZIP-NFT-v2.0.sol} +66 -151
  18. package/contracts/src/NZIP-NFT.sol +9 -15
  19. package/dist/blockchain/browser/TokenVerifierBrowser.d.ts +67 -0
  20. package/dist/blockchain/browser/TokenVerifierBrowser.d.ts.map +1 -0
  21. package/dist/blockchain/browser/TokenVerifierBrowser.js +313 -0
  22. package/dist/blockchain/browser/TokenVerifierBrowser.js.map +1 -0
  23. package/dist/blockchain/browser/WalletManagerBrowser.d.ts +98 -0
  24. package/dist/blockchain/browser/WalletManagerBrowser.d.ts.map +1 -0
  25. package/dist/blockchain/browser/WalletManagerBrowser.js +434 -0
  26. package/dist/blockchain/browser/WalletManagerBrowser.js.map +1 -0
  27. package/dist/blockchain/browser/ZipkitMinterBrowser.d.ts +58 -0
  28. package/dist/blockchain/browser/ZipkitMinterBrowser.d.ts.map +1 -0
  29. package/dist/blockchain/browser/ZipkitMinterBrowser.js +317 -0
  30. package/dist/blockchain/browser/ZipkitMinterBrowser.js.map +1 -0
  31. package/dist/blockchain/browser/index.d.ts +11 -0
  32. package/dist/blockchain/browser/index.d.ts.map +1 -0
  33. package/dist/blockchain/browser/index.js +16 -0
  34. package/dist/blockchain/browser/index.js.map +1 -0
  35. package/dist/blockchain/core/WalletManager.d.ts +124 -0
  36. package/dist/blockchain/core/WalletManager.d.ts.map +1 -0
  37. package/dist/blockchain/{ZipKitWallet.js → core/WalletManager.js} +157 -177
  38. package/dist/blockchain/core/WalletManager.js.map +1 -0
  39. package/dist/blockchain/{ZipKitMinter.d.ts → core/ZipkitMinter.d.ts} +46 -11
  40. package/dist/blockchain/core/ZipkitMinter.d.ts.map +1 -0
  41. package/dist/blockchain/core/ZipkitMinter.js +548 -0
  42. package/dist/blockchain/core/ZipkitMinter.js.map +1 -0
  43. package/dist/blockchain/{ZipKitOTS.d.ts → core/ZipkitOTS.d.ts} +6 -15
  44. package/dist/blockchain/core/ZipkitOTS.d.ts.map +1 -0
  45. package/dist/blockchain/{ZipKitOTS.js → core/ZipkitOTS.js} +26 -84
  46. package/dist/blockchain/core/ZipkitOTS.js.map +1 -0
  47. package/dist/blockchain/core/ZipkitVerifier.d.ts +177 -0
  48. package/dist/blockchain/core/ZipkitVerifier.d.ts.map +1 -0
  49. package/dist/blockchain/core/ZipkitVerifier.js +632 -0
  50. package/dist/blockchain/core/ZipkitVerifier.js.map +1 -0
  51. package/dist/blockchain/core/contracts.d.ts +83 -0
  52. package/dist/blockchain/core/contracts.d.ts.map +1 -0
  53. package/dist/blockchain/core/contracts.js +341 -0
  54. package/dist/blockchain/core/contracts.js.map +1 -0
  55. package/dist/blockchain/core/index.d.ts +12 -0
  56. package/dist/blockchain/core/index.d.ts.map +1 -0
  57. package/dist/blockchain/core/index.js +59 -0
  58. package/dist/blockchain/core/index.js.map +1 -0
  59. package/dist/blockchain/index.d.ts +11 -7
  60. package/dist/blockchain/index.d.ts.map +1 -0
  61. package/dist/blockchain/index.js +18 -34
  62. package/dist/blockchain/index.js.map +1 -0
  63. package/dist/blockchain/node/WalletManagerNode.d.ts +47 -0
  64. package/dist/blockchain/node/WalletManagerNode.d.ts.map +1 -0
  65. package/dist/blockchain/node/WalletManagerNode.js +203 -0
  66. package/dist/blockchain/node/WalletManagerNode.js.map +1 -0
  67. package/dist/blockchain/node/index.d.ts +12 -0
  68. package/dist/blockchain/node/index.d.ts.map +1 -0
  69. package/dist/blockchain/node/index.js +24 -0
  70. package/dist/blockchain/node/index.js.map +1 -0
  71. package/dist/browser/ZipkitBrowser.d.ts +27 -0
  72. package/dist/browser/ZipkitBrowser.d.ts.map +1 -0
  73. package/dist/browser/{ZipKitBrowser.js → ZipkitBrowser.js} +96 -43
  74. package/dist/browser/ZipkitBrowser.js.map +1 -0
  75. package/dist/browser/index.d.ts +12 -0
  76. package/dist/browser/index.d.ts.map +1 -0
  77. package/dist/browser/index.js +42 -0
  78. package/dist/browser/index.js.map +1 -0
  79. package/dist/browser-esm/index.d.ts +12 -0
  80. package/dist/browser-esm/index.js +59559 -0
  81. package/dist/browser-esm/index.js.map +7 -0
  82. package/dist/browser-umd/index.d.ts +12 -0
  83. package/dist/browser-umd/index.js +59576 -0
  84. package/dist/browser-umd/index.js.map +7 -0
  85. package/dist/browser-umd/index.min.js +63 -0
  86. package/dist/browser.d.ts +8 -14
  87. package/dist/browser.js +13 -28
  88. package/dist/core/ZipCompress.d.ts +99 -0
  89. package/dist/core/ZipCompress.d.ts.map +1 -0
  90. package/dist/core/ZipCompress.js +309 -0
  91. package/dist/core/ZipCompress.js.map +1 -0
  92. package/dist/core/ZipDecompress.d.ts +58 -0
  93. package/dist/core/ZipDecompress.d.ts.map +1 -0
  94. package/dist/core/ZipDecompress.js +172 -0
  95. package/dist/core/ZipDecompress.js.map +1 -0
  96. package/dist/{shared → core}/ZipEntry.d.ts +8 -1
  97. package/dist/core/ZipEntry.d.ts.map +1 -0
  98. package/dist/{shared → core}/ZipEntry.js +225 -82
  99. package/dist/core/ZipEntry.js.map +1 -0
  100. package/dist/core/Zipkit.d.ts +315 -0
  101. package/dist/core/Zipkit.d.ts.map +1 -0
  102. package/dist/core/Zipkit.js +647 -0
  103. package/dist/core/Zipkit.js.map +1 -0
  104. package/dist/core/components/HashCalculator.d.ts +138 -0
  105. package/dist/core/components/HashCalculator.d.ts.map +1 -0
  106. package/dist/core/components/HashCalculator.js +360 -0
  107. package/dist/core/components/HashCalculator.js.map +1 -0
  108. package/dist/core/components/Logger.d.ts +73 -0
  109. package/dist/core/components/Logger.d.ts.map +1 -0
  110. package/dist/core/components/Logger.js +156 -0
  111. package/dist/core/components/Logger.js.map +1 -0
  112. package/dist/core/components/ProgressTracker.d.ts +43 -0
  113. package/dist/core/components/ProgressTracker.d.ts.map +1 -0
  114. package/dist/core/components/ProgressTracker.js +112 -0
  115. package/dist/core/components/ProgressTracker.js.map +1 -0
  116. package/dist/{shared → core}/components/Support.d.ts +1 -0
  117. package/dist/core/components/Support.d.ts.map +1 -0
  118. package/dist/{shared → core}/components/Support.js +1 -0
  119. package/dist/core/components/Support.js.map +1 -0
  120. package/dist/{shared → core}/components/Util.d.ts +7 -2
  121. package/dist/core/components/Util.d.ts.map +1 -0
  122. package/dist/{shared → core}/components/Util.js +14 -34
  123. package/dist/core/components/Util.js.map +1 -0
  124. package/dist/{shared → core}/constants/Errors.d.ts +1 -2
  125. package/dist/core/constants/Errors.d.ts.map +1 -0
  126. package/dist/{shared → core}/constants/Errors.js +1 -3
  127. package/dist/core/constants/Errors.js.map +1 -0
  128. package/dist/{shared → core}/constants/Headers.d.ts +3 -0
  129. package/dist/core/constants/Headers.d.ts.map +1 -0
  130. package/dist/{shared → core}/constants/Headers.js +20 -17
  131. package/dist/core/constants/Headers.js.map +1 -0
  132. package/dist/core/encryption/Manager.d.ts +58 -0
  133. package/dist/core/encryption/Manager.d.ts.map +1 -0
  134. package/dist/core/encryption/Manager.js +121 -0
  135. package/dist/core/encryption/Manager.js.map +1 -0
  136. package/dist/core/encryption/ZipCrypto.d.ts +172 -0
  137. package/dist/core/encryption/ZipCrypto.d.ts.map +1 -0
  138. package/dist/core/encryption/ZipCrypto.js +554 -0
  139. package/dist/core/encryption/ZipCrypto.js.map +1 -0
  140. package/dist/core/encryption/index.d.ts +9 -0
  141. package/dist/core/encryption/index.d.ts.map +1 -0
  142. package/dist/core/encryption/index.js +17 -0
  143. package/dist/core/encryption/index.js.map +1 -0
  144. package/dist/core/encryption/types.d.ts +29 -0
  145. package/dist/core/encryption/types.d.ts.map +1 -0
  146. package/dist/core/encryption/types.js +12 -0
  147. package/dist/core/encryption/types.js.map +1 -0
  148. package/dist/core/index.d.ts +24 -0
  149. package/dist/core/index.d.ts.map +1 -0
  150. package/dist/core/index.js +57 -0
  151. package/dist/core/index.js.map +1 -0
  152. package/dist/core/version.d.ts +5 -0
  153. package/dist/core/version.d.ts.map +1 -0
  154. package/dist/core/version.js +31 -0
  155. package/dist/core/version.js.map +1 -0
  156. package/dist/index.d.ts +8 -18
  157. package/dist/index.d.ts.map +1 -0
  158. package/dist/index.js +29 -35
  159. package/dist/index.js.map +1 -0
  160. package/dist/node/ZipCompressNode.d.ts +123 -0
  161. package/dist/node/ZipCompressNode.d.ts.map +1 -0
  162. package/dist/node/ZipCompressNode.js +576 -0
  163. package/dist/node/ZipCompressNode.js.map +1 -0
  164. package/dist/node/ZipDecompressNode.d.ts +120 -0
  165. package/dist/node/ZipDecompressNode.d.ts.map +1 -0
  166. package/dist/node/ZipDecompressNode.js +461 -0
  167. package/dist/node/ZipDecompressNode.js.map +1 -0
  168. package/dist/node/ZipkitNode.d.ts +406 -0
  169. package/dist/node/ZipkitNode.d.ts.map +1 -0
  170. package/dist/node/ZipkitNode.js +1305 -0
  171. package/dist/node/ZipkitNode.js.map +1 -0
  172. package/dist/node/index.d.ts +26 -0
  173. package/dist/node/index.d.ts.map +1 -0
  174. package/dist/node/index.js +65 -0
  175. package/dist/node/index.js.map +1 -0
  176. package/dist/types/index.d.ts +59 -0
  177. package/dist/types/index.d.ts.map +1 -0
  178. package/dist/types/index.js +36 -1
  179. package/dist/types/index.js.map +1 -0
  180. package/examples/README.md +269 -0
  181. package/examples/blockchain-tokenize.ts +354 -0
  182. package/examples/create-zip.ts +172 -0
  183. package/examples/extract-zip.ts +158 -0
  184. package/examples/list-zip.ts +161 -0
  185. package/examples/test-files/data.json +116 -0
  186. package/examples/test-files/document.md +80 -0
  187. package/examples/test-files/document.txt +2 -0
  188. package/examples/test-files/file1.txt +48 -0
  189. package/examples/test-files/file2.txt +80 -0
  190. package/examples/tsconfig.json +44 -0
  191. package/examples/unzip-token.ts +491 -0
  192. package/examples/verify-tokenized-zip.ts +305 -0
  193. package/examples/zip-token.ts +604 -0
  194. package/package.json +108 -24
  195. package/src/blockchain/README.md +59 -66
  196. package/src/{browser/TokenVerifierBrowser.ts-remove → blockchain/browser/TokenVerifierBrowser.ts} +125 -79
  197. package/src/blockchain/browser/WalletManagerBrowser.ts +486 -0
  198. package/src/blockchain/browser/ZipkitMinterBrowser.ts +400 -0
  199. package/src/blockchain/browser/index.ts +13 -0
  200. package/src/blockchain/{ZipKitWallet.ts → core/WalletManager.ts} +241 -143
  201. package/src/blockchain/core/ZipkitMinter.ts +716 -0
  202. package/src/blockchain/{ZipKitOTS.ts → core/ZipkitOTS.ts} +28 -62
  203. package/src/blockchain/core/ZipkitVerifier.ts +853 -0
  204. package/src/blockchain/core/contracts.ts +370 -0
  205. package/src/blockchain/core/index.ts +71 -0
  206. package/src/blockchain/index.ts +21 -55
  207. package/src/blockchain/node/WalletManagerNode.ts +171 -0
  208. package/src/blockchain/node/index.ts +40 -0
  209. package/src/browser/{ZipKitBrowser.ts → ZipkitBrowser.ts} +104 -41
  210. package/src/browser/index.esm.ts +37 -0
  211. package/src/browser/index.ts +25 -0
  212. package/src/core/ZipCompress.ts +398 -0
  213. package/src/core/ZipDecompress.ts +212 -0
  214. package/src/{shared → core}/ZipEntry.ts +240 -90
  215. package/src/core/Zipkit.ts +794 -0
  216. package/src/core/components/HashCalculator.ts +384 -0
  217. package/src/core/components/Logger.ts +180 -0
  218. package/src/core/components/ProgressTracker.ts +134 -0
  219. package/src/{shared → core}/components/Util.ts +12 -34
  220. package/src/{shared → core}/constants/Errors.ts +0 -4
  221. package/src/{shared → core}/constants/Headers.ts +19 -17
  222. package/src/core/encryption/Manager.ts +137 -0
  223. package/src/core/encryption/ZipCrypto.ts +650 -0
  224. package/src/core/encryption/index.ts +15 -0
  225. package/src/core/encryption/types.ts +33 -0
  226. package/src/core/index.ts +34 -0
  227. package/src/core/version.ts +33 -0
  228. package/src/index.ts +54 -25
  229. package/src/node/ZipCompressNode.ts +632 -0
  230. package/src/node/ZipDecompressNode.ts +508 -0
  231. package/src/node/ZipkitNode.ts +1559 -0
  232. package/src/node/index.ts +69 -0
  233. package/src/types/index.ts +131 -1
  234. package/src/types/modules.d.ts +1 -11
  235. package/src/types/opentimestamps.d.ts +1 -23
  236. package/contracts/INTEGRATION.md +0 -338
  237. package/contracts/NETWORKS.md +0 -156
  238. package/contracts/NZIP-NFT-bytecode.txt +0 -1
  239. package/contracts/constants.ts +0 -952
  240. package/contracts/deploy-bytecode.mjs +0 -94
  241. package/dist/blockchain/CertificateToken.d.ts +0 -48
  242. package/dist/blockchain/CertificateToken.js +0 -386
  243. package/dist/blockchain/ZipKitMinter.js +0 -347
  244. package/dist/blockchain/ZipKitNFT.d.ts +0 -3
  245. package/dist/blockchain/ZipKitNFT.js +0 -7
  246. package/dist/blockchain/ZipKitVerifier.d.ts +0 -69
  247. package/dist/blockchain/ZipKitVerifier.js +0 -289
  248. package/dist/blockchain/ZipKitWallet.d.ts +0 -69
  249. package/dist/blockchain/contracts.d.ts +0 -14
  250. package/dist/blockchain/contracts.js +0 -77
  251. package/dist/blockchain/types.d.ts +0 -47
  252. package/dist/blockchain/types.js +0 -30
  253. package/dist/browser/ZipKitBrowser.d.ts +0 -18
  254. package/dist/browser/ZipKitStampBrowser.d.ts +0 -2
  255. package/dist/browser/ZipKitStampBrowser.js +0 -12
  256. package/dist/browser-index.d.ts +0 -18
  257. package/dist/browser-index.js +0 -57
  258. package/dist/server/ZipKitServer.d.ts +0 -74
  259. package/dist/server/ZipKitServer.js +0 -310
  260. package/dist/shared/ZipKit.d.ts +0 -243
  261. package/dist/shared/ZipKit.js +0 -772
  262. package/dist/shared/components/CertificateOTS.d.ts +0 -15
  263. package/dist/shared/components/CertificateOTS.js +0 -116
  264. package/dist/shared/components/FileSys.d.ts +0 -2
  265. package/dist/shared/components/FileSys.js +0 -113
  266. package/dist/shared/components/HashAccumulator.d.ts +0 -55
  267. package/dist/shared/components/HashAccumulator.js +0 -100
  268. package/dist/shared/components/ZipCrypto.d.ts +0 -3
  269. package/dist/shared/components/ZipCrypto.js +0 -78
  270. package/dist/shared/components/merkleTree.d.ts +0 -66
  271. package/dist/shared/components/merkleTree.js +0 -136
  272. package/dist/shared/types/index.d.ts +0 -21
  273. package/dist/shared/types/index.js +0 -3
  274. package/dist/shared/types.d.ts +0 -33
  275. package/dist/shared/types.js +0 -8
  276. package/dist/shared/version.d.ts +0 -2
  277. package/dist/shared/version.js +0 -6
  278. package/src/blockchain/CertificateToken.ts +0 -444
  279. package/src/blockchain/ZipKitMinter.ts +0 -470
  280. package/src/blockchain/ZipKitNFT.ts +0 -12
  281. package/src/blockchain/ZipKitVerifier.ts +0 -382
  282. package/src/blockchain/contracts.ts +0 -88
  283. package/src/blockchain/types.ts +0 -91
  284. package/src/browser/CertificateGeneratorBrowser.ts-remove +0 -498
  285. package/src/browser/ZipKitStampBrowser.ts +0 -9
  286. package/src/browser-index.ts +0 -36
  287. package/src/server/README.md +0 -25
  288. package/src/server/ZipKitServer.ts +0 -305
  289. package/src/shared/ZipKit.ts +0 -881
  290. package/src/shared/components/CertificateOTS.ts +0 -132
  291. package/src/shared/components/FileSys.ts +0 -87
  292. package/src/shared/components/HashAccumulator.ts +0 -113
  293. package/src/shared/components/ZipCrypto.ts +0 -91
  294. package/src/shared/components/merkleTree.ts +0 -162
  295. package/src/shared/types/index.ts +0 -25
  296. package/src/shared/types/modules.d.ts +0 -22
  297. package/src/shared/types/opentimestamps.d.ts +0 -23
  298. package/src/shared/types.d.ts +0 -8
  299. package/src/shared/types.ts +0 -43
  300. package/src/shared/version.ts +0 -3
  301. /package/src/{shared → core}/components/Support.ts +0 -0
@@ -0,0 +1,406 @@
1
+ import Zipkit, { CompressOptions, StreamingFileHandle } from '../core';
2
+ import ZipEntry from '../core/ZipEntry';
3
+ import Errors from '../core/constants/Errors';
4
+ import * as fs from 'fs';
5
+ export * from '../core';
6
+ export { ZipEntry, Errors };
7
+ /**
8
+ * Interface for ZIP file writing operations
9
+ * Tracks file descriptor, stream, current position, and entry positions
10
+ */
11
+ export interface ZipFileWriter {
12
+ outputFd: number;
13
+ outputStream: fs.WriteStream;
14
+ currentPosition: number;
15
+ entryPositions: Map<string, number>;
16
+ }
17
+ /**
18
+ * ZipkitNode - Node.js file-based ZIP operations
19
+ *
20
+ * Extends Zipkit to provide file I/O operations for Node.js environments.
21
+ * Similar to ZipkitBrowser which provides Blob operations for browser environments.
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * const zip = new ZipkitNode();
26
+ * await zip.loadZipFile('archive.zip');
27
+ * await zip.extractToFile(entry, './output/file.txt');
28
+ * ```
29
+ */
30
+ export default class ZipkitNode extends Zipkit {
31
+ private _zipkitCmpNode;
32
+ private _zipkitDeCmpNode;
33
+ private fileHandle;
34
+ private filePath;
35
+ private fileSize;
36
+ constructor(config?: {
37
+ bufferSize?: number;
38
+ debug?: boolean;
39
+ });
40
+ /**
41
+ * Lazy-load ZipCompressNode instance and override base class _zipkitCmp
42
+ * @returns ZipCompressNode instance (created on first access)
43
+ */
44
+ private getZipCompressNode;
45
+ /**
46
+ * Lazy-load ZipDecompressNode instance and override base class _zipkitDeCmp
47
+ * @returns ZipDecompressNode instance (created on first access)
48
+ */
49
+ private getZipDecompressNode;
50
+ /**
51
+ * Load ZIP file from file path (streaming mode)
52
+ *
53
+ * **Required**: You must call this method before calling `getDirectory()` or any other ZIP operations.
54
+ * This method:
55
+ * 1. Resets all ZIP data
56
+ * 2. Opens the file handle
57
+ * 3. Loads EOCD and parses central directory
58
+ * 4. Populates this.zipEntries[] array
59
+ *
60
+ * @param filePath - Path to the ZIP file to load
61
+ * @returns Promise<ZipEntry[]> Array of all entries in the ZIP file
62
+ * @throws Error if Node.js environment not available
63
+ */
64
+ loadZipFile(filePath: string): Promise<ZipEntry[]>;
65
+ /**
66
+ * Alias for loadZipFile() for consistency
67
+ * @param filePath - Path to the ZIP file to load
68
+ * @returns Promise<ZipEntry[]> Array of all entries in the ZIP file
69
+ */
70
+ loadZipFromFile(filePath: string): Promise<ZipEntry[]>;
71
+ /**
72
+ * Extract file directly to disk with true streaming (no memory buffering)
73
+ * Wrapper for ZipDecompress.extractToFile()
74
+ *
75
+ * Note: ZSTD codec is lazily initialized on first use (module-level singleton).
76
+ * Initialization happens automatically when needed.
77
+ *
78
+ * @param entry - ZIP entry to extract
79
+ * @param outputPath - Path where the file should be written
80
+ * @param options - Optional extraction options:
81
+ * - skipHashCheck: Skip hash verification (default: false)
82
+ * - onProgress: Callback function receiving bytes extracted as parameter
83
+ * @returns Promise that resolves when extraction is complete
84
+ * @throws Error if not a File-based ZIP
85
+ */
86
+ extractToFile(entry: ZipEntry, outputPath: string, options?: {
87
+ skipHashCheck?: boolean;
88
+ onProgress?: (bytes: number) => void;
89
+ }): Promise<void>;
90
+ /**
91
+ * Alias for extractToFile() for consistency
92
+ * @param entry - ZIP entry to extract
93
+ * @param outputPath - Path where the file should be written
94
+ * @param options - Optional extraction options
95
+ * @returns Promise that resolves when extraction is complete
96
+ */
97
+ extractEntryToFile(entry: ZipEntry, outputPath: string, options?: {
98
+ skipHashCheck?: boolean;
99
+ onProgress?: (bytes: number) => void;
100
+ }): Promise<void>;
101
+ /**
102
+ * Compress data for a ZIP entry (Buffer-based)
103
+ * Override to use ZipCompressNode instead of ZipCompress
104
+ *
105
+ * @param entry - ZIP entry to compress
106
+ * @param data - Buffer containing data to compress
107
+ * @param options - Compression options
108
+ * @param onOutputBuffer - Optional callback for streaming output
109
+ * @returns Promise resolving to Buffer containing compressed data
110
+ */
111
+ compressData(entry: ZipEntry, data: Buffer, options?: CompressOptions, onOutputBuffer?: (data: Buffer) => Promise<void>): Promise<Buffer>;
112
+ /**
113
+ * Compress a file from disk
114
+ * Wrapper for ZipCompressNode.compressFile()
115
+ *
116
+ * @param filePath - Path to the file to compress
117
+ * @param entry - ZIP entry to compress (filename should already be set)
118
+ * @param options - Optional compression options
119
+ * @returns Promise resolving to Buffer containing compressed data
120
+ */
121
+ compressFile(filePath: string, entry: ZipEntry, options?: CompressOptions): Promise<Buffer>;
122
+ /**
123
+ * Compress a file from disk using streaming for large files
124
+ * Wrapper for ZipCompressNode.compressFileStream()
125
+ *
126
+ * @param filePath - Path to the file to compress
127
+ * @param entry - ZIP entry to compress (filename should already be set)
128
+ * @param options - Optional compression options
129
+ * @param onOutputBuffer - Optional callback for streaming output
130
+ * @returns Promise resolving to Buffer containing compressed data
131
+ */
132
+ compressFileStream(filePath: string, entry: ZipEntry, options?: CompressOptions, onOutputBuffer?: (data: Buffer) => Promise<void>): Promise<Buffer>;
133
+ /**
134
+ * Extract all entries from ZIP to a directory
135
+ *
136
+ * @param outputDir - Directory where files should be extracted
137
+ * @param options - Optional extraction options:
138
+ * - skipHashCheck: Skip hash verification (default: false)
139
+ * - onProgress: Callback function receiving (entry, bytes) as parameters
140
+ * - preservePaths: Preserve directory structure (default: true)
141
+ * @returns Promise that resolves when all extractions are complete
142
+ * @throws Error if not a File-based ZIP
143
+ */
144
+ extractAll(outputDir: string, options?: {
145
+ skipHashCheck?: boolean;
146
+ onProgress?: (entry: ZipEntry, bytes: number) => void;
147
+ preservePaths?: boolean;
148
+ }): Promise<void>;
149
+ /**
150
+ * Initialize ZIP file for writing
151
+ * Creates output file with seek capability and returns writer object
152
+ *
153
+ * @param outputPath - Path where the ZIP file should be created
154
+ * @returns Promise resolving to ZipFileWriter object
155
+ */
156
+ initializeZipFile(outputPath: string): Promise<ZipFileWriter>;
157
+ /**
158
+ * Prepare ZipEntry from file path
159
+ * Validates file exists and creates entry with metadata from file stats
160
+ *
161
+ * @param filePath - Path to the file
162
+ * @param entryName - Optional entry name (defaults to basename)
163
+ * @returns Promise resolving to ZipEntry ready for compression
164
+ */
165
+ prepareEntryFromFile(filePath: string, entryName?: string): Promise<ZipEntry>;
166
+ /**
167
+ * Write a ZIP entry to the file
168
+ * Handles sequential write: header (placeholder) → compress → data → update header
169
+ *
170
+ * @param writer - ZipFileWriter object
171
+ * @param entry - ZipEntry to write
172
+ * @param filePath - Path to source file
173
+ * @param options - Optional compression options
174
+ * @param callbacks - Optional callbacks for progress and hash calculation
175
+ * @returns Promise that resolves when entry is written
176
+ */
177
+ writeZipEntry(writer: ZipFileWriter, entry: ZipEntry, filePath: string, options?: CompressOptions, callbacks?: {
178
+ onProgress?: (entry: ZipEntry, bytes: number) => void;
179
+ onHashCalculated?: (entry: ZipEntry, hash: Buffer) => void;
180
+ }): Promise<void>;
181
+ /**
182
+ * Write central directory entries to ZIP file
183
+ *
184
+ * @param writer - ZipFileWriter object
185
+ * @param entries - Array of ZipEntry objects
186
+ * @param options - Optional options for archive comment and progress
187
+ * @returns Promise resolving to central directory size in bytes
188
+ */
189
+ writeCentralDirectory(writer: ZipFileWriter, entries: ZipEntry[], options?: {
190
+ archiveComment?: string;
191
+ onProgress?: (entry: ZipEntry) => void;
192
+ }): Promise<number>;
193
+ /**
194
+ * Write End of Central Directory record
195
+ *
196
+ * @param writer - ZipFileWriter object
197
+ * @param totalEntries - Total number of entries in ZIP
198
+ * @param centralDirSize - Size of central directory in bytes
199
+ * @param centralDirOffset - Offset to start of central directory
200
+ * @param archiveComment - Optional archive comment (max 65535 bytes)
201
+ * @returns Promise that resolves when EOCD is written
202
+ */
203
+ writeEndOfCentralDirectory(writer: ZipFileWriter, totalEntries: number, centralDirSize: number, centralDirOffset: number, archiveComment?: string): Promise<void>;
204
+ /**
205
+ * Finalize ZIP file by closing handles
206
+ *
207
+ * @param writer - ZipFileWriter object
208
+ * @returns Promise that resolves when file is closed
209
+ */
210
+ finalizeZipFile(writer: ZipFileWriter): Promise<void>;
211
+ /**
212
+ * Create a ZIP file from multiple file paths
213
+ * Simple API that uses the modular subfunctions
214
+ *
215
+ * @param filePaths - Array of file paths to add to ZIP
216
+ * @param outputPath - Path where the ZIP file should be created
217
+ * @param options - Optional compression options
218
+ * @returns Promise that resolves when ZIP creation is complete
219
+ */
220
+ createZipFromFiles(filePaths: string[], outputPath: string, options?: CompressOptions): Promise<void>;
221
+ /**
222
+ * Add a file to the current ZIP
223
+ *
224
+ * @param filePath - Path to the file to add
225
+ * @param entryName - Name to use in ZIP (defaults to filename)
226
+ * @param options - Optional compression options
227
+ * @returns Promise resolving to the created ZipEntry
228
+ */
229
+ addFileToZip(filePath: string, entryName?: string, options?: CompressOptions): Promise<ZipEntry>;
230
+ /**
231
+ * Get underlying file handle for advanced operations
232
+ *
233
+ * @returns StreamingFileHandle if file is loaded
234
+ * @throws Error if file handle not available
235
+ */
236
+ getFileHandle(): StreamingFileHandle;
237
+ /**
238
+ * Close file handle explicitly
239
+ *
240
+ * @returns Promise that resolves when file is closed
241
+ */
242
+ closeFile(): Promise<void>;
243
+ /**
244
+ * Copy entry from another ZIP (compatibility method)
245
+ * Reads the local header and compressed data from the file and returns it as a Buffer
246
+ * This is used when updating an existing ZIP file to copy unchanged entries
247
+ *
248
+ * @param entry - ZIP entry to copy
249
+ * @returns Promise resolving to Buffer containing local header + compressed data
250
+ * @throws Error if file handle not available
251
+ */
252
+ copyEntry(entry: ZipEntry): Promise<Buffer>;
253
+ /**
254
+ * Update existing ZIP file
255
+ *
256
+ * This is a placeholder for future implementation.
257
+ * Full implementation would require:
258
+ * - Reading existing ZIP structure
259
+ * - Identifying entries to update/add/remove
260
+ * - Writing updated ZIP file
261
+ *
262
+ * @param zipPath - Path to the ZIP file to update
263
+ * @param updates - Update operations (add, update, remove entries)
264
+ * @returns Promise that resolves when update is complete
265
+ */
266
+ updateZipFile(zipPath: string, updates: {
267
+ add?: Array<{
268
+ filePath: string;
269
+ entryName?: string;
270
+ options?: CompressOptions;
271
+ }>;
272
+ update?: Array<{
273
+ entryName: string;
274
+ filePath: string;
275
+ options?: CompressOptions;
276
+ }>;
277
+ remove?: string[];
278
+ }): Promise<void>;
279
+ /**
280
+ * Open file handle for streaming mode
281
+ */
282
+ private openFileHandle;
283
+ /**
284
+ * Load End of Central Directory (EOCD) in streaming mode
285
+ */
286
+ private loadEOCD;
287
+ /**
288
+ * Load ZIP64 End of Central Directory
289
+ */
290
+ private loadZIP64EOCD;
291
+ /**
292
+ * Reset file-based ZIP data to initial state
293
+ */
294
+ private resetFileData;
295
+ /**
296
+ * Filter ZIP entries based on include/exclude patterns
297
+ *
298
+ * @param entries - Array of ZipEntry objects to filter
299
+ * @param options - Optional filtering options
300
+ * @returns Filtered array of ZipEntry objects
301
+ */
302
+ filterEntries(entries: ZipEntry[], options?: {
303
+ include?: string[];
304
+ exclude?: string[];
305
+ skipMetadata?: boolean;
306
+ }): ZipEntry[];
307
+ /**
308
+ * Prepare extraction path for a ZIP entry
309
+ *
310
+ * @param entry - ZipEntry to extract
311
+ * @param destination - Destination directory
312
+ * @param options - Optional path options
313
+ * @returns Absolute output path for the entry
314
+ */
315
+ prepareExtractionPath(entry: ZipEntry, destination: string, options?: {
316
+ junkPaths?: boolean;
317
+ }): string;
318
+ /**
319
+ * Extract timestamps from ZIP entry
320
+ *
321
+ * @param entry - ZipEntry to extract timestamps from
322
+ * @returns Object with mtime, atime, ctime (Date objects or null)
323
+ */
324
+ extractEntryTimestamps(entry: ZipEntry): {
325
+ mtime: Date | null;
326
+ atime: Date | null;
327
+ ctime: Date | null;
328
+ };
329
+ /**
330
+ * Determine if an entry should be extracted based on overwrite logic
331
+ *
332
+ * @param entry - ZipEntry to check
333
+ * @param outputPath - Path where file would be extracted
334
+ * @param options - Optional overwrite options
335
+ * @returns Promise resolving to decision object
336
+ */
337
+ shouldExtractEntry(entry: ZipEntry, outputPath: string, options?: {
338
+ overwrite?: boolean;
339
+ never?: boolean;
340
+ freshenOnly?: boolean;
341
+ updateOnly?: boolean;
342
+ onOverwritePrompt?: (filename: string) => Promise<'y' | 'n' | 'a' | 'q'>;
343
+ }): Promise<{
344
+ shouldExtract: boolean;
345
+ reason?: string;
346
+ }>;
347
+ /**
348
+ * Restore entry metadata (timestamps and permissions) to extracted file
349
+ *
350
+ * @param filePath - Path to the extracted file
351
+ * @param entry - ZipEntry that was extracted
352
+ * @param options - Optional metadata options
353
+ */
354
+ restoreEntryMetadata(filePath: string, entry: ZipEntry, options?: {
355
+ preserveTimestamps?: boolean;
356
+ preservePermissions?: boolean;
357
+ }): void;
358
+ /**
359
+ * Extract a single entry to a file path
360
+ * Handles symlinks, hardlinks, timestamps, and permissions
361
+ *
362
+ * @param entry - ZipEntry to extract
363
+ * @param outputPath - Path where file should be extracted
364
+ * @param options - Optional extraction options
365
+ * @returns Promise resolving to extraction result
366
+ */
367
+ extractEntryToPath(entry: ZipEntry, outputPath: string, options?: {
368
+ skipHashCheck?: boolean;
369
+ preserveTimestamps?: boolean;
370
+ preservePermissions?: boolean;
371
+ symlinks?: boolean;
372
+ hardLinks?: boolean;
373
+ onProgress?: (entry: ZipEntry, bytes: number) => void;
374
+ }): Promise<{
375
+ success: boolean;
376
+ bytesExtracted: number;
377
+ error?: string;
378
+ }>;
379
+ /**
380
+ * Extract all files from a ZIP archive to a destination directory
381
+ * Simple API that uses the modular subfunctions
382
+ *
383
+ * @param archivePath - Path to the ZIP file
384
+ * @param destination - Directory where files should be extracted
385
+ * @param options - Optional extraction options
386
+ * @returns Promise resolving to extraction statistics
387
+ */
388
+ extractZipFile(archivePath: string, destination: string, options?: {
389
+ password?: string;
390
+ overwrite?: boolean;
391
+ junkPaths?: boolean;
392
+ include?: string[];
393
+ exclude?: string[];
394
+ preserveTimestamps?: boolean;
395
+ preservePermissions?: boolean;
396
+ symlinks?: boolean;
397
+ hardLinks?: boolean;
398
+ skipHashCheck?: boolean;
399
+ onProgress?: (entry: ZipEntry, bytes: number) => void;
400
+ onOverwritePrompt?: (filename: string) => Promise<'y' | 'n' | 'a' | 'q'>;
401
+ }): Promise<{
402
+ filesExtracted: number;
403
+ bytesExtracted: number;
404
+ }>;
405
+ }
406
+ //# sourceMappingURL=ZipkitNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ZipkitNode.d.ts","sourceRoot":"","sources":["../../src/node/ZipkitNode.ts"],"names":[],"mappings":"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"}