diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 50c6cc4..0000000 --- a/.eslintignore +++ /dev/null @@ -1,2 +0,0 @@ -**/*.js -vendor/** diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index c7bf371..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1,34 +0,0 @@ -module.exports = { - root: true, - parser: "@typescript-eslint/parser", - parserOptions: { - tsconfigRootDir: __dirname, - project: ["./tsconfig.json"] - }, - plugins: ["@typescript-eslint"], - extends: [ - "eslint:recommended", - "plugin:@typescript-eslint/recommended", - "plugin:@typescript-eslint/recommended-type-checked", - "plugin:@typescript-eslint/strict", - "plugin:@typescript-eslint/strict-type-checked", - "plugin:@typescript-eslint/stylistic", - "plugin:@typescript-eslint/stylistic-type-checked", - "prettier" - ], - rules: { - "@typescript-eslint/no-non-null-assertion": 0, - "@typescript-eslint/consistent-type-definitions": 0, - "@typescript-eslint/prefer-nullish-coalescing": 0, - "@typescript-eslint/no-unused-vars": [ - "error", { - "argsIgnorePattern": "^_" - } - ], - "@typescript-eslint/strict-boolean-expressions": [ - "error", { - "allowNullableBoolean": true - } - ], - } -}; \ No newline at end of file diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000..f141457 --- /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 }], + }, + }, +]; \ No newline at end of file