feat(simulator): switch TS transpiler to ECMAScript 2022
[e-mobility-charging-stations-simulator.git] / .eslintrc.json
CommitLineData
7dde0b73 1{
6af9012e 2 "root": true,
073bd098 3 "env": {
c5f2c258 4 "es2022": true,
073bd098
JB
5 "node": true,
6 "mocha": true
6f6652de 7 },
073bd098 8 "parserOptions": {
c5f2c258 9 "ecmaVersion": 2022,
073bd098
JB
10 "sourceType": "module"
11 },
0e4fa348
JB
12 "plugins": ["import"],
13 "extends": ["eslint:recommended", "plugin:import/recommended", "plugin:prettier/recommended"],
4592b693 14 "settings": {
8114d10e
JB
15 "import/resolver": {
16 "typescript": {
17 "project": "./tsconfig.json"
18 }
4592b693
JB
19 }
20 },
7dde0b73 21 "rules": {
4195af92 22 "semi": ["error", "always"],
e7aeea18 23 "space-before-blocks": ["error", "always"],
10068088 24 "curly": ["error", "all"],
6af9012e 25 "brace-style": "error",
e7aeea18 26 "eqeqeq": ["error", "always"],
6af9012e
JB
27 "no-else-return": "error",
28 "no-eq-null": "error",
6af9012e
JB
29 "no-extra-bind": "error",
30 "no-lone-blocks": "error",
31 "no-multi-spaces": "error",
32 "no-empty": "error",
e7aeea18 33 "no-return-assign": ["error", "always"],
6af9012e
JB
34 "no-useless-catch": "error",
35 "no-useless-return": "error",
6af9012e
JB
36 "no-multiple-empty-lines": [
37 "error",
38 {
39 "max": 2,
40 "maxEOF": 1
41 }
42 ],
43 "block-spacing": "error",
56a74dae
JB
44 // "capitalized-comments": [
45 // "error",
46 // "always",
47 // {
48 // "ignoreConsecutiveComments": true,
49 // "ignorePattern": "pragma|ignored"
50 // }
51 // ],
e7aeea18
JB
52 "eol-last": ["error", "always"],
53 "consistent-this": ["error", "self"],
54 "func-call-spacing": ["error", "never"],
55 "keyword-spacing": ["error"],
89f8216b
JB
56 "id-blacklist": [
57 "error",
58 "any",
59 "Number",
60 "number",
61 "String",
62 "string",
63 "Boolean",
64 "boolean",
65 "Undefined",
66 "undefined",
67 "Symbol",
68 "symbol"
69 ],
e7aeea18 70 "linebreak-style": ["error", "unix"],
84393381
JB
71 "max-len": [
72 "warn",
73 {
568c816c 74 "code": 100,
10068088 75 "ignoreUrls": true
84393381 76 }
6af9012e
JB
77 ],
78 "no-lonely-if": "error",
79 "no-trailing-spaces": "error",
80 "no-whitespace-before-property": "error",
4195af92 81 "no-shadow": "error",
e7aeea18 82 "space-in-parens": ["error", "never"],
6af9012e
JB
83 "space-infix-ops": "error",
84 "space-unary-ops": "error",
e7aeea18 85 "spaced-comment": ["error", "always"],
6af9012e 86 "switch-colon-spacing": "error",
72092cfc 87 "arrow-parens": ["error", "always"],
6af9012e
JB
88 "arrow-spacing": "error",
89 "no-duplicate-imports": "error",
90 "no-var": "error",
91 "prefer-const": "error",
92 "sort-imports": [
93 "warn",
94 {
95 "ignoreCase": false,
8114d10e 96 "ignoreDeclarationSort": true,
6af9012e 97 "ignoreMemberSort": false,
8114d10e
JB
98 "memberSyntaxSortOrder": ["none", "all", "multiple", "single"],
99 "allowSeparatedGroups": true
100 }
101 ],
102 "import/no-unresolved": "error",
103 "import/order": [
104 "error",
105 {
106 "groups": [
107 "builtin", // Built-in imports (come from NodeJS native) go first
108 "external", // <- External imports
109 "internal", // <- Absolute imports
110 ["sibling", "parent"], // <- Relative imports, the sibling and parent types they can be mingled together
111 "index", // <- Index imports
112 "unknown" // <- Unknown
113 ],
114 "newlines-between": "always",
115 "alphabetize": {
116 /* Sort in ascending order. Options: ["ignore", "asc", "desc"] */
117 "order": "asc",
118 /* Ignore case. Options: [true, false] */
119 "caseInsensitive": true
120 }
6af9012e
JB
121 }
122 ],
e7aeea18 123 "object-curly-spacing": ["error", "always"],
6af9012e
JB
124 "lines-between-class-members": [
125 "error",
126 "always",
127 {
128 "exceptAfterSingleLine": true
129 }
130 ],
10068088
JB
131 "quotes": [
132 "error",
133 "single",
134 {
135 "avoidEscape": true,
136 "allowTemplateLiterals": false
137 }
138 ]
d1c056a1
JB
139 },
140 "overrides": [
141 {
9534e74e
JB
142 "files": ["**/*.ts"],
143 "parser": "@typescript-eslint/parser",
144 "parserOptions": {
145 "project": "./tsconfig.json"
146 },
0e4fa348 147 "plugins": ["@typescript-eslint", "eslint-plugin-tsdoc"],
9534e74e 148 "extends": [
8cf5a57e 149 "plugin:@typescript-eslint/eslint-recommended",
9534e74e
JB
150 "plugin:@typescript-eslint/recommended",
151 "plugin:@typescript-eslint/recommended-requiring-type-checking",
152 "plugin:import/typescript"
153 ],
9534e74e 154 "rules": {
0e4fa348 155 "tsdoc/syntax": "warn",
9534e74e
JB
156 "@typescript-eslint/array-type": "off",
157 "semi": "off",
158 "@typescript-eslint/semi": ["error", "always"],
159 "@typescript-eslint/no-empty-function": "warn",
160 "@typescript-eslint/member-ordering": "error",
161 "@typescript-eslint/await-thenable": "error",
162 "@typescript-eslint/no-floating-promises": "error",
163 "@typescript-eslint/promise-function-async": "error",
164 "@typescript-eslint/no-misused-promises": "error",
4195af92 165 "no-shadow": "off",
9534e74e
JB
166 "@typescript-eslint/no-shadow": "error"
167 }
168 },
169 {
170 "files": ["**/*.js"],
0e4fa348
JB
171 "plugins": ["jsdoc"],
172 "extends": ["plugin:jsdoc/recommended", "plugin:n/recommended"],
d1c056a1 173 "rules": {
ef85c95a 174 "n/shebang": "off"
d1c056a1
JB
175 }
176 }
177 ]
7dde0b73 178}