build(simulator): switch to strict type checking
[e-mobility-charging-stations-simulator.git] / .eslintrc.json
index 21d94099589070e9893a2edea0fdcc25d97cdca4..2b20e8ddd73ad7fcd2b093ca2d138550bcb0e12e 100644 (file)
@@ -1,25 +1,18 @@
 {
+  "$schema": "https://json.schemastore.org/eslintrc",
   "root": true,
   "env": {
-    "es2020": true,
+    "es2022": true,
     "node": true,
     "mocha": true
   },
   "parserOptions": {
-    "ecmaVersion": 2020,
+    "ecmaVersion": 2022,
     "sourceType": "module"
   },
-  "extends": [
-    "eslint:recommended",
-    "plugin:import/recommended",
-    "plugin:jsdoc/recommended",
-    "plugin:prettier/recommended"
-  ],
-  "plugins": ["import", "jsdoc"],
+  "plugins": ["import"],
+  "extends": ["eslint:recommended", "plugin:import/recommended", "plugin:prettier/recommended"],
   "settings": {
-    "jsdoc": {
-      "mode": "typescript"
-    },
     "import/resolver": {
       "typescript": {
         "project": "./tsconfig.json"
     "space-unary-ops": "error",
     "spaced-comment": ["error", "always"],
     "switch-colon-spacing": "error",
-    "arrow-body-style": ["error", "as-needed"],
     "arrow-parens": ["error", "always"],
     "arrow-spacing": "error",
     "no-duplicate-imports": "error",
     "no-var": "error",
     "prefer-const": "error",
     "sort-imports": [
-      "warn",
+      "error",
       {
         "ignoreCase": false,
         "ignoreDeclarationSort": true,
         "allowSeparatedGroups": true
       }
     ],
-    "import/no-unresolved": "error",
     "import/order": [
       "error",
       {
       "files": ["**/*.ts"],
       "parser": "@typescript-eslint/parser",
       "parserOptions": {
-        "project": "./tsconfig.json"
+        "project": true,
+        "tsconfigRootDir": "./"
       },
+      "plugins": ["@typescript-eslint", "eslint-plugin-tsdoc"],
       "extends": [
-        "plugin:@typescript-eslint/eslint-recommended",
-        "plugin:@typescript-eslint/recommended",
-        "plugin:@typescript-eslint/recommended-requiring-type-checking",
+        "plugin:@typescript-eslint/recommended-type-checked",
+        "plugin:@typescript-eslint/stylistic-type-checked",
         "plugin:import/typescript"
       ],
-      "plugins": ["@typescript-eslint"],
       "rules": {
+        "tsdoc/syntax": "warn",
         "@typescript-eslint/array-type": "off",
         "semi": "off",
         "@typescript-eslint/semi": ["error", "always"],
       }
     },
     {
-      "files": ["**/*.js"],
-      "extends": "plugin:n/recommended",
+      "files": ["**/*.js", "**/*.cjs", "**/*.mjs"],
+      "plugins": ["jsdoc"],
+      "extends": ["plugin:jsdoc/recommended", "plugin:n/recommended"],
       "rules": {
         "n/shebang": "off"
       }