neozipkit 0.1.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 +371 -200
- 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 +256 -0
- 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/{browser → blockchain/browser}/TokenVerifierBrowser.d.ts +11 -20
- package/dist/blockchain/browser/TokenVerifierBrowser.d.ts.map +1 -0
- package/dist/{browser → blockchain/browser}/TokenVerifierBrowser.js +106 -92
- 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/{server/blockchain/WalletAnalyzer.d.ts → blockchain/core/WalletManager.d.ts} +69 -26
- package/dist/blockchain/core/WalletManager.d.ts.map +1 -0
- package/dist/{server/blockchain/WalletAnalyzer.js → blockchain/core/WalletManager.js} +172 -160
- package/dist/blockchain/core/WalletManager.js.map +1 -0
- package/dist/blockchain/core/ZipkitMinter.d.ts +141 -0
- 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/core/ZipkitOTS.d.ts +126 -0
- package/dist/blockchain/core/ZipkitOTS.d.ts.map +1 -0
- package/dist/blockchain/core/ZipkitOTS.js +506 -0
- 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 -0
- package/dist/blockchain/index.d.ts.map +1 -0
- package/dist/blockchain/index.js +34 -0
- 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 -17
- package/dist/browser.js +13 -29
- 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 +224 -81
- 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/{shared → core}/version.d.ts +1 -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 -25
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -47
- 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 +6 -3
- package/examples/verify-tokenized-zip.ts +305 -0
- package/package.json +117 -23
- package/src/blockchain/README.md +222 -0
- package/src/{browser → 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/core/WalletManager.ts +436 -0
- package/src/blockchain/core/ZipkitMinter.ts +716 -0
- package/src/blockchain/core/ZipkitOTS.ts +588 -0
- 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 +27 -0
- 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 +239 -89
- 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 -32
- 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/opentimestamps.d.ts +1 -23
- package/contracts/Lock.sol +0 -34
- package/contracts/bytecode.txt +0 -1
- package/contracts/compile-contract.js +0 -168
- package/contracts/deploy/deploy-both-contracts.js +0 -286
- package/contracts/deploy/deploy-enhanced-contract.js +0 -197
- package/contracts/deploy/deploy-private-contract.js +0 -190
- package/contracts/deploy/deploy-public-clean.js +0 -1063
- package/contracts/deploy/deploy-public-contract.js +0 -1107
- package/contracts/deployment.config.example.js +0 -25
- package/contracts/remix-compile.js +0 -222
- package/contracts/setup-deployment.js +0 -51
- package/contracts/src/ZipFileNFT-DEPRECATED-6field.sol +0 -260
- package/contracts/src/ZipFileNFT-DEPRECATED-Enhanced.sol +0 -289
- package/dist/browser/CertificateGeneratorBrowser.d.ts +0 -75
- package/dist/browser/CertificateGeneratorBrowser.js +0 -433
- 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 -21
- package/dist/browser-index.js +0 -58
- package/dist/server/blockchain/CertificateToken.d.ts +0 -48
- package/dist/server/blockchain/CertificateToken.js +0 -386
- package/dist/server/blockchain/NFTMinter.d.ts +0 -41
- package/dist/server/blockchain/NFTMinter.js +0 -323
- package/dist/server/blockchain/TokenQuerier.d.ts +0 -31
- package/dist/server/blockchain/TokenQuerier.js +0 -259
- package/dist/server/blockchain/TokenVerifier.d.ts +0 -20
- package/dist/server/blockchain/TokenVerifier.js +0 -395
- package/dist/server/blockchain/WalletFormatter.d.ts +0 -39
- package/dist/server/blockchain/WalletFormatter.js +0 -196
- package/dist/server/blockchain/WalletManager.d.ts +0 -46
- package/dist/server/blockchain/WalletManager.js +0 -294
- package/dist/server/blockchain/ZipMetadata.d.ts +0 -27
- package/dist/server/blockchain/ZipMetadata.js +0 -131
- package/dist/server/blockchain/ZipTokenProcessor.d.ts +0 -44
- package/dist/server/blockchain/ZipTokenProcessor.js +0 -204
- package/dist/server/blockchain/constants.d.ts +0 -102
- package/dist/server/blockchain/constants.js +0 -968
- package/dist/server/blockchain/index.d.ts +0 -9
- package/dist/server/blockchain/index.js +0 -44
- package/dist/server/blockchain/test-certificate.d.ts +0 -8
- package/dist/server/blockchain/test-certificate.js +0 -100
- package/dist/server/blockchain/types.d.ts +0 -69
- package/dist/server/blockchain/types.js +0 -51
- package/dist/server/platform/server/ZipKitServer.d.ts +0 -105
- package/dist/server/platform/server/ZipKitServer.js +0 -437
- package/dist/server/platform/servercomponents/ZipKitOTS.d.ts +0 -91
- package/dist/server/platform/servercomponents/ZipKitOTS.js +0 -271
- package/dist/shared/ZipKit.d.ts +0 -249
- package/dist/shared/ZipKit.js +0 -789
- 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.js +0 -7
- package/src/browser/CertificateGeneratorBrowser.ts +0 -498
- package/src/browser/ZipKitStampBrowser.ts +0 -9
- package/src/browser-index.ts +0 -36
- package/src/server/blockchain/CertificateToken.ts +0 -444
- package/src/server/blockchain/NFTMinter.ts +0 -357
- package/src/server/blockchain/TokenQuerier.ts +0 -287
- package/src/server/blockchain/TokenVerifier.ts +0 -453
- package/src/server/blockchain/WalletAnalyzer.ts +0 -397
- package/src/server/blockchain/WalletFormatter.ts +0 -206
- package/src/server/blockchain/WalletManager.ts +0 -294
- package/src/server/blockchain/ZipMetadata.ts +0 -117
- package/src/server/blockchain/ZipTokenProcessor.ts +0 -234
- package/src/server/blockchain/constants.ts +0 -969
- package/src/server/blockchain/index.ts +0 -42
- package/src/server/blockchain/test-certificate.ts +0 -137
- package/src/server/blockchain/types.ts +0 -134
- package/src/server/platform/server/ZipKitServer.ts +0 -459
- package/src/server/platform/servercomponents/ZipKitOTS.ts +0 -313
- package/src/server/platform/servercomponents/opentimestamps.d.ts +0 -23
- package/src/shared/ZipKit.ts +0 -899
- 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 -4
- /package/src/{shared → core}/components/Support.ts +0 -0
|
@@ -8,9 +8,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
8
8
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
9
9
|
};
|
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.ZipEntry = void 0;
|
|
11
12
|
const Errors_1 = __importDefault(require("./constants/Errors"));
|
|
12
13
|
const Headers_1 = require("./constants/Headers");
|
|
13
|
-
const
|
|
14
|
+
const Logger_1 = require("./components/Logger");
|
|
15
|
+
const ZipCrypto_1 = require("./encryption/ZipCrypto");
|
|
14
16
|
const VER_ENCODING = 30;
|
|
15
17
|
const VER_EXTRACT = 10; // Version needed to extract (1.0)
|
|
16
18
|
/**
|
|
@@ -58,6 +60,13 @@ class ZipEntry {
|
|
|
58
60
|
this.uid = null; // User ID
|
|
59
61
|
this.gid = null; // Group ID
|
|
60
62
|
this.sha256 = null; // SHA-256 hash of the file
|
|
63
|
+
// Symbolic link data
|
|
64
|
+
this.isSymlink = false; // Entry is a symbolic link
|
|
65
|
+
this.linkTarget = null; // Target path for symbolic links
|
|
66
|
+
// Hard link data
|
|
67
|
+
this.isHardLink = false; // Entry is a hard link
|
|
68
|
+
this.originalEntry = null; // Original entry name for hard links
|
|
69
|
+
this.inode = null; // Inode number for hard links
|
|
61
70
|
this.isMSDOS = this.platform === null;
|
|
62
71
|
this.isUnixLike = this.platform != null && this.platform !== 'win32';
|
|
63
72
|
this.isMacOS = this.platform != null && this.platform === 'darwin';
|
|
@@ -147,13 +156,13 @@ class ZipEntry {
|
|
|
147
156
|
const nameCrc32 = _data.readUInt32LE(1);
|
|
148
157
|
// Calculate CRC32 of the current filename
|
|
149
158
|
const fnameBuf = Buffer.from(this.filename);
|
|
150
|
-
const calculatedCrc = (0,
|
|
159
|
+
const calculatedCrc = (0, ZipCrypto_1.crc32)(fnameBuf);
|
|
151
160
|
// If CRCs match, use the UTF-8 filename from the extra field
|
|
152
161
|
if (calculatedCrc === nameCrc32) {
|
|
153
162
|
const unicodeName = _data.subarray(5).toString('utf8');
|
|
154
163
|
this.filename = unicodeName;
|
|
155
164
|
if (this.debug) {
|
|
156
|
-
|
|
165
|
+
Logger_1.Logger.log(`Using Unicode Path: ${this.filename}`);
|
|
157
166
|
}
|
|
158
167
|
}
|
|
159
168
|
}
|
|
@@ -199,6 +208,29 @@ class ZipEntry {
|
|
|
199
208
|
}
|
|
200
209
|
}
|
|
201
210
|
}
|
|
211
|
+
else if (_id === Headers_1.HDR_ID.SYMLINK) {
|
|
212
|
+
// Extract symbolic link information
|
|
213
|
+
if (_len >= 3) { // Version + Target Length + Target
|
|
214
|
+
const version = _data.readUInt8(0);
|
|
215
|
+
const targetLength = _data.readUInt16LE(1);
|
|
216
|
+
if (targetLength > 0 && _len >= 3 + targetLength) {
|
|
217
|
+
this.isSymlink = true;
|
|
218
|
+
this.linkTarget = _data.subarray(3, 3 + targetLength).toString('utf8');
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
else if (_id === Headers_1.HDR_ID.HARDLINK) {
|
|
223
|
+
// Extract hard link information
|
|
224
|
+
if (_len >= 11) { // Version + Inode + Original Length + Original
|
|
225
|
+
const version = _data.readUInt8(0);
|
|
226
|
+
this.inode = _data.readUInt32LE(1);
|
|
227
|
+
const originalLength = _data.readUInt16LE(5);
|
|
228
|
+
if (originalLength > 0 && _len >= 7 + originalLength) {
|
|
229
|
+
this.isHardLink = true;
|
|
230
|
+
this.originalEntry = _data.subarray(7, 7 + originalLength).toString('utf8');
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
202
234
|
// Skip Unicode Path here as we already processed it
|
|
203
235
|
i += 4 + _len;
|
|
204
236
|
}
|
|
@@ -206,7 +238,7 @@ class ZipEntry {
|
|
|
206
238
|
// File Comment Length - 2 bytes
|
|
207
239
|
let comLen = data.readUInt16LE(Headers_1.CENTRAL_DIR.COMMENT_LEN);
|
|
208
240
|
if (comLen > 0)
|
|
209
|
-
this.comment = data.toString('utf8', Headers_1.CENTRAL_DIR.SIZE + fnameLen
|
|
241
|
+
this.comment = data.toString('utf8', Headers_1.CENTRAL_DIR.SIZE + fnameLen, Headers_1.CENTRAL_DIR.SIZE + fnameLen + comLen);
|
|
210
242
|
if (this.debug)
|
|
211
243
|
this.showVerboseInfo();
|
|
212
244
|
// Calculate the Buffer for the next entry
|
|
@@ -234,7 +266,7 @@ class ZipEntry {
|
|
|
234
266
|
// Create an ASCII version by replacing non-ASCII chars with '?'
|
|
235
267
|
const asciiName = this.filename.replace(/[^\x00-\x7E]/g, '?');
|
|
236
268
|
const asciiNameBuf = Buffer.from(asciiName, 'ascii');
|
|
237
|
-
const nameCrc32 = (0,
|
|
269
|
+
const nameCrc32 = (0, ZipCrypto_1.crc32)(asciiNameBuf);
|
|
238
270
|
// 1 byte version + 4 bytes CRC + filename
|
|
239
271
|
const unicodePathLen = 5 + unicodePathBuf.length;
|
|
240
272
|
// Write Unicode Path Extra Field (0x7075)
|
|
@@ -250,7 +282,6 @@ class ZipEntry {
|
|
|
250
282
|
* @returns Buffer containing the local header data
|
|
251
283
|
*/
|
|
252
284
|
createLocalHdr() {
|
|
253
|
-
const commentLen = this.comment?.length ?? 0;
|
|
254
285
|
let extraFieldLen = 0;
|
|
255
286
|
// Only create Unicode Path field if needed
|
|
256
287
|
const needsUnicode = this.needsUnicodeHandling();
|
|
@@ -259,7 +290,7 @@ class ZipEntry {
|
|
|
259
290
|
const unicodeNameLen = Buffer.from(this.filename, 'utf8').length;
|
|
260
291
|
extraFieldLen = 5 + unicodeNameLen + 4;
|
|
261
292
|
}
|
|
262
|
-
const data = Buffer.alloc(Headers_1.LOCAL_HDR.SIZE + this.filename.length +
|
|
293
|
+
const data = Buffer.alloc(Headers_1.LOCAL_HDR.SIZE + this.filename.length + extraFieldLen);
|
|
263
294
|
// "PK\003\004"
|
|
264
295
|
data.writeUInt32LE(Headers_1.LOCAL_HDR.SIGNATURE, 0);
|
|
265
296
|
// version needed to extract
|
|
@@ -290,11 +321,8 @@ class ZipEntry {
|
|
|
290
321
|
if (needsUnicode) {
|
|
291
322
|
extraOffset = this.addUnicodePathField(data, extraOffset);
|
|
292
323
|
}
|
|
293
|
-
//
|
|
294
|
-
|
|
295
|
-
const commentBuf = Buffer.from(this.comment, 'utf8');
|
|
296
|
-
commentBuf.copy(data, extraOffset);
|
|
297
|
-
}
|
|
324
|
+
// File comments are NOT stored in local headers (ZIP specification)
|
|
325
|
+
// They are only stored in the central directory
|
|
298
326
|
return data;
|
|
299
327
|
}
|
|
300
328
|
/**
|
|
@@ -303,11 +331,17 @@ class ZipEntry {
|
|
|
303
331
|
*/
|
|
304
332
|
centralDirEntry() {
|
|
305
333
|
// Calculate the length of the extra fields
|
|
306
|
-
const commentLen = this.comment
|
|
334
|
+
const commentLen = this.comment ? Buffer.from(this.comment, 'utf8').length : 0;
|
|
307
335
|
const utfLen = this.universalTime ? 9 : 0; // 4 bytes header + 5 bytes data
|
|
308
336
|
const uidgidLen = this.uid && this.gid ? 11 + 4 : 0; // 1 byte version + 1 byte size + 4 bytes data + 1 byte size + 4 bytes data
|
|
309
337
|
const sha256Buf = this.sha256 ? Buffer.from(this.sha256, 'hex') : null;
|
|
310
338
|
const sha256Len = sha256Buf ? (sha256Buf.length + 4) : 0;
|
|
339
|
+
// Calculate symbolic link extra field length
|
|
340
|
+
const symlinkLen = this.isSymlink && this.linkTarget ?
|
|
341
|
+
(4 + 1 + 2 + Buffer.byteLength(this.linkTarget, 'utf8')) : 0; // 4 bytes header + 1 byte version + 2 bytes length + target
|
|
342
|
+
// Calculate hard link extra field length
|
|
343
|
+
const hardlinkLen = this.isHardLink && this.originalEntry && this.inode !== null ?
|
|
344
|
+
(4 + 1 + 4 + 2 + Buffer.byteLength(this.originalEntry, 'utf8')) : 0; // 4 bytes header + 1 byte version + 4 bytes inode + 2 bytes length + original
|
|
311
345
|
// Only add Unicode Path field if needed
|
|
312
346
|
const needsUnicode = this.needsUnicodeHandling();
|
|
313
347
|
let unicodePathLen = 0;
|
|
@@ -316,9 +350,12 @@ class ZipEntry {
|
|
|
316
350
|
const unicodeNameLen = Buffer.from(this.filename, 'utf8').length;
|
|
317
351
|
unicodePathLen = 5 + unicodeNameLen + 4;
|
|
318
352
|
}
|
|
319
|
-
const extraLen = utfLen + sha256Len + uidgidLen + (needsUnicode ? unicodePathLen : 0);
|
|
353
|
+
const extraLen = utfLen + sha256Len + uidgidLen + symlinkLen + hardlinkLen + (needsUnicode ? unicodePathLen : 0);
|
|
354
|
+
// Calculate actual filename length (ASCII conversion may change length)
|
|
355
|
+
const asciiName = this.filename.replace(/[^\x00-\x7E]/g, '?');
|
|
356
|
+
const fnameLen = asciiName.length;
|
|
320
357
|
// Central directory header size (46 Bytes + filename + comment + extra fields)
|
|
321
|
-
const data = Buffer.alloc(Headers_1.CENTRAL_DIR.SIZE +
|
|
358
|
+
const data = Buffer.alloc(Headers_1.CENTRAL_DIR.SIZE + fnameLen + commentLen + extraLen);
|
|
322
359
|
// "PK\001\002"
|
|
323
360
|
data.writeUInt32LE(Headers_1.CENTRAL_DIR.SIGNATURE, 0);
|
|
324
361
|
// Version made by - Needs to be set for NeoZip
|
|
@@ -353,46 +390,71 @@ class ZipEntry {
|
|
|
353
390
|
data.writeUInt32LE(this.localHdrOffset, Headers_1.CENTRAL_DIR.LOCAL_HDR_OFFSET);
|
|
354
391
|
// Write filename - use ASCII filename (replacing non-ASCII with ?)
|
|
355
392
|
// This ensures compatibility with older ZIP readers
|
|
356
|
-
const asciiName = this.filename.replace(/[^\x00-\x7E]/g, '?');
|
|
357
393
|
const fnameBuf = Buffer.from(asciiName);
|
|
358
394
|
fnameBuf.copy(data, Headers_1.CENTRAL_DIR.SIZE);
|
|
395
|
+
// Add file comment immediately after filename (InfoZip format)
|
|
396
|
+
let currentOffset = Headers_1.CENTRAL_DIR.SIZE + fnameLen;
|
|
359
397
|
if (commentLen > 0 && this.comment) {
|
|
360
398
|
const commentBuf = Buffer.from(this.comment, 'utf8');
|
|
361
|
-
commentBuf.copy(data,
|
|
399
|
+
commentBuf.copy(data, currentOffset);
|
|
400
|
+
currentOffset += commentLen;
|
|
362
401
|
}
|
|
363
|
-
// Add Extra Field data
|
|
364
|
-
let extraOffset =
|
|
402
|
+
// Add Extra Field data after file comment
|
|
403
|
+
let extraOffset = currentOffset;
|
|
365
404
|
// Add Universal Time field
|
|
366
405
|
if (this.universalTime) {
|
|
367
406
|
data.writeUInt16LE(Headers_1.HDR_ID.UNV_TIME, extraOffset); // 0x5455
|
|
368
407
|
data.writeUInt16LE(5, extraOffset + 2); // Length of data (flags + time)
|
|
369
|
-
data.writeUInt8(
|
|
370
|
-
data.writeUInt32LE(
|
|
371
|
-
extraOffset += 9;
|
|
408
|
+
data.writeUInt8(1, extraOffset + 4); // Flags: modification time present
|
|
409
|
+
data.writeUInt32LE(Math.floor(Date.now() / 1000), extraOffset + 5); // Unix timestamp
|
|
410
|
+
extraOffset += 9;
|
|
411
|
+
}
|
|
412
|
+
// Add SHA-256 field
|
|
413
|
+
if (sha256Buf) {
|
|
414
|
+
data.writeUInt16LE(Headers_1.HDR_ID.SHA256, extraOffset); // 0x1f
|
|
415
|
+
data.writeUInt16LE(sha256Buf.length, extraOffset + 2); // Length of data
|
|
416
|
+
sha256Buf.copy(data, extraOffset + 4);
|
|
417
|
+
extraOffset += 4 + sha256Buf.length;
|
|
372
418
|
}
|
|
373
|
-
//
|
|
419
|
+
// Add UID/GID field
|
|
374
420
|
if (this.uid && this.gid) {
|
|
375
|
-
const uidgidLen = 11; // 1 byte version + 1 byte size + 4 bytes data + 1 byte size + 4 bytes data
|
|
376
421
|
data.writeUInt16LE(Headers_1.HDR_ID.UID_GID, extraOffset); // 0x7875
|
|
377
|
-
data.writeUInt16LE(
|
|
422
|
+
data.writeUInt16LE(11, extraOffset + 2); // Length of data
|
|
378
423
|
data.writeUInt8(1, extraOffset + 4); // Version
|
|
379
|
-
data.writeUInt8(4, extraOffset + 5); //
|
|
424
|
+
data.writeUInt8(4, extraOffset + 5); // UID size
|
|
380
425
|
data.writeUInt32LE(this.uid, extraOffset + 6); // UID
|
|
381
|
-
data.writeUInt8(4, extraOffset + 10); //
|
|
426
|
+
data.writeUInt8(4, extraOffset + 10); // GID size
|
|
382
427
|
data.writeUInt32LE(this.gid, extraOffset + 11); // GID
|
|
383
|
-
extraOffset +=
|
|
428
|
+
extraOffset += 15;
|
|
384
429
|
}
|
|
385
|
-
// Add
|
|
430
|
+
// Add symbolic link field
|
|
431
|
+
if (this.isSymlink && this.linkTarget) {
|
|
432
|
+
const targetBuf = Buffer.from(this.linkTarget, 'utf8');
|
|
433
|
+
const dataLen = 1 + 2 + targetBuf.length; // version + length + target
|
|
434
|
+
data.writeUInt16LE(Headers_1.HDR_ID.SYMLINK, extraOffset); // 0x7855
|
|
435
|
+
data.writeUInt16LE(dataLen, extraOffset + 2); // Length of data
|
|
436
|
+
data.writeUInt8(1, extraOffset + 4); // Version
|
|
437
|
+
data.writeUInt16LE(targetBuf.length, extraOffset + 5); // Target length
|
|
438
|
+
targetBuf.copy(data, extraOffset + 7); // Target path
|
|
439
|
+
extraOffset += 4 + dataLen;
|
|
440
|
+
}
|
|
441
|
+
// Add hard link field
|
|
442
|
+
if (this.isHardLink && this.originalEntry && this.inode !== null) {
|
|
443
|
+
const originalBuf = Buffer.from(this.originalEntry, 'utf8');
|
|
444
|
+
const dataLen = 1 + 4 + 2 + originalBuf.length; // version + inode + length + original
|
|
445
|
+
data.writeUInt16LE(Headers_1.HDR_ID.HARDLINK, extraOffset); // 0x7865
|
|
446
|
+
data.writeUInt16LE(dataLen, extraOffset + 2); // Length of data
|
|
447
|
+
data.writeUInt8(1, extraOffset + 4); // Version
|
|
448
|
+
data.writeUInt32LE(this.inode, extraOffset + 5); // Inode number
|
|
449
|
+
data.writeUInt16LE(originalBuf.length, extraOffset + 9); // Original entry length
|
|
450
|
+
originalBuf.copy(data, extraOffset + 11); // Original entry path
|
|
451
|
+
extraOffset += 4 + dataLen;
|
|
452
|
+
}
|
|
453
|
+
// Add Unicode Path field if needed
|
|
386
454
|
if (needsUnicode) {
|
|
387
455
|
extraOffset = this.addUnicodePathField(data, extraOffset);
|
|
388
456
|
}
|
|
389
|
-
//
|
|
390
|
-
if (sha256Buf) {
|
|
391
|
-
data.writeUInt16LE(Headers_1.HDR_ID.SHA256, extraOffset);
|
|
392
|
-
data.writeUInt16LE(sha256Buf.length, extraOffset + 2);
|
|
393
|
-
sha256Buf.copy(data, extraOffset + 4);
|
|
394
|
-
extraOffset += sha256Buf.length + 4;
|
|
395
|
-
}
|
|
457
|
+
// File comment is already written immediately after filename
|
|
396
458
|
return data;
|
|
397
459
|
}
|
|
398
460
|
// ======================================
|
|
@@ -406,13 +468,21 @@ class ZipEntry {
|
|
|
406
468
|
setDateTime(date) {
|
|
407
469
|
if (!date)
|
|
408
470
|
return 0;
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
471
|
+
// DOS date/time format:
|
|
472
|
+
// Date part (16 bits): Year (7 bits) + Month (4 bits) + Day (5 bits)
|
|
473
|
+
// Time part (16 bits): Hour (5 bits) + Minute (6 bits) + Second (5 bits, stored as seconds/2)
|
|
474
|
+
const year = date.getFullYear() - 1980; // Years since 1980
|
|
475
|
+
const month = date.getMonth() + 1; // Month (1-12)
|
|
476
|
+
const day = date.getDate(); // Day (1-31)
|
|
477
|
+
const hour = date.getHours(); // Hour (0-23)
|
|
478
|
+
const minute = date.getMinutes(); // Minute (0-59)
|
|
479
|
+
const second = date.getSeconds(); // Second (0-59)
|
|
480
|
+
// Pack date: year (7 bits) + month (4 bits) + day (5 bits)
|
|
481
|
+
const datePart = ((year & 0x7f) << 9) | ((month & 0x0f) << 5) | (day & 0x1f);
|
|
482
|
+
// Pack time: hour (5 bits) + minute (6 bits) + second/2 (5 bits)
|
|
483
|
+
const timePart = ((hour & 0x1f) << 11) | ((minute & 0x3f) << 5) | ((second >> 1) & 0x1f);
|
|
484
|
+
// Combine date and time parts
|
|
485
|
+
const time = (datePart << 16) | timePart;
|
|
416
486
|
return time;
|
|
417
487
|
}
|
|
418
488
|
/**
|
|
@@ -423,12 +493,17 @@ class ZipEntry {
|
|
|
423
493
|
parseDateTime(timeStamp) {
|
|
424
494
|
if (timeStamp == 0)
|
|
425
495
|
return null;
|
|
426
|
-
|
|
427
|
-
(
|
|
428
|
-
(
|
|
429
|
-
(
|
|
430
|
-
|
|
431
|
-
|
|
496
|
+
// Extract date part (upper 16 bits)
|
|
497
|
+
const datePart = (timeStamp >> 16) & 0xffff;
|
|
498
|
+
const year = ((datePart >> 9) & 0x7f) + 1980; // Year (7 bits) + 1980
|
|
499
|
+
const month = ((datePart >> 5) & 0x0f) - 1; // Month (4 bits) - 1 for 0-based
|
|
500
|
+
const day = datePart & 0x1f; // Day (5 bits)
|
|
501
|
+
// Extract time part (lower 16 bits)
|
|
502
|
+
const timePart = timeStamp & 0xffff;
|
|
503
|
+
const hour = (timePart >> 11) & 0x1f; // Hour (5 bits)
|
|
504
|
+
const minute = (timePart >> 5) & 0x3f; // Minute (6 bits)
|
|
505
|
+
const second = (timePart & 0x1f) << 1; // Second (5 bits) * 2
|
|
506
|
+
return new Date(year, month, day, hour, minute, second);
|
|
432
507
|
}
|
|
433
508
|
/**
|
|
434
509
|
* Formats the entry's date in local format
|
|
@@ -573,30 +648,30 @@ class ZipEntry {
|
|
|
573
648
|
* Includes compression, encryption, timestamps, and extra fields
|
|
574
649
|
*/
|
|
575
650
|
showVerboseInfo() {
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
651
|
+
Logger_1.Logger.log('=== Central Directory Entry (%s) ===', this.filename);
|
|
652
|
+
Logger_1.Logger.log('unzip from start of archive: ', this.localHdrOffset);
|
|
653
|
+
Logger_1.Logger.log('File system or operating system of origin: ', this.fileSystemToString());
|
|
654
|
+
Logger_1.Logger.log('Version of encoding software: ', this.verMadeBy);
|
|
655
|
+
Logger_1.Logger.log('Compression Method: ', this.cmpMethodToString());
|
|
656
|
+
Logger_1.Logger.log('File Security Status: ', this.bitFlags & Headers_1.GP_FLAG.ENCRYPTED ?
|
|
582
657
|
this.bitFlags & Headers_1.GP_FLAG.STRONG_ENCRYPT ? 'Strong Encrypt' : 'Encrypted' :
|
|
583
658
|
'Not Encrypted');
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
659
|
+
Logger_1.Logger.log('File Modified (DOS date/time) ', this.toFormattedDateString());
|
|
660
|
+
Logger_1.Logger.log('File Modified (UTC) ', this.toFormattedUTCDateString());
|
|
661
|
+
Logger_1.Logger.log('Compressed Size: ', this.compressedSize);
|
|
662
|
+
Logger_1.Logger.log('UnCompressed Size: ', this.uncompressedSize);
|
|
663
|
+
Logger_1.Logger.log(`32-bit CRC value (hex): ${this.crc.toString(16).padStart(8, '0')}`);
|
|
664
|
+
Logger_1.Logger.log('Length of extra field: ', this.extraField?.length ?? 0);
|
|
665
|
+
Logger_1.Logger.log('Length of file comment: ', this.comment?.length ?? 0);
|
|
666
|
+
Logger_1.Logger.log('Unix File Attributes: ');
|
|
667
|
+
Logger_1.Logger.log('MS-DOS File Attributes: ', this.dosAttributesToString());
|
|
593
668
|
if (this.extraField) {
|
|
594
|
-
|
|
669
|
+
Logger_1.Logger.log('\nThe Central-Directory Extra Field contains:');
|
|
595
670
|
try {
|
|
596
671
|
for (let i = 0; i < this.extraField.length;) {
|
|
597
672
|
// Ensure we have at least 4 bytes (header ID + length)
|
|
598
673
|
if (i + 4 > this.extraField.length) {
|
|
599
|
-
|
|
674
|
+
Logger_1.Logger.log(` Warning: Truncated extra field at offset ${i}`);
|
|
600
675
|
break;
|
|
601
676
|
}
|
|
602
677
|
let _id = this.extraField.readUInt16LE(i);
|
|
@@ -604,23 +679,23 @@ class ZipEntry {
|
|
|
604
679
|
let _len = this.extraField.readUInt16LE(i + 2);
|
|
605
680
|
// Validate the length to ensure it doesn't exceed buffer bounds
|
|
606
681
|
if (_len < 0 || i + 4 + _len > this.extraField.length) {
|
|
607
|
-
|
|
682
|
+
Logger_1.Logger.log(` Warning: Invalid extra field length (${_len}) at offset ${i} for ID ${_idStr}`);
|
|
608
683
|
break;
|
|
609
684
|
}
|
|
610
685
|
let _data = this.extraField.subarray(i + 4, i + 4 + _len);
|
|
611
686
|
try {
|
|
612
687
|
if (_id === Headers_1.HDR_ID.SHA256) {
|
|
613
|
-
|
|
688
|
+
Logger_1.Logger.log(` ID[0x${_idStr}] NeoZip-SHA256: ${_data.toString('hex')}`);
|
|
614
689
|
}
|
|
615
690
|
else if (_id === Headers_1.HDR_ID.UNV_TIME) {
|
|
616
691
|
if (_len >= 5) {
|
|
617
692
|
const flags = _data.readUInt8(0);
|
|
618
693
|
const timestamp = _data.readUInt32LE(1);
|
|
619
694
|
const date = new Date(timestamp * 1000);
|
|
620
|
-
|
|
695
|
+
Logger_1.Logger.log(` ID[0x${_idStr}] Universal Time: flags=${flags}, time=${date.toISOString()}`);
|
|
621
696
|
}
|
|
622
697
|
else {
|
|
623
|
-
|
|
698
|
+
Logger_1.Logger.log(` ID[0x${_idStr}] Universal Time: (invalid length ${_len})`);
|
|
624
699
|
}
|
|
625
700
|
}
|
|
626
701
|
else if (_id === Headers_1.HDR_ID.UID_GID) {
|
|
@@ -628,7 +703,7 @@ class ZipEntry {
|
|
|
628
703
|
const version = _data.readUInt8(0);
|
|
629
704
|
const uidSize = _data.readUInt8(1);
|
|
630
705
|
if (2 + uidSize > _len) {
|
|
631
|
-
|
|
706
|
+
Logger_1.Logger.log(` ID[0x${_idStr}] Unix UID/GID: (invalid UID size ${uidSize})`);
|
|
632
707
|
}
|
|
633
708
|
else {
|
|
634
709
|
const uid = _data.readUIntLE(2, Math.min(uidSize, 4));
|
|
@@ -639,11 +714,44 @@ class ZipEntry {
|
|
|
639
714
|
gid = _data.readUIntLE(2 + uidSize + 1, Math.min(gidSize, 4));
|
|
640
715
|
}
|
|
641
716
|
}
|
|
642
|
-
|
|
717
|
+
Logger_1.Logger.log(` ID[0x${_idStr}] Unix UID/GID: version=${version}, uid=${uid}, gid=${gid}`);
|
|
643
718
|
}
|
|
644
719
|
}
|
|
645
720
|
else {
|
|
646
|
-
|
|
721
|
+
Logger_1.Logger.log(` ID[0x${_idStr}] Unix UID/GID: (invalid length ${_len})`);
|
|
722
|
+
}
|
|
723
|
+
}
|
|
724
|
+
else if (_id === Headers_1.HDR_ID.SYMLINK) {
|
|
725
|
+
if (_len >= 3) {
|
|
726
|
+
const version = _data.readUInt8(0);
|
|
727
|
+
const targetLength = _data.readUInt16LE(1);
|
|
728
|
+
if (targetLength > 0 && _len >= 3 + targetLength) {
|
|
729
|
+
const target = _data.subarray(3, 3 + targetLength).toString('utf8');
|
|
730
|
+
Logger_1.Logger.log(` ID[0x${_idStr}] Symbolic Link: version=${version}, target="${target}"`);
|
|
731
|
+
}
|
|
732
|
+
else {
|
|
733
|
+
Logger_1.Logger.log(` ID[0x${_idStr}] Symbolic Link: (invalid target length ${targetLength})`);
|
|
734
|
+
}
|
|
735
|
+
}
|
|
736
|
+
else {
|
|
737
|
+
Logger_1.Logger.log(` ID[0x${_idStr}] Symbolic Link: (invalid length ${_len})`);
|
|
738
|
+
}
|
|
739
|
+
}
|
|
740
|
+
else if (_id === Headers_1.HDR_ID.HARDLINK) {
|
|
741
|
+
if (_len >= 11) {
|
|
742
|
+
const version = _data.readUInt8(0);
|
|
743
|
+
const inode = _data.readUInt32LE(1);
|
|
744
|
+
const originalLength = _data.readUInt16LE(5);
|
|
745
|
+
if (originalLength > 0 && _len >= 7 + originalLength) {
|
|
746
|
+
const original = _data.subarray(7, 7 + originalLength).toString('utf8');
|
|
747
|
+
Logger_1.Logger.log(` ID[0x${_idStr}] Hard Link: version=${version}, inode=${inode}, original="${original}"`);
|
|
748
|
+
}
|
|
749
|
+
else {
|
|
750
|
+
Logger_1.Logger.log(` ID[0x${_idStr}] Hard Link: (invalid original length ${originalLength})`);
|
|
751
|
+
}
|
|
752
|
+
}
|
|
753
|
+
else {
|
|
754
|
+
Logger_1.Logger.log(` ID[0x${_idStr}] Hard Link: (invalid length ${_len})`);
|
|
647
755
|
}
|
|
648
756
|
}
|
|
649
757
|
else if (_id === Headers_1.HDR_ID.UNICODE_PATH) {
|
|
@@ -653,13 +761,46 @@ class ZipEntry {
|
|
|
653
761
|
const unicodeName = _data.subarray(5).toString('utf8');
|
|
654
762
|
// Calculate CRC32 of the original filename for verification
|
|
655
763
|
const fnameBuf = Buffer.from(this.filename);
|
|
656
|
-
const calculatedCrc = (0,
|
|
764
|
+
const calculatedCrc = (0, ZipCrypto_1.crc32)(fnameBuf);
|
|
657
765
|
const crcMatch = nameCrc32 === calculatedCrc ? 'MATCH' : 'MISMATCH';
|
|
658
|
-
|
|
659
|
-
|
|
766
|
+
Logger_1.Logger.log(` ID[0x${_idStr}] Unicode Path: version=${version}, CRC32=${nameCrc32.toString(16)} (${crcMatch})`);
|
|
767
|
+
Logger_1.Logger.log(` Path: "${unicodeName}"`);
|
|
768
|
+
}
|
|
769
|
+
else {
|
|
770
|
+
Logger_1.Logger.log(` ID[0x${_idStr}] Unicode Path: (invalid length ${_len})`);
|
|
771
|
+
}
|
|
772
|
+
}
|
|
773
|
+
else if (_id === Headers_1.HDR_ID.ZIP64) {
|
|
774
|
+
// ZIP64 Extended Information (0x0001)
|
|
775
|
+
Logger_1.Logger.log(` ID[0x${_idStr}] ZIP64 Extended Information:`);
|
|
776
|
+
if (_len >= 8) {
|
|
777
|
+
let offset = 0;
|
|
778
|
+
// Read uncompressed size (8 bytes) if present
|
|
779
|
+
if (offset + 8 <= _len) {
|
|
780
|
+
const uncompressedSize = _data.readBigUInt64LE(offset);
|
|
781
|
+
Logger_1.Logger.log(` Uncompressed Size (ZIP64): ${uncompressedSize.toString()} bytes`);
|
|
782
|
+
offset += 8;
|
|
783
|
+
}
|
|
784
|
+
// Read compressed size (8 bytes) if present
|
|
785
|
+
if (offset + 8 <= _len) {
|
|
786
|
+
const compressedSize = _data.readBigUInt64LE(offset);
|
|
787
|
+
Logger_1.Logger.log(` Compressed Size (ZIP64): ${compressedSize.toString()} bytes`);
|
|
788
|
+
offset += 8;
|
|
789
|
+
}
|
|
790
|
+
// Read local header offset (8 bytes) if present
|
|
791
|
+
if (offset + 8 <= _len) {
|
|
792
|
+
const localHeaderOffset = _data.readBigUInt64LE(offset);
|
|
793
|
+
Logger_1.Logger.log(` Local Header Offset (ZIP64): ${localHeaderOffset.toString()}`);
|
|
794
|
+
offset += 8;
|
|
795
|
+
}
|
|
796
|
+
// Read disk number (4 bytes) if present
|
|
797
|
+
if (offset + 4 <= _len) {
|
|
798
|
+
const diskNumber = _data.readUInt32LE(offset);
|
|
799
|
+
Logger_1.Logger.log(` Disk Number (ZIP64): ${diskNumber}`);
|
|
800
|
+
}
|
|
660
801
|
}
|
|
661
802
|
else {
|
|
662
|
-
|
|
803
|
+
Logger_1.Logger.log(` ZIP64 Extended Information: (invalid length ${_len})`);
|
|
663
804
|
}
|
|
664
805
|
}
|
|
665
806
|
else {
|
|
@@ -667,20 +808,22 @@ class ZipEntry {
|
|
|
667
808
|
const preview = _len > 0
|
|
668
809
|
? _data.slice(0, Math.min(16, _len)).toString('hex')
|
|
669
810
|
: '';
|
|
670
|
-
|
|
811
|
+
Logger_1.Logger.log(` ID[0x${_idStr}] Unknown field: length=${_len} bytes${preview ? ', data=' + preview + '...' : ''}`);
|
|
671
812
|
}
|
|
672
813
|
}
|
|
673
814
|
catch (error) {
|
|
674
|
-
|
|
815
|
+
Logger_1.Logger.log(` Error parsing extra field ID[0x${_idStr}]: ${error.message}`);
|
|
675
816
|
}
|
|
676
817
|
i += 4 + _len;
|
|
677
818
|
}
|
|
678
819
|
}
|
|
679
820
|
catch (error) {
|
|
680
|
-
|
|
821
|
+
Logger_1.Logger.log(` Error parsing extra fields: ${error.message}`);
|
|
681
822
|
}
|
|
682
823
|
}
|
|
683
|
-
|
|
824
|
+
Logger_1.Logger.log('\n');
|
|
684
825
|
}
|
|
685
826
|
}
|
|
686
827
|
exports.default = ZipEntry;
|
|
828
|
+
exports.ZipEntry = ZipEntry;
|
|
829
|
+
//# sourceMappingURL=ZipEntry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ZipEntry.js","sourceRoot":"","sources":["../../src/core/ZipEntry.ts"],"names":[],"mappings":"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"}
|