From 70a74edaada2ca2f1f0e37ff5000883f594c6265 Mon Sep 17 00:00:00 2001 From: Josh Cummings <3627351+jzheaux@users.noreply.github.com> Date: Wed, 9 Sep 2026 19:37:22 -0600 Subject: [PATCH] Update to Node 24 Closes gh-19689 Signed-off-by: Josh Cummings <3627351+jzheaux@users.noreply.github.com> --- javascript/package-lock.json | 2 +- javascript/package.json | 2 +- javascript/spring-security-javascript.gradle | 2 +- javascript/test/bootstrap.js | 4 ++++ 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/javascript/package-lock.json b/javascript/package-lock.json index 130f85c426..af2fe9e32f 100644 --- a/javascript/package-lock.json +++ b/javascript/package-lock.json @@ -23,7 +23,7 @@ "sinon": "^18.0.0" }, "engines": { - "node": ">=20.0.0" + "node": ">=24.0.0" } }, "node_modules/@esbuild/aix-ppc64": { diff --git a/javascript/package.json b/javascript/package.json index ee7893e273..6711fbecaa 100644 --- a/javascript/package.json +++ b/javascript/package.json @@ -13,7 +13,7 @@ "url": "https://github.com/spring-projects/spring-security/issues" }, "engines": { - "node": ">=20.0.0" + "node": ">=24.0.0" }, "scripts": { "test": "mocha", diff --git a/javascript/spring-security-javascript.gradle b/javascript/spring-security-javascript.gradle index 29acc8dda0..85044c03c0 100644 --- a/javascript/spring-security-javascript.gradle +++ b/javascript/spring-security-javascript.gradle @@ -23,7 +23,7 @@ plugins { node { download = true - version = '20.17.0' + version = '24.21.0' } tasks.named('check') { diff --git a/javascript/test/bootstrap.js b/javascript/test/bootstrap.js index 07c49b99d6..cadd66d79c 100644 --- a/javascript/test/bootstrap.js +++ b/javascript/test/bootstrap.js @@ -20,3 +20,7 @@ import chai from "chai"; // By default, chai truncates at 40 characters, making it difficult to // compare e.g. error messages chai.config.truncateThreshold = 0; + +// Node defines `navigator` as a getter-only global, which the tests replace with +// a stub. Redefine it as a writable property so that assignment works. +Object.defineProperty(globalThis, "navigator", { value: undefined, writable: true, configurable: true });