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