From 81c089ff7bf17d311cbeac485d6d113a1b3c0d85 Mon Sep 17 00:00:00 2001 From: Alexander Ebert Date: Fri, 1 Nov 2024 16:59:45 +0100 Subject: [PATCH] Migrate ESLint to `eslint.config.mjs` --- .eslintignore | 3 --- .eslintrc.js | 46 -------------------------------- eslint.config.mjs | 68 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 68 insertions(+), 49 deletions(-) delete mode 100644 .eslintignore delete mode 100644 .eslintrc.js create mode 100644 eslint.config.mjs diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 272756e586..0000000000 --- a/.eslintignore +++ /dev/null @@ -1,3 +0,0 @@ -**/*.js -extra -node_modules/** diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 1c0a031b46..0000000000 --- a/.eslintrc.js +++ /dev/null @@ -1,46 +0,0 @@ -module.exports = { - root: true, - parser: "@typescript-eslint/parser", - parserOptions: { - tsconfigRootDir: __dirname, - project: [ - "./tsconfig.json", - "./ts/WoltLabSuite/WebComponent/tsconfig.json" - ] - }, - plugins: ["@typescript-eslint"], - extends: [ - "eslint:recommended", - "plugin:@typescript-eslint/recommended", - "plugin:@typescript-eslint/recommended-requiring-type-checking", - "prettier" - ], - rules: { - "@typescript-eslint/ban-types": [ - "error", { - types: { - "object": false - }, - extendDefaults: true - } - ], - "@typescript-eslint/no-explicit-any": 0, - "@typescript-eslint/no-non-null-assertion": 0, - "@typescript-eslint/no-unsafe-argument": 0, - "@typescript-eslint/no-unsafe-assignment": 0, - "@typescript-eslint/no-unsafe-call": 0, - "@typescript-eslint/no-unsafe-member-access": 0, - "@typescript-eslint/no-unsafe-return": 0, - "@typescript-eslint/no-unused-vars": [ - "error", { - "argsIgnorePattern": "^_", - "varsIgnorePattern": "^_" - } - ], - "@typescript-eslint/no-misused-promises": [ - "error", { - "checksVoidReturn": false - } - ] - } -}; diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000000..a4c1326286 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,68 @@ +import typescriptEslint from "@typescript-eslint/eslint-plugin"; +import tsParser from "@typescript-eslint/parser"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; +import js from "@eslint/js"; +import { FlatCompat } from "@eslint/eslintrc"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); +const compat = new FlatCompat({ + baseDirectory: __dirname, + recommendedConfig: js.configs.recommended, + allConfig: js.configs.all, +}); + +export default [ + { + ignores: ["**/*.js", "**/extra", "node_modules/**/*", "eslint.config.mjs"], + }, + ...compat.extends( + "eslint:recommended", + "plugin:@typescript-eslint/recommended", + "plugin:@typescript-eslint/recommended-requiring-type-checking", + "prettier", + ), + { + plugins: { + "@typescript-eslint": typescriptEslint, + }, + + languageOptions: { + parser: tsParser, + ecmaVersion: 5, + sourceType: "script", + + parserOptions: { + tsconfigRootDir: __dirname, + project: ["./tsconfig.json", "./ts/WoltLabSuite/WebComponent/tsconfig.json"], + }, + }, + + rules: { + "@typescript-eslint/no-explicit-any": 0, + "@typescript-eslint/no-non-null-assertion": 0, + "@typescript-eslint/no-unsafe-argument": 0, + "@typescript-eslint/no-unsafe-assignment": 0, + "@typescript-eslint/no-unsafe-call": 0, + "@typescript-eslint/no-unsafe-member-access": 0, + "@typescript-eslint/no-unsafe-return": 0, + + "@typescript-eslint/no-unused-vars": [ + "error", + { + argsIgnorePattern: "^_", + varsIgnorePattern: "^_", + }, + ], + + "@typescript-eslint/no-misused-promises": [ + "error", + { + checksVoidReturn: false, + }, + ], + "@typescript-eslint/prefer-promise-reject-errors": ["error", { allowEmptyReject: true }], + }, + }, +]; -- 2.20.1