diff --git a/scripts/extract-elx/extract-elx.js b/scripts/extract-elx/extract-elx.js index 13e18db..f7c37ca 100644 --- a/scripts/extract-elx/extract-elx.js +++ b/scripts/extract-elx/extract-elx.js @@ -65,6 +65,27 @@ try { } } +// Import crc-32 for file integrity checks (try multiple locations) +let crc32; +try { + // Try local node_modules first + crc32 = require('crc-32'); +} catch (err) { + try { + // Try to find npm global prefix and load from there + const npmPrefix = execSync('npm config get prefix', { encoding: 'utf-8' }).trim(); + const globalCrc32 = join(npmPrefix, 'node_modules', 'crc-32'); + crc32 = require(globalCrc32); + } catch (err2) { + console.error( + '\n❌ Missing dependency: crc-32\n' + + 'Please install globally with: npm install -g crc-32\n' + + 'Or locally in the current directory with: npm install crc-32\n' + ); + process.exit(1); + } +} + // ============================================================================ // CONFIGURATION // ============================================================================ diff --git a/scripts/extract-elx/package-lock.json b/scripts/extract-elx/package-lock.json index 609a5b2..45c9187 100644 --- a/scripts/extract-elx/package-lock.json +++ b/scripts/extract-elx/package-lock.json @@ -5,7 +5,9 @@ "packages": { "": { "dependencies": { - "fast-xml-parser": "^5.8.0" + "crc-32": "^1.2.2", + "fast-xml-parser": "^5.8.0", + "xml-formatter": "^3.7.0" } }, "node_modules/@nodable/entities": { @@ -20,6 +22,18 @@ ], "license": "MIT" }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "license": "Apache-2.0", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/fast-xml-builder": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.2.0.tgz", @@ -85,6 +99,18 @@ ], "license": "MIT" }, + "node_modules/xml-formatter": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/xml-formatter/-/xml-formatter-3.7.0.tgz", + "integrity": "sha512-+8qTc3zv2UcJ1v9IsSIce37Dl4MQG14Cp7tWrwmy202UaI1wqRukw5QMX1JHsV+DX64yw77EgGsj2s5wGvuMbQ==", + "license": "MIT", + "dependencies": { + "xml-parser-xo": "^4.1.5" + }, + "engines": { + "node": ">= 16" + } + }, "node_modules/xml-naming": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/xml-naming/-/xml-naming-0.1.0.tgz", @@ -99,6 +125,15 @@ "engines": { "node": ">=16.0.0" } + }, + "node_modules/xml-parser-xo": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/xml-parser-xo/-/xml-parser-xo-4.1.5.tgz", + "integrity": "sha512-TxyRxk9sTOUg3glxSIY6f0nfuqRll2OEF8TspLgh5mZkLuBgheCn3zClcDSGJ58TvNmiwyCCuat4UajPud/5Og==", + "license": "MIT", + "engines": { + "node": ">= 16" + } } } } diff --git a/scripts/extract-elx/package.json b/scripts/extract-elx/package.json index 09d099d..8faa62d 100644 --- a/scripts/extract-elx/package.json +++ b/scripts/extract-elx/package.json @@ -1,5 +1,7 @@ { "dependencies": { - "fast-xml-parser": "^5.8.0" + "crc-32": "^1.2.2", + "fast-xml-parser": "^5.8.0", + "xml-formatter": "^3.7.0" } }