Version 1.1.78
[e-mobility-charging-stations-simulator.git] / .eslintrc
index 409a11b2bb901464f2b28fbf46d026daef3c571a..ec06420e381ad286be503c0defd0101e93fedcc5 100644 (file)
--- a/.eslintrc
+++ b/.eslintrc
@@ -1,9 +1,17 @@
 {
   "root": true,
+  "env": {
+    "es2020": true,
+    "node": true,
+    "mocha": true
+  },
+  "parserOptions": {
+    "ecmaVersion": 2020,
+    "sourceType": "module"
+  },
   "extends": [
     "eslint:recommended",
-    "plugin:import/errors",
-    "plugin:import/warnings",
+    "plugin:import/recommended",
     "plugin:jsdoc/recommended",
     "plugin:prettier/recommended"
   ],
   "settings": {
     "jsdoc": {
       "mode": "typescript"
+    },
+    "import/resolver": {
+      "typescript": {
+        "project": "./tsconfig.json"
+      }
     }
   },
   "rules": {
+    "semi": ["error", "always"],
     "space-before-blocks": ["error", "always"],
     "curly": ["error", "all"],
     "brace-style": "error",
     "eqeqeq": ["error", "always"],
     "no-else-return": "error",
     "no-eq-null": "error",
-    "no-undefined": "error",
     "no-extra-bind": "error",
     "no-lone-blocks": "error",
     "no-multi-spaces": "error",
@@ -73,6 +86,7 @@
     "no-lonely-if": "error",
     "no-trailing-spaces": "error",
     "no-whitespace-before-property": "error",
+    "no-shadow": "error",
     "space-in-parens": ["error", "never"],
     "space-infix-ops": "error",
     "space-unary-ops": "error",
       "warn",
       {
         "ignoreCase": false,
-        "ignoreDeclarationSort": false,
+        "ignoreDeclarationSort": true,
         "ignoreMemberSort": false,
-        "memberSyntaxSortOrder": ["none", "all", "multiple", "single"]
+        "memberSyntaxSortOrder": ["none", "all", "multiple", "single"],
+        "allowSeparatedGroups": true
+      }
+    ],
+    "import/no-unresolved": "error",
+    "import/order": [
+      "error",
+      {
+        "groups": [
+          "builtin", // Built-in imports (come from NodeJS native) go first
+          "external", // <- External imports
+          "internal", // <- Absolute imports
+          ["sibling", "parent"], // <- Relative imports, the sibling and parent types they can be mingled together
+          "index", // <- Index imports
+          "unknown" // <- Unknown
+        ],
+        "newlines-between": "always",
+        "alphabetize": {
+          /* Sort in ascending order. Options: ["ignore", "asc", "desc"] */
+          "order": "asc",
+          /* Ignore case. Options: [true, false] */
+          "caseInsensitive": true
+        }
       }
     ],
     "object-curly-spacing": ["error", "always"],
       "files": ["**/*.ts"],
       "parser": "@typescript-eslint/parser",
       "parserOptions": {
+        "ecmaVersion": 2020,
+        "sourceType": "module",
         "project": "./tsconfig.json"
       },
       "extends": [
         "@typescript-eslint/no-floating-promises": "error",
         "@typescript-eslint/promise-function-async": "error",
         "@typescript-eslint/no-misused-promises": "error",
-        "no-shadow": "off", // This one is generating false positive no-shadow errors on exported/const enums
+        "no-shadow": "off",
         "@typescript-eslint/no-shadow": "error"
       }
     },