@neoware_inc/neozipkit 0.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 (171) hide show
  1. package/README.md +134 -0
  2. package/dist/browser/ZipkitBrowser.d.ts +27 -0
  3. package/dist/browser/ZipkitBrowser.d.ts.map +1 -0
  4. package/dist/browser/ZipkitBrowser.js +303 -0
  5. package/dist/browser/ZipkitBrowser.js.map +1 -0
  6. package/dist/browser/index.d.ts +9 -0
  7. package/dist/browser/index.d.ts.map +1 -0
  8. package/dist/browser/index.esm.d.ts +12 -0
  9. package/dist/browser/index.esm.d.ts.map +1 -0
  10. package/dist/browser/index.esm.js +46 -0
  11. package/dist/browser/index.esm.js.map +1 -0
  12. package/dist/browser/index.js +38 -0
  13. package/dist/browser/index.js.map +1 -0
  14. package/dist/browser-esm/index.d.ts +9 -0
  15. package/dist/browser-esm/index.js +50211 -0
  16. package/dist/browser-esm/index.js.map +7 -0
  17. package/dist/browser-umd/index.d.ts +9 -0
  18. package/dist/browser-umd/index.js +50221 -0
  19. package/dist/browser-umd/index.js.map +7 -0
  20. package/dist/browser-umd/index.min.js +39 -0
  21. package/dist/browser.d.ts +9 -0
  22. package/dist/browser.js +38 -0
  23. package/dist/core/ZipCompress.d.ts +99 -0
  24. package/dist/core/ZipCompress.d.ts.map +1 -0
  25. package/dist/core/ZipCompress.js +287 -0
  26. package/dist/core/ZipCompress.js.map +1 -0
  27. package/dist/core/ZipCopy.d.ts +175 -0
  28. package/dist/core/ZipCopy.d.ts.map +1 -0
  29. package/dist/core/ZipCopy.js +310 -0
  30. package/dist/core/ZipCopy.js.map +1 -0
  31. package/dist/core/ZipDecompress.d.ts +57 -0
  32. package/dist/core/ZipDecompress.d.ts.map +1 -0
  33. package/dist/core/ZipDecompress.js +155 -0
  34. package/dist/core/ZipDecompress.js.map +1 -0
  35. package/dist/core/ZipEntry.d.ts +138 -0
  36. package/dist/core/ZipEntry.d.ts.map +1 -0
  37. package/dist/core/ZipEntry.js +829 -0
  38. package/dist/core/ZipEntry.js.map +1 -0
  39. package/dist/core/Zipkit.d.ts +315 -0
  40. package/dist/core/Zipkit.d.ts.map +1 -0
  41. package/dist/core/Zipkit.js +647 -0
  42. package/dist/core/Zipkit.js.map +1 -0
  43. package/dist/core/ZstdManager.d.ts +56 -0
  44. package/dist/core/ZstdManager.d.ts.map +1 -0
  45. package/dist/core/ZstdManager.js +144 -0
  46. package/dist/core/ZstdManager.js.map +1 -0
  47. package/dist/core/components/HashCalculator.d.ts +138 -0
  48. package/dist/core/components/HashCalculator.d.ts.map +1 -0
  49. package/dist/core/components/HashCalculator.js +360 -0
  50. package/dist/core/components/HashCalculator.js.map +1 -0
  51. package/dist/core/components/Logger.d.ts +73 -0
  52. package/dist/core/components/Logger.d.ts.map +1 -0
  53. package/dist/core/components/Logger.js +156 -0
  54. package/dist/core/components/Logger.js.map +1 -0
  55. package/dist/core/components/ProgressTracker.d.ts +43 -0
  56. package/dist/core/components/ProgressTracker.d.ts.map +1 -0
  57. package/dist/core/components/ProgressTracker.js +112 -0
  58. package/dist/core/components/ProgressTracker.js.map +1 -0
  59. package/dist/core/components/Support.d.ts +64 -0
  60. package/dist/core/components/Support.d.ts.map +1 -0
  61. package/dist/core/components/Support.js +71 -0
  62. package/dist/core/components/Support.js.map +1 -0
  63. package/dist/core/components/Util.d.ts +26 -0
  64. package/dist/core/components/Util.d.ts.map +1 -0
  65. package/dist/core/components/Util.js +95 -0
  66. package/dist/core/components/Util.js.map +1 -0
  67. package/dist/core/constants/Errors.d.ts +52 -0
  68. package/dist/core/constants/Errors.d.ts.map +1 -0
  69. package/dist/core/constants/Errors.js +67 -0
  70. package/dist/core/constants/Errors.js.map +1 -0
  71. package/dist/core/constants/Headers.d.ts +170 -0
  72. package/dist/core/constants/Headers.d.ts.map +1 -0
  73. package/dist/core/constants/Headers.js +194 -0
  74. package/dist/core/constants/Headers.js.map +1 -0
  75. package/dist/core/encryption/Manager.d.ts +58 -0
  76. package/dist/core/encryption/Manager.d.ts.map +1 -0
  77. package/dist/core/encryption/Manager.js +121 -0
  78. package/dist/core/encryption/Manager.js.map +1 -0
  79. package/dist/core/encryption/ZipCrypto.d.ts +172 -0
  80. package/dist/core/encryption/ZipCrypto.d.ts.map +1 -0
  81. package/dist/core/encryption/ZipCrypto.js +554 -0
  82. package/dist/core/encryption/ZipCrypto.js.map +1 -0
  83. package/dist/core/encryption/index.d.ts +9 -0
  84. package/dist/core/encryption/index.d.ts.map +1 -0
  85. package/dist/core/encryption/index.js +17 -0
  86. package/dist/core/encryption/index.js.map +1 -0
  87. package/dist/core/encryption/types.d.ts +29 -0
  88. package/dist/core/encryption/types.d.ts.map +1 -0
  89. package/dist/core/encryption/types.js +12 -0
  90. package/dist/core/encryption/types.js.map +1 -0
  91. package/dist/core/index.d.ts +27 -0
  92. package/dist/core/index.d.ts.map +1 -0
  93. package/dist/core/index.js +59 -0
  94. package/dist/core/index.js.map +1 -0
  95. package/dist/core/version.d.ts +5 -0
  96. package/dist/core/version.d.ts.map +1 -0
  97. package/dist/core/version.js +31 -0
  98. package/dist/core/version.js.map +1 -0
  99. package/dist/index.d.ts +9 -0
  100. package/dist/index.d.ts.map +1 -0
  101. package/dist/index.js +38 -0
  102. package/dist/index.js.map +1 -0
  103. package/dist/node/ZipCompressNode.d.ts +123 -0
  104. package/dist/node/ZipCompressNode.d.ts.map +1 -0
  105. package/dist/node/ZipCompressNode.js +565 -0
  106. package/dist/node/ZipCompressNode.js.map +1 -0
  107. package/dist/node/ZipCopyNode.d.ts +165 -0
  108. package/dist/node/ZipCopyNode.d.ts.map +1 -0
  109. package/dist/node/ZipCopyNode.js +347 -0
  110. package/dist/node/ZipCopyNode.js.map +1 -0
  111. package/dist/node/ZipDecompressNode.d.ts +197 -0
  112. package/dist/node/ZipDecompressNode.d.ts.map +1 -0
  113. package/dist/node/ZipDecompressNode.js +678 -0
  114. package/dist/node/ZipDecompressNode.js.map +1 -0
  115. package/dist/node/ZipkitNode.d.ts +466 -0
  116. package/dist/node/ZipkitNode.d.ts.map +1 -0
  117. package/dist/node/ZipkitNode.js +1426 -0
  118. package/dist/node/ZipkitNode.js.map +1 -0
  119. package/dist/node/index.d.ts +25 -0
  120. package/dist/node/index.d.ts.map +1 -0
  121. package/dist/node/index.js +54 -0
  122. package/dist/node/index.js.map +1 -0
  123. package/dist/types/index.d.ts +45 -0
  124. package/dist/types/index.d.ts.map +1 -0
  125. package/dist/types/index.js +11 -0
  126. package/dist/types/index.js.map +1 -0
  127. package/examples/README.md +261 -0
  128. package/examples/append-data.json +44 -0
  129. package/examples/copy-zip-append.ts +139 -0
  130. package/examples/copy-zip.ts +152 -0
  131. package/examples/create-zip.ts +172 -0
  132. package/examples/extract-zip.ts +118 -0
  133. package/examples/list-zip.ts +161 -0
  134. package/examples/test-files/data.json +116 -0
  135. package/examples/test-files/document.md +80 -0
  136. package/examples/test-files/document.txt +6 -0
  137. package/examples/test-files/file1.txt +48 -0
  138. package/examples/test-files/file2.txt +80 -0
  139. package/examples/tsconfig.json +44 -0
  140. package/package.json +167 -0
  141. package/src/browser/ZipkitBrowser.ts +305 -0
  142. package/src/browser/index.esm.ts +32 -0
  143. package/src/browser/index.ts +19 -0
  144. package/src/core/ZipCompress.ts +370 -0
  145. package/src/core/ZipCopy.ts +434 -0
  146. package/src/core/ZipDecompress.ts +191 -0
  147. package/src/core/ZipEntry.ts +917 -0
  148. package/src/core/Zipkit.ts +794 -0
  149. package/src/core/ZstdManager.ts +165 -0
  150. package/src/core/components/HashCalculator.ts +384 -0
  151. package/src/core/components/Logger.ts +180 -0
  152. package/src/core/components/ProgressTracker.ts +134 -0
  153. package/src/core/components/Support.ts +77 -0
  154. package/src/core/components/Util.ts +91 -0
  155. package/src/core/constants/Errors.ts +78 -0
  156. package/src/core/constants/Headers.ts +205 -0
  157. package/src/core/encryption/Manager.ts +137 -0
  158. package/src/core/encryption/ZipCrypto.ts +650 -0
  159. package/src/core/encryption/index.ts +15 -0
  160. package/src/core/encryption/types.ts +33 -0
  161. package/src/core/index.ts +42 -0
  162. package/src/core/version.ts +33 -0
  163. package/src/index.ts +19 -0
  164. package/src/node/ZipCompressNode.ts +618 -0
  165. package/src/node/ZipCopyNode.ts +437 -0
  166. package/src/node/ZipDecompressNode.ts +793 -0
  167. package/src/node/ZipkitNode.ts +1706 -0
  168. package/src/node/index.ts +40 -0
  169. package/src/types/index.ts +68 -0
  170. package/src/types/modules.d.ts +22 -0
  171. package/src/types/opentimestamps.d.ts +1 -0
@@ -0,0 +1,197 @@
1
+ import ZipkitNode from './ZipkitNode';
2
+ import ZipEntry from '../core/ZipEntry';
3
+ /**
4
+ * ZipDecompressNode - Node.js file-based decompression operations
5
+ *
6
+ * Independent decompression implementation for Node.js environments.
7
+ * All decompression logic is implemented directly without delegating to ZipDecompress.
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * const zipkitNode = new ZipkitNode();
12
+ * const decompressNode = new ZipDecompressNode(zipkitNode);
13
+ * await decompressNode.extractToFile(entry, './output/file.txt');
14
+ * ```
15
+ */
16
+ export declare class ZipDecompressNode {
17
+ private zipkitNode;
18
+ private static loggingEnabled;
19
+ /**
20
+ * Creates a new ZipDecompressNode instance
21
+ * @param zipkitNode - ZipkitNode instance to use for ZIP operations
22
+ */
23
+ constructor(zipkitNode: ZipkitNode);
24
+ /**
25
+ * Internal logging method - only logs if class logging is enabled
26
+ */
27
+ private log;
28
+ /**
29
+ * Extract file directly to disk with true streaming (no memory buffering)
30
+ * Public method that validates file mode and extracts entry to file
31
+ *
32
+ * This method processes chunks as they are decompressed and writes them
33
+ * directly to disk, maintaining minimal memory footprint regardless of file size.
34
+ * This is the recommended method for file extraction to avoid memory issues.
35
+ *
36
+ * @param entry ZIP entry to extract
37
+ * @param outputPath Path where the file should be written
38
+ * @param options Optional extraction options including progress callback
39
+ * @throws Error if not a File-based ZIP
40
+ */
41
+ extractToFile(entry: ZipEntry, outputPath: string, options?: {
42
+ skipHashCheck?: boolean;
43
+ onProgress?: (bytes: number) => void;
44
+ }): Promise<void>;
45
+ /**
46
+ * Extract file to Buffer (in-memory) for file-based ZIP
47
+ *
48
+ * This method extracts a ZIP entry directly to a Buffer without writing to disk.
49
+ * This is ideal for reading metadata files (like NZIP.TOKEN) that don't need
50
+ * to be written to temporary files.
51
+ *
52
+ * @param entry ZIP entry to extract
53
+ * @param options Optional extraction options including progress callback
54
+ * @returns Promise that resolves to Buffer containing the extracted file data
55
+ * @throws Error if not a File-based ZIP or if extraction fails
56
+ */
57
+ extractToBuffer(entry: ZipEntry, options?: {
58
+ skipHashCheck?: boolean;
59
+ onProgress?: (bytes: number) => void;
60
+ }): Promise<Buffer>;
61
+ /**
62
+ * Test entry integrity without extracting to disk
63
+ * Validates CRC-32 or SHA-256 hash without writing decompressed data
64
+ *
65
+ * This method processes chunks as they are decompressed and validates them,
66
+ * but discards the decompressed data instead of writing to disk. This is useful
67
+ * for verifying ZIP file integrity without extracting files.
68
+ *
69
+ * @param entry ZIP entry to test
70
+ * @param options Optional test options including progress callback
71
+ * @returns Promise that resolves to an object containing the verified hash (if SHA-256) or undefined
72
+ * @throws Error if validation fails (INVALID_CRC or INVALID_SHA256) or if not a File-based ZIP
73
+ */
74
+ testEntry(entry: ZipEntry, options?: {
75
+ skipHashCheck?: boolean;
76
+ onProgress?: (bytes: number) => void;
77
+ }): Promise<{
78
+ verifiedHash?: string;
79
+ }>;
80
+ /**
81
+ * Read compressed data from file and yield one block at a time
82
+ *
83
+ * MEMORY EFFICIENCY: Yields compressed data chunks one at a time without accumulation.
84
+ * Each chunk is read from disk and yielded immediately, allowing downstream processing
85
+ * (decryption, decompression) to handle one block at a time.
86
+ *
87
+ * @param fileHandle - File handle to read from
88
+ * @param entry - ZIP entry to read compressed data for
89
+ * @param chunkSize - Optional chunk size override (defaults to ZipkitServer's bufferSize)
90
+ * @returns Async generator yielding compressed data chunks one at a time
91
+ */
92
+ private readCompressedDataStream;
93
+ /**
94
+ * Handles: reading compressed data, optional decryption, decompression, hashing, and writing
95
+ * Internal method that takes fileHandle as parameter
96
+ */
97
+ private extractToFileInternal;
98
+ /**
99
+ * Extract file to Buffer (in-memory) for file-based ZIP
100
+ * Internal method that takes fileHandle as parameter
101
+ *
102
+ * MEMORY EFFICIENCY: Accumulates decompressed chunks into a Buffer.
103
+ * For small files (like metadata), this is acceptable. For large files,
104
+ * consider using extractToFile() instead.
105
+ */
106
+ private extractToBufferInternal;
107
+ /**
108
+ * Test entry integrity without writing to disk
109
+ * Internal method that takes fileHandle as parameter
110
+ */
111
+ private testEntryInternal;
112
+ /**
113
+ * Decompress data stream and write to file
114
+ *
115
+ * MEMORY EFFICIENCY: Processes decompressed chunks one at a time.
116
+ * Pipeline: compressedStream → decompressStream() → hashCalc → writeStream
117
+ * - Each decompressed chunk is written immediately without accumulation
118
+ * - Hash calculation is incremental (HashCalculator)
119
+ * - Progress callbacks are invoked per chunk
120
+ *
121
+ * Handles decompression, hash calculation, file writing, and verification.
122
+ * Internal method only
123
+ */
124
+ private unCompressToFile;
125
+ /**
126
+ * Decompress data stream and accumulate to Buffer
127
+ *
128
+ * MEMORY EFFICIENCY: Accumulates decompressed chunks into a Buffer.
129
+ * For small files (like metadata), this is acceptable. For large files,
130
+ * consider using unCompressToFile() instead.
131
+ *
132
+ * Pipeline: compressedStream → decompressStream() → hashCalc → Buffer accumulation
133
+ * - Each decompressed chunk is accumulated into a Buffer
134
+ * - Hash calculation is incremental (HashCalculator)
135
+ * - Progress callbacks are invoked per chunk
136
+ *
137
+ * Handles decompression, hash calculation, and Buffer accumulation.
138
+ * Internal method only
139
+ */
140
+ private unCompressToBuffer;
141
+ /**
142
+ * Decompress data stream and validate hash without writing to disk
143
+ *
144
+ * MEMORY EFFICIENCY: Processes decompressed chunks one at a time.
145
+ * Pipeline: compressedStream → decompressStream() → hashCalc → validation
146
+ * - Each decompressed chunk is validated immediately without accumulation
147
+ * - Hash calculation is incremental (HashCalculator)
148
+ * - Progress callbacks are invoked per chunk
149
+ * - No file writing - data is discarded after validation
150
+ *
151
+ * Handles decompression, hash calculation, and verification.
152
+ * Internal method only
153
+ */
154
+ private unCompressToTest;
155
+ /**
156
+ * Decompress data stream chunk by chunk
157
+ *
158
+ * MEMORY EFFICIENCY: Processes compressed data one block at a time.
159
+ * - For STORED: Passes through chunks unchanged (no accumulation)
160
+ * - For DEFLATED: Uses pako streaming inflate (maintains state across chunks)
161
+ * - For ZSTD: Collects all chunks (ZSTD limitation - requires full buffer)
162
+ *
163
+ * Pipeline: readCompressedDataStream() → DecryptionStream.decrypt() → decompressStream() → writeStream
164
+ *
165
+ * Internal method only
166
+ */
167
+ private decompressStream;
168
+ /**
169
+ * Streaming deflate decompression using pako
170
+ *
171
+ * MEMORY EFFICIENCY: Processes compressed chunks one at a time.
172
+ * - Inflator maintains decompression state across chunks
173
+ * - Decompressed chunks are yielded immediately after processing each compressed chunk
174
+ * - No accumulation of compressed data (except in pako's internal buffers)
175
+ */
176
+ private inflateStream;
177
+ /**
178
+ * Streaming ZSTD decompression
179
+ */
180
+ private zstdDecompressStream;
181
+ /**
182
+ * Inflate data using pako (internal use only)
183
+ */
184
+ private inflate;
185
+ /**
186
+ * Zstd decompress method (now async with ZstdManager)
187
+ * Internal method only
188
+ */
189
+ private zstdDecompressSync;
190
+ /**
191
+ * Uncompress compressed data buffer (now async for Zstd)
192
+ * Handles decompression and hash verification
193
+ * Internal method only
194
+ */
195
+ private unCompress;
196
+ }
197
+ //# sourceMappingURL=ZipDecompressNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ZipDecompressNode.d.ts","sourceRoot":"","sources":["../../src/node/ZipDecompressNode.ts"],"names":[],"mappings":"AAiBA,OAAO,UAAU,MAAM,cAAc,CAAC;AAEtC,OAAO,QAAQ,MAAM,kBAAkB,CAAC;AASxC;;;;;;;;;;;;GAYG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,UAAU,CAAa;IAG/B,OAAO,CAAC,MAAM,CAAC,cAAc,CAAkB;IAE/C;;;OAGG;gBACS,UAAU,EAAE,UAAU;IAQlC;;OAEG;IACH,OAAO,CAAC,GAAG;IAUX;;;;;;;;;;;;OAYG;IACG,aAAa,CACjB,KAAK,EAAE,QAAQ,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;QACR,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;KACtC,GACA,OAAO,CAAC,IAAI,CAAC;IAQhB;;;;;;;;;;;OAWG;IACG,eAAe,CACnB,KAAK,EAAE,QAAQ,EACf,OAAO,CAAC,EAAE;QACR,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;KACtC,GACA,OAAO,CAAC,MAAM,CAAC;IAQlB;;;;;;;;;;;;OAYG;IACG,SAAS,CACb,KAAK,EAAE,QAAQ,EACf,OAAO,CAAC,EAAE;QACR,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;KACtC,GACA,OAAO,CAAC;QAAE,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAYrC;;;;;;;;;;;OAWG;YACY,wBAAwB;IAqCvC;;;OAGG;YACW,qBAAqB;IAyDnC;;;;;;;OAOG;YACW,uBAAuB;IAiDrC;;;OAGG;YACW,iBAAiB;IAkD/B;;;;;;;;;;;OAWG;YACW,gBAAgB;IA8E9B;;;;;;;;;;;;;;OAcG;YACW,kBAAkB;IA0DhC;;;;;;;;;;;;OAYG;YACW,gBAAgB;IA2D9B;;;;;;;;;;;OAWG;YACY,gBAAgB;IAsB/B;;;;;;;OAOG;YACY,aAAa;IA6B5B;;OAEG;YACY,oBAAoB;IA+BnC;;OAEG;IACH,OAAO,CAAC,OAAO;IAMf;;;OAGG;YACW,kBAAkB;IAchC;;;;OAIG;YACW,UAAU;CAyCzB"}