From 3e45c0a05802f07eb70c5e7d210568db4ae1b21f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 15 May 2026 17:20:00 +0000 Subject: [PATCH 1/7] chore(deps): update dependency eslint to v10 --- Dockerfile | 2 +- flavors/cupcake/Dockerfile | 2 +- flavors/dotnetweb/Dockerfile | 2 +- flavors/javascript/Dockerfile | 2 +- linters/javascript_es/Dockerfile | 2 +- linters/json_eslint_plugin_jsonc/Dockerfile | 2 +- linters/jsx_eslint/Dockerfile | 2 +- linters/tsx_eslint/Dockerfile | 2 +- linters/typescript_es/Dockerfile | 2 +- megalinter/descriptors/javascript.megalinter-descriptor.yml | 2 +- megalinter/descriptors/json.megalinter-descriptor.yml | 2 +- megalinter/descriptors/jsx.megalinter-descriptor.yml | 2 +- megalinter/descriptors/tsx.megalinter-descriptor.yml | 2 +- megalinter/descriptors/typescript.megalinter-descriptor.yml | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/Dockerfile b/Dockerfile index 5ad90a07cc2..7a57a9e1e4a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -241,7 +241,7 @@ ARG JAVA_CHECKSTYLE_VERSION=12.1.0 ARG PMD_VERSION=7.24.0 # renovate: datasource=npm depName=eslint -ARG NPM_ESLINT_VERSION=9.39.4 +ARG NPM_ESLINT_VERSION=10.3.0 # renovate: datasource=npm depName=@eslint/eslintrc ARG NPM_ESLINT_ESLINTRC_VERSION=3.3.5 # renovate: datasource=npm depName=eslint-config-airbnb-extended diff --git a/flavors/cupcake/Dockerfile b/flavors/cupcake/Dockerfile index d173fd56721..0d0e197abee 100644 --- a/flavors/cupcake/Dockerfile +++ b/flavors/cupcake/Dockerfile @@ -180,7 +180,7 @@ ARG JAVA_CHECKSTYLE_VERSION=12.1.0 ARG PMD_VERSION=7.24.0 # renovate: datasource=npm depName=eslint -ARG NPM_ESLINT_VERSION=9.39.4 +ARG NPM_ESLINT_VERSION=10.3.0 # renovate: datasource=npm depName=@eslint/eslintrc ARG NPM_ESLINT_ESLINTRC_VERSION=3.3.5 # renovate: datasource=npm depName=eslint-config-airbnb-extended diff --git a/flavors/dotnetweb/Dockerfile b/flavors/dotnetweb/Dockerfile index bebeb9b4eec..c5650964d78 100644 --- a/flavors/dotnetweb/Dockerfile +++ b/flavors/dotnetweb/Dockerfile @@ -170,7 +170,7 @@ ARG PIP_DJLINT_VERSION=1.36.4 # renovate: datasource=npm depName=htmlhint ARG NPM_HTMLHINT_VERSION=1.9.2 # renovate: datasource=npm depName=eslint -ARG NPM_ESLINT_VERSION=9.39.4 +ARG NPM_ESLINT_VERSION=10.3.0 # renovate: datasource=npm depName=@eslint/eslintrc ARG NPM_ESLINT_ESLINTRC_VERSION=3.3.5 # renovate: datasource=npm depName=eslint-config-airbnb-extended diff --git a/flavors/javascript/Dockerfile b/flavors/javascript/Dockerfile index de10abc4e51..ba23d09cae2 100644 --- a/flavors/javascript/Dockerfile +++ b/flavors/javascript/Dockerfile @@ -151,7 +151,7 @@ ARG PIP_DJLINT_VERSION=1.36.4 # renovate: datasource=npm depName=htmlhint ARG NPM_HTMLHINT_VERSION=1.9.2 # renovate: datasource=npm depName=eslint -ARG NPM_ESLINT_VERSION=9.39.4 +ARG NPM_ESLINT_VERSION=10.3.0 # renovate: datasource=npm depName=@eslint/eslintrc ARG NPM_ESLINT_ESLINTRC_VERSION=3.3.5 # renovate: datasource=npm depName=eslint-config-airbnb-extended diff --git a/linters/javascript_es/Dockerfile b/linters/javascript_es/Dockerfile index 63d9ce62655..3c4633f8c91 100644 --- a/linters/javascript_es/Dockerfile +++ b/linters/javascript_es/Dockerfile @@ -55,7 +55,7 @@ RUN python -m pip install --no-cache-dir "wheel>=0.46.2" "setuptools>=75.8.0" \ ARG TARGETPLATFORM ARG TARGETARCH # renovate: datasource=npm depName=eslint -ARG NPM_ESLINT_VERSION=9.39.4 +ARG NPM_ESLINT_VERSION=10.3.0 # renovate: datasource=npm depName=@eslint/eslintrc ARG NPM_ESLINT_ESLINTRC_VERSION=3.3.5 # renovate: datasource=npm depName=eslint-config-airbnb-extended diff --git a/linters/json_eslint_plugin_jsonc/Dockerfile b/linters/json_eslint_plugin_jsonc/Dockerfile index bdc403f6bb1..454f59ccb1c 100644 --- a/linters/json_eslint_plugin_jsonc/Dockerfile +++ b/linters/json_eslint_plugin_jsonc/Dockerfile @@ -55,7 +55,7 @@ RUN python -m pip install --no-cache-dir "wheel>=0.46.2" "setuptools>=75.8.0" \ ARG TARGETPLATFORM ARG TARGETARCH # renovate: datasource=npm depName=eslint -ARG NPM_ESLINT_VERSION=9.39.4 +ARG NPM_ESLINT_VERSION=10.3.0 # renovate: datasource=npm depName=@eslint/eslintrc ARG NPM_ESLINT_ESLINTRC_VERSION=3.3.5 # renovate: datasource=npm depName=eslint-plugin-jsonc diff --git a/linters/jsx_eslint/Dockerfile b/linters/jsx_eslint/Dockerfile index 9af82d311f0..0daae152407 100644 --- a/linters/jsx_eslint/Dockerfile +++ b/linters/jsx_eslint/Dockerfile @@ -55,7 +55,7 @@ RUN python -m pip install --no-cache-dir "wheel>=0.46.2" "setuptools>=75.8.0" \ ARG TARGETPLATFORM ARG TARGETARCH # renovate: datasource=npm depName=eslint -ARG NPM_ESLINT_VERSION=9.39.4 +ARG NPM_ESLINT_VERSION=10.3.0 # renovate: datasource=npm depName=@eslint/eslintrc ARG NPM_ESLINT_ESLINTRC_VERSION=3.3.5 # renovate: datasource=npm depName=eslint-plugin-react diff --git a/linters/tsx_eslint/Dockerfile b/linters/tsx_eslint/Dockerfile index 065699efe58..a22859ed921 100644 --- a/linters/tsx_eslint/Dockerfile +++ b/linters/tsx_eslint/Dockerfile @@ -57,7 +57,7 @@ ARG TARGETARCH # renovate: datasource=npm depName=typescript ARG NPM_TYPESCRIPT_VERSION=6.0.3 # renovate: datasource=npm depName=eslint -ARG NPM_ESLINT_VERSION=9.39.4 +ARG NPM_ESLINT_VERSION=10.3.0 # renovate: datasource=npm depName=@eslint/eslintrc ARG NPM_ESLINT_ESLINTRC_VERSION=3.3.5 # renovate: datasource=npm depName=eslint-config-airbnb-extended diff --git a/linters/typescript_es/Dockerfile b/linters/typescript_es/Dockerfile index a194ca2abe1..92e04ea35de 100644 --- a/linters/typescript_es/Dockerfile +++ b/linters/typescript_es/Dockerfile @@ -57,7 +57,7 @@ ARG TARGETARCH # renovate: datasource=npm depName=typescript ARG NPM_TYPESCRIPT_VERSION=6.0.3 # renovate: datasource=npm depName=eslint -ARG NPM_ESLINT_VERSION=9.39.4 +ARG NPM_ESLINT_VERSION=10.3.0 # renovate: datasource=npm depName=@eslint/eslintrc ARG NPM_ESLINT_ESLINTRC_VERSION=3.3.5 # renovate: datasource=npm depName=eslint-config-airbnb-extended diff --git a/megalinter/descriptors/javascript.megalinter-descriptor.yml b/megalinter/descriptors/javascript.megalinter-descriptor.yml index 3a76d59da47..86d68bc96fa 100644 --- a/megalinter/descriptors/javascript.megalinter-descriptor.yml +++ b/megalinter/descriptors/javascript.megalinter-descriptor.yml @@ -87,7 +87,7 @@ linters: dockerfile: - |- # renovate: datasource=npm depName=eslint - ARG NPM_ESLINT_VERSION=9.39.4 + ARG NPM_ESLINT_VERSION=10.3.0 - |- # renovate: datasource=npm depName=@eslint/eslintrc ARG NPM_ESLINT_ESLINTRC_VERSION=3.3.5 diff --git a/megalinter/descriptors/json.megalinter-descriptor.yml b/megalinter/descriptors/json.megalinter-descriptor.yml index 127c501e3b4..6824047139a 100644 --- a/megalinter/descriptors/json.megalinter-descriptor.yml +++ b/megalinter/descriptors/json.megalinter-descriptor.yml @@ -149,7 +149,7 @@ linters: dockerfile: - |- # renovate: datasource=npm depName=eslint - ARG NPM_ESLINT_VERSION=9.39.4 + ARG NPM_ESLINT_VERSION=10.3.0 - |- # renovate: datasource=npm depName=@eslint/eslintrc ARG NPM_ESLINT_ESLINTRC_VERSION=3.3.5 diff --git a/megalinter/descriptors/jsx.megalinter-descriptor.yml b/megalinter/descriptors/jsx.megalinter-descriptor.yml index 89106973588..ba2aa10cd4e 100644 --- a/megalinter/descriptors/jsx.megalinter-descriptor.yml +++ b/megalinter/descriptors/jsx.megalinter-descriptor.yml @@ -65,7 +65,7 @@ linters: dockerfile: - |- # renovate: datasource=npm depName=eslint - ARG NPM_ESLINT_VERSION=9.39.4 + ARG NPM_ESLINT_VERSION=10.3.0 - |- # renovate: datasource=npm depName=@eslint/eslintrc ARG NPM_ESLINT_ESLINTRC_VERSION=3.3.5 diff --git a/megalinter/descriptors/tsx.megalinter-descriptor.yml b/megalinter/descriptors/tsx.megalinter-descriptor.yml index 349e021b99f..f351f5e62b2 100644 --- a/megalinter/descriptors/tsx.megalinter-descriptor.yml +++ b/megalinter/descriptors/tsx.megalinter-descriptor.yml @@ -68,7 +68,7 @@ linters: ARG NPM_TYPESCRIPT_VERSION=6.0.3 - |- # renovate: datasource=npm depName=eslint - ARG NPM_ESLINT_VERSION=9.39.4 + ARG NPM_ESLINT_VERSION=10.3.0 - |- # renovate: datasource=npm depName=@eslint/eslintrc ARG NPM_ESLINT_ESLINTRC_VERSION=3.3.5 diff --git a/megalinter/descriptors/typescript.megalinter-descriptor.yml b/megalinter/descriptors/typescript.megalinter-descriptor.yml index c5b20c2e8f0..45ebb51dd6f 100644 --- a/megalinter/descriptors/typescript.megalinter-descriptor.yml +++ b/megalinter/descriptors/typescript.megalinter-descriptor.yml @@ -74,7 +74,7 @@ linters: dockerfile: - |- # renovate: datasource=npm depName=eslint - ARG NPM_ESLINT_VERSION=9.39.4 + ARG NPM_ESLINT_VERSION=10.3.0 - |- # renovate: datasource=npm depName=@eslint/eslintrc ARG NPM_ESLINT_ESLINTRC_VERSION=3.3.5 From 7441e312e1272cce56f8d3355596b73531fbe50f Mon Sep 17 00:00:00 2001 From: nvuillam Date: Fri, 15 May 2026 20:27:31 +0200 Subject: [PATCH 2/7] fix(eslint): migrate ESLint plugins to v10-compatible versions - Replace eslint-plugin-react + eslint-plugin-jsx-a11y with @eslint-react/eslint-plugin (ESLint v10 native) - Replace eslint-plugin-import with eslint-plugin-import-x (ESLint v10 compatible fork) - Drop eslint-config-airbnb-extended, @babel/eslint-parser, neostandard (no v10 support, no replacement) - Add @eslint/js explicitly (was bundled in v9, now separate package in v10) - Update JSX/TSX test fixtures to use @eslint-react/eslint-plugin flat config API - Add mega-linter-runner/eslint.config.js for ESLint flat config support Co-Authored-By: Claude Sonnet 4.6 --- .automation/test/jsx/eslint.config.js | 9 ++---- .automation/test/tsx/eslint.config.js | 26 +++++++++------- Dockerfile | 30 ++++++------------- flavors/cupcake/Dockerfile | 30 ++++++------------- flavors/dotnetweb/Dockerfile | 30 ++++++------------- flavors/javascript/Dockerfile | 30 ++++++------------- linters/javascript_es/Dockerfile | 21 ++++--------- linters/jsx_eslint/Dockerfile | 9 ++---- linters/tsx_eslint/Dockerfile | 12 ++------ linters/typescript_es/Dockerfile | 18 ++++------- mega-linter-runner/eslint.config.js | 25 ++++++++++++++++ .../javascript.megalinter-descriptor.yml | 24 ++++----------- .../descriptors/jsx.megalinter-descriptor.yml | 21 +++++-------- .../descriptors/tsx.megalinter-descriptor.yml | 25 +++++----------- .../typescript.megalinter-descriptor.yml | 20 ++++--------- 15 files changed, 125 insertions(+), 205 deletions(-) create mode 100644 mega-linter-runner/eslint.config.js diff --git a/.automation/test/jsx/eslint.config.js b/.automation/test/jsx/eslint.config.js index 8b37bc459d3..ab4f6a806ae 100644 --- a/.automation/test/jsx/eslint.config.js +++ b/.automation/test/jsx/eslint.config.js @@ -1,8 +1,3 @@ -const reactPlugin = require('eslint-plugin-react'); +const reactPlugin = require('@eslint-react/eslint-plugin'); -module.exports = [ - { - files: ['**/*.{js,mjs,cjs,jsx,mjsx,ts,tsx,mtsx}'], - ...reactPlugin.configs.flat.recommended, // This is not a plugin object, but a shareable config object - } -]; \ No newline at end of file +module.exports = [reactPlugin.configs.recommended]; diff --git a/.automation/test/tsx/eslint.config.js b/.automation/test/tsx/eslint.config.js index 870d90147b5..a6e89d0e923 100644 --- a/.automation/test/tsx/eslint.config.js +++ b/.automation/test/tsx/eslint.config.js @@ -1,13 +1,19 @@ -const { FlatCompat } = require('@eslint/eslintrc'); -const js = require('@eslint/js'); - -const compat = new FlatCompat({ - baseDirectory: __dirname, - resolvePluginsRelativeTo: __dirname, - recommendedConfig: js.configs.recommended, - allConfig: js.configs.all, -}); +const reactPlugin = require('@eslint-react/eslint-plugin'); +const tsParser = require('@typescript-eslint/parser'); module.exports = [ - ...compat.config(require('./.eslintrc.json')), + { + files: ['**/*.{ts,tsx}'], + languageOptions: { + parser: tsParser, + parserOptions: { + ecmaFeatures: { + jsx: true, + }, + ecmaVersion: 12, + sourceType: 'module', + }, + }, + }, + reactPlugin.configs['recommended-typescript'], ]; diff --git a/Dockerfile b/Dockerfile index 7a57a9e1e4a..9edb5f66451 100644 --- a/Dockerfile +++ b/Dockerfile @@ -244,14 +244,12 @@ ARG PMD_VERSION=7.24.0 ARG NPM_ESLINT_VERSION=10.3.0 # renovate: datasource=npm depName=@eslint/eslintrc ARG NPM_ESLINT_ESLINTRC_VERSION=3.3.5 -# renovate: datasource=npm depName=eslint-config-airbnb-extended -ARG NPM_ESLINT_CONFIG_AIRBNB_EXTENDED_VERSION=3.1.0 +# renovate: datasource=npm depName=@eslint/js +ARG NPM_ESLINT_JS_VERSION=10.0.1 # renovate: datasource=npm depName=eslint-config-prettier ARG NPM_ESLINT_CONFIG_PRETTIER_VERSION=10.1.8 -# renovate: datasource=npm depName=neostandard -ARG NPM_NEOSTANDARD_VERSION=0.13.0 -# renovate: datasource=npm depName=eslint-plugin-import -ARG NPM_ESLINT_PLUGIN_IMPORT_VERSION=2.32.0 +# renovate: datasource=npm depName=eslint-plugin-import-x +ARG NPM_ESLINT_PLUGIN_IMPORT_X_VERSION=4.16.2 # renovate: datasource=npm depName=eslint-plugin-jest ARG NPM_ESLINT_PLUGIN_JEST_VERSION=29.15.2 # renovate: datasource=npm depName=eslint-plugin-n @@ -262,10 +260,6 @@ ARG NPM_ESLINT_PLUGIN_PRETTIER_VERSION=5.5.5 ARG NPM_ESLINT_PLUGIN_PROMISE_VERSION=7.3.0 # renovate: datasource=npm depName=eslint-plugin-vue ARG NPM_ESLINT_PLUGIN_VUE_VERSION=10.9.1 -# renovate: datasource=npm depName=@babel/core -ARG NPM_BABEL_CORE_VERSION=7.29.0 -# renovate: datasource=npm depName=@babel/eslint-parser -ARG NPM_BABEL_ESLINT_PARSER_VERSION=7.28.6 # renovate: datasource=npm depName=@microsoft/eslint-formatter-sarif ARG NPM_MICROSOFT_ESLINT_FORMATTER_SARIF_VERSION=3.1.0 # renovate: datasource=npm depName=standard @@ -280,10 +274,8 @@ ARG NPM_V8R_VERSION=6.0.0 ARG NPM_PACKAGE_JSON_LINT_VERSION=10.4.0 # renovate: datasource=npm depName=npm-package-json-lint-config-default ARG NPM_PACKAGE_JSON_LINT_CONFIG_DEFAULT_VERSION=9.0.1 -# renovate: datasource=npm depName=eslint-plugin-react -ARG NPM_ESLINT_PLUGIN_REACT_VERSION=7.37.5 -# renovate: datasource=npm depName=eslint-plugin-jsx-a11y -ARG NPM_ESLINT_PLUGIN_JSX_ALLY_VERSION=6.10.2 +# renovate: datasource=npm depName=@eslint-react/eslint-plugin +ARG NPM_ESLINT_REACT_ESLINT_PLUGIN_VERSION=5.7.8 # renovate: datasource=github-tags depName=pinterest/ktlint ARG KTLINT_VERSION=1.8.0 @@ -758,17 +750,14 @@ RUN npm --no-cache install --ignore-scripts --omit=dev \ htmlhint@${NPM_HTMLHINT_VERSION} \ eslint@${NPM_ESLINT_VERSION} \ @eslint/eslintrc@${NPM_ESLINT_ESLINTRC_VERSION} \ - eslint-config-airbnb-extended@${NPM_ESLINT_CONFIG_AIRBNB_EXTENDED_VERSION} \ + @eslint/js@${NPM_ESLINT_JS_VERSION} \ eslint-config-prettier@${NPM_ESLINT_CONFIG_PRETTIER_VERSION} \ - neostandard@${NPM_NEOSTANDARD_VERSION} \ - eslint-plugin-import@${NPM_ESLINT_PLUGIN_IMPORT_VERSION} \ + eslint-plugin-import-x@${NPM_ESLINT_PLUGIN_IMPORT_X_VERSION} \ eslint-plugin-jest@${NPM_ESLINT_PLUGIN_JEST_VERSION} \ eslint-plugin-n@${NPM_ESLINT_PLUGIN_N_VERSION} \ eslint-plugin-prettier@${NPM_ESLINT_PLUGIN_PRETTIER_VERSION} \ eslint-plugin-promise@${NPM_ESLINT_PLUGIN_PROMISE_VERSION} \ eslint-plugin-vue@${NPM_ESLINT_PLUGIN_VUE_VERSION} \ - @babel/core@${NPM_BABEL_CORE_VERSION} \ - @babel/eslint-parser@${NPM_BABEL_ESLINT_PARSER_VERSION} \ @microsoft/eslint-formatter-sarif@${NPM_MICROSOFT_ESLINT_FORMATTER_SARIF_VERSION} \ standard@${NPM_STANDARD_VERSION} \ prettier@${NPM_PRETTIER_VERSION} \ @@ -776,8 +765,7 @@ RUN npm --no-cache install --ignore-scripts --omit=dev \ v8r@${NPM_V8R_VERSION} \ npm-package-json-lint@${NPM_PACKAGE_JSON_LINT_VERSION} \ npm-package-json-lint-config-default@${NPM_PACKAGE_JSON_LINT_CONFIG_DEFAULT_VERSION} \ - eslint-plugin-react@${NPM_ESLINT_PLUGIN_REACT_VERSION} \ - eslint-plugin-jsx-a11y@${NPM_ESLINT_PLUGIN_JSX_ALLY_VERSION} \ + @eslint-react/eslint-plugin@${NPM_ESLINT_REACT_ESLINT_PLUGIN_VERSION} \ markdownlint-cli@${NPM_MARKDOWNLINT_CLI_VERSION} \ markdown-table-formatter@${NPM_MARKDOWN_TABLE_FORMATTER_VERSION} \ pyright@${NPM_PYRIGHT_VERSION} \ diff --git a/flavors/cupcake/Dockerfile b/flavors/cupcake/Dockerfile index 0d0e197abee..1515653c84e 100644 --- a/flavors/cupcake/Dockerfile +++ b/flavors/cupcake/Dockerfile @@ -183,14 +183,12 @@ ARG PMD_VERSION=7.24.0 ARG NPM_ESLINT_VERSION=10.3.0 # renovate: datasource=npm depName=@eslint/eslintrc ARG NPM_ESLINT_ESLINTRC_VERSION=3.3.5 -# renovate: datasource=npm depName=eslint-config-airbnb-extended -ARG NPM_ESLINT_CONFIG_AIRBNB_EXTENDED_VERSION=3.1.0 +# renovate: datasource=npm depName=@eslint/js +ARG NPM_ESLINT_JS_VERSION=10.0.1 # renovate: datasource=npm depName=eslint-config-prettier ARG NPM_ESLINT_CONFIG_PRETTIER_VERSION=10.1.8 -# renovate: datasource=npm depName=neostandard -ARG NPM_NEOSTANDARD_VERSION=0.13.0 -# renovate: datasource=npm depName=eslint-plugin-import -ARG NPM_ESLINT_PLUGIN_IMPORT_VERSION=2.32.0 +# renovate: datasource=npm depName=eslint-plugin-import-x +ARG NPM_ESLINT_PLUGIN_IMPORT_X_VERSION=4.16.2 # renovate: datasource=npm depName=eslint-plugin-jest ARG NPM_ESLINT_PLUGIN_JEST_VERSION=29.15.2 # renovate: datasource=npm depName=eslint-plugin-n @@ -201,10 +199,6 @@ ARG NPM_ESLINT_PLUGIN_PRETTIER_VERSION=5.5.5 ARG NPM_ESLINT_PLUGIN_PROMISE_VERSION=7.3.0 # renovate: datasource=npm depName=eslint-plugin-vue ARG NPM_ESLINT_PLUGIN_VUE_VERSION=10.9.1 -# renovate: datasource=npm depName=@babel/core -ARG NPM_BABEL_CORE_VERSION=7.29.0 -# renovate: datasource=npm depName=@babel/eslint-parser -ARG NPM_BABEL_ESLINT_PARSER_VERSION=7.28.6 # renovate: datasource=npm depName=@microsoft/eslint-formatter-sarif ARG NPM_MICROSOFT_ESLINT_FORMATTER_SARIF_VERSION=3.1.0 # renovate: datasource=npm depName=standard @@ -219,10 +213,8 @@ ARG NPM_V8R_VERSION=6.0.0 ARG NPM_PACKAGE_JSON_LINT_VERSION=10.4.0 # renovate: datasource=npm depName=npm-package-json-lint-config-default ARG NPM_PACKAGE_JSON_LINT_CONFIG_DEFAULT_VERSION=9.0.1 -# renovate: datasource=npm depName=eslint-plugin-react -ARG NPM_ESLINT_PLUGIN_REACT_VERSION=7.37.5 -# renovate: datasource=npm depName=eslint-plugin-jsx-a11y -ARG NPM_ESLINT_PLUGIN_JSX_ALLY_VERSION=6.10.2 +# renovate: datasource=npm depName=@eslint-react/eslint-plugin +ARG NPM_ESLINT_REACT_ESLINT_PLUGIN_VERSION=5.7.8 # renovate: datasource=github-tags depName=pinterest/ktlint ARG KTLINT_VERSION=1.8.0 @@ -623,17 +615,14 @@ RUN npm --no-cache install --ignore-scripts --omit=dev \ htmlhint@${NPM_HTMLHINT_VERSION} \ eslint@${NPM_ESLINT_VERSION} \ @eslint/eslintrc@${NPM_ESLINT_ESLINTRC_VERSION} \ - eslint-config-airbnb-extended@${NPM_ESLINT_CONFIG_AIRBNB_EXTENDED_VERSION} \ + @eslint/js@${NPM_ESLINT_JS_VERSION} \ eslint-config-prettier@${NPM_ESLINT_CONFIG_PRETTIER_VERSION} \ - neostandard@${NPM_NEOSTANDARD_VERSION} \ - eslint-plugin-import@${NPM_ESLINT_PLUGIN_IMPORT_VERSION} \ + eslint-plugin-import-x@${NPM_ESLINT_PLUGIN_IMPORT_X_VERSION} \ eslint-plugin-jest@${NPM_ESLINT_PLUGIN_JEST_VERSION} \ eslint-plugin-n@${NPM_ESLINT_PLUGIN_N_VERSION} \ eslint-plugin-prettier@${NPM_ESLINT_PLUGIN_PRETTIER_VERSION} \ eslint-plugin-promise@${NPM_ESLINT_PLUGIN_PROMISE_VERSION} \ eslint-plugin-vue@${NPM_ESLINT_PLUGIN_VUE_VERSION} \ - @babel/core@${NPM_BABEL_CORE_VERSION} \ - @babel/eslint-parser@${NPM_BABEL_ESLINT_PARSER_VERSION} \ @microsoft/eslint-formatter-sarif@${NPM_MICROSOFT_ESLINT_FORMATTER_SARIF_VERSION} \ standard@${NPM_STANDARD_VERSION} \ prettier@${NPM_PRETTIER_VERSION} \ @@ -641,8 +630,7 @@ RUN npm --no-cache install --ignore-scripts --omit=dev \ v8r@${NPM_V8R_VERSION} \ npm-package-json-lint@${NPM_PACKAGE_JSON_LINT_VERSION} \ npm-package-json-lint-config-default@${NPM_PACKAGE_JSON_LINT_CONFIG_DEFAULT_VERSION} \ - eslint-plugin-react@${NPM_ESLINT_PLUGIN_REACT_VERSION} \ - eslint-plugin-jsx-a11y@${NPM_ESLINT_PLUGIN_JSX_ALLY_VERSION} \ + @eslint-react/eslint-plugin@${NPM_ESLINT_REACT_ESLINT_PLUGIN_VERSION} \ markdownlint-cli@${NPM_MARKDOWNLINT_CLI_VERSION} \ markdown-table-formatter@${NPM_MARKDOWN_TABLE_FORMATTER_VERSION} \ pyright@${NPM_PYRIGHT_VERSION} \ diff --git a/flavors/dotnetweb/Dockerfile b/flavors/dotnetweb/Dockerfile index c5650964d78..de1a2ea6650 100644 --- a/flavors/dotnetweb/Dockerfile +++ b/flavors/dotnetweb/Dockerfile @@ -173,14 +173,12 @@ ARG NPM_HTMLHINT_VERSION=1.9.2 ARG NPM_ESLINT_VERSION=10.3.0 # renovate: datasource=npm depName=@eslint/eslintrc ARG NPM_ESLINT_ESLINTRC_VERSION=3.3.5 -# renovate: datasource=npm depName=eslint-config-airbnb-extended -ARG NPM_ESLINT_CONFIG_AIRBNB_EXTENDED_VERSION=3.1.0 +# renovate: datasource=npm depName=@eslint/js +ARG NPM_ESLINT_JS_VERSION=10.0.1 # renovate: datasource=npm depName=eslint-config-prettier ARG NPM_ESLINT_CONFIG_PRETTIER_VERSION=10.1.8 -# renovate: datasource=npm depName=neostandard -ARG NPM_NEOSTANDARD_VERSION=0.13.0 -# renovate: datasource=npm depName=eslint-plugin-import -ARG NPM_ESLINT_PLUGIN_IMPORT_VERSION=2.32.0 +# renovate: datasource=npm depName=eslint-plugin-import-x +ARG NPM_ESLINT_PLUGIN_IMPORT_X_VERSION=4.16.2 # renovate: datasource=npm depName=eslint-plugin-jest ARG NPM_ESLINT_PLUGIN_JEST_VERSION=29.15.2 # renovate: datasource=npm depName=eslint-plugin-n @@ -191,10 +189,6 @@ ARG NPM_ESLINT_PLUGIN_PRETTIER_VERSION=5.5.5 ARG NPM_ESLINT_PLUGIN_PROMISE_VERSION=7.3.0 # renovate: datasource=npm depName=eslint-plugin-vue ARG NPM_ESLINT_PLUGIN_VUE_VERSION=10.9.1 -# renovate: datasource=npm depName=@babel/core -ARG NPM_BABEL_CORE_VERSION=7.29.0 -# renovate: datasource=npm depName=@babel/eslint-parser -ARG NPM_BABEL_ESLINT_PARSER_VERSION=7.28.6 # renovate: datasource=npm depName=@microsoft/eslint-formatter-sarif ARG NPM_MICROSOFT_ESLINT_FORMATTER_SARIF_VERSION=3.1.0 # renovate: datasource=npm depName=standard @@ -209,10 +203,8 @@ ARG NPM_V8R_VERSION=6.0.0 ARG NPM_PACKAGE_JSON_LINT_VERSION=10.4.0 # renovate: datasource=npm depName=npm-package-json-lint-config-default ARG NPM_PACKAGE_JSON_LINT_CONFIG_DEFAULT_VERSION=9.0.1 -# renovate: datasource=npm depName=eslint-plugin-react -ARG NPM_ESLINT_PLUGIN_REACT_VERSION=7.37.5 -# renovate: datasource=npm depName=eslint-plugin-jsx-a11y -ARG NPM_ESLINT_PLUGIN_JSX_ALLY_VERSION=6.10.2 +# renovate: datasource=npm depName=@eslint-react/eslint-plugin +ARG NPM_ESLINT_REACT_ESLINT_PLUGIN_VERSION=5.7.8 # renovate: datasource=github-tags depName=pinterest/ktlint ARG KTLINT_VERSION=1.8.0 @@ -485,17 +477,14 @@ RUN npm --no-cache install --ignore-scripts --omit=dev \ htmlhint@${NPM_HTMLHINT_VERSION} \ eslint@${NPM_ESLINT_VERSION} \ @eslint/eslintrc@${NPM_ESLINT_ESLINTRC_VERSION} \ - eslint-config-airbnb-extended@${NPM_ESLINT_CONFIG_AIRBNB_EXTENDED_VERSION} \ + @eslint/js@${NPM_ESLINT_JS_VERSION} \ eslint-config-prettier@${NPM_ESLINT_CONFIG_PRETTIER_VERSION} \ - neostandard@${NPM_NEOSTANDARD_VERSION} \ - eslint-plugin-import@${NPM_ESLINT_PLUGIN_IMPORT_VERSION} \ + eslint-plugin-import-x@${NPM_ESLINT_PLUGIN_IMPORT_X_VERSION} \ eslint-plugin-jest@${NPM_ESLINT_PLUGIN_JEST_VERSION} \ eslint-plugin-n@${NPM_ESLINT_PLUGIN_N_VERSION} \ eslint-plugin-prettier@${NPM_ESLINT_PLUGIN_PRETTIER_VERSION} \ eslint-plugin-promise@${NPM_ESLINT_PLUGIN_PROMISE_VERSION} \ eslint-plugin-vue@${NPM_ESLINT_PLUGIN_VUE_VERSION} \ - @babel/core@${NPM_BABEL_CORE_VERSION} \ - @babel/eslint-parser@${NPM_BABEL_ESLINT_PARSER_VERSION} \ @microsoft/eslint-formatter-sarif@${NPM_MICROSOFT_ESLINT_FORMATTER_SARIF_VERSION} \ standard@${NPM_STANDARD_VERSION} \ prettier@${NPM_PRETTIER_VERSION} \ @@ -503,8 +492,7 @@ RUN npm --no-cache install --ignore-scripts --omit=dev \ v8r@${NPM_V8R_VERSION} \ npm-package-json-lint@${NPM_PACKAGE_JSON_LINT_VERSION} \ npm-package-json-lint-config-default@${NPM_PACKAGE_JSON_LINT_CONFIG_DEFAULT_VERSION} \ - eslint-plugin-react@${NPM_ESLINT_PLUGIN_REACT_VERSION} \ - eslint-plugin-jsx-a11y@${NPM_ESLINT_PLUGIN_JSX_ALLY_VERSION} \ + @eslint-react/eslint-plugin@${NPM_ESLINT_REACT_ESLINT_PLUGIN_VERSION} \ markdownlint-cli@${NPM_MARKDOWNLINT_CLI_VERSION} \ markdown-table-formatter@${NPM_MARKDOWN_TABLE_FORMATTER_VERSION} \ secretlint@${NPM_SECRETLINT_VERSION} \ diff --git a/flavors/javascript/Dockerfile b/flavors/javascript/Dockerfile index ba23d09cae2..8d2ac837f0e 100644 --- a/flavors/javascript/Dockerfile +++ b/flavors/javascript/Dockerfile @@ -154,14 +154,12 @@ ARG NPM_HTMLHINT_VERSION=1.9.2 ARG NPM_ESLINT_VERSION=10.3.0 # renovate: datasource=npm depName=@eslint/eslintrc ARG NPM_ESLINT_ESLINTRC_VERSION=3.3.5 -# renovate: datasource=npm depName=eslint-config-airbnb-extended -ARG NPM_ESLINT_CONFIG_AIRBNB_EXTENDED_VERSION=3.1.0 +# renovate: datasource=npm depName=@eslint/js +ARG NPM_ESLINT_JS_VERSION=10.0.1 # renovate: datasource=npm depName=eslint-config-prettier ARG NPM_ESLINT_CONFIG_PRETTIER_VERSION=10.1.8 -# renovate: datasource=npm depName=neostandard -ARG NPM_NEOSTANDARD_VERSION=0.13.0 -# renovate: datasource=npm depName=eslint-plugin-import -ARG NPM_ESLINT_PLUGIN_IMPORT_VERSION=2.32.0 +# renovate: datasource=npm depName=eslint-plugin-import-x +ARG NPM_ESLINT_PLUGIN_IMPORT_X_VERSION=4.16.2 # renovate: datasource=npm depName=eslint-plugin-jest ARG NPM_ESLINT_PLUGIN_JEST_VERSION=29.15.2 # renovate: datasource=npm depName=eslint-plugin-n @@ -172,10 +170,6 @@ ARG NPM_ESLINT_PLUGIN_PRETTIER_VERSION=5.5.5 ARG NPM_ESLINT_PLUGIN_PROMISE_VERSION=7.3.0 # renovate: datasource=npm depName=eslint-plugin-vue ARG NPM_ESLINT_PLUGIN_VUE_VERSION=10.9.1 -# renovate: datasource=npm depName=@babel/core -ARG NPM_BABEL_CORE_VERSION=7.29.0 -# renovate: datasource=npm depName=@babel/eslint-parser -ARG NPM_BABEL_ESLINT_PARSER_VERSION=7.28.6 # renovate: datasource=npm depName=@microsoft/eslint-formatter-sarif ARG NPM_MICROSOFT_ESLINT_FORMATTER_SARIF_VERSION=3.1.0 # renovate: datasource=npm depName=standard @@ -190,10 +184,8 @@ ARG NPM_V8R_VERSION=6.0.0 ARG NPM_PACKAGE_JSON_LINT_VERSION=10.4.0 # renovate: datasource=npm depName=npm-package-json-lint-config-default ARG NPM_PACKAGE_JSON_LINT_CONFIG_DEFAULT_VERSION=9.0.1 -# renovate: datasource=npm depName=eslint-plugin-react -ARG NPM_ESLINT_PLUGIN_REACT_VERSION=7.37.5 -# renovate: datasource=npm depName=eslint-plugin-jsx-a11y -ARG NPM_ESLINT_PLUGIN_JSX_ALLY_VERSION=6.10.2 +# renovate: datasource=npm depName=@eslint-react/eslint-plugin +ARG NPM_ESLINT_REACT_ESLINT_PLUGIN_VERSION=5.7.8 # renovate: datasource=github-tags depName=pinterest/ktlint ARG KTLINT_VERSION=1.8.0 @@ -454,17 +446,14 @@ RUN npm --no-cache install --ignore-scripts --omit=dev \ htmlhint@${NPM_HTMLHINT_VERSION} \ eslint@${NPM_ESLINT_VERSION} \ @eslint/eslintrc@${NPM_ESLINT_ESLINTRC_VERSION} \ - eslint-config-airbnb-extended@${NPM_ESLINT_CONFIG_AIRBNB_EXTENDED_VERSION} \ + @eslint/js@${NPM_ESLINT_JS_VERSION} \ eslint-config-prettier@${NPM_ESLINT_CONFIG_PRETTIER_VERSION} \ - neostandard@${NPM_NEOSTANDARD_VERSION} \ - eslint-plugin-import@${NPM_ESLINT_PLUGIN_IMPORT_VERSION} \ + eslint-plugin-import-x@${NPM_ESLINT_PLUGIN_IMPORT_X_VERSION} \ eslint-plugin-jest@${NPM_ESLINT_PLUGIN_JEST_VERSION} \ eslint-plugin-n@${NPM_ESLINT_PLUGIN_N_VERSION} \ eslint-plugin-prettier@${NPM_ESLINT_PLUGIN_PRETTIER_VERSION} \ eslint-plugin-promise@${NPM_ESLINT_PLUGIN_PROMISE_VERSION} \ eslint-plugin-vue@${NPM_ESLINT_PLUGIN_VUE_VERSION} \ - @babel/core@${NPM_BABEL_CORE_VERSION} \ - @babel/eslint-parser@${NPM_BABEL_ESLINT_PARSER_VERSION} \ @microsoft/eslint-formatter-sarif@${NPM_MICROSOFT_ESLINT_FORMATTER_SARIF_VERSION} \ standard@${NPM_STANDARD_VERSION} \ prettier@${NPM_PRETTIER_VERSION} \ @@ -472,8 +461,7 @@ RUN npm --no-cache install --ignore-scripts --omit=dev \ v8r@${NPM_V8R_VERSION} \ npm-package-json-lint@${NPM_PACKAGE_JSON_LINT_VERSION} \ npm-package-json-lint-config-default@${NPM_PACKAGE_JSON_LINT_CONFIG_DEFAULT_VERSION} \ - eslint-plugin-react@${NPM_ESLINT_PLUGIN_REACT_VERSION} \ - eslint-plugin-jsx-a11y@${NPM_ESLINT_PLUGIN_JSX_ALLY_VERSION} \ + @eslint-react/eslint-plugin@${NPM_ESLINT_REACT_ESLINT_PLUGIN_VERSION} \ markdownlint-cli@${NPM_MARKDOWNLINT_CLI_VERSION} \ markdown-table-formatter@${NPM_MARKDOWN_TABLE_FORMATTER_VERSION} \ secretlint@${NPM_SECRETLINT_VERSION} \ diff --git a/linters/javascript_es/Dockerfile b/linters/javascript_es/Dockerfile index 3c4633f8c91..780ac08246e 100644 --- a/linters/javascript_es/Dockerfile +++ b/linters/javascript_es/Dockerfile @@ -58,14 +58,12 @@ ARG TARGETARCH ARG NPM_ESLINT_VERSION=10.3.0 # renovate: datasource=npm depName=@eslint/eslintrc ARG NPM_ESLINT_ESLINTRC_VERSION=3.3.5 -# renovate: datasource=npm depName=eslint-config-airbnb-extended -ARG NPM_ESLINT_CONFIG_AIRBNB_EXTENDED_VERSION=3.1.0 +# renovate: datasource=npm depName=@eslint/js +ARG NPM_ESLINT_JS_VERSION=10.0.1 # renovate: datasource=npm depName=eslint-config-prettier ARG NPM_ESLINT_CONFIG_PRETTIER_VERSION=10.1.8 -# renovate: datasource=npm depName=neostandard -ARG NPM_NEOSTANDARD_VERSION=0.13.0 -# renovate: datasource=npm depName=eslint-plugin-import -ARG NPM_ESLINT_PLUGIN_IMPORT_VERSION=2.32.0 +# renovate: datasource=npm depName=eslint-plugin-import-x +ARG NPM_ESLINT_PLUGIN_IMPORT_X_VERSION=4.16.2 # renovate: datasource=npm depName=eslint-plugin-jest ARG NPM_ESLINT_PLUGIN_JEST_VERSION=29.15.2 # renovate: datasource=npm depName=eslint-plugin-n @@ -76,10 +74,6 @@ ARG NPM_ESLINT_PLUGIN_PRETTIER_VERSION=5.5.5 ARG NPM_ESLINT_PLUGIN_PROMISE_VERSION=7.3.0 # renovate: datasource=npm depName=eslint-plugin-vue ARG NPM_ESLINT_PLUGIN_VUE_VERSION=10.9.1 -# renovate: datasource=npm depName=@babel/core -ARG NPM_BABEL_CORE_VERSION=7.29.0 -# renovate: datasource=npm depName=@babel/eslint-parser -ARG NPM_BABEL_ESLINT_PARSER_VERSION=7.28.6 # renovate: datasource=npm depName=@microsoft/eslint-formatter-sarif ARG NPM_MICROSOFT_ESLINT_FORMATTER_SARIF_VERSION=3.1.0 #ARG__END @@ -177,17 +171,14 @@ WORKDIR /node-deps RUN npm --no-cache install --ignore-scripts --omit=dev \ eslint@${NPM_ESLINT_VERSION} \ @eslint/eslintrc@${NPM_ESLINT_ESLINTRC_VERSION} \ - eslint-config-airbnb-extended@${NPM_ESLINT_CONFIG_AIRBNB_EXTENDED_VERSION} \ + @eslint/js@${NPM_ESLINT_JS_VERSION} \ eslint-config-prettier@${NPM_ESLINT_CONFIG_PRETTIER_VERSION} \ - neostandard@${NPM_NEOSTANDARD_VERSION} \ - eslint-plugin-import@${NPM_ESLINT_PLUGIN_IMPORT_VERSION} \ + eslint-plugin-import-x@${NPM_ESLINT_PLUGIN_IMPORT_X_VERSION} \ eslint-plugin-jest@${NPM_ESLINT_PLUGIN_JEST_VERSION} \ eslint-plugin-n@${NPM_ESLINT_PLUGIN_N_VERSION} \ eslint-plugin-prettier@${NPM_ESLINT_PLUGIN_PRETTIER_VERSION} \ eslint-plugin-promise@${NPM_ESLINT_PLUGIN_PROMISE_VERSION} \ eslint-plugin-vue@${NPM_ESLINT_PLUGIN_VUE_VERSION} \ - @babel/core@${NPM_BABEL_CORE_VERSION} \ - @babel/eslint-parser@${NPM_BABEL_ESLINT_PARSER_VERSION} \ @microsoft/eslint-formatter-sarif@${NPM_MICROSOFT_ESLINT_FORMATTER_SARIF_VERSION} && \ echo "Cleaning npm cache…" \ && (npm cache clean --force || true) \ diff --git a/linters/jsx_eslint/Dockerfile b/linters/jsx_eslint/Dockerfile index 0daae152407..5a4253f4b1d 100644 --- a/linters/jsx_eslint/Dockerfile +++ b/linters/jsx_eslint/Dockerfile @@ -58,10 +58,8 @@ ARG TARGETARCH ARG NPM_ESLINT_VERSION=10.3.0 # renovate: datasource=npm depName=@eslint/eslintrc ARG NPM_ESLINT_ESLINTRC_VERSION=3.3.5 -# renovate: datasource=npm depName=eslint-plugin-react -ARG NPM_ESLINT_PLUGIN_REACT_VERSION=7.37.5 -# renovate: datasource=npm depName=eslint-plugin-jsx-a11y -ARG NPM_ESLINT_PLUGIN_JSX_ALLY_VERSION=6.10.2 +# renovate: datasource=npm depName=@eslint-react/eslint-plugin +ARG NPM_ESLINT_REACT_ESLINT_PLUGIN_VERSION=5.7.8 # renovate: datasource=npm depName=@microsoft/eslint-formatter-sarif ARG NPM_MICROSOFT_ESLINT_FORMATTER_SARIF_VERSION=3.1.0 #ARG__END @@ -159,8 +157,7 @@ WORKDIR /node-deps RUN npm --no-cache install --ignore-scripts --omit=dev \ eslint@${NPM_ESLINT_VERSION} \ @eslint/eslintrc@${NPM_ESLINT_ESLINTRC_VERSION} \ - eslint-plugin-react@${NPM_ESLINT_PLUGIN_REACT_VERSION} \ - eslint-plugin-jsx-a11y@${NPM_ESLINT_PLUGIN_JSX_ALLY_VERSION} \ + @eslint-react/eslint-plugin@${NPM_ESLINT_REACT_ESLINT_PLUGIN_VERSION} \ @microsoft/eslint-formatter-sarif@${NPM_MICROSOFT_ESLINT_FORMATTER_SARIF_VERSION} && \ echo "Cleaning npm cache…" \ && (npm cache clean --force || true) \ diff --git a/linters/tsx_eslint/Dockerfile b/linters/tsx_eslint/Dockerfile index a22859ed921..65e9d614938 100644 --- a/linters/tsx_eslint/Dockerfile +++ b/linters/tsx_eslint/Dockerfile @@ -60,18 +60,14 @@ ARG NPM_TYPESCRIPT_VERSION=6.0.3 ARG NPM_ESLINT_VERSION=10.3.0 # renovate: datasource=npm depName=@eslint/eslintrc ARG NPM_ESLINT_ESLINTRC_VERSION=3.3.5 -# renovate: datasource=npm depName=eslint-config-airbnb-extended -ARG NPM_ESLINT_CONFIG_AIRBNB_EXTENDED_VERSION=3.1.0 # renovate: datasource=npm depName=eslint-config-prettier ARG NPM_ESLINT_CONFIG_PRETTIER_VERSION=10.1.8 # renovate: datasource=npm depName=eslint-plugin-jest ARG NPM_ESLINT_PLUGIN_JEST_VERSION=29.15.2 # renovate: datasource=npm depName=eslint-plugin-prettier ARG NPM_ESLINT_PLUGIN_PRETTIER_VERSION=5.5.5 -# renovate: datasource=npm depName=eslint-plugin-react -ARG NPM_ESLINT_PLUGIN_REACT_VERSION=7.37.5 -# renovate: datasource=npm depName=@babel/eslint-parser -ARG NPM_BABEL_ESLINT_PARSER_VERSION=7.28.6 +# renovate: datasource=npm depName=@eslint-react/eslint-plugin +ARG NPM_ESLINT_REACT_ESLINT_PLUGIN_VERSION=5.7.8 # renovate: datasource=npm depName=prettier ARG NPM_PRETTIER_VERSION=3.8.3 # renovate: datasource=npm depName=prettyjson @@ -178,12 +174,10 @@ RUN npm --no-cache install --ignore-scripts --omit=dev \ typescript@${NPM_TYPESCRIPT_VERSION} \ eslint@${NPM_ESLINT_VERSION} \ @eslint/eslintrc@${NPM_ESLINT_ESLINTRC_VERSION} \ - eslint-config-airbnb-extended@${NPM_ESLINT_CONFIG_AIRBNB_EXTENDED_VERSION} \ eslint-config-prettier@${NPM_ESLINT_CONFIG_PRETTIER_VERSION} \ eslint-plugin-jest@${NPM_ESLINT_PLUGIN_JEST_VERSION} \ eslint-plugin-prettier@${NPM_ESLINT_PLUGIN_PRETTIER_VERSION} \ - eslint-plugin-react@${NPM_ESLINT_PLUGIN_REACT_VERSION} \ - @babel/eslint-parser@${NPM_BABEL_ESLINT_PARSER_VERSION} \ + @eslint-react/eslint-plugin@${NPM_ESLINT_REACT_ESLINT_PLUGIN_VERSION} \ prettier@${NPM_PRETTIER_VERSION} \ prettyjson@${NPM_PRETTYJSON_VERSION} \ @typescript-eslint/eslint-plugin@${NPM_TYPESCRIPT_ESLINT_ESLINT_PLUGIN_VERSION} \ diff --git a/linters/typescript_es/Dockerfile b/linters/typescript_es/Dockerfile index 92e04ea35de..7f81696aab1 100644 --- a/linters/typescript_es/Dockerfile +++ b/linters/typescript_es/Dockerfile @@ -60,14 +60,12 @@ ARG NPM_TYPESCRIPT_VERSION=6.0.3 ARG NPM_ESLINT_VERSION=10.3.0 # renovate: datasource=npm depName=@eslint/eslintrc ARG NPM_ESLINT_ESLINTRC_VERSION=3.3.5 -# renovate: datasource=npm depName=eslint-config-airbnb-extended -ARG NPM_ESLINT_CONFIG_AIRBNB_EXTENDED_VERSION=3.1.0 +# renovate: datasource=npm depName=@eslint/js +ARG NPM_ESLINT_JS_VERSION=10.0.1 # renovate: datasource=npm depName=eslint-config-prettier ARG NPM_ESLINT_CONFIG_PRETTIER_VERSION=10.1.8 -# renovate: datasource=npm depName=neostandard -ARG NPM_NEOSTANDARD_VERSION=0.13.0 -# renovate: datasource=npm depName=eslint-plugin-import -ARG NPM_ESLINT_PLUGIN_IMPORT_VERSION=2.32.0 +# renovate: datasource=npm depName=eslint-plugin-import-x +ARG NPM_ESLINT_PLUGIN_IMPORT_X_VERSION=4.16.2 # renovate: datasource=npm depName=eslint-plugin-jest ARG NPM_ESLINT_PLUGIN_JEST_VERSION=29.15.2 # renovate: datasource=npm depName=eslint-plugin-n @@ -76,8 +74,6 @@ ARG NPM_ESLINT_PLUGIN_N_VERSION=18.0.1 ARG NPM_ESLINT_PLUGIN_PRETTIER_VERSION=5.5.5 # renovate: datasource=npm depName=eslint-plugin-promise ARG NPM_ESLINT_PLUGIN_PROMISE_VERSION=7.3.0 -# renovate: datasource=npm depName=@babel/eslint-parser -ARG NPM_BABEL_ESLINT_PARSER_VERSION=7.28.6 # renovate: datasource=npm depName=prettier ARG NPM_PRETTIER_VERSION=3.8.3 # renovate: datasource=npm depName=prettyjson @@ -184,15 +180,13 @@ RUN npm --no-cache install --ignore-scripts --omit=dev \ typescript@${NPM_TYPESCRIPT_VERSION} \ eslint@${NPM_ESLINT_VERSION} \ @eslint/eslintrc@${NPM_ESLINT_ESLINTRC_VERSION} \ - eslint-config-airbnb-extended@${NPM_ESLINT_CONFIG_AIRBNB_EXTENDED_VERSION} \ + @eslint/js@${NPM_ESLINT_JS_VERSION} \ eslint-config-prettier@${NPM_ESLINT_CONFIG_PRETTIER_VERSION} \ - neostandard@${NPM_NEOSTANDARD_VERSION} \ - eslint-plugin-import@${NPM_ESLINT_PLUGIN_IMPORT_VERSION} \ + eslint-plugin-import-x@${NPM_ESLINT_PLUGIN_IMPORT_X_VERSION} \ eslint-plugin-jest@${NPM_ESLINT_PLUGIN_JEST_VERSION} \ eslint-plugin-n@${NPM_ESLINT_PLUGIN_N_VERSION} \ eslint-plugin-prettier@${NPM_ESLINT_PLUGIN_PRETTIER_VERSION} \ eslint-plugin-promise@${NPM_ESLINT_PLUGIN_PROMISE_VERSION} \ - @babel/eslint-parser@${NPM_BABEL_ESLINT_PARSER_VERSION} \ prettier@${NPM_PRETTIER_VERSION} \ prettyjson@${NPM_PRETTYJSON_VERSION} \ @typescript-eslint/eslint-plugin@${NPM_TYPESCRIPT_ESLINT_ESLINT_PLUGIN_VERSION} \ diff --git a/mega-linter-runner/eslint.config.js b/mega-linter-runner/eslint.config.js new file mode 100644 index 00000000000..235250965c6 --- /dev/null +++ b/mega-linter-runner/eslint.config.js @@ -0,0 +1,25 @@ +const { FlatCompat } = require('@eslint/eslintrc'); +const js = require('@eslint/js'); + +const compat = new FlatCompat({ + baseDirectory: __dirname, + recommendedConfig: js.configs.recommended, + allConfig: js.configs.all, +}); + +module.exports = [ + ...compat.config({ + env: { + node: true, + commonjs: true, + es2021: true, + mocha: true, + }, + extends: 'eslint:recommended', + parserOptions: { + ecmaVersion: 2021, + sourceType: 'module', + }, + rules: {}, + }), +]; diff --git a/megalinter/descriptors/javascript.megalinter-descriptor.yml b/megalinter/descriptors/javascript.megalinter-descriptor.yml index 86d68bc96fa..ea280b0f9cd 100644 --- a/megalinter/descriptors/javascript.megalinter-descriptor.yml +++ b/megalinter/descriptors/javascript.megalinter-descriptor.yml @@ -92,17 +92,14 @@ linters: # renovate: datasource=npm depName=@eslint/eslintrc ARG NPM_ESLINT_ESLINTRC_VERSION=3.3.5 - |- - # renovate: datasource=npm depName=eslint-config-airbnb-extended - ARG NPM_ESLINT_CONFIG_AIRBNB_EXTENDED_VERSION=3.1.0 + # renovate: datasource=npm depName=@eslint/js + ARG NPM_ESLINT_JS_VERSION=10.0.1 - |- # renovate: datasource=npm depName=eslint-config-prettier ARG NPM_ESLINT_CONFIG_PRETTIER_VERSION=10.1.8 - |- - # renovate: datasource=npm depName=neostandard - ARG NPM_NEOSTANDARD_VERSION=0.13.0 - - |- - # renovate: datasource=npm depName=eslint-plugin-import - ARG NPM_ESLINT_PLUGIN_IMPORT_VERSION=2.32.0 + # renovate: datasource=npm depName=eslint-plugin-import-x + ARG NPM_ESLINT_PLUGIN_IMPORT_X_VERSION=4.16.2 - |- # renovate: datasource=npm depName=eslint-plugin-jest ARG NPM_ESLINT_PLUGIN_JEST_VERSION=29.15.2 @@ -118,29 +115,20 @@ linters: - |- # renovate: datasource=npm depName=eslint-plugin-vue ARG NPM_ESLINT_PLUGIN_VUE_VERSION=10.9.1 - - |- - # renovate: datasource=npm depName=@babel/core - ARG NPM_BABEL_CORE_VERSION=7.29.0 - - |- - # renovate: datasource=npm depName=@babel/eslint-parser - ARG NPM_BABEL_ESLINT_PARSER_VERSION=7.28.6 - |- # renovate: datasource=npm depName=@microsoft/eslint-formatter-sarif ARG NPM_MICROSOFT_ESLINT_FORMATTER_SARIF_VERSION=3.1.0 npm: - eslint@${NPM_ESLINT_VERSION} - "@eslint/eslintrc@${NPM_ESLINT_ESLINTRC_VERSION}" - - eslint-config-airbnb-extended@${NPM_ESLINT_CONFIG_AIRBNB_EXTENDED_VERSION} + - "@eslint/js@${NPM_ESLINT_JS_VERSION}" - eslint-config-prettier@${NPM_ESLINT_CONFIG_PRETTIER_VERSION} - - neostandard@${NPM_NEOSTANDARD_VERSION} - - eslint-plugin-import@${NPM_ESLINT_PLUGIN_IMPORT_VERSION} + - eslint-plugin-import-x@${NPM_ESLINT_PLUGIN_IMPORT_X_VERSION} - eslint-plugin-jest@${NPM_ESLINT_PLUGIN_JEST_VERSION} - eslint-plugin-n@${NPM_ESLINT_PLUGIN_N_VERSION} - eslint-plugin-prettier@${NPM_ESLINT_PLUGIN_PRETTIER_VERSION} - eslint-plugin-promise@${NPM_ESLINT_PLUGIN_PROMISE_VERSION} - eslint-plugin-vue@${NPM_ESLINT_PLUGIN_VUE_VERSION} - - "@babel/core@${NPM_BABEL_CORE_VERSION}" - - "@babel/eslint-parser@${NPM_BABEL_ESLINT_PARSER_VERSION}" - "@microsoft/eslint-formatter-sarif@${NPM_MICROSOFT_ESLINT_FORMATTER_SARIF_VERSION}" supported_platforms: platform: diff --git a/megalinter/descriptors/jsx.megalinter-descriptor.yml b/megalinter/descriptors/jsx.megalinter-descriptor.yml index ba2aa10cd4e..c31a90f08fe 100644 --- a/megalinter/descriptors/jsx.megalinter-descriptor.yml +++ b/megalinter/descriptors/jsx.megalinter-descriptor.yml @@ -17,20 +17,19 @@ linters: **Key Features:** - - **React-Specific Linting**: 90+ rules covering React best practices, hooks usage, JSX syntax, and component lifecycle patterns + - **React-Specific Linting**: Comprehensive rules covering React best practices, hooks usage, JSX syntax, and component lifecycle patterns - **JSX Syntax Validation**: Comprehensive validation of JSX syntax, prop types, and component structure with intelligent error reporting - **Hooks Rules**: Thorough validation of React Hooks usage patterns, dependencies arrays, and effect cleanup to prevent common bugs - - **Accessibility Integration**: Built-in support for jsx-a11y plugin ensuring accessible React components and WCAG compliance - **Performance Optimization**: Rules to detect unnecessary re-renders, missing keys in lists, and performance anti-patterns - **Modern React Patterns**: Support for latest React features including fragments, context, refs, and concurrent features ESLint requires a custom configuration file applicable to your project. You can create it by typing `npx eslint --init` in the root of your repository - linter_url: https://github.com/yannickcr/eslint-plugin-react - linter_repo: https://github.com/yannickcr/eslint-plugin-react + linter_url: https://github.com/Rel1cx/eslint-react + linter_repo: https://github.com/Rel1cx/eslint-react linter_spdx_license: MIT - linter_rules_url: https://github.com/yannickcr/eslint-plugin-react#list-of-supported-rules + linter_rules_url: https://eslint-react.xyz/docs/rules/overview linter_banner_image_url: https://d33wubrfki0l68.cloudfront.net/3b5ac7586466159bb6f237b633bfc4f5a8d5acf8/ee0a1/assets/img/posts/eslint-collective.png - linter_rules_configuration_url: https://github.com/yannickcr/eslint-plugin-react#configuration + linter_rules_configuration_url: https://eslint-react.xyz/docs/getting-started/installation linter_rules_inline_disable_url: https://eslint.org/docs/latest/use/configure/rules#disabling-rules linter_rules_ignore_config_url: https://eslint.org/docs/latest/user-guide/configuring/ignoring-code#the-eslintignore-file linter_megalinter_ref_url: https://eslint.org/docs/latest/use/integrations#source-control @@ -70,19 +69,15 @@ linters: # renovate: datasource=npm depName=@eslint/eslintrc ARG NPM_ESLINT_ESLINTRC_VERSION=3.3.5 - |- - # renovate: datasource=npm depName=eslint-plugin-react - ARG NPM_ESLINT_PLUGIN_REACT_VERSION=7.37.5 - - |- - # renovate: datasource=npm depName=eslint-plugin-jsx-a11y - ARG NPM_ESLINT_PLUGIN_JSX_ALLY_VERSION=6.10.2 + # renovate: datasource=npm depName=@eslint-react/eslint-plugin + ARG NPM_ESLINT_REACT_ESLINT_PLUGIN_VERSION=5.7.8 - |- # renovate: datasource=npm depName=@microsoft/eslint-formatter-sarif ARG NPM_MICROSOFT_ESLINT_FORMATTER_SARIF_VERSION=3.1.0 npm: - eslint@${NPM_ESLINT_VERSION} - "@eslint/eslintrc@${NPM_ESLINT_ESLINTRC_VERSION}" - - eslint-plugin-react@${NPM_ESLINT_PLUGIN_REACT_VERSION} - - eslint-plugin-jsx-a11y@${NPM_ESLINT_PLUGIN_JSX_ALLY_VERSION} + - "@eslint-react/eslint-plugin@${NPM_ESLINT_REACT_ESLINT_PLUGIN_VERSION}" - "@microsoft/eslint-formatter-sarif@${NPM_MICROSOFT_ESLINT_FORMATTER_SARIF_VERSION}" supported_platforms: platform: diff --git a/megalinter/descriptors/tsx.megalinter-descriptor.yml b/megalinter/descriptors/tsx.megalinter-descriptor.yml index f351f5e62b2..0f5113003b2 100644 --- a/megalinter/descriptors/tsx.megalinter-descriptor.yml +++ b/megalinter/descriptors/tsx.megalinter-descriptor.yml @@ -17,19 +17,18 @@ linters: **Key Features:** - - **React-Specific Linting**: 90+ rules covering React best practices, hooks usage, JSX syntax, and component lifecycle patterns + - **React-Specific Linting**: Comprehensive rules covering React best practices, hooks usage, JSX syntax, and component lifecycle patterns - **TypeScript Integration**: Full TypeScript support for type-aware linting in React components with proper TSX syntax validation - **Hooks Rules**: Comprehensive validation of React Hooks usage patterns, dependencies, and effect cleanup - - **Accessibility Integration**: Built-in support for jsx-a11y plugin ensuring accessible React components - **Performance Optimization**: Rules to detect unnecessary re-renders, missing dependency arrays, and performance anti-patterns - **Modern React Patterns**: Support for latest React features including Suspense, Error Boundaries, and concurrent features ESLint requires a custom configuration file applicable to your project. You can create it by typing `npx eslint --init` in the root of your repository - linter_url: https://github.com/jsx-eslint/eslint-plugin-react - linter_repo: https://github.com/jsx-eslint/eslint-plugin-react - linter_rules_url: https://github.com/jsx-eslint/eslint-plugin-react#list-of-supported-rules + linter_url: https://github.com/Rel1cx/eslint-react + linter_repo: https://github.com/Rel1cx/eslint-react + linter_rules_url: https://eslint-react.xyz/docs/rules/overview linter_banner_image_url: https://d33wubrfki0l68.cloudfront.net/3b5ac7586466159bb6f237b633bfc4f5a8d5acf8/ee0a1/assets/img/posts/eslint-collective.png - linter_rules_configuration_url: https://github.com/jsx-eslint/eslint-plugin-react#configuration-legacy-eslintrc + linter_rules_configuration_url: https://eslint-react.xyz/docs/getting-started/installation linter_rules_inline_disable_url: https://eslint.org/docs/latest/use/configure/rules#disabling-rules linter_rules_ignore_config_url: https://eslint.org/docs/latest/use/configure/ignore#the-eslintignore-file linter_megalinter_ref_url: https://eslint.org/docs/latest/use/integrations#source-control @@ -72,9 +71,6 @@ linters: - |- # renovate: datasource=npm depName=@eslint/eslintrc ARG NPM_ESLINT_ESLINTRC_VERSION=3.3.5 - - |- - # renovate: datasource=npm depName=eslint-config-airbnb-extended - ARG NPM_ESLINT_CONFIG_AIRBNB_EXTENDED_VERSION=3.1.0 - |- # renovate: datasource=npm depName=eslint-config-prettier ARG NPM_ESLINT_CONFIG_PRETTIER_VERSION=10.1.8 @@ -85,11 +81,8 @@ linters: # renovate: datasource=npm depName=eslint-plugin-prettier ARG NPM_ESLINT_PLUGIN_PRETTIER_VERSION=5.5.5 - |- - # renovate: datasource=npm depName=eslint-plugin-react - ARG NPM_ESLINT_PLUGIN_REACT_VERSION=7.37.5 - - |- - # renovate: datasource=npm depName=@babel/eslint-parser - ARG NPM_BABEL_ESLINT_PARSER_VERSION=7.28.6 + # renovate: datasource=npm depName=@eslint-react/eslint-plugin + ARG NPM_ESLINT_REACT_ESLINT_PLUGIN_VERSION=5.7.8 - |- # renovate: datasource=npm depName=prettier ARG NPM_PRETTIER_VERSION=3.8.3 @@ -109,12 +102,10 @@ linters: - typescript@${NPM_TYPESCRIPT_VERSION} - eslint@${NPM_ESLINT_VERSION} - "@eslint/eslintrc@${NPM_ESLINT_ESLINTRC_VERSION}" - - eslint-config-airbnb-extended@${NPM_ESLINT_CONFIG_AIRBNB_EXTENDED_VERSION} - eslint-config-prettier@${NPM_ESLINT_CONFIG_PRETTIER_VERSION} - eslint-plugin-jest@${NPM_ESLINT_PLUGIN_JEST_VERSION} - eslint-plugin-prettier@${NPM_ESLINT_PLUGIN_PRETTIER_VERSION} - - eslint-plugin-react@${NPM_ESLINT_PLUGIN_REACT_VERSION} - - "@babel/eslint-parser@${NPM_BABEL_ESLINT_PARSER_VERSION}" + - "@eslint-react/eslint-plugin@${NPM_ESLINT_REACT_ESLINT_PLUGIN_VERSION}" - prettier@${NPM_PRETTIER_VERSION} - prettyjson@${NPM_PRETTYJSON_VERSION} - "@typescript-eslint/eslint-plugin@${NPM_TYPESCRIPT_ESLINT_ESLINT_PLUGIN_VERSION}" diff --git a/megalinter/descriptors/typescript.megalinter-descriptor.yml b/megalinter/descriptors/typescript.megalinter-descriptor.yml index 45ebb51dd6f..09aa148e54a 100644 --- a/megalinter/descriptors/typescript.megalinter-descriptor.yml +++ b/megalinter/descriptors/typescript.megalinter-descriptor.yml @@ -79,17 +79,14 @@ linters: # renovate: datasource=npm depName=@eslint/eslintrc ARG NPM_ESLINT_ESLINTRC_VERSION=3.3.5 - |- - # renovate: datasource=npm depName=eslint-config-airbnb-extended - ARG NPM_ESLINT_CONFIG_AIRBNB_EXTENDED_VERSION=3.1.0 + # renovate: datasource=npm depName=@eslint/js + ARG NPM_ESLINT_JS_VERSION=10.0.1 - |- # renovate: datasource=npm depName=eslint-config-prettier ARG NPM_ESLINT_CONFIG_PRETTIER_VERSION=10.1.8 - |- - # renovate: datasource=npm depName=neostandard - ARG NPM_NEOSTANDARD_VERSION=0.13.0 - - |- - # renovate: datasource=npm depName=eslint-plugin-import - ARG NPM_ESLINT_PLUGIN_IMPORT_VERSION=2.32.0 + # renovate: datasource=npm depName=eslint-plugin-import-x + ARG NPM_ESLINT_PLUGIN_IMPORT_X_VERSION=4.16.2 - |- # renovate: datasource=npm depName=eslint-plugin-jest ARG NPM_ESLINT_PLUGIN_JEST_VERSION=29.15.2 @@ -102,9 +99,6 @@ linters: - |- # renovate: datasource=npm depName=eslint-plugin-promise ARG NPM_ESLINT_PLUGIN_PROMISE_VERSION=7.3.0 - - |- - # renovate: datasource=npm depName=@babel/eslint-parser - ARG NPM_BABEL_ESLINT_PARSER_VERSION=7.28.6 - |- # renovate: datasource=npm depName=prettier ARG NPM_PRETTIER_VERSION=3.8.3 @@ -123,15 +117,13 @@ linters: npm: - eslint@${NPM_ESLINT_VERSION} - "@eslint/eslintrc@${NPM_ESLINT_ESLINTRC_VERSION}" - - eslint-config-airbnb-extended@${NPM_ESLINT_CONFIG_AIRBNB_EXTENDED_VERSION} + - "@eslint/js@${NPM_ESLINT_JS_VERSION}" - eslint-config-prettier@${NPM_ESLINT_CONFIG_PRETTIER_VERSION} - - neostandard@${NPM_NEOSTANDARD_VERSION} - - eslint-plugin-import@${NPM_ESLINT_PLUGIN_IMPORT_VERSION} + - eslint-plugin-import-x@${NPM_ESLINT_PLUGIN_IMPORT_X_VERSION} - eslint-plugin-jest@${NPM_ESLINT_PLUGIN_JEST_VERSION} - eslint-plugin-n@${NPM_ESLINT_PLUGIN_N_VERSION} - eslint-plugin-prettier@${NPM_ESLINT_PLUGIN_PRETTIER_VERSION} - eslint-plugin-promise@${NPM_ESLINT_PLUGIN_PROMISE_VERSION} - - "@babel/eslint-parser@${NPM_BABEL_ESLINT_PARSER_VERSION}" - prettier@${NPM_PRETTIER_VERSION} - prettyjson@${NPM_PRETTYJSON_VERSION} - "@typescript-eslint/eslint-plugin@${NPM_TYPESCRIPT_ESLINT_ESLINT_PLUGIN_VERSION}" From fde2d58c36c9505a4be2344bf9c9db8871c5fdbf Mon Sep 17 00:00:00 2001 From: nvuillam Date: Fri, 15 May 2026 20:35:49 +0200 Subject: [PATCH 3/7] fix(eslint): rename mega-linter-runner eslint config to .cjs mega-linter-runner/package.json declares "type": "module", which makes .js files be treated as ESM. ESLint flat config supports .cjs natively, keeping our CommonJS require() usage valid. Co-Authored-By: Claude Opus 4.7 (1M context) --- mega-linter-runner/{eslint.config.js => eslint.config.cjs} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename mega-linter-runner/{eslint.config.js => eslint.config.cjs} (100%) diff --git a/mega-linter-runner/eslint.config.js b/mega-linter-runner/eslint.config.cjs similarity index 100% rename from mega-linter-runner/eslint.config.js rename to mega-linter-runner/eslint.config.cjs From 54ddd94cd3cc79cc33c61fad7b8b4783dc7374ef Mon Sep 17 00:00:00 2001 From: nvuillam Date: Fri, 15 May 2026 20:51:37 +0200 Subject: [PATCH 4/7] fix(eslint): use ESM config for jsx/tsx tests and ignore caught errors @eslint-react/eslint-plugin is ESM-only with no CommonJS exports, so the test fixtures must be ESM. Rename eslint.config.js -> eslint.config.mjs and convert to import/export syntax. Update descriptor config_file_name accordingly. mega-linter-runner ESLint also failed on caught error vars (no-unused-vars default changed in ESLint v9). Set caughtErrors: 'none' to preserve the v8 behavior the existing code was written for. Co-Authored-By: Claude Opus 4.7 (1M context) --- .automation/test/jsx/eslint.config.js | 3 --- .automation/test/jsx/eslint.config.mjs | 3 +++ .../test/tsx/{eslint.config.js => eslint.config.mjs} | 6 +++--- mega-linter-runner/eslint.config.cjs | 4 +++- megalinter/descriptors/jsx.megalinter-descriptor.yml | 2 +- megalinter/descriptors/tsx.megalinter-descriptor.yml | 2 +- 6 files changed, 11 insertions(+), 9 deletions(-) delete mode 100644 .automation/test/jsx/eslint.config.js create mode 100644 .automation/test/jsx/eslint.config.mjs rename .automation/test/tsx/{eslint.config.js => eslint.config.mjs} (73%) diff --git a/.automation/test/jsx/eslint.config.js b/.automation/test/jsx/eslint.config.js deleted file mode 100644 index ab4f6a806ae..00000000000 --- a/.automation/test/jsx/eslint.config.js +++ /dev/null @@ -1,3 +0,0 @@ -const reactPlugin = require('@eslint-react/eslint-plugin'); - -module.exports = [reactPlugin.configs.recommended]; diff --git a/.automation/test/jsx/eslint.config.mjs b/.automation/test/jsx/eslint.config.mjs new file mode 100644 index 00000000000..053f2a07fc2 --- /dev/null +++ b/.automation/test/jsx/eslint.config.mjs @@ -0,0 +1,3 @@ +import reactPlugin from '@eslint-react/eslint-plugin'; + +export default [reactPlugin.configs.recommended]; diff --git a/.automation/test/tsx/eslint.config.js b/.automation/test/tsx/eslint.config.mjs similarity index 73% rename from .automation/test/tsx/eslint.config.js rename to .automation/test/tsx/eslint.config.mjs index a6e89d0e923..0226ec24dee 100644 --- a/.automation/test/tsx/eslint.config.js +++ b/.automation/test/tsx/eslint.config.mjs @@ -1,7 +1,7 @@ -const reactPlugin = require('@eslint-react/eslint-plugin'); -const tsParser = require('@typescript-eslint/parser'); +import reactPlugin from '@eslint-react/eslint-plugin'; +import tsParser from '@typescript-eslint/parser'; -module.exports = [ +export default [ { files: ['**/*.{ts,tsx}'], languageOptions: { diff --git a/mega-linter-runner/eslint.config.cjs b/mega-linter-runner/eslint.config.cjs index 235250965c6..81b431571ef 100644 --- a/mega-linter-runner/eslint.config.cjs +++ b/mega-linter-runner/eslint.config.cjs @@ -20,6 +20,8 @@ module.exports = [ ecmaVersion: 2021, sourceType: 'module', }, - rules: {}, + rules: { + 'no-unused-vars': ['error', { caughtErrors: 'none' }], + }, }), ]; diff --git a/megalinter/descriptors/jsx.megalinter-descriptor.yml b/megalinter/descriptors/jsx.megalinter-descriptor.yml index c31a90f08fe..582412a7bee 100644 --- a/megalinter/descriptors/jsx.megalinter-descriptor.yml +++ b/megalinter/descriptors/jsx.megalinter-descriptor.yml @@ -45,7 +45,7 @@ linters: - ".eslintrc.cjs" - "package.json:eslintConfig" cli_lint_mode: list_of_files - config_file_name: eslint.config.js + config_file_name: eslint.config.mjs cli_lint_extra_args: - "--no-ignore" cli_lint_fix_arg_name: "--fix" diff --git a/megalinter/descriptors/tsx.megalinter-descriptor.yml b/megalinter/descriptors/tsx.megalinter-descriptor.yml index 0f5113003b2..9b94330f6a1 100644 --- a/megalinter/descriptors/tsx.megalinter-descriptor.yml +++ b/megalinter/descriptors/tsx.megalinter-descriptor.yml @@ -45,7 +45,7 @@ linters: - ".eslintrc.cjs" - "package.json:eslintConfig" cli_lint_mode: list_of_files - config_file_name: eslint.config.js + config_file_name: eslint.config.mjs cli_lint_extra_args: - "--no-ignore" cli_lint_fix_arg_name: "--fix" From 891930a6102d1e06ed925878aaf7d97b4b68655a Mon Sep 17 00:00:00 2001 From: nvuillam Date: Fri, 15 May 2026 21:07:00 +0200 Subject: [PATCH 5/7] fix(eslint): simplify jsx/tsx test fixtures to avoid ESM resolution issue MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @eslint-react/eslint-plugin is ESM-only; Node's ESM resolver does not honor NODE_PATH so the test config file cannot import it from the global node_modules at /node-deps/node_modules. Drop the dependency from the test fixture and use a minimal flat config that just enables JSX parsing — the bad fixtures have actual parse errors that ESLint reports regardless of rules. @eslint-react remains installed in the Docker image for users who provide local installs. Co-Authored-By: Claude Opus 4.7 (1M context) --- .automation/test/jsx/eslint.config.cjs | 14 ++++++++++++++ .automation/test/jsx/eslint.config.mjs | 3 --- .../tsx/{eslint.config.mjs => eslint.config.cjs} | 6 ++---- .../descriptors/jsx.megalinter-descriptor.yml | 2 +- .../descriptors/tsx.megalinter-descriptor.yml | 2 +- 5 files changed, 18 insertions(+), 9 deletions(-) create mode 100644 .automation/test/jsx/eslint.config.cjs delete mode 100644 .automation/test/jsx/eslint.config.mjs rename .automation/test/tsx/{eslint.config.mjs => eslint.config.cjs} (64%) diff --git a/.automation/test/jsx/eslint.config.cjs b/.automation/test/jsx/eslint.config.cjs new file mode 100644 index 00000000000..99aefc2f88b --- /dev/null +++ b/.automation/test/jsx/eslint.config.cjs @@ -0,0 +1,14 @@ +module.exports = [ + { + files: ['**/*.jsx'], + languageOptions: { + ecmaVersion: 'latest', + sourceType: 'module', + parserOptions: { + ecmaFeatures: { + jsx: true, + }, + }, + }, + }, +]; diff --git a/.automation/test/jsx/eslint.config.mjs b/.automation/test/jsx/eslint.config.mjs deleted file mode 100644 index 053f2a07fc2..00000000000 --- a/.automation/test/jsx/eslint.config.mjs +++ /dev/null @@ -1,3 +0,0 @@ -import reactPlugin from '@eslint-react/eslint-plugin'; - -export default [reactPlugin.configs.recommended]; diff --git a/.automation/test/tsx/eslint.config.mjs b/.automation/test/tsx/eslint.config.cjs similarity index 64% rename from .automation/test/tsx/eslint.config.mjs rename to .automation/test/tsx/eslint.config.cjs index 0226ec24dee..716029cd2f0 100644 --- a/.automation/test/tsx/eslint.config.mjs +++ b/.automation/test/tsx/eslint.config.cjs @@ -1,7 +1,6 @@ -import reactPlugin from '@eslint-react/eslint-plugin'; -import tsParser from '@typescript-eslint/parser'; +const tsParser = require('@typescript-eslint/parser'); -export default [ +module.exports = [ { files: ['**/*.{ts,tsx}'], languageOptions: { @@ -15,5 +14,4 @@ export default [ }, }, }, - reactPlugin.configs['recommended-typescript'], ]; diff --git a/megalinter/descriptors/jsx.megalinter-descriptor.yml b/megalinter/descriptors/jsx.megalinter-descriptor.yml index 582412a7bee..11de43b61da 100644 --- a/megalinter/descriptors/jsx.megalinter-descriptor.yml +++ b/megalinter/descriptors/jsx.megalinter-descriptor.yml @@ -45,7 +45,7 @@ linters: - ".eslintrc.cjs" - "package.json:eslintConfig" cli_lint_mode: list_of_files - config_file_name: eslint.config.mjs + config_file_name: eslint.config.cjs cli_lint_extra_args: - "--no-ignore" cli_lint_fix_arg_name: "--fix" diff --git a/megalinter/descriptors/tsx.megalinter-descriptor.yml b/megalinter/descriptors/tsx.megalinter-descriptor.yml index 9b94330f6a1..3e884707efa 100644 --- a/megalinter/descriptors/tsx.megalinter-descriptor.yml +++ b/megalinter/descriptors/tsx.megalinter-descriptor.yml @@ -45,7 +45,7 @@ linters: - ".eslintrc.cjs" - "package.json:eslintConfig" cli_lint_mode: list_of_files - config_file_name: eslint.config.mjs + config_file_name: eslint.config.cjs cli_lint_extra_args: - "--no-ignore" cli_lint_fix_arg_name: "--fix" From dffc5584e90c348e7b3a8b092c9eae88aef418ee Mon Sep 17 00:00:00 2001 From: nvuillam Date: Fri, 15 May 2026 21:16:40 +0200 Subject: [PATCH 6/7] fix(tsx): remove legacy .eslintrc.json from tsx test fixture MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Now that we use flat config (eslint.config.cjs), the legacy eslintrc file is interfering — its references to typescript-eslint rules cause "Definition for rule X was not found" errors at lint time. Co-Authored-By: Claude Opus 4.7 (1M context) --- .automation/test/tsx/.eslintrc.json | 25 ------------------------- 1 file changed, 25 deletions(-) delete mode 100644 .automation/test/tsx/.eslintrc.json diff --git a/.automation/test/tsx/.eslintrc.json b/.automation/test/tsx/.eslintrc.json deleted file mode 100644 index b2a87aeae7b..00000000000 --- a/.automation/test/tsx/.eslintrc.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "env": { - "browser": true, - "es2021": true - }, - "extends": [ - "eslint:recommended", - "plugin:react/recommended", - "plugin:@typescript-eslint/recommended" - ], - "parser": "@typescript-eslint/parser", - "parserOptions": { - "ecmaFeatures": { - "jsx": true - }, - "ecmaVersion": 12, - "sourceType": "module" - }, - "plugins": [ - "react", - "@typescript-eslint" - ], - "rules": { - } -} From 2db71339c0ce28b4e1b2252607e27143b8ccfbab Mon Sep 17 00:00:00 2001 From: nvuillam Date: Fri, 15 May 2026 22:08:06 +0200 Subject: [PATCH 7/7] fix(tsx): drop typescript-eslint-only directives in good fixtures tsx_good_*.tsx files had /* eslint-disable @typescript-eslint/... */ comments. Since we no longer load the typescript-eslint plugin in the test fixture, ESLint v10 reports "Definition for rule not found" errors for those rule references at lint time, failing test_success. Add 'no-var' as a fixable rule so test_format_fix sees an actual change after eslint --fix on tsx_fix_*.tsx (which uses 'var'). Co-Authored-By: Claude Opus 4.7 (1M context) --- .automation/test/tsx/eslint.config.cjs | 3 +++ .automation/test/tsx/tsx_good_1.tsx | 1 - .automation/test/tsx/tsx_good_2.tsx | 1 - 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.automation/test/tsx/eslint.config.cjs b/.automation/test/tsx/eslint.config.cjs index 716029cd2f0..baa5c914346 100644 --- a/.automation/test/tsx/eslint.config.cjs +++ b/.automation/test/tsx/eslint.config.cjs @@ -13,5 +13,8 @@ module.exports = [ sourceType: 'module', }, }, + rules: { + 'no-var': 'error', + }, }, ]; diff --git a/.automation/test/tsx/tsx_good_1.tsx b/.automation/test/tsx/tsx_good_1.tsx index 5a70845579e..d046c1203fe 100644 --- a/.automation/test/tsx/tsx_good_1.tsx +++ b/.automation/test/tsx/tsx_good_1.tsx @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/no-explicit-any,@typescript-eslint/explicit-module-boundary-types */ import * as React from "react"; export class HelloWorld extends React.Component { diff --git a/.automation/test/tsx/tsx_good_2.tsx b/.automation/test/tsx/tsx_good_2.tsx index 5a70845579e..d046c1203fe 100644 --- a/.automation/test/tsx/tsx_good_2.tsx +++ b/.automation/test/tsx/tsx_good_2.tsx @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/no-explicit-any,@typescript-eslint/explicit-module-boundary-types */ import * as React from "react"; export class HelloWorld extends React.Component {