From c3e61d16d7fc99c8ed28a3514656f178863d142f Mon Sep 17 00:00:00 2001 From: CrazyMax <1951866+crazy-max@users.noreply.github.com> Date: Sun, 1 Mar 2026 11:15:53 +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 97c0c7a..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": "latest", - "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 001df65..c6a1622 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,9 @@ "js-yaml": "^4.1.0" }, "devDependencies": { + "@eslint/compat": "^2.0.0", + "@eslint/eslintrc": "^3.3.3", + "@eslint/js": "^9.39.2", "@types/js-yaml": "^4.0.9", "@types/node": "^20.19.27", "@typescript-eslint/eslint-plugin": "^8.50.0", diff --git a/yarn.lock b/yarn.lock index 49f861b..186983e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1830,6 +1830,20 @@ __metadata: languageName: node linkType: hard +"@eslint/compat@npm:^2.0.0": + version: 2.0.2 + resolution: "@eslint/compat@npm:2.0.2" + dependencies: + "@eslint/core": "npm:^1.1.0" + peerDependencies: + eslint: ^8.40 || 9 || 10 + peerDependenciesMeta: + eslint: + optional: true + checksum: 10/027525ddafc0363a82df3ebc82b44214bb32a3e7bec8f4ad9ddb2fc43fa64f1c031f8f39a9164d14ed4a5f431c0abbf4c0b38021e88a5dd36cb19cfd92376acd + languageName: node + linkType: hard + "@eslint/config-array@npm:^0.21.1": version: 0.21.1 resolution: "@eslint/config-array@npm:0.21.1" @@ -1859,7 +1873,16 @@ __metadata: languageName: node linkType: hard -"@eslint/eslintrc@npm:^3.3.1": +"@eslint/core@npm:^1.1.0": + version: 1.1.0 + resolution: "@eslint/core@npm:1.1.0" + dependencies: + "@types/json-schema": "npm:^7.0.15" + checksum: 10/f62724beacbb5fdd3560816a4edbbf832485cbec9516b76037fdf2cc2d75011e546e305a22feaa6bed4c1a26d069dc953979aa3c8c28eccf0a746a5ac53483b0 + languageName: node + linkType: hard + +"@eslint/eslintrc@npm:^3.3.1, @eslint/eslintrc@npm:^3.3.3": version: 3.3.4 resolution: "@eslint/eslintrc@npm:3.3.4" dependencies: @@ -1876,7 +1899,7 @@ __metadata: languageName: node linkType: hard -"@eslint/js@npm:9.39.3": +"@eslint/js@npm:9.39.3, @eslint/js@npm:^9.39.2": version: 9.39.3 resolution: "@eslint/js@npm:9.39.3" checksum: 10/91a1a1822cfeb2eb8a89aae86be5dfabad0b66b0915946516690a8485ddd80b91f43eee346789313fea1acbb7390a4958119ca7dc9a684a5c4014f12fcb3aaf3 @@ -4729,6 +4752,9 @@ __metadata: "@aws-sdk/client-ecr": "npm:^3.978.0" "@aws-sdk/client-ecr-public": "npm:^3.978.0" "@docker/actions-toolkit": "npm:^0.76.0" + "@eslint/compat": "npm:^2.0.0" + "@eslint/eslintrc": "npm:^3.3.3" + "@eslint/js": "npm:^9.39.2" "@types/js-yaml": "npm:^4.0.9" "@types/node": "npm:^20.19.27" "@typescript-eslint/eslint-plugin": "npm:^8.50.0"