@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,172 @@
1
+ /**
2
+ * Traditional ZIP Crypto encryption implementation
3
+ * Compatible with standard ZIP 2.0 encryption (ZipCrypto)
4
+ */
5
+ import { EncryptionProvider, EncryptionOptions, EncryptionResult, DecryptionResult, EncryptionMethod } from './types';
6
+ import ZipEntry from '../ZipEntry';
7
+ export declare class ZipCrypto implements EncryptionProvider {
8
+ private static readonly KEY_LENGTH;
9
+ canHandle(method: EncryptionMethod): boolean;
10
+ getMethodName(): string;
11
+ getKeyLength(): number;
12
+ encrypt(data: Buffer, options: EncryptionOptions): Promise<EncryptionResult>;
13
+ decrypt(data: Buffer, options: EncryptionOptions): Promise<DecryptionResult>;
14
+ /**
15
+ * Verify password using check byte from decrypted header
16
+ * @param decryptedHeader - 12-byte decrypted encryption header
17
+ * @param checkByte - Expected check byte value
18
+ * @throws Error if password verification fails
19
+ */
20
+ verifyPassword(decryptedHeader: Buffer, checkByte: number): void;
21
+ /**
22
+ * Parse local header to extract information needed for decryption
23
+ * @param localHeaderBuffer - 30-byte local header buffer
24
+ * @param entry - ZIP entry to update with extracted information
25
+ * @returns Object with bitFlags, lastModTimeDate, localCrc, and checkByte
26
+ */
27
+ parseLocalHeaderForDecryption(localHeaderBuffer: Buffer, entry: ZipEntry): {
28
+ bitFlags: number;
29
+ lastModTimeDate: number;
30
+ localCrc: number;
31
+ checkByte: number;
32
+ };
33
+ /**
34
+ * Create encryption header (12 bytes) for PKZIP encryption
35
+ * Generates 11 random bytes + 1 check byte
36
+ * @param entry - ZIP entry to create header for
37
+ * @param password - Password for encryption (used to calculate check byte)
38
+ * @returns 12-byte encryption header buffer
39
+ */
40
+ createEncryptionHeader(entry: ZipEntry, password: string): Buffer;
41
+ /**
42
+ * Encrypt buffer (header + compressed data) for PKZIP encryption
43
+ * Creates encryption header, concatenates with compressed data, and encrypts everything
44
+ * @param entry - ZIP entry to encrypt
45
+ * @param compressedData - Compressed data to encrypt
46
+ * @param password - Password for encryption
47
+ * @returns Encrypted buffer (encrypted header + encrypted compressed data)
48
+ */
49
+ encryptBuffer(entry: ZipEntry, compressedData: Buffer, password: string): Buffer;
50
+ /**
51
+ * Decrypt buffer-based encrypted data (for in-memory extraction)
52
+ * Handles local header parsing, encryption header extraction, and decryption
53
+ * @param entry - ZIP entry with encryption information
54
+ * @param buffer - Full ZIP file buffer
55
+ * @param encryptedData - Encrypted data without header (from parseLocalHeader)
56
+ * @param password - Password for decryption
57
+ * @returns Decrypted compressed data (without header)
58
+ */
59
+ decryptBuffer(entry: ZipEntry, buffer: Buffer, encryptedData: Buffer, password: string): Buffer;
60
+ /**
61
+ * Create a streaming decryptor for chunked data processing
62
+ * Handles 12-byte header decryption and verification, then yields decrypted chunks
63
+ *
64
+ * MEMORY EFFICIENCY: This method processes encrypted data one block at a time.
65
+ * - Decryption state (keys) is maintained across blocks via updateKeys()
66
+ * - Only the minimum 12-byte header is accumulated before password verification
67
+ * - Each decrypted block is yielded immediately without accumulation
68
+ *
69
+ * @param password - Password for decryption
70
+ * @param checkByte - Expected check byte value for password verification
71
+ * @param encryptedStream - Async generator of encrypted data chunks (one block at a time)
72
+ * @returns Async generator of decrypted data chunks (one block at a time)
73
+ */
74
+ createStreamDecryptor(password: string, checkByte: number, encryptedStream: AsyncGenerator<Buffer>): AsyncGenerator<Buffer>;
75
+ /**
76
+ * Initialize encryption keys from password
77
+ */
78
+ private initKeys;
79
+ /**
80
+ * Update encryption keys with a byte
81
+ * Based on zip.js implementation - uses Math.imul for 32-bit integer multiplication
82
+ */
83
+ private updateKeys;
84
+ /**
85
+ * Encrypt a single byte
86
+ * Based on zip.js implementation - uses Math.imul for 32-bit integer multiplication
87
+ */
88
+ private encryptByte;
89
+ /**
90
+ * Decrypt a single byte
91
+ * Based on zip.js implementation - uses Math.imul for 32-bit integer multiplication
92
+ */
93
+ private decryptByte;
94
+ /**
95
+ * CRC32 lookup table (shared for all CRC32 operations)
96
+ */
97
+ static readonly CRC_TABLE: number[];
98
+ /**
99
+ * CRC32 implementation for ZIP crypto (single byte update)
100
+ * Used internally for key updates during encryption/decryption
101
+ */
102
+ private crc32;
103
+ /**
104
+ * Static CRC32 calculation for a full buffer
105
+ * Delegates to exported crc32() function
106
+ * @param buf - Buffer or string to calculate CRC32 for
107
+ * @returns CRC32 checksum as unsigned 32-bit integer
108
+ */
109
+ static crc32(buf: Buffer | string): number;
110
+ /**
111
+ * Static CRC32 incremental update (single byte)
112
+ * Delegates to exported crc32update() function
113
+ * @param crc - Current CRC32 value
114
+ * @param byte - Byte to update with
115
+ * @returns Updated CRC32 value
116
+ */
117
+ static crc32update(crc: number, byte: number): number;
118
+ }
119
+ /**
120
+ * CRC32 calculation for a full buffer
121
+ * Main public API for CRC32 calculation
122
+ * @param buf - Buffer or string to calculate CRC32 for
123
+ * @returns CRC32 checksum as unsigned 32-bit integer
124
+ */
125
+ export declare function crc32(buf: Buffer | string): number;
126
+ /**
127
+ * CRC32 incremental update (single byte)
128
+ * Used for streaming CRC32 calculation
129
+ * @param crc - Current CRC32 value
130
+ * @param byte - Byte to update with
131
+ * @returns Updated CRC32 value
132
+ */
133
+ export declare function crc32update(crc: number, byte: number): number;
134
+ export declare function sha256(data: Buffer): string;
135
+ /**
136
+ * Options for creating a DecryptionStream
137
+ */
138
+ export interface DecryptionStreamOptions {
139
+ password: string;
140
+ method: EncryptionMethod;
141
+ entry: ZipEntry;
142
+ }
143
+ /**
144
+ * Streaming decryption for chunked compressed data processing
145
+ * Encapsulated within ZipCrypto for PKZIP decryption
146
+ */
147
+ export declare class DecryptionStream {
148
+ private password;
149
+ private method;
150
+ private entry;
151
+ private zipCrypto;
152
+ constructor(options: DecryptionStreamOptions);
153
+ /**
154
+ * Decrypt compressed data stream chunk by chunk
155
+ */
156
+ decrypt(encryptedStream: AsyncGenerator<Buffer>): AsyncGenerator<Buffer>;
157
+ /**
158
+ * Calculate check byte for password verification
159
+ * For DATA_DESC files: lastModTimeDate >> 8
160
+ * For non-DATA_DESC files: CRC >> 24
161
+ */
162
+ private calculateCheckByte;
163
+ /**
164
+ * Prepare entry for decryption by parsing local header from file handle
165
+ * This extracts the information needed for check byte calculation
166
+ * @param fileHandle - File handle to read from
167
+ * @param entry - ZIP entry to update
168
+ * @returns Check byte value for password verification
169
+ */
170
+ static prepareEntryForDecryption(fileHandle: any, entry: ZipEntry): Promise<number>;
171
+ }
172
+ //# sourceMappingURL=ZipCrypto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ZipCrypto.d.ts","sourceRoot":"","sources":["../../../src/core/encryption/ZipCrypto.ts"],"names":[],"mappings":"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"}