From fc9418fbeb20a35fd8e9919d564dde60fb724210 Mon Sep 17 00:00:00 2001 From: Leon Zandman Date: Sat, 28 Feb 2026 23:49:56 +0100 Subject: [PATCH] Upgrade Node.js from 22 to 24 across all configs and CI. Remove stale --experimental-* flags and redundant node version reset step in releases workflow. --- .devcontainer/devcontainer.json | 2 +- .github/workflows/master.yml | 2 +- .github/workflows/pull_requests.yml | 2 +- .github/workflows/releases.yml | 10 ++-------- .nvmrc | 2 +- Dockerfile | 2 +- Gruntfile.js | 2 +- README.md | 2 +- package-lock.json | 2 +- package.json | 12 ++++++------ 10 files changed, 16 insertions(+), 22 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 9b493bb6..ec100acb 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -3,7 +3,7 @@ { "name": "CyberChef", // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile - "image": "mcr.microsoft.com/devcontainers/javascript-node:22-trixie", + "image": "mcr.microsoft.com/devcontainers/javascript-node:24-trixie", // Features to add to the dev container. More info: https://containers.dev/features. "features": { diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index 06b8e3d4..7236920e 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -21,7 +21,7 @@ jobs: - name: Set node version uses: actions/setup-node@v6 with: - node-version: 22 + node-version: 24 registry-url: "https://registry.npmjs.org" - name: Install diff --git a/.github/workflows/pull_requests.yml b/.github/workflows/pull_requests.yml index 83e5d136..66b084dd 100644 --- a/.github/workflows/pull_requests.yml +++ b/.github/workflows/pull_requests.yml @@ -17,7 +17,7 @@ jobs: - name: Set node version uses: actions/setup-node@v6 with: - node-version: 22 + node-version: 24 registry-url: "https://registry.npmjs.org" - name: Install diff --git a/.github/workflows/releases.yml b/.github/workflows/releases.yml index 5da36439..81b3d64a 100644 --- a/.github/workflows/releases.yml +++ b/.github/workflows/releases.yml @@ -27,7 +27,7 @@ jobs: - name: Set node version uses: actions/setup-node@v6 with: - node-version: 22 + node-version: 24 registry-url: "https://registry.npmjs.org" - name: Install @@ -106,7 +106,7 @@ jobs: - name: Set node version uses: actions/setup-node@v6 with: - node-version: 22 + node-version: 24 registry-url: "https://registry.npmjs.org" - name: Install @@ -115,11 +115,5 @@ jobs: - name: Create machine generated files run: npm run node - - name: Reset node version ready for publish - uses: actions/setup-node@v6 - with: - node-version: ^24.5 - registry-url: "https://registry.npmjs.org" - - name: Publish to NPM run: npm publish diff --git a/.nvmrc b/.nvmrc index 2bd5a0a9..a45fd52c 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -22 +24 diff --git a/Dockerfile b/Dockerfile index cfd7a74e..750acc72 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,7 +4,7 @@ # Modifier --platform=$BUILDPLATFORM limits the platform to "BUILDPLATFORM" during buildx multi-platform builds # This is because npm "chromedriver" package is not compatiable with all platforms # For more info see: https://docs.docker.com/build/building/multi-platform/#cross-compilation -FROM --platform=$BUILDPLATFORM node:22-alpine AS builder +FROM --platform=$BUILDPLATFORM node:24-alpine AS builder WORKDIR /app diff --git a/Gruntfile.js b/Gruntfile.js index b04f3048..6f87b2a6 100755 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -6,7 +6,7 @@ const BundleAnalyzerPlugin = require("webpack-bundle-analyzer").BundleAnalyzerPl const glob = require("glob"); const path = require("path"); -const nodeFlags = "--experimental-modules --experimental-json-modules --experimental-specifier-resolution=node --no-warnings --no-deprecation"; +const nodeFlags = "--no-warnings --no-deprecation"; /** * Grunt configuration for building the app in various formats. diff --git a/README.md b/README.md index c1c90f2e..6da7d3ec 100755 --- a/README.md +++ b/README.md @@ -120,7 +120,7 @@ CyberChef is built to support ## Node.js support -CyberChef is built to fully support Node.js `v22`. For more information, see the ["Node API" wiki page](https://github.com/gchq/CyberChef/wiki/Node-API) +CyberChef is built to fully support Node.js `v24`. For more information, see the ["Node API" wiki page](https://github.com/gchq/CyberChef/wiki/Node-API) ## Contributing diff --git a/package-lock.json b/package-lock.json index f6d9f3c1..bf76d9d7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -162,7 +162,7 @@ "worker-loader": "^3.0.8" }, "engines": { - "node": ">=22 <23" + "node": ">=24 <25" } }, "node_modules/@alexaltea/capstone-js": { diff --git a/package.json b/package.json index 036a20ed..268c13cf 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "browserslist": [ "Chrome >= 50", "Firefox >= 38", - "node >= 22" + "node >= 24" ], "devDependencies": { "@babel/eslint-parser": "^7.28.6", @@ -194,21 +194,21 @@ "start": "npx grunt dev", "build": "npx grunt prod", "node": "npx grunt node", - "repl": "node --experimental-modules --experimental-json-modules --experimental-specifier-resolution=node --no-experimental-fetch --no-warnings src/node/repl.mjs", - "test": "npx grunt configTests && node --experimental-modules --experimental-json-modules --no-warnings --no-deprecation --openssl-legacy-provider --no-experimental-fetch tests/node/index.mjs && node --experimental-modules --experimental-json-modules --no-warnings --no-deprecation --openssl-legacy-provider --no-experimental-fetch --trace-uncaught tests/operations/index.mjs", + "repl": "node --no-warnings src/node/repl.mjs", + "test": "npx grunt configTests && node --no-warnings --no-deprecation --openssl-legacy-provider tests/node/index.mjs && node --no-warnings --no-deprecation --openssl-legacy-provider --trace-uncaught tests/operations/index.mjs", "testnodeconsumer": "npx grunt testnodeconsumer", "testui": "npx grunt testui", "testuidev": "npx nightwatch --env=dev", "lint": "npx grunt lint", "lint:grammar": "cspell ./src", "postinstall": "npx grunt exec:fixCryptoApiImports && npx grunt exec:fixSnackbarMarkup", - "newop": "node --experimental-modules --experimental-json-modules src/core/config/scripts/newOperation.mjs", - "minor": "node --experimental-modules --experimental-json-modules 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'\"", + "newop": "node src/core/config/scripts/newOperation.mjs", + "minor": "node 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" }, "engines": { - "node": ">=22 <23" + "node": ">=24 <25" } }