Migrate to the new ESLint configuration
authorAlexander Ebert <ebert@woltlab.com>
Wed, 25 Sep 2024 14:02:11 +0000 (16:02 +0200)
committerAlexander Ebert <ebert@woltlab.com>
Wed, 25 Sep 2024 14:02:11 +0000 (16:02 +0200)
.eslintignore [deleted file]
.eslintrc.js [deleted file]
eslint.config.mjs [new file with mode: 0644]

diff --git a/.eslintignore b/.eslintignore
deleted file mode 100644 (file)
index 272756e..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-**/*.js
-extra
-node_modules/**
diff --git a/.eslintrc.js b/.eslintrc.js
deleted file mode 100644 (file)
index 1c0a031..0000000
+++ /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 (file)
index 0000000..60ff7ac
--- /dev/null
@@ -0,0 +1,78 @@
+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/**/*"],
+       },
+       ...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: "/opt/homebrew/var/www/wcf/WCF",
+                               project: ["./tsconfig.json", "./ts/WoltLabSuite/WebComponent/tsconfig.json"],
+                       },
+               },
+
+               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,
+                               },
+                       ],
+               },
+       },
+];