From b3ff2f86d912b1a23cffa403879d2c407faf630c Mon Sep 17 00:00:00 2001 From: Kristjan ESPERANTO <35647502+KristjanESPERANTO@users.noreply.github.com> Date: Sun, 23 Aug 2026 20:29:31 +0200 Subject: [PATCH 1/3] chore: update eslint incl. plugins --- package-lock.json | 116 +++++++++++++++++++++++++++++----------------- package.json | 8 ++-- 2 files changed, 77 insertions(+), 47 deletions(-) diff --git a/package-lock.json b/package-lock.json index bde41d8995..ba395f3a04 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "@fortawesome/fontawesome-free": "^7.3.1", "animate.css": "^4.1.1", "croner": "^10.0.1", - "eslint": "^10.8.0", + "eslint": "^10.9.1", "express": "^5.2.1", "feedme": "^2.0.2", "globals": "^17.8.0", @@ -39,12 +39,12 @@ "@eslint/markdown": "^8.0.3", "@stylistic/eslint-plugin": "^5.10.0", "@vitest/coverage-v8": "^4.1.10", - "@vitest/eslint-plugin": "^1.6.24", + "@vitest/eslint-plugin": "^1.6.27", "@vitest/ui": "^4.1.10", "cspell": "^10.0.1", "eslint-plugin-import-x": "^4.17.1", - "eslint-plugin-jsdoc": "^63.3.2", - "eslint-plugin-package-json": "^1.6.2", + "eslint-plugin-jsdoc": "^64.2.1", + "eslint-plugin-package-json": "^1.7.1", "eslint-plugin-playwright": "^2.11.0", "express-basic-auth": "^1.2.1", "husky": "^9.1.7", @@ -1034,20 +1034,34 @@ } }, "node_modules/@es-joy/jsdoccomment": { - "version": "0.91.0", - "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.91.0.tgz", - "integrity": "sha512-vgqlMGNNhZxwDYbUNIHj3Hskb4R28iqdXx90ufHyt/NeuTQkeqjTDslAs9I0/GCAfbxP5BpH5WsL1R1fht5Lxg==", + "version": "0.95.1", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.95.1.tgz", + "integrity": "sha512-LO/RI08Fo9bhXwB7Od9G+1j3eSNq63+ZS5CQO8YLXHbDg6kx6S/DhTeY0+Fc9uZrjK1zZSyTx8Sg5gv5DIoCnA==", "dev": true, "license": "MIT", "dependencies": { "@types/estree": "^1.0.9", - "@typescript-eslint/types": "^8.65.0", - "comment-parser": "1.4.7", + "@typescript-eslint/types": "^8.67.0", + "comment-parser": "1.4.8", "esquery": "^1.7.0", - "jsdoc-type-pratt-parser": "~8.0.0" + "jsdoc-type-pratt-parser": "~9.1.2" }, "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" + "node": "^22.22.2 || >=24.15.0" + } + }, + "node_modules/@es-joy/jsdoccomment/node_modules/@typescript-eslint/types": { + "version": "8.67.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.67.0.tgz", + "integrity": "sha512-sBtgslww8nsMYUjhdPBiSyUqSzT8uR6g93A2QXnQC8+cGdjz0CyaOdqHDRJb1AtORbZCNUJBBeFA/tNR2uQmww==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, "node_modules/@es-joy/resolve.exports": { @@ -2592,9 +2606,9 @@ } }, "node_modules/@vitest/eslint-plugin": { - "version": "1.6.24", - "resolved": "https://registry.npmjs.org/@vitest/eslint-plugin/-/eslint-plugin-1.6.24.tgz", - "integrity": "sha512-U5isuChJ58H1M6oRGaIotYbH2gM1rhzKUjtiarqpLNG/3+fzXIXs5RyTLrYQJmQPnXbvIMPFvI9z8ufpFZc8lg==", + "version": "1.6.27", + "resolved": "https://registry.npmjs.org/@vitest/eslint-plugin/-/eslint-plugin-1.6.27.tgz", + "integrity": "sha512-X1RCAfwbatG4GFbJ/1PIHP9MSZMt0JJThqbYID+vS4L783k6QGlLPe421wQE8dHXuGCcenVLsydiM4qzsYWxhg==", "dev": true, "license": "MIT", "dependencies": { @@ -2849,13 +2863,13 @@ } }, "node_modules/are-docs-informative": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", - "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.1.1.tgz", + "integrity": "sha512-sqRsNQBwbKLRX0jV5Cu5uzmtflf892n4Vukz7T659ebL4pz3mpOqCMU7lxMoBTFwnp10E3YB5ZcyHM41W5bcDA==", "dev": true, "license": "MIT", "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/array-timsort": { @@ -3170,9 +3184,9 @@ } }, "node_modules/comment-parser": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.7.tgz", - "integrity": "sha512-0h+uSNtQGW3D98eQt3jJ8L06Fves8hncB4V/PKdw/Qb8Hnk19VaKuTr55UNRYiSoVa7WwrFls+rh3ux9agmkeQ==", + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.8.tgz", + "integrity": "sha512-rKZTGo4fzKYna8UcL0isTg5wkBNla7bxTypLwZQXjIdi++IdP1OJ41rI5Mti3/jltkPujbu4i9LIARYA+zpotQ==", "dev": true, "license": "MIT", "engines": { @@ -3909,9 +3923,9 @@ } }, "node_modules/eslint": { - "version": "10.8.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.8.0.tgz", - "integrity": "sha512-nuKKvN+oIBO0koN7Tm7dlkmnkc21mtt0QJLwAKzjLq14y6lRTdVG36MZHJ8eQHwdJMwZbQNMlPOYedMq/oVJvQ==", + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.9.1.tgz", + "integrity": "sha512-9VaAkDURekixUQJy0oJYl2DcN6oKMfxay7XzaGYAWQwsb6qfKf+x76R2k1L8kb1boc+FyCAaTA9GmiKaaiaF+A==", "license": "MIT", "workspaces": [ "packages/*" @@ -4070,18 +4084,18 @@ } }, "node_modules/eslint-plugin-jsdoc": { - "version": "63.3.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-63.3.2.tgz", - "integrity": "sha512-5B3oO23iqbNJC/ru7uqIY80wmY66De1Q0+5kXQGHuLrGze/rL0Zw/YktMcqgYQ+kdHmgvY1q5TpRgl3yZMLmhQ==", + "version": "64.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-64.2.1.tgz", + "integrity": "sha512-6GpSYxLPcbMw38S94Cngrgs1Zv8yLinQS1O17OxJVZ6deLbrMRCERUYQKceweSqEuG2kx5Amn4l3aKPkCp4geQ==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "@es-joy/jsdoccomment": "~0.91.0", + "@es-joy/jsdoccomment": "~0.95.1", "@es-joy/resolve.exports": "1.2.0", - "are-docs-informative": "^0.0.2", - "comment-parser": "1.4.7", + "are-docs-informative": "^0.1.1", + "comment-parser": "1.4.8", "debug": "^4.4.3", - "escape-string-regexp": "^4.0.0", + "escape-string-regexp": "^5.0.0", "espree": "^11.2.0", "esquery": "^1.7.0", "html-entities": "^2.6.0", @@ -4092,12 +4106,25 @@ "to-valid-identifier": "^1.0.0" }, "engines": { - "node": "^22.13.0 || >=24" + "node": "^22.22.2 || >=24.15.0" }, "peerDependencies": { "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0" } }, + "node_modules/eslint-plugin-jsdoc/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/eslint-plugin-jsdoc/node_modules/eslint-visitor-keys": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", @@ -4130,9 +4157,9 @@ } }, "node_modules/eslint-plugin-package-json": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-package-json/-/eslint-plugin-package-json-1.6.2.tgz", - "integrity": "sha512-Zp0CdqXKQqB9luUYa/TOwnGq3VlLotx1UDflZOzEt3D5A5kxu3Lj1VFJ087jKudEhc+K3kF20XV/aKZAlDuslw==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-package-json/-/eslint-plugin-package-json-1.7.1.tgz", + "integrity": "sha512-nlIlX7thB20+uExdYL0QGAmyjHXI+AgIAWpwTs45be4XkJFaOGjSrShxw42b51aUHWGtNrA+eLSkeA1RYm+ugA==", "dev": true, "license": "MIT", "dependencies": { @@ -4144,7 +4171,7 @@ "eslint-fix-utils": "~0.4.3", "eslint-json-compat-utils": "^0.2.3", "jsonc-eslint-parser": "^3.1.0", - "package-json-validator": "^1.5.0", + "package-json-validator": "^1.6.0", "semver": "^7.7.3", "sort-object-keys": "^2.0.0", "sort-package-json": "^4.0.0" @@ -5188,13 +5215,16 @@ "license": "MIT" }, "node_modules/jsdoc-type-pratt-parser": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-8.0.0.tgz", - "integrity": "sha512-uQu/fXVqVaMg6gM8/E5G5+eygVcZ1NV0Z51CvqhNa2bDWxvHMl484ETr6vph4oPyC+KUcbP/w2W2pewfCiR9aQ==", + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-9.1.2.tgz", + "integrity": "sha512-9EXymowgk1mb9RY1VxuwKc+AhaxfBk2CV0dWxgGM+l5RURTtiUoAx7MlKwcsiVcEXK5HEPa7FeH/tsRpqjEPRg==", "dev": true, "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.9" + }, "engines": { - "node": ">=20.0.0" + "node": "^22.22.2 || >=24.15.0" } }, "node_modules/jsdom": { @@ -7038,9 +7068,9 @@ } }, "node_modules/package-json-validator": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/package-json-validator/-/package-json-validator-1.5.2.tgz", - "integrity": "sha512-eHXskJQU4aCiSfjhRfTVtCJ+22/EzLHgYgZv5Gj3teb3NJrnTMzq5BnKAWKvR+PLpknCO1PmOCImDuO+dX4Vaw==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/package-json-validator/-/package-json-validator-1.6.1.tgz", + "integrity": "sha512-eyl3DGFoxdUO0RA1Ym+H11S6P2XWIlA6Sy2PbvslbwFJ14kkz+FgX1Br3MaebrvLY3Q10Iih3PsL3741vsevrA==", "dev": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index aee8e1278f..ca43aa4932 100755 --- a/package.json +++ b/package.json @@ -86,7 +86,7 @@ "@fortawesome/fontawesome-free": "^7.3.1", "animate.css": "^4.1.1", "croner": "^10.0.1", - "eslint": "^10.8.0", + "eslint": "^10.9.1", "express": "^5.2.1", "feedme": "^2.0.2", "globals": "^17.8.0", @@ -111,12 +111,12 @@ "@eslint/markdown": "^8.0.3", "@stylistic/eslint-plugin": "^5.10.0", "@vitest/coverage-v8": "^4.1.10", - "@vitest/eslint-plugin": "^1.6.24", + "@vitest/eslint-plugin": "^1.6.27", "@vitest/ui": "^4.1.10", "cspell": "^10.0.1", "eslint-plugin-import-x": "^4.17.1", - "eslint-plugin-jsdoc": "^63.3.2", - "eslint-plugin-package-json": "^1.6.2", + "eslint-plugin-jsdoc": "^64.2.1", + "eslint-plugin-package-json": "^1.7.1", "eslint-plugin-playwright": "^2.11.0", "express-basic-auth": "^1.2.1", "husky": "^9.1.7", From 128a8b1114a2d23b34e7f42af34097c28b767c65 Mon Sep 17 00:00:00 2001 From: Kristjan ESPERANTO <35647502+KristjanESPERANTO@users.noreply.github.com> Date: Sun, 23 Aug 2026 20:36:58 +0200 Subject: [PATCH 2/3] chore(eslint): switch to named import for jsdoc plugin --- eslint.config.mjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index fd6a9e672f..461c893687 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -3,7 +3,7 @@ import css from "@eslint/css"; import globals from "globals"; import {flatConfigs as importX} from "eslint-plugin-import-x"; import js from "@eslint/js"; -import jsdocPlugin from "eslint-plugin-jsdoc"; +import {configs as jsdocConfigs} from "eslint-plugin-jsdoc"; import markdown from "@eslint/markdown"; import {configs as packageJsonConfigs} from "eslint-plugin-package-json"; import playwright from "eslint-plugin-playwright"; @@ -44,7 +44,7 @@ export default defineConfig([ moment: "readonly" } }, - extends: [importX.recommended, js.configs.recommended, jsdocPlugin.configs["flat/recommended"], stylistic.configs.all], + extends: [importX.recommended, js.configs.recommended, jsdocConfigs["flat/recommended"], stylistic.configs.all], rules: { "@stylistic/array-element-newline": ["error", "consistent"], "@stylistic/arrow-parens": ["error", "always"], From a2a044eb879fa105e6f76888083cce6d1345dcf3 Mon Sep 17 00:00:00 2001 From: Kristjan ESPERANTO <35647502+KristjanESPERANTO@users.noreply.github.com> Date: Sun, 23 Aug 2026 20:45:26 +0200 Subject: [PATCH 3/3] chore(eslint): remove dead rule overrides from js block --- eslint.config.mjs | 25 +------------------------ 1 file changed, 1 insertion(+), 24 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index 461c893687..9ac7b9dc77 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -71,31 +71,20 @@ export default defineConfig([ "@stylistic/spaced-comment": "off", "dot-notation": "error", eqeqeq: ["error", "always", {null: "ignore"}], - "id-length": "off", "import-x/extensions": "error", "import-x/newline-after-import": "error", "import-x/order": "error", - "init-declarations": "off", "max-lines-per-function": ["warn", 400], - "max-statements": "off", "no-global-assign": "off", - "no-inline-comments": "off", - "no-magic-numbers": "off", "no-param-reassign": "error", - "no-plusplus": "off", "no-prototype-builtins": "off", - "no-ternary": "off", "no-throw-literal": "error", - "no-undefined": "off", "no-unneeded-ternary": "error", "no-useless-return": "error", - "no-warning-comments": "off", "object-shorthand": ["error", "methods"], - "one-var": "off", "prefer-const": "error", "prefer-template": "error", - "require-await": "error", - "sort-keys": "off" + "require-await": "error" } }, { @@ -137,13 +126,8 @@ export default defineConfig([ rules: { "@stylistic/array-element-newline": "off", "@stylistic/indent": ["error", "tab"], - "@stylistic/object-property-newline": ["error", {allowAllPropertiesOnSameLine: true}], - "@stylistic/padded-blocks": ["error", "never"], "@stylistic/quote-props": ["error", "as-needed"], - "import-x/no-unresolved": ["error", {ignore: ["eslint/config"]}], - "max-lines-per-function": ["error", 100], "no-magic-numbers": "off", - "one-var": ["error", "never"], "sort-keys": "off" } }, @@ -182,16 +166,9 @@ export default defineConfig([ rules: { "import-x/namespace": "off", "import-x/named": "off", - "import-x/default": "off", "import-x/extensions": "off" } }, - { - files: ["tests/configs/modules/weather/*.js"], - rules: { - "@stylistic/quotes": "off" - } - }, { files: ["tests/e2e/**/*.js"], extends: [playwright.configs["flat/recommended"]],