9a860ac8e686f9f058b45f196eb713264fa6bc13
[e-mobility-charging-stations-simulator.git] / .eslintrc
1 {
2 "root": true,
3 "env": {
4 "es2020": true,
5 "node": true,
6 "mocha": true
7 },
8 "parserOptions": {
9 "ecmaVersion": 2020,
10 "sourceType": "module"
11 },
12 "extends": [
13 "eslint:recommended",
14 "plugin:import/recommended",
15 "plugin:jsdoc/recommended",
16 "plugin:prettier/recommended"
17 ],
18 "plugins": ["import", "jsdoc"],
19 "settings": {
20 "jsdoc": {
21 "mode": "typescript"
22 }
23 },
24 "rules": {
25 "space-before-blocks": ["error", "always"],
26 "curly": ["error", "all"],
27 "brace-style": "error",
28 "eqeqeq": ["error", "always"],
29 "no-else-return": "error",
30 "no-eq-null": "error",
31 "no-extra-bind": "error",
32 "no-lone-blocks": "error",
33 "no-multi-spaces": "error",
34 "no-empty": "error",
35 "no-return-assign": ["error", "always"],
36 "no-useless-catch": "error",
37 "no-useless-return": "error",
38 "no-multiple-empty-lines": [
39 "error",
40 {
41 "max": 2,
42 "maxEOF": 1
43 }
44 ],
45 "block-spacing": "error",
46 // "capitalized-comments": [
47 // "error",
48 // "always",
49 // {
50 // "ignoreConsecutiveComments": true,
51 // "ignorePattern": "pragma|ignored"
52 // }
53 // ],
54 "eol-last": ["error", "always"],
55 "consistent-this": ["error", "self"],
56 "func-call-spacing": ["error", "never"],
57 "keyword-spacing": ["error"],
58 "id-blacklist": [
59 "error",
60 "any",
61 "Number",
62 "number",
63 "String",
64 "string",
65 "Boolean",
66 "boolean",
67 "Undefined",
68 "undefined",
69 "Symbol",
70 "symbol"
71 ],
72 "linebreak-style": ["error", "unix"],
73 "max-len": [
74 "warn",
75 {
76 "code": 100,
77 "ignoreUrls": true
78 }
79 ],
80 "no-lonely-if": "error",
81 "no-trailing-spaces": "error",
82 "no-whitespace-before-property": "error",
83 "space-in-parens": ["error", "never"],
84 "space-infix-ops": "error",
85 "space-unary-ops": "error",
86 "spaced-comment": ["error", "always"],
87 "switch-colon-spacing": "error",
88 "arrow-body-style": ["error", "as-needed"],
89 "arrow-parens": ["error", "always"],
90 "arrow-spacing": "error",
91 "no-duplicate-imports": "error",
92 "no-var": "error",
93 "prefer-const": "error",
94 "sort-imports": [
95 "warn",
96 {
97 "ignoreCase": false,
98 "ignoreDeclarationSort": false,
99 "ignoreMemberSort": false,
100 "memberSyntaxSortOrder": ["none", "all", "multiple", "single"]
101 }
102 ],
103 "object-curly-spacing": ["error", "always"],
104 "lines-between-class-members": [
105 "error",
106 "always",
107 {
108 "exceptAfterSingleLine": true
109 }
110 ],
111 "quotes": [
112 "error",
113 "single",
114 {
115 "avoidEscape": true,
116 "allowTemplateLiterals": false
117 }
118 ]
119 },
120 "overrides": [
121 {
122 "files": ["**/*.ts"],
123 "parser": "@typescript-eslint/parser",
124 "parserOptions": {
125 "ecmaVersion": 2020,
126 "sourceType": "module",
127 "project": "./tsconfig.json"
128 },
129 "extends": [
130 "plugin:@typescript-eslint/recommended",
131 "plugin:@typescript-eslint/recommended-requiring-type-checking",
132 "plugin:import/typescript"
133 ],
134 "plugins": ["@typescript-eslint"],
135 "rules": {
136 "@typescript-eslint/array-type": "off",
137 "semi": "off",
138 "@typescript-eslint/semi": ["error", "always"],
139 "@typescript-eslint/no-empty-function": "warn",
140 "@typescript-eslint/member-ordering": "error",
141 "@typescript-eslint/await-thenable": "error",
142 "@typescript-eslint/no-floating-promises": "error",
143 "@typescript-eslint/promise-function-async": "error",
144 "@typescript-eslint/no-misused-promises": "error",
145 "no-shadow": "off", // This one is generating false positive no-shadow errors on exported/const enums
146 "@typescript-eslint/no-shadow": "error"
147 }
148 },
149 {
150 "files": ["**/*.js"],
151 "extends": "plugin:node/recommended",
152 "rules": {
153 "node/shebang": "off"
154 }
155 }
156 ]
157 }