From f91d05adaa1a557eb67b5608e8c1f488aeb38d0d Mon Sep 17 00:00:00 2001 From: CrazyMax <1951866+crazy-max@users.noreply.github.com> Date: Wed, 7 Jan 2026 16:12:56 +0100 Subject: [PATCH] migrate eslint config to new format required since 9.0.0 Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com> --- .eslintignore | 3 --- .eslintrc.json | 24 -------------------- eslint.config.js | 58 ++++++++++++++++++++++++++++++++++++++++++++++++ package.json | 3 +++ yarn.lock | 30 +++++++++++++++++++++++-- 5 files changed, 89 insertions(+), 29 deletions(-) delete mode 100644 .eslintignore delete mode 100644 .eslintrc.json create mode 100644 eslint.config.js diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 98c3dbc..0000000 --- a/.eslintignore +++ /dev/null @@ -1,3 +0,0 @@ -/dist/** -/coverage/** -/node_modules/** diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index 1ea67cd..0000000 --- a/.eslintrc.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "env": { - "node": true, - "es6": true, - "jest": true - }, - "extends": [ - "eslint:recommended", - "plugin:@typescript-eslint/eslint-recommended", - "plugin:@typescript-eslint/recommended", - "plugin:jest/recommended", - "plugin:prettier/recommended" - ], - "parser": "@typescript-eslint/parser", - "parserOptions": { - "ecmaVersion": 2023, - "sourceType": "module" - }, - "plugins": [ - "@typescript-eslint", - "jest", - "prettier" - ] -} diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..9ca00a8 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,58 @@ +/* eslint-disable @typescript-eslint/no-require-imports */ +const {defineConfig, globalIgnores} = require('eslint/config'); +const {fixupConfigRules, fixupPluginRules} = require('@eslint/compat'); +const typescriptEslint = require('@typescript-eslint/eslint-plugin'); +const jestPlugin = require('eslint-plugin-jest'); +const prettier = require('eslint-plugin-prettier'); +const globals = require('globals'); +const tsParser = require('@typescript-eslint/parser'); +const js = require('@eslint/js'); +const {FlatCompat} = require('@eslint/eslintrc'); + +// __dirname and __filename exist natively in CommonJS +const compat = new FlatCompat({ + baseDirectory: __dirname, + recommendedConfig: js.configs.recommended, + allConfig: js.configs.all +}); + +module.exports = defineConfig([ + globalIgnores(['dist/**/*', 'coverage/**/*', 'node_modules/**/*']), + { + // prettier-ignore + extends: fixupConfigRules( + compat.extends( + 'eslint:recommended', + 'plugin:@typescript-eslint/eslint-recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:jest/recommended', + 'plugin:prettier/recommended' + ) + ), + + plugins: { + '@typescript-eslint': fixupPluginRules(typescriptEslint), + jest: fixupPluginRules(jestPlugin), + prettier: fixupPluginRules(prettier) + }, + + languageOptions: { + globals: { + ...globals.node, + ...globals.jest + }, + parser: tsParser, + ecmaVersion: 'latest', + sourceType: 'module' + }, + + rules: { + '@typescript-eslint/no-require-imports': [ + 'error', + { + allowAsImport: true + } + ] + } + } +]); diff --git a/package.json b/package.json index f132217..e2814b1 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,9 @@ "handlebars": "^4.7.7" }, "devDependencies": { + "@eslint/compat": "^2.0.0", + "@eslint/eslintrc": "^3.3.3", + "@eslint/js": "^9.39.2", "@types/node": "^20.19.27", "@typescript-eslint/eslint-plugin": "^8.50.0", "@typescript-eslint/parser": "^8.50.0", diff --git a/yarn.lock b/yarn.lock index ffe83ce..845fc11 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1174,6 +1174,20 @@ __metadata: languageName: node linkType: hard +"@eslint/compat@npm:^2.0.0": + version: 2.0.0 + resolution: "@eslint/compat@npm:2.0.0" + dependencies: + "@eslint/core": ^1.0.0 + peerDependencies: + eslint: ^8.40 || 9 + peerDependenciesMeta: + eslint: + optional: true + checksum: b13e61d2f376744cfa4d2698f50ab12c13f92dbadc853211a8f293b282ab31940c0e7090db33b9be95887b7ebafc8c4f8c497ab39bb830ed5559cf21d079b39e + languageName: node + linkType: hard + "@eslint/config-array@npm:^0.21.1": version: 0.21.1 resolution: "@eslint/config-array@npm:0.21.1" @@ -1203,7 +1217,16 @@ __metadata: languageName: node linkType: hard -"@eslint/eslintrc@npm:^3.3.1": +"@eslint/core@npm:^1.0.0": + version: 1.0.0 + resolution: "@eslint/core@npm:1.0.0" + dependencies: + "@types/json-schema": ^7.0.15 + checksum: 9f32f5c813d4336f94de3ed2f95140d89a842d0b3978254b6f5ddacaa1db5a05cf59d65055040242f91fb5a340638cd3b2bcca875c1b82279a6e63700c80c3cc + languageName: node + linkType: hard + +"@eslint/eslintrc@npm:^3.3.1, @eslint/eslintrc@npm:^3.3.3": version: 3.3.3 resolution: "@eslint/eslintrc@npm:3.3.3" dependencies: @@ -1220,7 +1243,7 @@ __metadata: languageName: node linkType: hard -"@eslint/js@npm:9.39.2": +"@eslint/js@npm:9.39.2, @eslint/js@npm:^9.39.2": version: 9.39.2 resolution: "@eslint/js@npm:9.39.2" checksum: 362aa447266fa5717e762b2b252f177345cb0d7b2954113db9773b3a28898f7cbbc807e07f8078995e6da3f62791f7c5fa2c03517b7170a8e76613cf7fd83c92 @@ -3485,6 +3508,9 @@ __metadata: dependencies: "@actions/core": ^1.11.1 "@docker/actions-toolkit": 0.62.1 + "@eslint/compat": ^2.0.0 + "@eslint/eslintrc": ^3.3.3 + "@eslint/js": ^9.39.2 "@types/node": ^20.19.27 "@typescript-eslint/eslint-plugin": ^8.50.0 "@typescript-eslint/parser": ^8.50.0