From def32a44fcc7fe4951ff7703760bbf47b3af495e Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 12 Sep 2026 19:32:49 +0100 Subject: [PATCH] chore(deps): declare eslint config deps, eslint-plugin-n 18 eslint.config.js imports @eslint/js and globals but neither was declared; both resolved transitively through eslint. Declaring them fixes a latent break and is a prerequisite for ESLint 10, which stops providing them. ESLint 10 itself is not taken. eslint-plugin-react 7.37.5 is the latest release and peers at eslint "^3 || ... || ^9.7", and under 10 every rule load throws "contextOrFilename.getFilename is not a function" because ESLint 10 removed context.getFilename(). The frontend stays on eslint 9 until that ships; note npm already marks 9.x as no longer supported. eslint-plugin-n goes to 18, though the flat config does not reference it (nor eslint-plugin-import, eslint-plugin-promise or eslint-config-prettier -- all four are unused devDependencies). Lint output unchanged from baseline. --- frontend/package-lock.json | 69 +++++++++++++++++++------------------- frontend/package.json | 4 ++- 2 files changed, 38 insertions(+), 35 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 43fa7e25..41bb0bf8 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -47,6 +47,7 @@ "tailwind-merge": "^3.6.0" }, "devDependencies": { + "@eslint/js": "^9.39.5", "@tailwindcss/postcss": "^4.3.3", "@types/d3-force": "^3.0.10", "@types/lodash": "^4.17.25", @@ -59,11 +60,12 @@ "eslint": "^9.39.5", "eslint-config-prettier": "^10.1.8", "eslint-plugin-import": "^2.32.0", - "eslint-plugin-n": "^17.24.0", + "eslint-plugin-n": "^18.3.0", "eslint-plugin-prettier": "^5.5.6", "eslint-plugin-promise": "^7.3.0", "eslint-plugin-react": "^7.37.5", "eslint-plugin-unused-imports": "^4.4.1", + "globals": "^17.12.0", "happy-dom": "^20.14.5", "husky": "^9.1.7", "lint-staged": "^17.5.1", @@ -583,6 +585,19 @@ "concat-map": "0.0.1" } }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@eslint/eslintrc/node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -6233,9 +6248,9 @@ } }, "node_modules/eslint-plugin-n": { - "version": "17.24.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.24.0.tgz", - "integrity": "sha512-/gC7/KAYmfNnPNOb3eu8vw+TdVnV0zhdQwexsw6FLXbhzroVj20vRn2qL8lDWDGnAQ2J8DhdfvXxX9EoxvERvw==", + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-18.3.0.tgz", + "integrity": "sha512-cPVguuDe6DrIPb/qUXHf8P89MaVTUmiYWwpt5gX5AILsvRIiZAxMFXcFR6QHYBksqKJpjfUBlL/RleCJUWcD7w==", "dev": true, "license": "MIT", "dependencies": { @@ -6246,17 +6261,26 @@ "globals": "^15.11.0", "globrex": "^0.1.2", "ignore": "^5.3.2", - "semver": "^7.6.3", - "ts-declaration-location": "^1.0.6" + "semver": "^7.6.3" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { "url": "https://opencollective.com/eslint" }, "peerDependencies": { - "eslint": ">=8.23.0" + "eslint": ">=8.57.1", + "ts-declaration-location": "^1.0.6", + "typescript": ">=5.0.0" + }, + "peerDependenciesMeta": { + "ts-declaration-location": { + "optional": true + }, + "typescript": { + "optional": true + } } }, "node_modules/eslint-plugin-n/node_modules/globals": { @@ -6971,9 +6995,9 @@ } }, "node_modules/globals": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "version": "17.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-17.12.0.tgz", + "integrity": "sha512-cezEd/DTyyht9cvSSURyygXPfy04GtWO/5e6ZPvH7fCtjKz9PYOmuawphw1Ctd1f6C+5JypXfGD7ahNMXvevBA==", "dev": true, "license": "MIT", "engines": { @@ -11589,29 +11613,6 @@ "typescript": ">=4.8.4" } }, - "node_modules/ts-declaration-location": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/ts-declaration-location/-/ts-declaration-location-1.0.7.tgz", - "integrity": "sha512-EDyGAwH1gO0Ausm9gV6T2nUvBgXT5kGoCMJPllOaooZ+4VvJiKBdZE7wK18N1deEowhcUptS+5GXZK8U/fvpwA==", - "dev": true, - "funding": [ - { - "type": "ko-fi", - "url": "https://ko-fi.com/rebeccastevens" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/ts-declaration-location" - } - ], - "license": "BSD-3-Clause", - "dependencies": { - "picomatch": "^4.0.2" - }, - "peerDependencies": { - "typescript": ">=4.0.0" - } - }, "node_modules/ts-dedent": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.3.0.tgz", diff --git a/frontend/package.json b/frontend/package.json index bc4a2f8e..94a74649 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -63,6 +63,7 @@ "tailwind-merge": "^3.6.0" }, "devDependencies": { + "@eslint/js": "^9.39.5", "@tailwindcss/postcss": "^4.3.3", "@types/d3-force": "^3.0.10", "@types/lodash": "^4.17.25", @@ -75,11 +76,12 @@ "eslint": "^9.39.5", "eslint-config-prettier": "^10.1.8", "eslint-plugin-import": "^2.32.0", - "eslint-plugin-n": "^17.24.0", + "eslint-plugin-n": "^18.3.0", "eslint-plugin-prettier": "^5.5.6", "eslint-plugin-promise": "^7.3.0", "eslint-plugin-react": "^7.37.5", "eslint-plugin-unused-imports": "^4.4.1", + "globals": "^17.12.0", "happy-dom": "^20.14.5", "husky": "^9.1.7", "lint-staged": "^17.5.1",