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.
- package/LICENSE +22 -0
- package/README.md +410 -186
- package/contracts/ABI.txt +889 -0
- package/contracts/Bytecode.txt +1 -0
- package/contracts/COMPILATION_NOTES.md +59 -0
- package/contracts/QUICK_DEPLOY.md +286 -0
- package/contracts/README.md +235 -131
- package/contracts/VERIFICATION.md +308 -0
- package/contracts/deploy-interactive.js +448 -0
- package/contracts/deployment-arbitrum-sepolia.json +12 -0
- package/contracts/deployment-arbitrum.json +12 -0
- package/contracts/deployment-eth-sepolia.json +12 -0
- package/contracts/hardhat.config.js +114 -0
- package/contracts/package.json +20 -0
- package/contracts/scripts/compile-and-extract.js +119 -0
- package/contracts/scripts/verify-contract.js +223 -0
- package/contracts/src/{NZIP-NFT-Private.sol → NZIP-NFT-v2.0.sol} +66 -151
- package/contracts/src/NZIP-NFT.sol +9 -15
- package/dist/blockchain/browser/TokenVerifierBrowser.d.ts +67 -0
- package/dist/blockchain/browser/TokenVerifierBrowser.d.ts.map +1 -0
- package/dist/blockchain/browser/TokenVerifierBrowser.js +313 -0
- package/dist/blockchain/browser/TokenVerifierBrowser.js.map +1 -0
- package/dist/blockchain/browser/WalletManagerBrowser.d.ts +98 -0
- package/dist/blockchain/browser/WalletManagerBrowser.d.ts.map +1 -0
- package/dist/blockchain/browser/WalletManagerBrowser.js +434 -0
- package/dist/blockchain/browser/WalletManagerBrowser.js.map +1 -0
- package/dist/blockchain/browser/ZipkitMinterBrowser.d.ts +58 -0
- package/dist/blockchain/browser/ZipkitMinterBrowser.d.ts.map +1 -0
- package/dist/blockchain/browser/ZipkitMinterBrowser.js +317 -0
- package/dist/blockchain/browser/ZipkitMinterBrowser.js.map +1 -0
- package/dist/blockchain/browser/index.d.ts +11 -0
- package/dist/blockchain/browser/index.d.ts.map +1 -0
- package/dist/blockchain/browser/index.js +16 -0
- package/dist/blockchain/browser/index.js.map +1 -0
- package/dist/blockchain/core/WalletManager.d.ts +124 -0
- package/dist/blockchain/core/WalletManager.d.ts.map +1 -0
- package/dist/blockchain/{ZipKitWallet.js → core/WalletManager.js} +157 -177
- package/dist/blockchain/core/WalletManager.js.map +1 -0
- package/dist/blockchain/{ZipKitMinter.d.ts → core/ZipkitMinter.d.ts} +46 -11
- package/dist/blockchain/core/ZipkitMinter.d.ts.map +1 -0
- package/dist/blockchain/core/ZipkitMinter.js +548 -0
- package/dist/blockchain/core/ZipkitMinter.js.map +1 -0
- package/dist/blockchain/{ZipKitOTS.d.ts → core/ZipkitOTS.d.ts} +6 -15
- package/dist/blockchain/core/ZipkitOTS.d.ts.map +1 -0
- package/dist/blockchain/{ZipKitOTS.js → core/ZipkitOTS.js} +26 -84
- package/dist/blockchain/core/ZipkitOTS.js.map +1 -0
- package/dist/blockchain/core/ZipkitVerifier.d.ts +177 -0
- package/dist/blockchain/core/ZipkitVerifier.d.ts.map +1 -0
- package/dist/blockchain/core/ZipkitVerifier.js +632 -0
- package/dist/blockchain/core/ZipkitVerifier.js.map +1 -0
- package/dist/blockchain/core/contracts.d.ts +83 -0
- package/dist/blockchain/core/contracts.d.ts.map +1 -0
- package/dist/blockchain/core/contracts.js +341 -0
- package/dist/blockchain/core/contracts.js.map +1 -0
- package/dist/blockchain/core/index.d.ts +12 -0
- package/dist/blockchain/core/index.d.ts.map +1 -0
- package/dist/blockchain/core/index.js +59 -0
- package/dist/blockchain/core/index.js.map +1 -0
- package/dist/blockchain/index.d.ts +11 -7
- package/dist/blockchain/index.d.ts.map +1 -0
- package/dist/blockchain/index.js +18 -34
- package/dist/blockchain/index.js.map +1 -0
- package/dist/blockchain/node/WalletManagerNode.d.ts +47 -0
- package/dist/blockchain/node/WalletManagerNode.d.ts.map +1 -0
- package/dist/blockchain/node/WalletManagerNode.js +203 -0
- package/dist/blockchain/node/WalletManagerNode.js.map +1 -0
- package/dist/blockchain/node/index.d.ts +12 -0
- package/dist/blockchain/node/index.d.ts.map +1 -0
- package/dist/blockchain/node/index.js +24 -0
- package/dist/blockchain/node/index.js.map +1 -0
- package/dist/browser/ZipkitBrowser.d.ts +27 -0
- package/dist/browser/ZipkitBrowser.d.ts.map +1 -0
- package/dist/browser/{ZipKitBrowser.js → ZipkitBrowser.js} +96 -43
- package/dist/browser/ZipkitBrowser.js.map +1 -0
- package/dist/browser/index.d.ts +12 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +42 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser-esm/index.d.ts +12 -0
- package/dist/browser-esm/index.js +59559 -0
- package/dist/browser-esm/index.js.map +7 -0
- package/dist/browser-umd/index.d.ts +12 -0
- package/dist/browser-umd/index.js +59576 -0
- package/dist/browser-umd/index.js.map +7 -0
- package/dist/browser-umd/index.min.js +63 -0
- package/dist/browser.d.ts +8 -14
- package/dist/browser.js +13 -28
- package/dist/core/ZipCompress.d.ts +99 -0
- package/dist/core/ZipCompress.d.ts.map +1 -0
- package/dist/core/ZipCompress.js +309 -0
- package/dist/core/ZipCompress.js.map +1 -0
- package/dist/core/ZipDecompress.d.ts +58 -0
- package/dist/core/ZipDecompress.d.ts.map +1 -0
- package/dist/core/ZipDecompress.js +172 -0
- package/dist/core/ZipDecompress.js.map +1 -0
- package/dist/{shared → core}/ZipEntry.d.ts +8 -1
- package/dist/core/ZipEntry.d.ts.map +1 -0
- package/dist/{shared → core}/ZipEntry.js +225 -82
- package/dist/core/ZipEntry.js.map +1 -0
- package/dist/core/Zipkit.d.ts +315 -0
- package/dist/core/Zipkit.d.ts.map +1 -0
- package/dist/core/Zipkit.js +647 -0
- package/dist/core/Zipkit.js.map +1 -0
- package/dist/core/components/HashCalculator.d.ts +138 -0
- package/dist/core/components/HashCalculator.d.ts.map +1 -0
- package/dist/core/components/HashCalculator.js +360 -0
- package/dist/core/components/HashCalculator.js.map +1 -0
- package/dist/core/components/Logger.d.ts +73 -0
- package/dist/core/components/Logger.d.ts.map +1 -0
- package/dist/core/components/Logger.js +156 -0
- package/dist/core/components/Logger.js.map +1 -0
- package/dist/core/components/ProgressTracker.d.ts +43 -0
- package/dist/core/components/ProgressTracker.d.ts.map +1 -0
- package/dist/core/components/ProgressTracker.js +112 -0
- package/dist/core/components/ProgressTracker.js.map +1 -0
- package/dist/{shared → core}/components/Support.d.ts +1 -0
- package/dist/core/components/Support.d.ts.map +1 -0
- package/dist/{shared → core}/components/Support.js +1 -0
- package/dist/core/components/Support.js.map +1 -0
- package/dist/{shared → core}/components/Util.d.ts +7 -2
- package/dist/core/components/Util.d.ts.map +1 -0
- package/dist/{shared → core}/components/Util.js +14 -34
- package/dist/core/components/Util.js.map +1 -0
- package/dist/{shared → core}/constants/Errors.d.ts +1 -2
- package/dist/core/constants/Errors.d.ts.map +1 -0
- package/dist/{shared → core}/constants/Errors.js +1 -3
- package/dist/core/constants/Errors.js.map +1 -0
- package/dist/{shared → core}/constants/Headers.d.ts +3 -0
- package/dist/core/constants/Headers.d.ts.map +1 -0
- package/dist/{shared → core}/constants/Headers.js +20 -17
- package/dist/core/constants/Headers.js.map +1 -0
- package/dist/core/encryption/Manager.d.ts +58 -0
- package/dist/core/encryption/Manager.d.ts.map +1 -0
- package/dist/core/encryption/Manager.js +121 -0
- package/dist/core/encryption/Manager.js.map +1 -0
- package/dist/core/encryption/ZipCrypto.d.ts +172 -0
- package/dist/core/encryption/ZipCrypto.d.ts.map +1 -0
- package/dist/core/encryption/ZipCrypto.js +554 -0
- package/dist/core/encryption/ZipCrypto.js.map +1 -0
- package/dist/core/encryption/index.d.ts +9 -0
- package/dist/core/encryption/index.d.ts.map +1 -0
- package/dist/core/encryption/index.js +17 -0
- package/dist/core/encryption/index.js.map +1 -0
- package/dist/core/encryption/types.d.ts +29 -0
- package/dist/core/encryption/types.d.ts.map +1 -0
- package/dist/core/encryption/types.js +12 -0
- package/dist/core/encryption/types.js.map +1 -0
- package/dist/core/index.d.ts +24 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +57 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/version.d.ts +5 -0
- package/dist/core/version.d.ts.map +1 -0
- package/dist/core/version.js +31 -0
- package/dist/core/version.js.map +1 -0
- package/dist/index.d.ts +8 -18
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -35
- package/dist/index.js.map +1 -0
- package/dist/node/ZipCompressNode.d.ts +123 -0
- package/dist/node/ZipCompressNode.d.ts.map +1 -0
- package/dist/node/ZipCompressNode.js +576 -0
- package/dist/node/ZipCompressNode.js.map +1 -0
- package/dist/node/ZipDecompressNode.d.ts +120 -0
- package/dist/node/ZipDecompressNode.d.ts.map +1 -0
- package/dist/node/ZipDecompressNode.js +461 -0
- package/dist/node/ZipDecompressNode.js.map +1 -0
- package/dist/node/ZipkitNode.d.ts +406 -0
- package/dist/node/ZipkitNode.d.ts.map +1 -0
- package/dist/node/ZipkitNode.js +1305 -0
- package/dist/node/ZipkitNode.js.map +1 -0
- package/dist/node/index.d.ts +26 -0
- package/dist/node/index.d.ts.map +1 -0
- package/dist/node/index.js +65 -0
- package/dist/node/index.js.map +1 -0
- package/dist/types/index.d.ts +59 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +36 -1
- package/dist/types/index.js.map +1 -0
- package/examples/README.md +269 -0
- package/examples/blockchain-tokenize.ts +354 -0
- package/examples/create-zip.ts +172 -0
- package/examples/extract-zip.ts +158 -0
- package/examples/list-zip.ts +161 -0
- package/examples/test-files/data.json +116 -0
- package/examples/test-files/document.md +80 -0
- package/examples/test-files/document.txt +2 -0
- package/examples/test-files/file1.txt +48 -0
- package/examples/test-files/file2.txt +80 -0
- package/examples/tsconfig.json +44 -0
- package/examples/unzip-token.ts +491 -0
- package/examples/verify-tokenized-zip.ts +305 -0
- package/examples/zip-token.ts +604 -0
- package/package.json +108 -24
- package/src/blockchain/README.md +59 -66
- package/src/{browser/TokenVerifierBrowser.ts-remove → blockchain/browser/TokenVerifierBrowser.ts} +125 -79
- package/src/blockchain/browser/WalletManagerBrowser.ts +486 -0
- package/src/blockchain/browser/ZipkitMinterBrowser.ts +400 -0
- package/src/blockchain/browser/index.ts +13 -0
- package/src/blockchain/{ZipKitWallet.ts → core/WalletManager.ts} +241 -143
- package/src/blockchain/core/ZipkitMinter.ts +716 -0
- package/src/blockchain/{ZipKitOTS.ts → core/ZipkitOTS.ts} +28 -62
- package/src/blockchain/core/ZipkitVerifier.ts +853 -0
- package/src/blockchain/core/contracts.ts +370 -0
- package/src/blockchain/core/index.ts +71 -0
- package/src/blockchain/index.ts +21 -55
- package/src/blockchain/node/WalletManagerNode.ts +171 -0
- package/src/blockchain/node/index.ts +40 -0
- package/src/browser/{ZipKitBrowser.ts → ZipkitBrowser.ts} +104 -41
- package/src/browser/index.esm.ts +37 -0
- package/src/browser/index.ts +25 -0
- package/src/core/ZipCompress.ts +398 -0
- package/src/core/ZipDecompress.ts +212 -0
- package/src/{shared → core}/ZipEntry.ts +240 -90
- package/src/core/Zipkit.ts +794 -0
- package/src/core/components/HashCalculator.ts +384 -0
- package/src/core/components/Logger.ts +180 -0
- package/src/core/components/ProgressTracker.ts +134 -0
- package/src/{shared → core}/components/Util.ts +12 -34
- package/src/{shared → core}/constants/Errors.ts +0 -4
- package/src/{shared → core}/constants/Headers.ts +19 -17
- package/src/core/encryption/Manager.ts +137 -0
- package/src/core/encryption/ZipCrypto.ts +650 -0
- package/src/core/encryption/index.ts +15 -0
- package/src/core/encryption/types.ts +33 -0
- package/src/core/index.ts +34 -0
- package/src/core/version.ts +33 -0
- package/src/index.ts +54 -25
- package/src/node/ZipCompressNode.ts +632 -0
- package/src/node/ZipDecompressNode.ts +508 -0
- package/src/node/ZipkitNode.ts +1559 -0
- package/src/node/index.ts +69 -0
- package/src/types/index.ts +131 -1
- package/src/types/modules.d.ts +1 -11
- package/src/types/opentimestamps.d.ts +1 -23
- package/contracts/INTEGRATION.md +0 -338
- package/contracts/NETWORKS.md +0 -156
- package/contracts/NZIP-NFT-bytecode.txt +0 -1
- package/contracts/constants.ts +0 -952
- package/contracts/deploy-bytecode.mjs +0 -94
- package/dist/blockchain/CertificateToken.d.ts +0 -48
- package/dist/blockchain/CertificateToken.js +0 -386
- package/dist/blockchain/ZipKitMinter.js +0 -347
- package/dist/blockchain/ZipKitNFT.d.ts +0 -3
- package/dist/blockchain/ZipKitNFT.js +0 -7
- package/dist/blockchain/ZipKitVerifier.d.ts +0 -69
- package/dist/blockchain/ZipKitVerifier.js +0 -289
- package/dist/blockchain/ZipKitWallet.d.ts +0 -69
- package/dist/blockchain/contracts.d.ts +0 -14
- package/dist/blockchain/contracts.js +0 -77
- package/dist/blockchain/types.d.ts +0 -47
- package/dist/blockchain/types.js +0 -30
- package/dist/browser/ZipKitBrowser.d.ts +0 -18
- package/dist/browser/ZipKitStampBrowser.d.ts +0 -2
- package/dist/browser/ZipKitStampBrowser.js +0 -12
- package/dist/browser-index.d.ts +0 -18
- package/dist/browser-index.js +0 -57
- package/dist/server/ZipKitServer.d.ts +0 -74
- package/dist/server/ZipKitServer.js +0 -310
- package/dist/shared/ZipKit.d.ts +0 -243
- package/dist/shared/ZipKit.js +0 -772
- package/dist/shared/components/CertificateOTS.d.ts +0 -15
- package/dist/shared/components/CertificateOTS.js +0 -116
- package/dist/shared/components/FileSys.d.ts +0 -2
- package/dist/shared/components/FileSys.js +0 -113
- package/dist/shared/components/HashAccumulator.d.ts +0 -55
- package/dist/shared/components/HashAccumulator.js +0 -100
- package/dist/shared/components/ZipCrypto.d.ts +0 -3
- package/dist/shared/components/ZipCrypto.js +0 -78
- package/dist/shared/components/merkleTree.d.ts +0 -66
- package/dist/shared/components/merkleTree.js +0 -136
- package/dist/shared/types/index.d.ts +0 -21
- package/dist/shared/types/index.js +0 -3
- package/dist/shared/types.d.ts +0 -33
- package/dist/shared/types.js +0 -8
- package/dist/shared/version.d.ts +0 -2
- package/dist/shared/version.js +0 -6
- package/src/blockchain/CertificateToken.ts +0 -444
- package/src/blockchain/ZipKitMinter.ts +0 -470
- package/src/blockchain/ZipKitNFT.ts +0 -12
- package/src/blockchain/ZipKitVerifier.ts +0 -382
- package/src/blockchain/contracts.ts +0 -88
- package/src/blockchain/types.ts +0 -91
- package/src/browser/CertificateGeneratorBrowser.ts-remove +0 -498
- package/src/browser/ZipKitStampBrowser.ts +0 -9
- package/src/browser-index.ts +0 -36
- package/src/server/README.md +0 -25
- package/src/server/ZipKitServer.ts +0 -305
- package/src/shared/ZipKit.ts +0 -881
- package/src/shared/components/CertificateOTS.ts +0 -132
- package/src/shared/components/FileSys.ts +0 -87
- package/src/shared/components/HashAccumulator.ts +0 -113
- package/src/shared/components/ZipCrypto.ts +0 -91
- package/src/shared/components/merkleTree.ts +0 -162
- package/src/shared/types/index.ts +0 -25
- package/src/shared/types/modules.d.ts +0 -22
- package/src/shared/types/opentimestamps.d.ts +0 -23
- package/src/shared/types.d.ts +0 -8
- package/src/shared/types.ts +0 -43
- package/src/shared/version.ts +0 -3
- /package/src/{shared → core}/components/Support.ts +0 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node Blockchain Module Exports
|
|
3
|
+
* Node.js-specific blockchain functionality for ZIP file tokenization
|
|
4
|
+
*
|
|
5
|
+
* Note: ZipkitMinter and ZipkitVerifier convenience methods (retry, batch)
|
|
6
|
+
* are now available in the core module. Only WalletManagerNode is Node.js-specific
|
|
7
|
+
* due to file system operations.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
export { WalletManagerNode, ZipkitWallet } from './WalletManagerNode';
|
|
11
|
+
|
|
12
|
+
// Re-export specific core functionality to avoid duplicates
|
|
13
|
+
export {
|
|
14
|
+
ZipkitMinter,
|
|
15
|
+
ZipkitVerifier,
|
|
16
|
+
CoreWalletManager,
|
|
17
|
+
WalletAnalyzer,
|
|
18
|
+
createTimestamp,
|
|
19
|
+
verifyOts,
|
|
20
|
+
verifyOtsZip
|
|
21
|
+
} from '../core';
|
|
22
|
+
export type {
|
|
23
|
+
MintingOptions,
|
|
24
|
+
MintingResult,
|
|
25
|
+
VerificationOptions,
|
|
26
|
+
VerificationResult,
|
|
27
|
+
WalletInfo,
|
|
28
|
+
NetworkConfig,
|
|
29
|
+
TokenMetadata,
|
|
30
|
+
WalletSetupResult,
|
|
31
|
+
CommonTokenConfig,
|
|
32
|
+
TokenInfo,
|
|
33
|
+
WalletBasicInfo,
|
|
34
|
+
TokenScanResult,
|
|
35
|
+
NZipTokenDetails,
|
|
36
|
+
TimestampResult,
|
|
37
|
+
TimestampInfo,
|
|
38
|
+
DeserializeOtsResult,
|
|
39
|
+
OtsVerifyResult
|
|
40
|
+
} from '../core';
|
|
@@ -1,39 +1,41 @@
|
|
|
1
1
|
// ======================================
|
|
2
|
-
//
|
|
2
|
+
// ZipkitBrowser.ts
|
|
3
3
|
// Copyright (c) 2025 NeoWare, Inc. All rights reserved.
|
|
4
4
|
// ======================================
|
|
5
5
|
|
|
6
|
-
import
|
|
7
|
-
import ZipEntry from '../
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import {
|
|
12
|
-
import { crc32 } from '../
|
|
13
|
-
import { DATATYPE, getTypeOf } from '../
|
|
14
|
-
import type { FileData } from '../
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
export
|
|
6
|
+
import Zipkit, { CompressOptions, CreateZipOptions } from '../core';
|
|
7
|
+
import ZipEntry from '../core/ZipEntry';
|
|
8
|
+
import { ZipCompress } from '../core/ZipCompress';
|
|
9
|
+
import Errors from '../core/constants/Errors';
|
|
10
|
+
import * as Headers from '../core/constants/Headers';
|
|
11
|
+
import { TOKENIZED_METADATA, TIMESTAMP_SUBMITTED, TIMESTAMP_METADATA } from '../core/constants/Headers';
|
|
12
|
+
import { sha256, crc32 } from '../core/encryption/ZipCrypto';
|
|
13
|
+
import { DATATYPE, getTypeOf } from '../core/components/Util';
|
|
14
|
+
import type { FileData } from '../types';
|
|
15
|
+
import HashCalculator from '../core/components/HashCalculator';
|
|
16
|
+
|
|
17
|
+
// Re-export everything from Zipkit
|
|
18
|
+
export * from '../core';
|
|
18
19
|
export { ZipEntry, Errors, Headers, sha256, getTypeOf };
|
|
19
20
|
|
|
20
21
|
// ======================================
|
|
21
|
-
//
|
|
22
|
+
// ZipkitBrowser
|
|
22
23
|
// ======================================
|
|
23
24
|
|
|
24
|
-
export default class
|
|
25
|
+
export default class ZipkitBrowser extends Zipkit {
|
|
25
26
|
constructor() {
|
|
26
27
|
super(); // Call the parent constructor
|
|
27
28
|
|
|
28
|
-
// console.log('
|
|
29
|
-
// console.log('
|
|
30
|
-
// console.log('
|
|
31
|
-
// console.log('
|
|
32
|
-
// console.log('
|
|
29
|
+
// console.log('Zipkit.support.isNode: ', Zipkit.support.isNode);
|
|
30
|
+
// console.log('Zipkit.support.buffer: ', Zipkit.support.buffer);
|
|
31
|
+
// console.log('Zipkit.support.blob: ', Zipkit.support.blob);
|
|
32
|
+
// console.log('Zipkit.support.streams: ', Zipkit.support.streams);
|
|
33
|
+
// console.log('Zipkit.support.fileReader: ', Zipkit.support.fileReader);
|
|
33
34
|
}
|
|
34
35
|
|
|
35
36
|
// --------------------------------------
|
|
36
37
|
// Load a ZIP file from a Blob and return the ZipEntry array
|
|
38
|
+
// Always uses loadZip() to ensure proper initialization
|
|
37
39
|
|
|
38
40
|
async loadZipBlob(data: Blob): Promise<ZipEntry[] | null> {
|
|
39
41
|
if (getTypeOf(data) !== DATATYPE.BLOB) {
|
|
@@ -41,30 +43,34 @@ export default class ZipKitBrowser extends ZipKit {
|
|
|
41
43
|
}
|
|
42
44
|
|
|
43
45
|
return new Promise((resolve, reject) => {
|
|
44
|
-
const _readEntries = (data: Buffer): ZipEntry[] | null => {
|
|
45
|
-
try {
|
|
46
|
-
super.loadZip(data);
|
|
47
|
-
return super.getDirectory();
|
|
48
|
-
} catch (error) {
|
|
49
|
-
reject(error);
|
|
50
|
-
return null;
|
|
51
|
-
}
|
|
52
|
-
};
|
|
53
|
-
|
|
54
46
|
const reader = new window.FileReader();
|
|
55
47
|
reader.readAsArrayBuffer(data);
|
|
56
48
|
|
|
57
|
-
reader.onload =
|
|
58
|
-
if (!
|
|
49
|
+
reader.onload = (e: ProgressEvent<FileReader>) => {
|
|
50
|
+
if (!reader.result) {
|
|
59
51
|
reject(new Error('Failed to read file'));
|
|
60
52
|
return;
|
|
61
53
|
}
|
|
62
|
-
|
|
63
|
-
|
|
54
|
+
|
|
55
|
+
try {
|
|
56
|
+
// Convert ArrayBuffer to Buffer
|
|
57
|
+
const buffer = Buffer.from(reader.result as ArrayBuffer);
|
|
58
|
+
|
|
59
|
+
// Always use loadZip() which:
|
|
60
|
+
// 1. Resets ZIP data
|
|
61
|
+
// 2. Stores buffer in this.inBuffer
|
|
62
|
+
// 3. Loads EOCD and parses central directory
|
|
63
|
+
// 4. Stores entries in this.zipEntries
|
|
64
|
+
// 5. Returns the entries
|
|
65
|
+
const entries = super.loadZip(buffer);
|
|
66
|
+
resolve(entries);
|
|
67
|
+
} catch (error) {
|
|
68
|
+
reject(error);
|
|
69
|
+
}
|
|
64
70
|
};
|
|
65
71
|
|
|
66
|
-
reader.onerror =
|
|
67
|
-
reject(
|
|
72
|
+
reader.onerror = () => {
|
|
73
|
+
reject(reader.error || new Error('Failed to read file'));
|
|
68
74
|
};
|
|
69
75
|
});
|
|
70
76
|
}
|
|
@@ -104,7 +110,8 @@ export default class ZipKitBrowser extends ZipKit {
|
|
|
104
110
|
|
|
105
111
|
return new Promise(async (resolve, reject) => {
|
|
106
112
|
const _compressData = async (entry: ZipEntry, data: Buffer, options?: CompressOptions): Promise<Buffer> => {
|
|
107
|
-
|
|
113
|
+
// Use Zipkit wrapper method
|
|
114
|
+
return await this.compressData(entry, data, options);
|
|
108
115
|
};
|
|
109
116
|
|
|
110
117
|
const reader = new window.FileReader();
|
|
@@ -135,7 +142,7 @@ export default class ZipKitBrowser extends ZipKit {
|
|
|
135
142
|
|
|
136
143
|
async extractBlob(entry: ZipEntry, skipHashCheck?: boolean): Promise<Blob | null> {
|
|
137
144
|
try {
|
|
138
|
-
const _outBuf = await
|
|
145
|
+
const _outBuf = await this.extract(entry, skipHashCheck);
|
|
139
146
|
if (!_outBuf) return null;
|
|
140
147
|
|
|
141
148
|
// Convert Buffer to Uint8Array for Blob compatibility
|
|
@@ -170,7 +177,7 @@ export default class ZipKitBrowser extends ZipKit {
|
|
|
170
177
|
entry.isUpdated = true;
|
|
171
178
|
// Don't continue here - let it fall through to special handling below
|
|
172
179
|
} else {
|
|
173
|
-
const inData = super.copyEntry(entry);
|
|
180
|
+
const inData = await super.copyEntry(entry);
|
|
174
181
|
entry.localHdrOffset = offset;
|
|
175
182
|
offset += inData.length;
|
|
176
183
|
buffers.push(inData);
|
|
@@ -186,6 +193,19 @@ export default class ZipKitBrowser extends ZipKit {
|
|
|
186
193
|
|
|
187
194
|
const fileBuffer = await entry.fileData.arrayBuffer();
|
|
188
195
|
|
|
196
|
+
// Special handling for already-compressed entries - use existing compressed data
|
|
197
|
+
if (entry.cmpData && entry.compressedSize && entry.crc) {
|
|
198
|
+
// Entry is already compressed, use the existing compressed data
|
|
199
|
+
const localHdr = entry.createLocalHdr();
|
|
200
|
+
entry.localHdrOffset = offset;
|
|
201
|
+
offset += localHdr.length + entry.cmpData.length;
|
|
202
|
+
|
|
203
|
+
buffers.push(localHdr);
|
|
204
|
+
buffers.push(entry.cmpData);
|
|
205
|
+
_onEntryDone(entry, 'Written (pre-compressed)');
|
|
206
|
+
continue;
|
|
207
|
+
}
|
|
208
|
+
|
|
189
209
|
// Special handling for token metadata files - store uncompressed with CRC-32
|
|
190
210
|
if (entry.filename === TOKENIZED_METADATA || entry.filename === TIMESTAMP_SUBMITTED || entry.filename === TIMESTAMP_METADATA) {
|
|
191
211
|
// For token metadata, use STORED compression (no compression)
|
|
@@ -211,7 +231,7 @@ export default class ZipKitBrowser extends ZipKit {
|
|
|
211
231
|
_onEntryDone(entry, 'Stored (metadata)');
|
|
212
232
|
} else {
|
|
213
233
|
// Normal file processing with compression
|
|
214
|
-
const cmpData = await
|
|
234
|
+
const cmpData = await this.compressData(entry, Buffer.from(fileBuffer), cmpOptions);
|
|
215
235
|
const localHdr = entry.createLocalHdr();
|
|
216
236
|
|
|
217
237
|
entry.localHdrOffset = offset;
|
|
@@ -238,5 +258,48 @@ export default class ZipKitBrowser extends ZipKit {
|
|
|
238
258
|
// Convert Buffer to Uint8Array for Blob compatibility
|
|
239
259
|
const uint8Array = new Uint8Array(combinedBuffer);
|
|
240
260
|
return new Blob([uint8Array], { type: 'application/zip' });
|
|
241
|
-
}
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
/**
|
|
264
|
+
* Checks if a filename is a blockchain metadata file that should be excluded from Merkle Root calculation
|
|
265
|
+
* @param filename - The filename to check
|
|
266
|
+
* @returns boolean - True if the file is a metadata file
|
|
267
|
+
*/
|
|
268
|
+
private isMetadataFile(filename: string): boolean {
|
|
269
|
+
return filename === TIMESTAMP_SUBMITTED ||
|
|
270
|
+
filename === TIMESTAMP_METADATA ||
|
|
271
|
+
filename === TOKENIZED_METADATA;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
// --------------------------------------
|
|
275
|
+
// Helper method: Add a file to the ZIP with compression
|
|
276
|
+
// Simplifies the common workflow of creating entry + compressing
|
|
277
|
+
|
|
278
|
+
async addFile(file: FileData, options?: CompressOptions): Promise<ZipEntry> {
|
|
279
|
+
// Create entry
|
|
280
|
+
const entry = this.createZipFileEntry(file);
|
|
281
|
+
|
|
282
|
+
// Compress the file
|
|
283
|
+
// In browser, File objects implement both FileData and Blob interfaces
|
|
284
|
+
// We need to convert FileData to Blob for compressDataBlob
|
|
285
|
+
const fileBlob = file as unknown as Blob;
|
|
286
|
+
const compressedData = await this.compressDataBlob(entry, fileBlob, options);
|
|
287
|
+
entry.cmpData = compressedData;
|
|
288
|
+
|
|
289
|
+
return entry;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
// --------------------------------------
|
|
293
|
+
// Verify a ZIP entry by attempting to extract it
|
|
294
|
+
// Returns true if the entry is valid, false otherwise
|
|
295
|
+
|
|
296
|
+
async verifyEntry(entry: ZipEntry, skipHashCheck?: boolean): Promise<boolean> {
|
|
297
|
+
try {
|
|
298
|
+
const blob = await this.extractBlob(entry, skipHashCheck);
|
|
299
|
+
return blob !== null;
|
|
300
|
+
} catch (error) {
|
|
301
|
+
console.error(`Verification failed for ${entry.filename}:`, error);
|
|
302
|
+
return false;
|
|
303
|
+
}
|
|
304
|
+
}
|
|
242
305
|
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// NeoZipkit - Browser ES Module Entry Point
|
|
3
|
+
// =============================================================================
|
|
4
|
+
// This is a clean ES module entry point for browser bundles
|
|
5
|
+
// All exports are named exports for better tree-shaking support
|
|
6
|
+
|
|
7
|
+
// Buffer polyfill for browser
|
|
8
|
+
import { Buffer } from 'buffer';
|
|
9
|
+
if (typeof globalThis !== 'undefined') {
|
|
10
|
+
(globalThis as any).Buffer = Buffer;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
// Core exports
|
|
14
|
+
export * from '../core';
|
|
15
|
+
|
|
16
|
+
// Browser-specific class
|
|
17
|
+
export { default as ZipkitBrowser } from './ZipkitBrowser';
|
|
18
|
+
|
|
19
|
+
// Re-export ZipEntry as named export for convenience
|
|
20
|
+
export { default as ZipEntry } from '../core/ZipEntry';
|
|
21
|
+
|
|
22
|
+
// Re-export commonly used types and constants
|
|
23
|
+
export type { CompressOptions, CreateZipOptions } from '../core/ZipCompress';
|
|
24
|
+
export type { FileData, TokenMetadata } from '../types';
|
|
25
|
+
export * from '../core/constants/Headers';
|
|
26
|
+
export * from '../core/constants/Errors';
|
|
27
|
+
|
|
28
|
+
// Blockchain exports for browser (if needed)
|
|
29
|
+
export * from '../blockchain/browser';
|
|
30
|
+
export { createTokenVerifier } from '../blockchain/browser';
|
|
31
|
+
|
|
32
|
+
// Platform utilities
|
|
33
|
+
export const PlatformUtils = {
|
|
34
|
+
isBrowser: typeof window !== 'undefined' && typeof document !== 'undefined',
|
|
35
|
+
isNode: typeof process !== 'undefined' && process.versions && process.versions.node,
|
|
36
|
+
};
|
|
37
|
+
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// NeoZipkit - Browser-Only Package Exports
|
|
3
|
+
// =============================================================================
|
|
4
|
+
|
|
5
|
+
// Core shared exports (re-exported from core module)
|
|
6
|
+
export * from '../core';
|
|
7
|
+
import Zipkit from '../core';
|
|
8
|
+
export default Zipkit;
|
|
9
|
+
|
|
10
|
+
// Browser-only exports
|
|
11
|
+
export { default as ZipkitBrowser } from './ZipkitBrowser';
|
|
12
|
+
export { TokenMetadata } from '../types';
|
|
13
|
+
|
|
14
|
+
// Blockchain exports for browser
|
|
15
|
+
export * from '../blockchain/browser';
|
|
16
|
+
export { createTokenVerifier } from '../blockchain/browser';
|
|
17
|
+
|
|
18
|
+
// Platform-specific conditional exports
|
|
19
|
+
export const PlatformUtils = {
|
|
20
|
+
// Browser detection
|
|
21
|
+
isBrowser: typeof window !== 'undefined' && typeof document !== 'undefined',
|
|
22
|
+
// Node.js detection
|
|
23
|
+
isNode: typeof process !== 'undefined' && process.versions && process.versions.node,
|
|
24
|
+
};
|
|
25
|
+
|