Build System: - Replace Grunt with npm scripts and Node.js helper scripts - Remove worker-loader, use native Webpack 5 worker syntax - Add Rspack config as faster alternative bundler (5-23x faster) - Replace platform-specific sed postinstall hacks with cross-platform Node.js script - Update browser targets from Chrome 50/Firefox 38 to Chrome 80/Firefox 78/Safari 14 - Fix import assertions (assert -> with) for Node 24 compatibility Dependencies: - Replace deprecated crypto-js with native RC4 implementation and @noble/hashes EVP KDF - Replace blakejs with @noble/hashes/blake2b and blake2s - Add @noble/hashes for MD5, SHA1/2/3, RIPEMD160, HMAC, HKDF (crypto-api fallback for legacy algos) - Replace lodash with native CaseConvert.mjs utility - Replace moment.js in web layer with date-fns - Add date-fns and date-fns-tz dependencies - Remove jquery, snackbarjs, arrive, bootstrap-colorpicker, bootstrap-material-design, popper.js v1, lodash, blakejs, crypto-js UI Modernization: - Upgrade Bootstrap 4.6.2 to Bootstrap 5.3 (87 data attribute renames) - Remove bootstrap-material-design (unmaintained) - Remove jQuery dependency entirely (38 calls replaced with native DOM + BS5 JS API) - Add custom Snackbar.mjs notification utility (replaces snackbarjs) - Replace bootstrap-colorpicker with native HTML color input Testing: - Add Vitest config and adapter for running existing TestRegister tests - Add Playwright config and E2E test replacing Nightwatch - Update CI workflows to use npm scripts and Playwright
205 lines
7.4 KiB
JSON
205 lines
7.4 KiB
JSON
{
|
|
"name": "cyberchef",
|
|
"version": "10.22.1",
|
|
"description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.",
|
|
"author": "n1474335 <n1474335@gmail.com>",
|
|
"homepage": "https://gchq.github.io/CyberChef",
|
|
"copyright": "Crown copyright 2016",
|
|
"license": "Apache-2.0",
|
|
"keywords": [
|
|
"cipher",
|
|
"cypher",
|
|
"encode",
|
|
"decode",
|
|
"encrypt",
|
|
"decrypt",
|
|
"base64",
|
|
"xor",
|
|
"charset",
|
|
"hex",
|
|
"encoding",
|
|
"format",
|
|
"cybersecurity",
|
|
"data manipulation",
|
|
"data analysis"
|
|
],
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "https://github.com/gchq/CyberChef/"
|
|
},
|
|
"main": "src/node/wrapper.js",
|
|
"exports": {
|
|
"import": "./src/node/index.mjs",
|
|
"require": "./src/node/wrapper.js"
|
|
},
|
|
"bugs": "https://github.com/gchq/CyberChef/issues",
|
|
"browserslist": [
|
|
"Chrome >= 80",
|
|
"Firefox >= 78",
|
|
"Safari >= 14",
|
|
"node >= 18"
|
|
],
|
|
"devDependencies": {
|
|
"@babel/eslint-parser": "^7.28.6",
|
|
"@codemirror/commands": "^6.10.3",
|
|
"@codemirror/language": "^6.12.2",
|
|
"@codemirror/search": "^6.6.0",
|
|
"@codemirror/state": "^6.5.4",
|
|
"@codemirror/view": "^6.40.0",
|
|
"archiver": "^7.0.0",
|
|
"autoprefixer": "^10.4.27",
|
|
"base64-loader": "^1.0.0",
|
|
"cli-progress": "^3.12.0",
|
|
"colors": "^1.4.0",
|
|
"concurrently": "^9.0.0",
|
|
"cspell": "^8.19.4",
|
|
"css-loader": "7.1.4",
|
|
"eslint": "^9.39.4",
|
|
"eslint-plugin-jsdoc": "^50.8.0",
|
|
"globals": "^15.15.0",
|
|
"imports-loader": "^5.0.0",
|
|
"@playwright/test": "^1.50.0",
|
|
"postcss": "^8.5.8",
|
|
"postcss-css-variables": "^0.19.0",
|
|
"postcss-import": "^16.1.1",
|
|
"postcss-loader": "^8.2.1",
|
|
"prompt": "^1.3.0",
|
|
"rimraf": "^6.0.0",
|
|
"vitest": "^3.0.0",
|
|
"sitemap": "^8.0.3",
|
|
"terser": "^5.46.1",
|
|
"@rspack/cli": "^1.2.0",
|
|
"@rspack/core": "^1.2.0"
|
|
},
|
|
"dependencies": {
|
|
"@alexaltea/capstone-js": "^3.0.5",
|
|
"@noble/hashes": "^1.7.0",
|
|
"date-fns": "^4.1.0",
|
|
"date-fns-tz": "^3.2.0",
|
|
"@astronautlabs/amf": "^0.0.6",
|
|
"@blu3r4y/lzma": "^2.3.3",
|
|
"@wavesenterprise/crypto-gost-js": "^2.1.0-RC1",
|
|
"@xmldom/xmldom": "^0.8.11",
|
|
"argon2-browser": "^1.18.0",
|
|
"assert": "^2.1.0",
|
|
"avsc": "^5.7.9",
|
|
"bcryptjs": "^2.4.3",
|
|
"bignumber.js": "^9.3.1",
|
|
"@popperjs/core": "^2.11.8",
|
|
"bootstrap": "^5.3.3",
|
|
"browserify-zlib": "^0.2.0",
|
|
"bson": "^4.7.2",
|
|
"buffer": "^6.0.3",
|
|
"cbor": "9.0.2",
|
|
"chi-squared": "^1.1.0",
|
|
"codepage": "^1.15.0",
|
|
"crypto-api": "^0.8.5",
|
|
"crypto-browserify": "^3.12.1",
|
|
"ctph.js": "0.0.5",
|
|
"d3": "7.9.0",
|
|
"d3-hexbin": "^0.2.2",
|
|
"diff": "^5.2.2",
|
|
"dompurify": "^3.3.3",
|
|
"es6-promisify": "^7.0.0",
|
|
"escodegen": "^2.1.0",
|
|
"esprima": "^4.0.1",
|
|
"events": "^3.3.0",
|
|
"exif-parser": "^0.1.12",
|
|
"fernet": "^0.3.3",
|
|
"file-saver": "^2.0.5",
|
|
"flat": "^6.0.1",
|
|
"geodesy": "1.1.3",
|
|
"handlebars": "^4.7.8",
|
|
"hash-wasm": "^4.12.0",
|
|
"highlight.js": "^11.11.1",
|
|
"ieee754": "^1.2.1",
|
|
"jimp": "^1.6.0",
|
|
"jq-web": "^0.5.1",
|
|
"js-sha3": "^0.9.3",
|
|
"jsesc": "^3.1.0",
|
|
"json5": "^2.2.3",
|
|
"jsonata": "^2.1.0",
|
|
"jsonpath-plus": "^10.4.0",
|
|
"jsonwebtoken": "9.0.3",
|
|
"jsqr": "^1.4.0",
|
|
"jsrsasign": "^11.1.1",
|
|
"kbpgp": "^2.1.17",
|
|
"libbzip2-wasm": "0.0.4",
|
|
"libyara-wasm": "^1.2.1",
|
|
"loglevel": "^1.9.2",
|
|
"loglevel-message-prefix": "^3.0.0",
|
|
"lz-string": "^1.5.0",
|
|
"lz4js": "^0.2.0",
|
|
"markdown-it": "^14.1.1",
|
|
"moment": "^2.30.1",
|
|
"moment-timezone": "^0.6.1",
|
|
"ngeohash": "^0.6.3",
|
|
"node-forge": "^1.3.3",
|
|
"node-md6": "^0.1.0",
|
|
"nodom": "^2.4.0",
|
|
"notepack.io": "^3.0.1",
|
|
"ntlm": "^0.1.3",
|
|
"nwmatcher": "^1.4.4",
|
|
"otpauth": "9.3.6",
|
|
"path": "^0.12.7",
|
|
"process": "^0.11.10",
|
|
"protobufjs": "^7.5.4",
|
|
"qr-image": "^3.2.0",
|
|
"reflect-metadata": "^0.2.2",
|
|
"rison": "^0.1.1",
|
|
"scryptsy": "^2.1.0",
|
|
"sortablejs": "^1.15.7",
|
|
"split.js": "^1.6.5",
|
|
"sql-formatter": "^15.6.12",
|
|
"ssdeep.js": "0.0.3",
|
|
"stream-browserify": "^3.0.0",
|
|
"tesseract.js": "^6.0.1",
|
|
"ua-parser-js": "^1.0.41",
|
|
"unorm": "^1.6.0",
|
|
"url": "^0.11.4",
|
|
"utf8": "^3.0.0",
|
|
"uuid": "^13.0.0",
|
|
"vkbeautify": "^0.99.3",
|
|
"xpath": "0.0.34",
|
|
"xregexp": "^5.1.2",
|
|
"zlibjs": "^0.3.1"
|
|
},
|
|
"scripts": {
|
|
"start": "npm run dev",
|
|
"dev": "npm run clean:config && npm run generate:config && concurrently --names config,webpack \"npm run watch:config\" \"npm run dev:server\"",
|
|
"dev:server": "rspack serve --config rspack.dev.config.js",
|
|
"watch:config": "node --watch-path=src/core/operations scripts/watchConfig.mjs",
|
|
|
|
"build": "npm run lint && npm run clean:prod && npm run clean:config && npm run generate:config && rspack build --config rspack.prod.config.js && node scripts/buildStandalone.mjs",
|
|
"build:node": "npm run clean:node && npm run clean:config && npm run clean:nodeConfig && npm run generate:config && npm run generate:nodeIndex",
|
|
"build:ghpages": "node scripts/prepareGhPages.mjs",
|
|
"build:sitemap": "node --no-warnings --no-deprecation src/web/static/sitemap.mjs > build/prod/sitemap.xml",
|
|
|
|
"clean:dev": "rimraf build/dev/*",
|
|
"clean:prod": "rimraf build/prod/*",
|
|
"clean:node": "rimraf build/node/*",
|
|
"clean:config": "rimraf src/core/config/OperationConfig.json src/core/config/modules/* src/core/operations/index.mjs",
|
|
"clean:nodeConfig": "rimraf src/node/index.mjs src/node/config/OperationConfig.json",
|
|
|
|
"generate:config": "echo [] > src/core/config/OperationConfig.json && node --no-warnings --no-deprecation src/core/config/scripts/generateOpsIndex.mjs && node --no-warnings --no-deprecation src/core/config/scripts/generateConfig.mjs",
|
|
"generate:nodeIndex": "node --no-warnings --no-deprecation src/node/config/scripts/generateNodeIndex.mjs",
|
|
|
|
"test": "npm run pretest && npx vitest run",
|
|
"test:legacy": "npm run pretest && node --no-warnings --no-deprecation --openssl-legacy-provider --no-experimental-fetch tests/node/index.mjs && node --no-warnings --no-deprecation --openssl-legacy-provider --no-experimental-fetch --trace-uncaught tests/operations/index.mjs",
|
|
"pretest": "npm run clean:config && npm run clean:nodeConfig && npm run generate:config && npm run generate:nodeIndex",
|
|
"testui": "npx playwright test",
|
|
"testui:headed": "npx playwright test --headed",
|
|
"testnodeconsumer": "node scripts/testNodeConsumers.mjs",
|
|
|
|
"lint": "eslint *.{js,mjs} src/core/**/*.{js,mjs} src/web/**/*.{js,mjs} src/node/**/*.{js,mjs} tests/**/*.{js,mjs} --ignore-pattern src/core/vendor/** --ignore-pattern src/core/operations/legacy/** --ignore-pattern src/web/static/**",
|
|
"lint:grammar": "cspell ./src",
|
|
|
|
"postinstall": "node scripts/postinstall.mjs",
|
|
"newop": "node --no-warnings --no-deprecation src/core/config/scripts/newOperation.mjs",
|
|
"minor": "node --no-warnings --no-deprecation src/core/config/scripts/newMinorVersion.mjs && npm version minor --git-tag-version=false && echo \"Updated to version v$(npm pkg get version | xargs), please create a pull request and once merged use 'npm run tag'\"",
|
|
"tag": "git tag -s \"v$(npm pkg get version | xargs)\" -m \"$(npm pkg get version | xargs)\" && echo \"Created v$(npm pkg get version | xargs), now check and push the tag\"",
|
|
"getheapsize": "node -e 'console.log(`node heap limit = ${require(\"v8\").getHeapStatistics().heap_size_limit / (1024 * 1024)} Mb`)'",
|
|
"setheapsize": "export NODE_OPTIONS=--max_old_space_size=2048"
|
|
}
|
|
}
|