neozipkit 0.8.0 → 1.0.5

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 (115) hide show
  1. package/NEOZIP_APPNOTE.md +527 -0
  2. package/README.md +57 -21
  3. package/WHATS_NEW.md +146 -0
  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 +28 -0
  8. package/dist/browser/zstd-browser-shim.d.ts.map +1 -0
  9. package/dist/browser/zstd-browser-shim.js +66 -0
  10. package/dist/browser/zstd-browser-shim.js.map +1 -0
  11. package/dist/browser-esm/index.js +2110 -41755
  12. package/dist/browser-esm/index.js.map +4 -4
  13. package/dist/browser-umd/index.js +2110 -41755
  14. package/dist/browser-umd/index.js.map +4 -4
  15. package/dist/browser-umd/index.min.js +3 -21
  16. package/dist/core/ZipCompress.d.ts +2 -7
  17. package/dist/core/ZipCompress.d.ts.map +1 -1
  18. package/dist/core/ZipCompress.js +57 -33
  19. package/dist/core/ZipCompress.js.map +1 -1
  20. package/dist/core/ZipDecompress.d.ts +1 -3
  21. package/dist/core/ZipDecompress.d.ts.map +1 -1
  22. package/dist/core/ZipDecompress.js +27 -17
  23. package/dist/core/ZipDecompress.js.map +1 -1
  24. package/dist/core/ZipEntry.d.ts +6 -0
  25. package/dist/core/ZipEntry.d.ts.map +1 -1
  26. package/dist/core/ZipEntry.js +7 -1
  27. package/dist/core/ZipEntry.js.map +1 -1
  28. package/dist/core/Zipkit.d.ts +43 -11
  29. package/dist/core/Zipkit.d.ts.map +1 -1
  30. package/dist/core/Zipkit.js +106 -63
  31. package/dist/core/Zipkit.js.map +1 -1
  32. package/dist/core/components/HashCalculator.d.ts +22 -1
  33. package/dist/core/components/HashCalculator.d.ts.map +1 -1
  34. package/dist/core/components/HashCalculator.js +49 -6
  35. package/dist/core/components/HashCalculator.js.map +1 -1
  36. package/dist/core/components/Util.d.ts +3 -4
  37. package/dist/core/components/Util.d.ts.map +1 -1
  38. package/dist/core/components/Util.js +10 -8
  39. package/dist/core/components/Util.js.map +1 -1
  40. package/dist/core/constants/Headers.d.ts +1 -3
  41. package/dist/core/constants/Headers.d.ts.map +1 -1
  42. package/dist/core/constants/Headers.js +14 -5
  43. package/dist/core/constants/Headers.js.map +1 -1
  44. package/dist/core/constants/MetaPaths.d.ts +38 -0
  45. package/dist/core/constants/MetaPaths.d.ts.map +1 -0
  46. package/dist/core/constants/MetaPaths.js +79 -0
  47. package/dist/core/constants/MetaPaths.js.map +1 -0
  48. package/dist/core/encryption/AesCrypto.d.ts +55 -11
  49. package/dist/core/encryption/AesCrypto.d.ts.map +1 -1
  50. package/dist/core/encryption/AesCrypto.js +223 -68
  51. package/dist/core/encryption/AesCrypto.js.map +1 -1
  52. package/dist/core/encryption/index.d.ts +1 -1
  53. package/dist/core/encryption/index.d.ts.map +1 -1
  54. package/dist/core/encryption/index.js +3 -1
  55. package/dist/core/encryption/index.js.map +1 -1
  56. package/dist/core/index.d.ts +2 -0
  57. package/dist/core/index.d.ts.map +1 -1
  58. package/dist/core/index.js +14 -1
  59. package/dist/core/index.js.map +1 -1
  60. package/dist/core/merkle/MerkleRoot.d.ts +109 -0
  61. package/dist/core/merkle/MerkleRoot.d.ts.map +1 -0
  62. package/dist/core/merkle/MerkleRoot.js +275 -0
  63. package/dist/core/merkle/MerkleRoot.js.map +1 -0
  64. package/dist/core/version.js +1 -1
  65. package/dist/node/LegacyZstd.d.ts +67 -0
  66. package/dist/node/LegacyZstd.d.ts.map +1 -0
  67. package/dist/node/LegacyZstd.js +209 -0
  68. package/dist/node/LegacyZstd.js.map +1 -0
  69. package/dist/node/ZipCompressNode.d.ts +9 -7
  70. package/dist/node/ZipCompressNode.d.ts.map +1 -1
  71. package/dist/node/ZipCompressNode.js +105 -75
  72. package/dist/node/ZipCompressNode.js.map +1 -1
  73. package/dist/node/ZipDecompressNode.d.ts +7 -3
  74. package/dist/node/ZipDecompressNode.d.ts.map +1 -1
  75. package/dist/node/ZipDecompressNode.js +68 -56
  76. package/dist/node/ZipDecompressNode.js.map +1 -1
  77. package/dist/node/ZipkitNode.d.ts +23 -0
  78. package/dist/node/ZipkitNode.d.ts.map +1 -1
  79. package/dist/node/ZipkitNode.js +195 -41
  80. package/dist/node/ZipkitNode.js.map +1 -1
  81. package/dist/node/ZstdNode.d.ts +39 -0
  82. package/dist/node/ZstdNode.d.ts.map +1 -0
  83. package/dist/node/ZstdNode.js +171 -0
  84. package/dist/node/ZstdNode.js.map +1 -0
  85. package/dist/node/index.d.ts +3 -0
  86. package/dist/node/index.d.ts.map +1 -1
  87. package/dist/node/index.js +11 -1
  88. package/dist/node/index.js.map +1 -1
  89. package/package.json +4 -3
  90. package/src/browser/ZipkitBrowser.ts +4 -6
  91. package/src/browser/zstd-browser-shim.ts +76 -0
  92. package/src/core/ZipCompress.ts +71 -42
  93. package/src/core/ZipDecompress.ts +35 -18
  94. package/src/core/ZipEntry.ts +8 -1
  95. package/src/core/Zipkit.ts +149 -76
  96. package/src/core/components/HashCalculator.ts +58 -6
  97. package/src/core/components/Util.ts +16 -7
  98. package/src/core/constants/Headers.ts +14 -4
  99. package/src/core/constants/MetaPaths.ts +86 -0
  100. package/src/core/encryption/AesCrypto.ts +265 -86
  101. package/src/core/encryption/index.ts +1 -1
  102. package/src/core/index.ts +14 -0
  103. package/src/core/merkle/MerkleRoot.ts +312 -0
  104. package/src/core/version.ts +1 -1
  105. package/src/node/LegacyZstd.ts +270 -0
  106. package/src/node/ZipCompressNode.ts +127 -84
  107. package/src/node/ZipDecompressNode.ts +93 -67
  108. package/src/node/ZipkitNode.ts +230 -42
  109. package/src/node/ZstdNode.ts +155 -0
  110. package/src/node/index.ts +10 -0
  111. package/dist/core/ZstdManager.d.ts +0 -56
  112. package/dist/core/ZstdManager.d.ts.map +0 -1
  113. package/dist/core/ZstdManager.js +0 -144
  114. package/dist/core/ZstdManager.js.map +0 -1
  115. package/src/core/ZstdManager.ts +0 -165
@@ -1 +0,0 @@
1
- {"version":3,"file":"ZstdManager.js","sourceRoot":"","sources":["../../src/core/ZstdManager.ts"],"names":[],"mappings":"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"}
@@ -1,165 +0,0 @@
1
- /**
2
- * ZstdManager - Global Zstd Codec Manager
3
- *
4
- * This manager ensures safe usage of the Zstd WASM module across multiple instances.
5
- *
6
- * ## Why This Is Necessary
7
- *
8
- * The `@oneidentity/zstd-js` library uses a shared WASM module internally.
9
- * While `ZstdInit()` returns different object references, they all share the same
10
- * `ZstdSimple` implementation and WASM memory/heap.
11
- *
12
- * This means concurrent or improperly managed sequential operations can cause
13
- * memory corruption because they're all operating on the same underlying WASM state.
14
- *
15
- * ## How It Works
16
- *
17
- * 1. Single initialization: WASM module is initialized once globally
18
- * 2. Operation queuing: All compress/decompress operations are queued
19
- * 3. Sequential execution: JavaScript's single-threaded nature ensures safe execution
20
- * 4. Automatic initialization: Lazy initialization on first use
21
- *
22
- * ## Usage
23
- *
24
- * ```typescript
25
- * import { ZstdManager } from './ZstdManager';
26
- *
27
- * // Compress
28
- * const compressed = await ZstdManager.compress(data, level);
29
- *
30
- * // Decompress
31
- * const decompressed = await ZstdManager.decompress(compressedData);
32
- * ```
33
- */
34
-
35
- import { ZstdInit, ZstdSimple } from '@oneidentity/zstd-js';
36
-
37
- class ZstdCodecManager {
38
- private static instance: ZstdCodecManager | null = null;
39
- private codec: { ZstdSimple: typeof ZstdSimple } | null = null;
40
- private initPromise: Promise<void> | null = null;
41
- private operationQueue: Promise<any> = Promise.resolve();
42
-
43
- private constructor() {}
44
-
45
- /**
46
- * Get the singleton instance of ZstdCodecManager
47
- */
48
- public static getInstance(): ZstdCodecManager {
49
- if (!ZstdCodecManager.instance) {
50
- ZstdCodecManager.instance = new ZstdCodecManager();
51
- }
52
- return ZstdCodecManager.instance;
53
- }
54
-
55
- /**
56
- * Ensure the Zstd codec is initialized
57
- * This is called automatically before any compress/decompress operation
58
- */
59
- private async ensureInitialized(): Promise<void> {
60
- if (this.codec) {
61
- return;
62
- }
63
-
64
- if (this.initPromise) {
65
- return this.initPromise;
66
- }
67
-
68
- this.initPromise = (async () => {
69
- this.codec = await ZstdInit();
70
- })();
71
-
72
- return this.initPromise;
73
- }
74
-
75
- /**
76
- * Queue an operation to ensure sequential execution
77
- * This prevents concurrent operations from interfering with each other
78
- */
79
- private async queueOperation<T>(operation: () => Promise<T> | T): Promise<T> {
80
- // Chain this operation after the previous one
81
- const promise = this.operationQueue.then(operation, operation);
82
-
83
- // Update the queue to point to this operation
84
- this.operationQueue = promise.catch(() => {}); // Catch to prevent unhandled rejections in queue
85
-
86
- return promise;
87
- }
88
-
89
- /**
90
- * Compress data using Zstd
91
- * @param data - Data to compress (Uint8Array)
92
- * @param level - Compression level (1-22, default 6)
93
- * @returns Compressed data as Uint8Array
94
- */
95
- public async compress(data: Uint8Array, level: number = 6): Promise<Uint8Array> {
96
- return this.queueOperation(async () => {
97
- await this.ensureInitialized();
98
-
99
- if (!this.codec) {
100
- throw new Error('Zstd codec not initialized');
101
- }
102
-
103
- return this.codec.ZstdSimple.compress(data, level);
104
- });
105
- }
106
-
107
- /**
108
- * Decompress data using Zstd
109
- * @param data - Compressed data (Uint8Array or Buffer)
110
- * @returns Decompressed data as Uint8Array
111
- */
112
- public async decompress(data: Uint8Array | Buffer): Promise<Uint8Array> {
113
- return this.queueOperation(async () => {
114
- await this.ensureInitialized();
115
-
116
- if (!this.codec) {
117
- throw new Error('Zstd codec not initialized');
118
- }
119
-
120
- // Convert Buffer to Uint8Array if needed
121
- const inputData = data instanceof Buffer
122
- ? new Uint8Array(data.buffer, data.byteOffset, data.byteLength)
123
- : data;
124
-
125
- return this.codec.ZstdSimple.decompress(inputData);
126
- });
127
- }
128
-
129
- /**
130
- * Reset the manager (for testing purposes)
131
- * @internal
132
- */
133
- public static reset(): void {
134
- ZstdCodecManager.instance = null;
135
- }
136
- }
137
-
138
- /**
139
- * Global Zstd Manager
140
- * Use this for all Zstd compression/decompression operations
141
- */
142
- export const ZstdManager = {
143
- /**
144
- * Compress data using Zstd
145
- * Operations are automatically queued to prevent interference
146
- */
147
- compress: (data: Uint8Array, level?: number) =>
148
- ZstdCodecManager.getInstance().compress(data, level),
149
-
150
- /**
151
- * Decompress data using Zstd
152
- * Operations are automatically queued to prevent interference
153
- */
154
- decompress: (data: Uint8Array | Buffer) =>
155
- ZstdCodecManager.getInstance().decompress(data),
156
-
157
- /**
158
- * Reset the manager (for testing)
159
- * @internal
160
- */
161
- reset: () => ZstdCodecManager.reset(),
162
- };
163
-
164
- export default ZstdManager;
165
-