@echoes-of-order/eslint-config 1.121.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. package/CHANGELOG.md +1093 -0
  2. package/configs/.gitkeep +1 -0
  3. package/configs/admin.js +203 -0
  4. package/configs/api-client.js +46 -0
  5. package/configs/backend.js +895 -0
  6. package/configs/domains.js +123 -0
  7. package/configs/frontend.js +30 -0
  8. package/configs/image-server.js +26 -0
  9. package/configs/ionos-proxy.js +372 -0
  10. package/configs/nestjs.js +156 -0
  11. package/configs/node.js +92 -0
  12. package/configs/react.js +111 -0
  13. package/configs/wiki.js +42 -0
  14. package/index.js +39 -0
  15. package/package.json +85 -0
  16. package/rules/.gitkeep +1 -0
  17. package/rules/__tests__/analyze-relation-usage.test.js.disabled +300 -0
  18. package/rules/__tests__/complexity.test.js.disabled +300 -0
  19. package/rules/__tests__/enforce-dto-factory-in-services.integration.test.js +226 -0
  20. package/rules/__tests__/enforce-dto-factory-in-services.test.js +177 -0
  21. package/rules/__tests__/enforce-entity-dto-create-no-id.integration.test.js +18 -0
  22. package/rules/__tests__/enforce-function-argument-count.test.js.disabled +300 -0
  23. package/rules/__tests__/enforce-repository-token-handling.test.js +58 -0
  24. package/rules/__tests__/english-only-code-strings.test.js.disabled +300 -0
  25. package/rules/__tests__/eslint-rules.integration.test.ts +350 -0
  26. package/rules/__tests__/integration-test-controller-response-dto.js +261 -0
  27. package/rules/__tests__/integration-test-dto-factory-in-services.js +260 -0
  28. package/rules/__tests__/integration-test-no-entity-type-casting.js +161 -0
  29. package/rules/__tests__/integration-test-typeorm-naming-conventions.js +501 -0
  30. package/rules/__tests__/test-config.js +33 -0
  31. package/rules/admin-controller-security.js +180 -0
  32. package/rules/analyze-relation-usage.js +687 -0
  33. package/rules/api-response-dto.js +174 -0
  34. package/rules/auth-guard-required.js +142 -0
  35. package/rules/backend-specific.js +36 -0
  36. package/rules/best-practices.js +421 -0
  37. package/rules/complexity.js +20 -0
  38. package/rules/controller-architecture.js +340 -0
  39. package/rules/controller-naming-conventions.js +190 -0
  40. package/rules/controller-readonly-restriction.js +148 -0
  41. package/rules/controller-swagger-complete.js +312 -0
  42. package/rules/controller-swagger-docs.js +119 -0
  43. package/rules/controller-swagger-english.js +320 -0
  44. package/rules/coordinate-naming.js +132 -0
  45. package/rules/custom-mui-button.js +135 -0
  46. package/rules/dead-code-detection-backend.js +50 -0
  47. package/rules/dead-code-detection-frontend.js +48 -0
  48. package/rules/dead-code-detection.js +71 -0
  49. package/rules/debug-controller-response-dto.js +79 -0
  50. package/rules/deprecate.js +8 -0
  51. package/rules/dto-annotation-property-consistency.js +111 -0
  52. package/rules/dto-entity-mapping-completeness.js +688 -0
  53. package/rules/dto-entity-swagger-separation.js +265 -0
  54. package/rules/dto-entity-type-consistency.js +352 -0
  55. package/rules/dto-entity-type-matching.js +519 -0
  56. package/rules/dto-naming-convention.js +98 -0
  57. package/rules/dto-visibility-modifiers.js +159 -0
  58. package/rules/enforce-api-versioning.js +122 -0
  59. package/rules/enforce-app-module-registration.js +179 -0
  60. package/rules/enforce-basecontroller.js +152 -0
  61. package/rules/enforce-body-request-dto.js +141 -0
  62. package/rules/enforce-controller-response-dto.js +349 -0
  63. package/rules/enforce-custom-error-classes.js +242 -0
  64. package/rules/enforce-database-transaction-safety.js +179 -0
  65. package/rules/enforce-dto-constructor.js +95 -0
  66. package/rules/enforce-dto-create-parameter-types.js +170 -0
  67. package/rules/enforce-dto-create-pattern.js +274 -0
  68. package/rules/enforce-dto-entity-creation.js +164 -0
  69. package/rules/enforce-dto-factory-in-services.js +188 -0
  70. package/rules/enforce-dto-from-entity-method.js +47 -0
  71. package/rules/enforce-dto-from-entity.js +314 -0
  72. package/rules/enforce-dto-naming-conventions.js +212 -0
  73. package/rules/enforce-dto-naming.js +176 -0
  74. package/rules/enforce-dto-usage-simple.js +114 -0
  75. package/rules/enforce-dto-usage.js +407 -0
  76. package/rules/enforce-eager-translation-loading.js +178 -0
  77. package/rules/enforce-entity-creation-pattern.js +137 -0
  78. package/rules/enforce-entity-dto-convert-method.js +157 -0
  79. package/rules/enforce-entity-dto-create-no-id.js +117 -0
  80. package/rules/enforce-entity-dto-extends-base.js +141 -0
  81. package/rules/enforce-entity-dto-from-request-dto-structure.js +113 -0
  82. package/rules/enforce-entity-dto-fromentity-complex.js +69 -0
  83. package/rules/enforce-entity-dto-fromentity-simple.js +69 -0
  84. package/rules/enforce-entity-dto-fromrequestdto-structure.js +262 -0
  85. package/rules/enforce-entity-dto-methods-restriction.js +159 -0
  86. package/rules/enforce-entity-dto-no-request-dto.js +102 -0
  87. package/rules/enforce-entity-dto-optional-auto-fields.js +101 -0
  88. package/rules/enforce-entity-dto-required-methods.js +248 -0
  89. package/rules/enforce-entity-factory-pattern.js +180 -0
  90. package/rules/enforce-entity-instantiation-in-toentity.js +125 -0
  91. package/rules/enforce-enum-for-playable-entities.js +95 -0
  92. package/rules/enforce-error-handling.js +257 -0
  93. package/rules/enforce-explicit-dto-types.js +118 -0
  94. package/rules/enforce-from-request-dto-usage.js +62 -0
  95. package/rules/enforce-generic-entity-dto.js +71 -0
  96. package/rules/enforce-inject-decorator.js +133 -0
  97. package/rules/enforce-lazy-type-loading.js +170 -0
  98. package/rules/enforce-module-existence.js +157 -0
  99. package/rules/enforce-nonentity-dto-create.js +107 -0
  100. package/rules/enforce-playable-entity-naming.js +108 -0
  101. package/rules/enforce-repository-token-handling.js +92 -0
  102. package/rules/enforce-request-dto-no-entity-dto.js +201 -0
  103. package/rules/enforce-request-dto-required-fields.js +217 -0
  104. package/rules/enforce-result-pattern.js +45 -0
  105. package/rules/enforce-service-relation-loading.js +116 -0
  106. package/rules/enforce-test-coverage.js +96 -0
  107. package/rules/enforce-toentity-conditional-assignment.js +132 -0
  108. package/rules/enforce-translations-required.js +203 -0
  109. package/rules/enforce-typeorm-naming-conventions.js +366 -0
  110. package/rules/enforce-vite-health-metrics.js +240 -0
  111. package/rules/entity-required-properties.js +321 -0
  112. package/rules/entity-to-dto-test.js +73 -0
  113. package/rules/enum-database-validation.js +149 -0
  114. package/rules/errors.js +190 -0
  115. package/rules/es6.js +204 -0
  116. package/rules/eslint-plugin-no-comments.js +44 -0
  117. package/rules/filename-class-name-match.js +62 -0
  118. package/rules/forbid-fromentity-outside-entity-folder.js +237 -0
  119. package/rules/function-params-newline.js +111 -0
  120. package/rules/imports.js +264 -0
  121. package/rules/jest.js +13 -0
  122. package/rules/jsx.js +16 -0
  123. package/rules/max-classes-per-file.js +49 -0
  124. package/rules/multiline-formatting.js +146 -0
  125. package/rules/no-blank-lines-between-decorators-and-properties.js +95 -0
  126. package/rules/no-comments.js +62 -0
  127. package/rules/no-dto-constructors.js +126 -0
  128. package/rules/no-dto-default-values.js +220 -0
  129. package/rules/no-dto-duplicates.js +127 -0
  130. package/rules/no-dto-in-entity.js +99 -0
  131. package/rules/no-dynamic-import-in-types.js +71 -0
  132. package/rules/no-dynamic-imports-in-controllers.js +95 -0
  133. package/rules/no-entity-imports-in-controllers.js +101 -0
  134. package/rules/no-entity-in-swagger-docs.js +139 -0
  135. package/rules/no-entity-type-casting.js +104 -0
  136. package/rules/no-fetch.js +77 -0
  137. package/rules/no-import-meta-env.js +151 -0
  138. package/rules/no-inline-styles.js +5 -0
  139. package/rules/no-magic-values.js +85 -0
  140. package/rules/no-partial-type.js +168 -0
  141. package/rules/no-relative-imports.js +31 -0
  142. package/rules/no-tsyringe.js +181 -0
  143. package/rules/no-type-assertion.js +175 -0
  144. package/rules/no-undefined-entity-properties.js +121 -0
  145. package/rules/node.js +44 -0
  146. package/rules/perfectionist.js +50 -0
  147. package/rules/performance-minimal.js +155 -0
  148. package/rules/performance.js +44 -0
  149. package/rules/pino-logger-format.js +200 -0
  150. package/rules/prefer-dto-classes.js +112 -0
  151. package/rules/prefer-dto-create-method.js +225 -0
  152. package/rules/promises.js +17 -0
  153. package/rules/react-hooks.js +15 -0
  154. package/rules/react.js +28 -0
  155. package/rules/regexp.js +70 -0
  156. package/rules/require-dto-response.js +81 -0
  157. package/rules/require-valid-relations.js +388 -0
  158. package/rules/result-pattern.js +162 -0
  159. package/rules/security.js +37 -0
  160. package/rules/service-architecture.js +148 -0
  161. package/rules/sonarjs.js +26 -0
  162. package/rules/strict.js +7 -0
  163. package/rules/style.js +611 -0
  164. package/rules/stylistic.js +93 -0
  165. package/rules/typeorm-column-type-validation.js +224 -0
  166. package/rules/typescript-advanced.js +113 -0
  167. package/rules/typescript-core.js +111 -0
  168. package/rules/typescript.js +146 -0
  169. package/rules/unicorn.js +168 -0
  170. package/rules/variables.js +51 -0
  171. package/rules/websocket-architecture.js +115 -0
package/rules/style.js ADDED
@@ -0,0 +1,611 @@
1
+ import { createRequire } from "module";
2
+ import semver from "semver";
3
+ const require = createRequire(import.meta.url);
4
+ const eslintPkg = require("eslint/package.json");
5
+
6
+ // Style Rules
7
+ export default {
8
+ rules: {
9
+ // enforce line breaks after opening and before closing array brackets
10
+ // https://eslint.org/docs/rules/array-bracket-newline
11
+ // TODO: enable? semver-major
12
+ "array-bracket-newline": ["off", "consistent"], // object option alternative: { multiline: true, minItems: 3 }
13
+
14
+ // enforce line breaks between array elements
15
+ // https://eslint.org/docs/rules/array-element-newline
16
+ // TODO: enable? semver-major
17
+ "array-element-newline": ["off", { multiline: true, minItems: 3 }],
18
+
19
+ // enforce spacing inside array brackets
20
+ "array-bracket-spacing": ["error", "never"],
21
+
22
+ // enforce spacing inside single-line blocks
23
+ // https://eslint.org/docs/rules/block-spacing
24
+ "block-spacing": ["error", "always"],
25
+
26
+ // enforce one true brace style
27
+ "brace-style": ["error", "1tbs", { allowSingleLine: false }],
28
+
29
+ // require camel case names
30
+ camelcase: ["error", { properties: "never", ignoreDestructuring: false }],
31
+
32
+ // enforce or disallow capitalization of the first letter of a comment
33
+ // https://eslint.org/docs/rules/capitalized-comments
34
+ "capitalized-comments": [
35
+ "off",
36
+ "never",
37
+ {
38
+ line: {
39
+ ignorePattern: ".*",
40
+ ignoreInlineComments: true,
41
+ ignoreConsecutiveComments: true,
42
+ },
43
+ block: {
44
+ ignorePattern: ".*",
45
+ ignoreInlineComments: true,
46
+ ignoreConsecutiveComments: true,
47
+ },
48
+ },
49
+ ],
50
+
51
+ // require trailing commas in multiline object literals
52
+ "comma-dangle": [
53
+ "error",
54
+ {
55
+ arrays: "always-multiline",
56
+ objects: "always-multiline",
57
+ imports: "always-multiline",
58
+ exports: "always-multiline",
59
+ functions: "always-multiline",
60
+ },
61
+ ],
62
+
63
+ // enforce spacing before and after comma
64
+ "comma-spacing": ["error", { before: false, after: true }],
65
+
66
+ // enforce one true comma style
67
+ "comma-style": [
68
+ "error",
69
+ "last",
70
+ {
71
+ exceptions: {
72
+ ArrayExpression: false,
73
+ ArrayPattern: false,
74
+ ArrowFunctionExpression: false,
75
+ CallExpression: false,
76
+ FunctionDeclaration: false,
77
+ FunctionExpression: false,
78
+ ImportDeclaration: false,
79
+ ObjectExpression: false,
80
+ ObjectPattern: false,
81
+ VariableDeclaration: false,
82
+ NewExpression: false,
83
+ },
84
+ },
85
+ ],
86
+
87
+ // disallow padding inside computed properties
88
+ "computed-property-spacing": ["error", "never"],
89
+
90
+ // enforces consistent naming when capturing the current execution context
91
+ "consistent-this": "off",
92
+
93
+ // enforce newline at the end of file, with no multiple empty lines
94
+ "eol-last": ["error", "always"],
95
+
96
+ // https://eslint.org/docs/rules/function-call-argument-newline
97
+ "function-call-argument-newline": ["error", "consistent"],
98
+
99
+ // enforce spacing between functions and their invocations
100
+ // https://eslint.org/docs/rules/func-call-spacing
101
+ "func-call-spacing": ["error", "never"],
102
+
103
+ // requires function names to match the name of the variable or property to which they are
104
+ // assigned
105
+ // https://eslint.org/docs/rules/func-name-matching
106
+ "func-name-matching": [
107
+ "off",
108
+ "always",
109
+ {
110
+ includeCommonJSModuleExports: false,
111
+ considerPropertyDescriptor: true,
112
+ },
113
+ ],
114
+
115
+ // require function expressions to have a name
116
+ // https://eslint.org/docs/rules/func-names
117
+ "func-names": "error",
118
+
119
+ // enforces use of function declarations or expressions
120
+ // https://eslint.org/docs/rules/func-style
121
+ // Erlaubt sowohl function declarations als auch arrow functions
122
+ "func-style": ["error", "declaration", { "allowArrowFunctions": true }],
123
+
124
+ // require line breaks inside function parentheses if there are line breaks between parameters
125
+ // https://eslint.org/docs/rules/function-paren-newline
126
+ "function-paren-newline": [
127
+ "error",
128
+ semver.satisfies(eslintPkg.version, ">= 6")
129
+ ? "multiline-arguments"
130
+ : "consistent",
131
+ ],
132
+
133
+ // disallow specified identifiers
134
+ // https://eslint.org/docs/rules/id-denylist
135
+ "id-denylist": "off",
136
+
137
+ // this option enforces minimum and maximum identifier lengths
138
+ // (variable names, property names etc.)
139
+ // https://eslint.org/docs/latest/rules/id-length
140
+ "id-length": [
141
+ "error",
142
+ {
143
+ exceptions: ["_"],
144
+ },
145
+ ],
146
+
147
+ // require identifiers to match the provided regular expression
148
+ "id-match": "off",
149
+
150
+ // Enforce the location of arrow function bodies with implicit returns
151
+ // https://eslint.org/docs/rules/implicit-arrow-linebreak
152
+ "implicit-arrow-linebreak": ["error", "beside"],
153
+
154
+ // this option sets a specific tab width for your code
155
+ // https://eslint.org/docs/rules/indent
156
+ indent: "off",
157
+
158
+ // specify whether double or single quotes should be used in JSX attributes
159
+ // https://eslint.org/docs/rules/jsx-quotes
160
+ "jsx-quotes": ["off", "prefer-double"],
161
+
162
+ // enforces spacing between keys and values in object literal properties
163
+ "key-spacing": ["error", { beforeColon: false, afterColon: true }],
164
+
165
+ // require a space before & after certain keywords
166
+ "keyword-spacing": [
167
+ "error",
168
+ {
169
+ before: true,
170
+ after: true,
171
+ overrides: {
172
+ return: { after: true },
173
+ throw: { after: true },
174
+ case: { after: true },
175
+ },
176
+ },
177
+ ],
178
+
179
+ // enforce position of line comments
180
+ // https://eslint.org/docs/rules/line-comment-position
181
+ "line-comment-position": [
182
+ "error",
183
+ {
184
+ position: "above",
185
+ applyDefaultIgnorePatterns: true,
186
+ ignorePattern: "pragma|^\\s*(?:eslint|jshint|jslint|istanbul|globals?)",
187
+ },
188
+ ],
189
+
190
+ // disallow mixed 'LF' and 'CRLF' as linebreaks
191
+ // https://eslint.org/docs/rules/linebreak-style
192
+ "linebreak-style": ["error", "unix"],
193
+
194
+ // require or disallow an empty line between class members
195
+ // https://eslint.org/docs/rules/lines-between-class-members
196
+ // 'lines-between-class-members': ['error', 'always', { exceptAfterSingleLine: false }],
197
+ "lines-between-class-members": "off",
198
+
199
+ // enforces empty lines around comments
200
+ "lines-around-comment": "off",
201
+
202
+ // require or disallow newlines around directives
203
+ // https://eslint.org/docs/rules/lines-around-directive
204
+ "lines-around-directive": [
205
+ "error",
206
+ {
207
+ before: "always",
208
+ after: "always",
209
+ },
210
+ ],
211
+
212
+ // specify the maximum depth that blocks can be nested
213
+ "max-depth": ["off", 4],
214
+
215
+ // specify the maximum length of a line in your program
216
+ // https://eslint.org/docs/rules/max-len
217
+ "max-len": [
218
+ "error",
219
+ 120,
220
+ 2,
221
+ {
222
+ ignoreUrls: true,
223
+ ignoreComments: false,
224
+ ignoreRegExpLiterals: true,
225
+ ignoreStrings: true,
226
+ ignoreTemplateLiterals: true,
227
+ },
228
+ ],
229
+
230
+
231
+ // enforce a maximum function length
232
+ // https://eslint.org/docs/rules/max-lines-per-function
233
+ "max-lines-per-function": [
234
+ "off",
235
+ {
236
+ max: 50,
237
+ skipBlankLines: true,
238
+ skipComments: true,
239
+ IIFEs: true,
240
+ },
241
+ ],
242
+
243
+ // specify the maximum depth callbacks can be nested
244
+ "max-nested-callbacks": "off",
245
+
246
+ // limits the number of parameters that can be used in the function declaration.
247
+ "max-params": ["off", 3],
248
+
249
+ // specify the maximum number of statement allowed in a function
250
+ "max-statements": ["off", 10],
251
+
252
+ // restrict the number of statements per line
253
+ // https://eslint.org/docs/rules/max-statements-per-line
254
+ "max-statements-per-line": ["off", { max: 1 }],
255
+
256
+ // enforce a particular style for multiline comments
257
+ // https://eslint.org/docs/rules/multiline-comment-style
258
+ "multiline-comment-style": ["off", "starred-block"],
259
+
260
+ // require multiline ternary
261
+ // https://eslint.org/docs/rules/multiline-ternary
262
+ // TODO: enable?
263
+ "multiline-ternary": ["off", "never"],
264
+
265
+ // require a capital letter for constructors
266
+ "new-cap": [
267
+ "error",
268
+ {
269
+ newIsCap: true,
270
+ newIsCapExceptions: [],
271
+ capIsNew: false,
272
+ capIsNewExceptions: [
273
+ "Immutable.Map",
274
+ "Immutable.Set",
275
+ "Immutable.List",
276
+ ],
277
+ capIsNewExceptionPattern: "^(Socket|MD5)$",
278
+ },
279
+ ],
280
+
281
+ // disallow the omission of parentheses when invoking a constructor with no arguments
282
+ // https://eslint.org/docs/rules/new-parens
283
+ "new-parens": "error",
284
+
285
+ // allow/disallow an empty newline after var statement
286
+ "newline-after-var": "off",
287
+
288
+ // https://eslint.org/docs/rules/newline-before-return
289
+ "newline-before-return": "error",
290
+
291
+ // enforces new line after each method call in the chain to make it
292
+ // more readable and easy to maintain
293
+ // https://eslint.org/docs/rules/newline-per-chained-call
294
+ "newline-per-chained-call": ["error", { ignoreChainWithDepth: 4 }],
295
+
296
+ // disallow use of the Array constructor
297
+ "no-array-constructor": "error",
298
+
299
+ // disallow use of bitwise operators
300
+ // https://eslint.org/docs/rules/no-bitwise
301
+ "no-bitwise": "error",
302
+
303
+ // disallow comments inline after code
304
+ "no-inline-comments": "error",
305
+
306
+ // disallow comments generally
307
+ "no-warning-comments": ["error", {
308
+ terms: ["todo", "fixme", "xxx", "hack", "note", "review", "debug", "info"],
309
+ location: "anywhere"
310
+ }],
311
+
312
+ // disallow if as the only statement in an else block
313
+ // https://eslint.org/docs/rules/no-lonely-if
314
+ "no-lonely-if": "error",
315
+
316
+ // disallow un-paren'd mixes of different operators
317
+ // https://eslint.org/docs/rules/no-mixed-operators
318
+ "no-mixed-operators": [
319
+ "error",
320
+ {
321
+ // the list of arithmetic groups disallows mixing `%` and `**`
322
+ // with other arithmetic operators.
323
+ groups: [
324
+ ["%", "**"],
325
+ ["%", "+"],
326
+ ["%", "-"],
327
+ ["%", "*"],
328
+ ["%", "/"],
329
+ ["/", "*"],
330
+ ["&", "|", "<<", ">>", ">>>"],
331
+ ["==", "!=", "===", "!=="],
332
+ ["&&", "||"],
333
+ ],
334
+ allowSamePrecedence: false,
335
+ },
336
+ ],
337
+
338
+ // disallow mixed spaces and tabs for indentation
339
+ "no-mixed-spaces-and-tabs": "error",
340
+
341
+ // disallow use of chained assignment expressions
342
+ // https://eslint.org/docs/rules/no-multi-assign
343
+ "no-multi-assign": ["error"],
344
+
345
+ // disallow multiple empty lines, only one newline at the end, and no new lines at the beginning
346
+ // https://eslint.org/docs/rules/no-multiple-empty-lines
347
+ "no-multiple-empty-lines": ["error", { max: 1, maxBOF: 0, maxEOF: 1 }],
348
+
349
+ // disallow negated conditions
350
+ // https://eslint.org/docs/rules/no-negated-condition
351
+ "no-negated-condition": "off",
352
+
353
+ // disallow nested ternary expressions
354
+ "no-nested-ternary": "error",
355
+
356
+ // disallow use of the Object constructor
357
+ "no-new-object": "error",
358
+
359
+ // disallow use of unary operators, ++ and --
360
+ // https://eslint.org/docs/rules/no-plusplus
361
+ "no-plusplus": "error",
362
+
363
+ // disallow certain syntax forms
364
+ // https://eslint.org/docs/rules/no-restricted-syntax
365
+ "no-restricted-syntax": [
366
+ "error",
367
+ {
368
+ selector: "ForInStatement",
369
+ message:
370
+ "for..in loops iterate over the entire prototype chain, which is virtually never what you want. Use Object.{keys,values,entries}, and iterate over the resulting array.",
371
+ },
372
+ {
373
+ selector: "ForOfStatement",
374
+ message:
375
+ "iterators/generators require regenerator-runtime, which is too heavyweight for this guide to allow them. Separately, loops should be avoided in favor of array iterations.",
376
+ },
377
+ {
378
+ selector: "LabeledStatement",
379
+ message:
380
+ "Labels are a form of GOTO; using them makes code confusing and hard to maintain and understand.",
381
+ },
382
+ {
383
+ selector: "WithStatement",
384
+ message:
385
+ "`with` is disallowed in strict mode because it makes code impossible to predict and optimize.",
386
+ },
387
+ {
388
+ selector: "TSTypeReference[typeName.name='Record']",
389
+ message: "Bitte verwende keine Record-Typen. Verwende stattdessen explizite Interfaces oder DTOs."
390
+ },
391
+ ],
392
+
393
+ // disallow space between function identifier and application
394
+ "no-spaced-func": "error",
395
+
396
+ // disallow tab characters entirely
397
+ "no-tabs": "error",
398
+
399
+ // disallow the use of ternary operators
400
+ "no-ternary": "off",
401
+
402
+ // disallow trailing whitespace at the end of lines
403
+ "no-trailing-spaces": [
404
+ "error",
405
+ {
406
+ skipBlankLines: false,
407
+ ignoreComments: false,
408
+ },
409
+ ],
410
+
411
+ // disallow dangling underscores in identifiers
412
+ // https://eslint.org/docs/rules/no-underscore-dangle
413
+ "no-underscore-dangle": [
414
+ "error",
415
+ {
416
+ allow: [
417
+ // accommodation api
418
+ "_embedded",
419
+ "_data",
420
+ ],
421
+ allowAfterThis: false,
422
+ allowAfterSuper: false,
423
+ enforceInMethodNames: true,
424
+ },
425
+ ],
426
+
427
+ // disallow the use of Boolean literals in conditional expressions
428
+ // also, prefer `a || b` over `a ? a : b`
429
+ // https://eslint.org/docs/rules/no-unneeded-ternary
430
+ "no-unneeded-ternary": ["error", { defaultAssignment: false }],
431
+
432
+ // disallow whitespace before properties
433
+ // https://eslint.org/docs/rules/no-whitespace-before-property
434
+ "no-whitespace-before-property": "error",
435
+
436
+ // enforce the location of single-line statements
437
+ // https://eslint.org/docs/rules/nonblock-statement-body-position
438
+ "nonblock-statement-body-position": ["error", "beside", { overrides: {} }],
439
+
440
+ // require padding inside curly braces
441
+ "object-curly-spacing": ["error", "always"],
442
+
443
+ // enforce line breaks between braces
444
+ // https://eslint.org/docs/rules/object-curly-newline
445
+ "object-curly-newline": [
446
+ "error",
447
+ {
448
+ ObjectExpression: {
449
+ minProperties: 2,
450
+ multiline: true,
451
+ consistent: true,
452
+ },
453
+ ObjectPattern: { minProperties: 2, multiline: true, consistent: true },
454
+ ImportDeclaration: {
455
+ minProperties: 2,
456
+ multiline: true,
457
+ consistent: true,
458
+ },
459
+ ExportDeclaration: {
460
+ minProperties: 2,
461
+ multiline: true,
462
+ consistent: true,
463
+ },
464
+ },
465
+ ],
466
+
467
+ // enforce "same line" or "multiple line" on object properties.
468
+ // https://eslint.org/docs/rules/object-property-newline
469
+ "object-property-newline": [
470
+ "error",
471
+ {
472
+ allowAllPropertiesOnSameLine: true,
473
+ },
474
+ ],
475
+
476
+ // allow just one var statement per function
477
+ "one-var": ["error", "never"],
478
+
479
+ // require a newline around variable declaration
480
+ // https://eslint.org/docs/rules/one-var-declaration-per-line
481
+ "one-var-declaration-per-line": ["error", "always"],
482
+
483
+ // require assignment operator shorthand where possible or prohibit it entirely
484
+ // https://eslint.org/docs/rules/operator-assignment
485
+ "operator-assignment": ["error", "always"],
486
+
487
+ // Requires operator at the beginning of the line in multiline statements
488
+ // https://eslint.org/docs/rules/operator-linebreak
489
+ "operator-linebreak": ["error", "before", { overrides: { "=": "none" } }],
490
+
491
+ // disallow padding within blocks
492
+ "padded-blocks": [
493
+ "error",
494
+ {
495
+ blocks: "never",
496
+ classes: "never",
497
+ switches: "never",
498
+ },
499
+ {
500
+ allowSingleLineBlocks: true,
501
+ },
502
+ ],
503
+
504
+ // Require or disallow padding lines between statements
505
+ // https://eslint.org/docs/rules/padding-line-between-statements
506
+ "padding-line-between-statements": "off",
507
+
508
+ // Disallow the use of Math.pow in favor of the ** operator
509
+ // https://eslint.org/docs/rules/prefer-exponentiation-operator
510
+ "prefer-exponentiation-operator": "error",
511
+
512
+ // Prefer use of an object spread over Object.assign
513
+ // https://eslint.org/docs/rules/prefer-object-spread
514
+ "prefer-object-spread": "error",
515
+
516
+ // require quotes around object literal property names
517
+ // https://eslint.org/docs/rules/quote-props.html
518
+ "quote-props": [
519
+ "error",
520
+ "as-needed",
521
+ { keywords: false, unnecessary: true, numbers: false },
522
+ ],
523
+
524
+ // specify whether double or single quotes should be used
525
+ quotes: "error",
526
+
527
+ // do not require jsdoc
528
+ // https://eslint.org/docs/rules/require-jsdoc
529
+ "require-jsdoc": "off",
530
+
531
+ // require or disallow use of semicolons instead of ASI
532
+ semi: ["error", "always"],
533
+
534
+ // enforce spacing before and after semicolons
535
+ "semi-spacing": ["error", { before: false, after: true }],
536
+
537
+ // Enforce location of semicolons
538
+ // https://eslint.org/docs/rules/semi-style
539
+ "semi-style": ["error", "last"],
540
+
541
+ // requires object keys to be sorted
542
+ "sort-keys": ["off", "asc", { caseSensitive: false, natural: true }],
543
+
544
+ // sort variables within the same declaration block
545
+ "sort-vars": "off",
546
+
547
+ // require or disallow space before blocks
548
+ "space-before-blocks": "error",
549
+
550
+ // require or disallow space before function opening parenthesis
551
+ // https://eslint.org/docs/rules/space-before-function-paren
552
+ "space-before-function-paren": [
553
+ "error",
554
+ {
555
+ anonymous: "always",
556
+ named: "always",
557
+ asyncArrow: "always",
558
+ },
559
+ ],
560
+
561
+ // require or disallow spaces inside parentheses
562
+ "space-in-parens": ["error", "never"],
563
+
564
+ // require spaces around operators
565
+ "space-infix-ops": "error",
566
+
567
+ // Require or disallow spaces before/after unary operators
568
+ // https://eslint.org/docs/rules/space-unary-ops
569
+ "space-unary-ops": [
570
+ "error",
571
+ {
572
+ words: true,
573
+ nonwords: false,
574
+ overrides: {},
575
+ },
576
+ ],
577
+
578
+ // require or disallow a space immediately following the // or /* in a comment
579
+ // https://eslint.org/docs/rules/spaced-comment
580
+ "spaced-comment": [
581
+ "error",
582
+ "never",
583
+ {
584
+ line: {
585
+ markers: [], // keine Ausnahmen erlauben
586
+ exceptions: [],
587
+ },
588
+ block: {
589
+ markers: [], // keine Ausnahmen erlauben
590
+ exceptions: [],
591
+ balanced: true,
592
+ },
593
+ },
594
+ ],
595
+
596
+ // Enforce spacing around colons of switch statements
597
+ // https://eslint.org/docs/rules/switch-colon-spacing
598
+ "switch-colon-spacing": ["error", { after: true, before: false }],
599
+
600
+ // Require or disallow spacing between template tags and their literals
601
+ // https://eslint.org/docs/rules/template-tag-spacing
602
+ "template-tag-spacing": ["error", "never"],
603
+
604
+ // require or disallow the Unicode Byte Order Mark
605
+ // https://eslint.org/docs/rules/unicode-bom
606
+ "unicode-bom": ["error", "never"],
607
+
608
+ // require regex literals to be wrapped in parentheses
609
+ "wrap-regex": "off",
610
+ },
611
+ };