Spell fixlet in ATG log message
[e-mobility-charging-stations-simulator.git] / .eslintrc
index e34e03a96d318d80b28435c21b53dfccce0ea7d3..2153335c5ebfd5164e4f1b88eded5fc72bd0ff11 100644 (file)
--- a/.eslintrc
+++ b/.eslintrc
 {
-  "parser": "babel-eslint",
+  "root": true,
+  "parser": "@typescript-eslint/parser",
+  "parserOptions": {
+    "project": "./tsconfig.json"
+  },
   "extends": [
     "eslint:recommended",
-    "plugin:flowtype/recommended",
-    "node",
-    "google"
+    "plugin:@typescript-eslint/recommended",
+    "plugin:@typescript-eslint/recommended-requiring-type-checking",
+    "plugin:import/errors",
+    "plugin:import/warnings",
+    "plugin:import/typescript",
+    "plugin:jsdoc/recommended"
   ],
   "plugins": [
-    "flowtype"
+    "import",
+    "jsdoc",
+    "@typescript-eslint"
   ],
+  "settings": {
+    "jsdoc": {
+      "mode": "typescript"
+    }
+  },
   "rules": {
-    "require-jsdoc": 0,
-    "import/no-commonjs": [
+    "indent": "off",
+    "@typescript-eslint/indent": [
+      "error",
       2,
       {
-        "allowRequire": true,
-        "allowPrimitiveModules": true
+        "SwitchCase": 1,
+        "CallExpression": {
+          "arguments": 1
+        },
+        "FunctionDeclaration": {
+          "parameters": 2,
+          "body": 1
+        },
+        "FunctionExpression": {
+          "parameters": 2,
+          "body": 1
+        }
       }
     ],
-    "import/no-nodejs-modules": 0,
-    "flowtype/no-types-missing-file-annotation": 0,
+    "@typescript-eslint/array-type": "off",
+    "semi": "off",
+    "@typescript-eslint/semi": [
+      "error",
+      "always"
+    ],
+    "space-before-blocks": [
+      "error",
+      "always"
+    ],
+    "@typescript-eslint/no-empty-function": [
+      "warn",
+      {
+        "allow": [
+          "arrowFunctions",
+          "methods"
+        ]
+      }
+    ],
+    "@typescript-eslint/member-ordering": "error",
+    "@typescript-eslint/await-thenable": "error",
+    "@typescript-eslint/no-floating-promises": "error",
+    "@typescript-eslint/promise-function-async": "error",
+    "@typescript-eslint/no-misused-promises": "error",
+    "curly": "error",
+    "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",
+    "no-empty": "error",
+    "no-return-assign": [
+      "error",
+      "always"
+    ],
+    "no-useless-catch": "error",
+    "no-useless-return": "error",
+    "no-shadow": "off", // This one is generating false positive no-shadow errors on exported/const enums
+    "@typescript-eslint/no-shadow": "error",
+    "no-multiple-empty-lines": [
+      "error",
+      {
+        "max": 2,
+        "maxEOF": 1
+      }
+    ],
+    "block-spacing": "error",
+    // "capitalized-comments": [
+    //   "error",
+    //   "always",
+    //   {
+    //     "ignoreConsecutiveComments": true,
+    //     "ignorePattern": "pragma|ignored"
+    //   }
+    // ],
+    "eol-last": [
+      "error",
+      "always"
+    ],
+    "consistent-this": [
+      "error",
+      "self"
+    ],
+    "func-call-spacing": [
+      "error",
+      "never"
+    ],
+    "keyword-spacing": [
+      "error"
+    ],
+    "id-blacklist": [
+      "error",
+      "any",
+      "Number",
+      "number",
+      "String",
+      "string",
+      "Boolean",
+      "boolean",
+      "Undefined",
+      "undefined",
+      "Symbol",
+      "symbol"
+    ],
+    "linebreak-style": [
+      "error",
+      "unix"
+    ],
     "max-len": [
       "warn",
       {
         "ignoreRegExpLiterals": true,
         "ignorePattern": "(^(import|export)|(public|private))\\s.+;"
       }
+    ],
+    "no-lonely-if": "error",
+    "no-trailing-spaces": "error",
+    "no-whitespace-before-property": "error",
+    "space-before-function-paren": [
+      "error",
+      {
+        "anonymous": "never",
+        "named": "never",
+        "asyncArrow": "always"
+      }
+    ],
+    "space-in-parens": [
+      "error",
+      "never"
+    ],
+    "space-infix-ops": "error",
+    "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",
+      {
+        "ignoreCase": false,
+        "ignoreDeclarationSort": false,
+        "ignoreMemberSort": false,
+        "memberSyntaxSortOrder": [
+          "none",
+          "all",
+          "multiple",
+          "single"
+        ]
+      }
+    ],
+    "object-curly-spacing": [
+      "error",
+      "always"
+    ],
+    "lines-between-class-members": [
+      "error",
+      "always",
+      {
+        "exceptAfterSingleLine": true
+      }
+    ],
+    "quotes": [
+      "error",
+      "single"
     ]
-  }
+  },
+  "overrides": [
+    {
+      "files": [
+        "*.js"
+      ],
+      "extends": "plugin:node/recommended",
+      "rules": {
+        "node/shebang": "off",
+        "@typescript-eslint/no-unused-vars": "off",
+        "@typescript-eslint/no-var-requires": "off"
+      }
+    }
+  ]
 }