From: Alexander Ebert Date: Fri, 1 Nov 2024 15:59:45 +0000 (+0100) Subject: Migrate ESLint to `eslint.config.mjs` X-Git-Tag: 6.1.1_dev_1~4^2~8 X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=81c089ff7bf17d311cbeac485d6d113a1b3c0d85;p=GitHub%2FWoltLab%2FWCF.git Migrate ESLint to `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 }], + }, + }, +];