@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.
- package/CHANGELOG.md +1093 -0
- package/configs/.gitkeep +1 -0
- package/configs/admin.js +203 -0
- package/configs/api-client.js +46 -0
- package/configs/backend.js +895 -0
- package/configs/domains.js +123 -0
- package/configs/frontend.js +30 -0
- package/configs/image-server.js +26 -0
- package/configs/ionos-proxy.js +372 -0
- package/configs/nestjs.js +156 -0
- package/configs/node.js +92 -0
- package/configs/react.js +111 -0
- package/configs/wiki.js +42 -0
- package/index.js +39 -0
- package/package.json +85 -0
- package/rules/.gitkeep +1 -0
- package/rules/__tests__/analyze-relation-usage.test.js.disabled +300 -0
- package/rules/__tests__/complexity.test.js.disabled +300 -0
- package/rules/__tests__/enforce-dto-factory-in-services.integration.test.js +226 -0
- package/rules/__tests__/enforce-dto-factory-in-services.test.js +177 -0
- package/rules/__tests__/enforce-entity-dto-create-no-id.integration.test.js +18 -0
- package/rules/__tests__/enforce-function-argument-count.test.js.disabled +300 -0
- package/rules/__tests__/enforce-repository-token-handling.test.js +58 -0
- package/rules/__tests__/english-only-code-strings.test.js.disabled +300 -0
- package/rules/__tests__/eslint-rules.integration.test.ts +350 -0
- package/rules/__tests__/integration-test-controller-response-dto.js +261 -0
- package/rules/__tests__/integration-test-dto-factory-in-services.js +260 -0
- package/rules/__tests__/integration-test-no-entity-type-casting.js +161 -0
- package/rules/__tests__/integration-test-typeorm-naming-conventions.js +501 -0
- package/rules/__tests__/test-config.js +33 -0
- package/rules/admin-controller-security.js +180 -0
- package/rules/analyze-relation-usage.js +687 -0
- package/rules/api-response-dto.js +174 -0
- package/rules/auth-guard-required.js +142 -0
- package/rules/backend-specific.js +36 -0
- package/rules/best-practices.js +421 -0
- package/rules/complexity.js +20 -0
- package/rules/controller-architecture.js +340 -0
- package/rules/controller-naming-conventions.js +190 -0
- package/rules/controller-readonly-restriction.js +148 -0
- package/rules/controller-swagger-complete.js +312 -0
- package/rules/controller-swagger-docs.js +119 -0
- package/rules/controller-swagger-english.js +320 -0
- package/rules/coordinate-naming.js +132 -0
- package/rules/custom-mui-button.js +135 -0
- package/rules/dead-code-detection-backend.js +50 -0
- package/rules/dead-code-detection-frontend.js +48 -0
- package/rules/dead-code-detection.js +71 -0
- package/rules/debug-controller-response-dto.js +79 -0
- package/rules/deprecate.js +8 -0
- package/rules/dto-annotation-property-consistency.js +111 -0
- package/rules/dto-entity-mapping-completeness.js +688 -0
- package/rules/dto-entity-swagger-separation.js +265 -0
- package/rules/dto-entity-type-consistency.js +352 -0
- package/rules/dto-entity-type-matching.js +519 -0
- package/rules/dto-naming-convention.js +98 -0
- package/rules/dto-visibility-modifiers.js +159 -0
- package/rules/enforce-api-versioning.js +122 -0
- package/rules/enforce-app-module-registration.js +179 -0
- package/rules/enforce-basecontroller.js +152 -0
- package/rules/enforce-body-request-dto.js +141 -0
- package/rules/enforce-controller-response-dto.js +349 -0
- package/rules/enforce-custom-error-classes.js +242 -0
- package/rules/enforce-database-transaction-safety.js +179 -0
- package/rules/enforce-dto-constructor.js +95 -0
- package/rules/enforce-dto-create-parameter-types.js +170 -0
- package/rules/enforce-dto-create-pattern.js +274 -0
- package/rules/enforce-dto-entity-creation.js +164 -0
- package/rules/enforce-dto-factory-in-services.js +188 -0
- package/rules/enforce-dto-from-entity-method.js +47 -0
- package/rules/enforce-dto-from-entity.js +314 -0
- package/rules/enforce-dto-naming-conventions.js +212 -0
- package/rules/enforce-dto-naming.js +176 -0
- package/rules/enforce-dto-usage-simple.js +114 -0
- package/rules/enforce-dto-usage.js +407 -0
- package/rules/enforce-eager-translation-loading.js +178 -0
- package/rules/enforce-entity-creation-pattern.js +137 -0
- package/rules/enforce-entity-dto-convert-method.js +157 -0
- package/rules/enforce-entity-dto-create-no-id.js +117 -0
- package/rules/enforce-entity-dto-extends-base.js +141 -0
- package/rules/enforce-entity-dto-from-request-dto-structure.js +113 -0
- package/rules/enforce-entity-dto-fromentity-complex.js +69 -0
- package/rules/enforce-entity-dto-fromentity-simple.js +69 -0
- package/rules/enforce-entity-dto-fromrequestdto-structure.js +262 -0
- package/rules/enforce-entity-dto-methods-restriction.js +159 -0
- package/rules/enforce-entity-dto-no-request-dto.js +102 -0
- package/rules/enforce-entity-dto-optional-auto-fields.js +101 -0
- package/rules/enforce-entity-dto-required-methods.js +248 -0
- package/rules/enforce-entity-factory-pattern.js +180 -0
- package/rules/enforce-entity-instantiation-in-toentity.js +125 -0
- package/rules/enforce-enum-for-playable-entities.js +95 -0
- package/rules/enforce-error-handling.js +257 -0
- package/rules/enforce-explicit-dto-types.js +118 -0
- package/rules/enforce-from-request-dto-usage.js +62 -0
- package/rules/enforce-generic-entity-dto.js +71 -0
- package/rules/enforce-inject-decorator.js +133 -0
- package/rules/enforce-lazy-type-loading.js +170 -0
- package/rules/enforce-module-existence.js +157 -0
- package/rules/enforce-nonentity-dto-create.js +107 -0
- package/rules/enforce-playable-entity-naming.js +108 -0
- package/rules/enforce-repository-token-handling.js +92 -0
- package/rules/enforce-request-dto-no-entity-dto.js +201 -0
- package/rules/enforce-request-dto-required-fields.js +217 -0
- package/rules/enforce-result-pattern.js +45 -0
- package/rules/enforce-service-relation-loading.js +116 -0
- package/rules/enforce-test-coverage.js +96 -0
- package/rules/enforce-toentity-conditional-assignment.js +132 -0
- package/rules/enforce-translations-required.js +203 -0
- package/rules/enforce-typeorm-naming-conventions.js +366 -0
- package/rules/enforce-vite-health-metrics.js +240 -0
- package/rules/entity-required-properties.js +321 -0
- package/rules/entity-to-dto-test.js +73 -0
- package/rules/enum-database-validation.js +149 -0
- package/rules/errors.js +190 -0
- package/rules/es6.js +204 -0
- package/rules/eslint-plugin-no-comments.js +44 -0
- package/rules/filename-class-name-match.js +62 -0
- package/rules/forbid-fromentity-outside-entity-folder.js +237 -0
- package/rules/function-params-newline.js +111 -0
- package/rules/imports.js +264 -0
- package/rules/jest.js +13 -0
- package/rules/jsx.js +16 -0
- package/rules/max-classes-per-file.js +49 -0
- package/rules/multiline-formatting.js +146 -0
- package/rules/no-blank-lines-between-decorators-and-properties.js +95 -0
- package/rules/no-comments.js +62 -0
- package/rules/no-dto-constructors.js +126 -0
- package/rules/no-dto-default-values.js +220 -0
- package/rules/no-dto-duplicates.js +127 -0
- package/rules/no-dto-in-entity.js +99 -0
- package/rules/no-dynamic-import-in-types.js +71 -0
- package/rules/no-dynamic-imports-in-controllers.js +95 -0
- package/rules/no-entity-imports-in-controllers.js +101 -0
- package/rules/no-entity-in-swagger-docs.js +139 -0
- package/rules/no-entity-type-casting.js +104 -0
- package/rules/no-fetch.js +77 -0
- package/rules/no-import-meta-env.js +151 -0
- package/rules/no-inline-styles.js +5 -0
- package/rules/no-magic-values.js +85 -0
- package/rules/no-partial-type.js +168 -0
- package/rules/no-relative-imports.js +31 -0
- package/rules/no-tsyringe.js +181 -0
- package/rules/no-type-assertion.js +175 -0
- package/rules/no-undefined-entity-properties.js +121 -0
- package/rules/node.js +44 -0
- package/rules/perfectionist.js +50 -0
- package/rules/performance-minimal.js +155 -0
- package/rules/performance.js +44 -0
- package/rules/pino-logger-format.js +200 -0
- package/rules/prefer-dto-classes.js +112 -0
- package/rules/prefer-dto-create-method.js +225 -0
- package/rules/promises.js +17 -0
- package/rules/react-hooks.js +15 -0
- package/rules/react.js +28 -0
- package/rules/regexp.js +70 -0
- package/rules/require-dto-response.js +81 -0
- package/rules/require-valid-relations.js +388 -0
- package/rules/result-pattern.js +162 -0
- package/rules/security.js +37 -0
- package/rules/service-architecture.js +148 -0
- package/rules/sonarjs.js +26 -0
- package/rules/strict.js +7 -0
- package/rules/style.js +611 -0
- package/rules/stylistic.js +93 -0
- package/rules/typeorm-column-type-validation.js +224 -0
- package/rules/typescript-advanced.js +113 -0
- package/rules/typescript-core.js +111 -0
- package/rules/typescript.js +146 -0
- package/rules/unicorn.js +168 -0
- package/rules/variables.js +51 -0
- package/rules/websocket-architecture.js +115 -0
|
@@ -0,0 +1,895 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Backend ESLint Configuration
|
|
3
|
+
*
|
|
4
|
+
* Ursprüngliche Backend-Konfiguration - 1:1 übernommen
|
|
5
|
+
* Enthält alle Backend-spezifischen Regeln und benutzerdefinierten Regeln
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import stylisticPlugin from "@stylistic/eslint-plugin";
|
|
9
|
+
|
|
10
|
+
import typescriptEslint from "@typescript-eslint/eslint-plugin";
|
|
11
|
+
import typescriptParser from "@typescript-eslint/parser";
|
|
12
|
+
import deprecatePlugin from "eslint-plugin-deprecate";
|
|
13
|
+
import importPlugin from "eslint-plugin-import";
|
|
14
|
+
import jestPlugin from "eslint-plugin-jest";
|
|
15
|
+
import perfectionist from "eslint-plugin-perfectionist";
|
|
16
|
+
import sonarjsPlugin from "eslint-plugin-sonarjs";
|
|
17
|
+
import globals from "globals";
|
|
18
|
+
import path from "path";
|
|
19
|
+
|
|
20
|
+
// Importiere alle ursprünglichen Regeldateien
|
|
21
|
+
import adminControllerSecurityRules from '../rules/admin-controller-security.js';
|
|
22
|
+
import analyzeRelationUsageRule from '../rules/analyze-relation-usage.js';
|
|
23
|
+
import authGuardRequiredRule from '../rules/auth-guard-required.js';
|
|
24
|
+
import bestPracticesRules from '../rules/best-practices.js';
|
|
25
|
+
import controllerArchitectureRules from '../rules/controller-architecture.js';
|
|
26
|
+
import controllerNamingConventionsRule from '../rules/controller-naming-conventions.js';
|
|
27
|
+
import controllerReadonlyRestrictionRules from '../rules/controller-readonly-restriction.js';
|
|
28
|
+
import controllerSwaggerCompleteRule from '../rules/controller-swagger-complete.js';
|
|
29
|
+
import controllerSwaggerDocsRule from '../rules/controller-swagger-docs.js';
|
|
30
|
+
import controllerSwaggerEnglishRule from '../rules/controller-swagger-english.js';
|
|
31
|
+
import coordinateNamingRule from '../rules/coordinate-naming.js';
|
|
32
|
+
import deadCodeDetectionRules from '../rules/dead-code-detection-backend.js';
|
|
33
|
+
import deprecatedRules from '../rules/deprecate.js';
|
|
34
|
+
import dtoAnnotationPropertyConsistencyRule from '../rules/dto-annotation-property-consistency.js';
|
|
35
|
+
import dtoEntityMappingCompletenessRule from '../rules/dto-entity-mapping-completeness.js';
|
|
36
|
+
import dtoEntitySwaggerSeparationRule from '../rules/dto-entity-swagger-separation.js';
|
|
37
|
+
import dtoEntityTypeConsistencyRule from '../rules/dto-entity-type-consistency.js';
|
|
38
|
+
import dtoEntityTypeMatchingRule from '../rules/dto-entity-type-matching.js';
|
|
39
|
+
import dtoVisibilityModifiersRule from '../rules/dto-visibility-modifiers.js';
|
|
40
|
+
import enforceApiVersioning from '../rules/enforce-api-versioning.js';
|
|
41
|
+
import enforceAppModuleRegistration from '../rules/enforce-app-module-registration.js';
|
|
42
|
+
import enforceBaseControllerRule from '../rules/enforce-basecontroller.js';
|
|
43
|
+
import enforceBodyRequestDtoRule from '../rules/enforce-body-request-dto.js';
|
|
44
|
+
import enforceControllerResponseDtoRule from '../rules/enforce-controller-response-dto.js';
|
|
45
|
+
import enforceCustomErrorClassesRule from '../rules/enforce-custom-error-classes.js';
|
|
46
|
+
import enforceDtoConstructorRule from '../rules/enforce-dto-constructor.js';
|
|
47
|
+
import enforceDtoCreateParameterTypesRule from '../rules/enforce-dto-create-parameter-types.js';
|
|
48
|
+
import enforceDtoCreatePatternRule from '../rules/enforce-dto-create-pattern.js';
|
|
49
|
+
import enforceDtoEntityCreationRule from '../rules/enforce-dto-entity-creation.js';
|
|
50
|
+
import enforceDtoFactoryInServicesRule from '../rules/enforce-dto-factory-in-services.js';
|
|
51
|
+
import enforceDtoFromEntity from '../rules/enforce-dto-from-entity.js';
|
|
52
|
+
import enforceDtoNamingConventions from '../rules/enforce-dto-naming-conventions.js';
|
|
53
|
+
import enforceDtoNamingRule from '../rules/enforce-dto-naming.js';
|
|
54
|
+
import enforceDtoUsageRule from '../rules/enforce-dto-usage.js';
|
|
55
|
+
import enforceEagerTranslationLoadingRule from '../rules/enforce-eager-translation-loading.js';
|
|
56
|
+
import enforceEntityCreationPatternRule from '../rules/enforce-entity-creation-pattern.js';
|
|
57
|
+
import enforceEntityDtoConvertMethodRule from '../rules/enforce-entity-dto-convert-method.js';
|
|
58
|
+
import enforceEntityDtoCreateNoIdRule from '../rules/enforce-entity-dto-create-no-id.js';
|
|
59
|
+
import enforceEntityDtoExtendsBaseRule from '../rules/enforce-entity-dto-extends-base.js';
|
|
60
|
+
import enforceEntityDtoFromRequestDtoStructureRule from '../rules/enforce-entity-dto-from-request-dto-structure.js';
|
|
61
|
+
import enforceEntityDtoNoRequestDto from '../rules/enforce-entity-dto-no-request-dto.js';
|
|
62
|
+
import enforceEntityDtoOptionalAutoFieldsRule from '../rules/enforce-entity-dto-optional-auto-fields.js';
|
|
63
|
+
import enforceEntityFactoryPatternRule from '../rules/enforce-entity-factory-pattern.js';
|
|
64
|
+
import enforceEntityInstantiationInToEntityRule from '../rules/enforce-entity-instantiation-in-toentity.js';
|
|
65
|
+
import enforceEnumForPlayableEntitiesRule from '../rules/enforce-enum-for-playable-entities.js';
|
|
66
|
+
import enforceErrorHandling from '../rules/enforce-error-handling.js';
|
|
67
|
+
import enforceExplicitDtoTypesRule from '../rules/enforce-explicit-dto-types.js';
|
|
68
|
+
import enforceFromRequestDtoUsageRule from '../rules/enforce-from-request-dto-usage.js';
|
|
69
|
+
import enforceInjectDecoratorRule from '../rules/enforce-inject-decorator.js';
|
|
70
|
+
import enforceLazyTypeLoadingRule from '../rules/enforce-lazy-type-loading.js';
|
|
71
|
+
import enforceModuleExistenceRule from '../rules/enforce-module-existence.js';
|
|
72
|
+
import enforceNonEntityDtoCreate from '../rules/enforce-nonentity-dto-create.js';
|
|
73
|
+
import enforcePlayableEntityNamingRule from '../rules/enforce-playable-entity-naming.js';
|
|
74
|
+
import enforceRepositoryTokenHandlingRule from '../rules/enforce-repository-token-handling.js';
|
|
75
|
+
import enforceRequestDtoNoEntityDtoRule from '../rules/enforce-request-dto-no-entity-dto.js';
|
|
76
|
+
import enforceResultPattern from '../rules/enforce-result-pattern.js';
|
|
77
|
+
import enforceServiceRelationLoadingRule from '../rules/enforce-service-relation-loading.js';
|
|
78
|
+
import enforceToEntityConditionalAssignmentRule from '../rules/enforce-toentity-conditional-assignment.js';
|
|
79
|
+
import enforceTranslationsRequiredRule from '../rules/enforce-translations-required.js';
|
|
80
|
+
import enforceTypeormNamingConventionsRule from '../rules/enforce-typeorm-naming-conventions.js';
|
|
81
|
+
import entityRequiredPropertiesRule from '../rules/entity-required-properties.js';
|
|
82
|
+
import enumDatabaseValidationRule from '../rules/enum-database-validation.js';
|
|
83
|
+
import errorRules from '../rules/errors.js';
|
|
84
|
+
import es6Rules from '../rules/es6.js';
|
|
85
|
+
import noCommentsPlugin from '../rules/eslint-plugin-no-comments.js';
|
|
86
|
+
import filenameClassNameMatchRule from '../rules/filename-class-name-match.js';
|
|
87
|
+
import forbidFromEntityOutsideEntityFolderRule from '../rules/forbid-fromentity-outside-entity-folder.js';
|
|
88
|
+
import importRules from '../rules/imports.js';
|
|
89
|
+
import jestRules from '../rules/jest.js';
|
|
90
|
+
import maxClassesPerFileRule from '../rules/max-classes-per-file.js';
|
|
91
|
+
import noBlankLinesBetweenDecoratorsAndPropertiesRule from '../rules/no-blank-lines-between-decorators-and-properties.js';
|
|
92
|
+
import noDtoConstructorsRule from '../rules/no-dto-constructors.js';
|
|
93
|
+
import noDtoDefaultValuesRule from '../rules/no-dto-default-values.js';
|
|
94
|
+
import noDtoDuplicates from '../rules/no-dto-duplicates.js';
|
|
95
|
+
import noDtoInEntityRule from '../rules/no-dto-in-entity.js';
|
|
96
|
+
import noDynamicImportInTypesRule from '../rules/no-dynamic-import-in-types.js';
|
|
97
|
+
import noEntityImportsInControllersRules from '../rules/no-entity-imports-in-controllers.js';
|
|
98
|
+
import noEntityInSwaggerDocsRule from '../rules/no-entity-in-swagger-docs.js';
|
|
99
|
+
import noEntityTypeCasting from '../rules/no-entity-type-casting.js';
|
|
100
|
+
import noFetchRule from '../rules/no-fetch.js';
|
|
101
|
+
import noImportMetaEnvRule from '../rules/no-import-meta-env.js';
|
|
102
|
+
import noPartialTypeRule from '../rules/no-partial-type.js';
|
|
103
|
+
import noRelativeImportsRule from '../rules/no-relative-imports.js';
|
|
104
|
+
import noTsyringeRule from '../rules/no-tsyringe.js';
|
|
105
|
+
import noTypeAssertion from '../rules/no-type-assertion.js';
|
|
106
|
+
import noUndefinedEntityPropertiesRule from '../rules/no-undefined-entity-properties.js';
|
|
107
|
+
import nodeRules from '../rules/node.js';
|
|
108
|
+
import pinoLoggerFormatRule from '../rules/pino-logger-format.js';
|
|
109
|
+
import preferDtoClassesRule from '../rules/prefer-dto-classes.js';
|
|
110
|
+
import { enforceDtoCreateMethod, enforceDtoFromEntityMethod } from '../rules/prefer-dto-create-method.js';
|
|
111
|
+
import requireDtoResponseRule from '../rules/require-dto-response.js';
|
|
112
|
+
import requireValidRelationsRule from '../rules/require-valid-relations.js';
|
|
113
|
+
import serviceArchitectureRule from '../rules/service-architecture.js';
|
|
114
|
+
import strictRules from '../rules/strict.js';
|
|
115
|
+
import styleRules from '../rules/style.js';
|
|
116
|
+
import typeormColumnTypeValidationRule from '../rules/typeorm-column-type-validation.js';
|
|
117
|
+
import typescriptRules from '../rules/typescript.js';
|
|
118
|
+
import variableRules from '../rules/variables.js';
|
|
119
|
+
import websocketArchitectureRules from '../rules/websocket-architecture.js';
|
|
120
|
+
// Absolute Pfade zu den TypeScript-Konfigurationsdateien
|
|
121
|
+
const tsconfigRootDir = process.cwd(); // Das aktuelle Arbeitsverzeichnis
|
|
122
|
+
const tsconfig = path.resolve(tsconfigRootDir, "tsconfig.json");
|
|
123
|
+
const tsconfigEslint = path.resolve(tsconfigRootDir, "tsconfig.eslint.json");
|
|
124
|
+
|
|
125
|
+
// Registriere die benutzerdefinierten Regeln als Plugin
|
|
126
|
+
const customRulesPlugin = {
|
|
127
|
+
rules: {
|
|
128
|
+
"require-valid-relations": requireValidRelationsRule,
|
|
129
|
+
"require-dto-response": requireDtoResponseRule,
|
|
130
|
+
"enforce-controller-response-dto": enforceControllerResponseDtoRule,
|
|
131
|
+
"enforce-basecontroller": enforceBaseControllerRule.rules["enforce-basecontroller"],
|
|
132
|
+
"enforce-body-request-dto": enforceBodyRequestDtoRule.rules["enforce-body-request-dto"],
|
|
133
|
+
"enforce-dto-usage": enforceDtoUsageRule.rules["enforce-dto-usage"],
|
|
134
|
+
"enforce-dto-constructor": enforceDtoConstructorRule.rules["enforce-dto-constructor"],
|
|
135
|
+
"controller-swagger-docs": controllerSwaggerDocsRule,
|
|
136
|
+
"controller-swagger-complete": controllerSwaggerCompleteRule,
|
|
137
|
+
"controller-swagger-english": controllerSwaggerEnglishRule,
|
|
138
|
+
"controller-naming-conventions": controllerNamingConventionsRule,
|
|
139
|
+
"admin-controller-security": adminControllerSecurityRules.rules["admin-controller-security"],
|
|
140
|
+
"auth-guard-required": authGuardRequiredRule,
|
|
141
|
+
"no-entity-type-casting": noEntityTypeCasting,
|
|
142
|
+
"no-partial-type": noPartialTypeRule.rules["no-partial-type"],
|
|
143
|
+
"no-tsyringe": noTsyringeRule.rules["no-tsyringe"],
|
|
144
|
+
"pino-logger-format": pinoLoggerFormatRule,
|
|
145
|
+
"no-dto-duplicates": noDtoDuplicates,
|
|
146
|
+
"no-dynamic-import-in-types": noDynamicImportInTypesRule,
|
|
147
|
+
"dto-entity-swagger-separation": dtoEntitySwaggerSeparationRule,
|
|
148
|
+
"dto-entity-type-consistency": dtoEntityTypeConsistencyRule.rules["dto-entity-type-consistency"],
|
|
149
|
+
"dto-entity-type-matching": dtoEntityTypeMatchingRule,
|
|
150
|
+
"dto-visibility-modifiers": dtoVisibilityModifiersRule,
|
|
151
|
+
"no-dto-constructors": noDtoConstructorsRule,
|
|
152
|
+
"no-dto-in-entity": noDtoInEntityRule,
|
|
153
|
+
"no-entity-imports-in-controllers": noEntityImportsInControllersRules.rules["no-entity-imports-in-controllers"],
|
|
154
|
+
"no-entity-in-swagger-docs": noEntityInSwaggerDocsRule,
|
|
155
|
+
"prefer-dto-classes": preferDtoClassesRule.rules["prefer-dto-classes"],
|
|
156
|
+
"enforce-dto-from-entity-method": enforceDtoFromEntityMethod,
|
|
157
|
+
"enforce-dto-create-method": enforceDtoCreateMethod,
|
|
158
|
+
"no-relative-imports": noRelativeImportsRule,
|
|
159
|
+
"coordinate-naming": coordinateNamingRule,
|
|
160
|
+
"analyze-relation-usage": analyzeRelationUsageRule,
|
|
161
|
+
"no-import-meta-env": noImportMetaEnvRule,
|
|
162
|
+
"no-type-assertion": noTypeAssertion.rules["no-type-assertion"],
|
|
163
|
+
"max-classes-per-file": maxClassesPerFileRule,
|
|
164
|
+
"no-blank-lines-between-decorators-and-properties": noBlankLinesBetweenDecoratorsAndPropertiesRule,
|
|
165
|
+
"entity-required-properties": entityRequiredPropertiesRule.rules["entity-required-properties"],
|
|
166
|
+
"typeorm-column-type-validation": typeormColumnTypeValidationRule.rules["typeorm-column-type-validation"],
|
|
167
|
+
"enforce-typeorm-naming-conventions": enforceTypeormNamingConventionsRule.rules["enforce-typeorm-naming-conventions"],
|
|
168
|
+
"enforce-translations-required": enforceTranslationsRequiredRule,
|
|
169
|
+
"enforce-repository-token-handling": enforceRepositoryTokenHandlingRule,
|
|
170
|
+
"enforce-inject-decorator": enforceInjectDecoratorRule,
|
|
171
|
+
"enforce-result-pattern": enforceResultPattern,
|
|
172
|
+
"enforce-api-versioning": enforceApiVersioning.rules["enforce-api-versioning"],
|
|
173
|
+
"enforce-app-module-registration": enforceAppModuleRegistration,
|
|
174
|
+
"enforce-error-handling": enforceErrorHandling.rules["enforce-error-handling"],
|
|
175
|
+
"enforce-service-dto": serviceArchitectureRule.rules["enforce-service-dto"],
|
|
176
|
+
"enforce-dto-from-entity": enforceDtoFromEntity.rules["enforce-dto-from-entity"],
|
|
177
|
+
"enforce-entity-dto-no-request-dto": enforceEntityDtoNoRequestDto,
|
|
178
|
+
"enforce-entity-dto-optional-auto-fields": enforceEntityDtoOptionalAutoFieldsRule.rules["enforce-entity-dto-optional-auto-fields"],
|
|
179
|
+
"enforce-entity-dto-create-no-id": enforceEntityDtoCreateNoIdRule,
|
|
180
|
+
"enforce-nonentity-dto-create": enforceNonEntityDtoCreate.rules["enforce-nonentity-dto-create"],
|
|
181
|
+
"enforce-request-dto-no-entity-dto": enforceRequestDtoNoEntityDtoRule,
|
|
182
|
+
"enforce-entity-factory-pattern": enforceEntityFactoryPatternRule,
|
|
183
|
+
"enforce-dto-factory-in-services": enforceDtoFactoryInServicesRule,
|
|
184
|
+
"enforce-dto-entity-creation": enforceDtoEntityCreationRule,
|
|
185
|
+
"enforce-entity-creation-pattern": enforceEntityCreationPatternRule.rules["enforce-entity-creation-pattern"],
|
|
186
|
+
"enforce-dto-create-pattern": enforceDtoCreatePatternRule.rules["enforce-dto-create-pattern"],
|
|
187
|
+
"enforce-lazy-type-loading": enforceLazyTypeLoadingRule,
|
|
188
|
+
"enforce-dto-create-parameter-types": enforceDtoCreateParameterTypesRule,
|
|
189
|
+
"enforce-entity-instantiation-in-toentity": enforceEntityInstantiationInToEntityRule.rules["enforce-entity-instantiation-in-toentity"],
|
|
190
|
+
"enforce-toentity-conditional-assignment": enforceToEntityConditionalAssignmentRule.rules["enforce-toentity-conditional-assignment"],
|
|
191
|
+
"enforce-entity-dto-extends-base": enforceEntityDtoExtendsBaseRule,
|
|
192
|
+
"enforce-entity-dto-convert-method": enforceEntityDtoConvertMethodRule,
|
|
193
|
+
"enforce-entity-dto-from-request-dto-structure": enforceEntityDtoFromRequestDtoStructureRule,
|
|
194
|
+
"enforce-from-request-dto-usage": enforceFromRequestDtoUsageRule,
|
|
195
|
+
"enforce-service-relation-loading": enforceServiceRelationLoadingRule,
|
|
196
|
+
"enforce-custom-error-classes": enforceCustomErrorClassesRule,
|
|
197
|
+
"enforce-dto-naming-conventions": enforceDtoNamingConventions,
|
|
198
|
+
"enforce-dto-naming": enforceDtoNamingRule.rules["enforce-dto-naming"],
|
|
199
|
+
"no-undefined-entity-properties": noUndefinedEntityPropertiesRule.rules["no-undefined-entity-properties"],
|
|
200
|
+
"dto-annotation-property-consistency": dtoAnnotationPropertyConsistencyRule.rules["dto-annotation-property-consistency"],
|
|
201
|
+
"enforce-explicit-dto-types": enforceExplicitDtoTypesRule,
|
|
202
|
+
"no-dto-default-values": noDtoDefaultValuesRule.rules["no-dto-default-values"],
|
|
203
|
+
"filename-class-name-match": filenameClassNameMatchRule,
|
|
204
|
+
"enum-database-validation": enumDatabaseValidationRule,
|
|
205
|
+
"enforce-module-existence": enforceModuleExistenceRule.rules["enforce-module-existence"],
|
|
206
|
+
"enforce-eager-translation-loading": enforceEagerTranslationLoadingRule,
|
|
207
|
+
"enforce-playable-entity-naming": enforcePlayableEntityNamingRule,
|
|
208
|
+
"enforce-enum-for-playable-entities": enforceEnumForPlayableEntitiesRule,
|
|
209
|
+
"no-comments": noCommentsPlugin.rules["no-comments"],
|
|
210
|
+
...controllerArchitectureRules.rules,
|
|
211
|
+
...controllerReadonlyRestrictionRules.rules,
|
|
212
|
+
...dtoEntityMappingCompletenessRule.rules,
|
|
213
|
+
...dtoEntityTypeMatchingRule.rules,
|
|
214
|
+
...forbidFromEntityOutsideEntityFolderRule.rules,
|
|
215
|
+
"prefer-dto-create-method": enforceDtoCreateMethod,
|
|
216
|
+
...websocketArchitectureRules.rules,
|
|
217
|
+
},
|
|
218
|
+
};
|
|
219
|
+
|
|
220
|
+
// Erstelle TypeScript-Parser mit detaillierten Options
|
|
221
|
+
const tsParserWithOptions = {
|
|
222
|
+
parser: typescriptParser,
|
|
223
|
+
parserOptions: {
|
|
224
|
+
project: [tsconfig, tsconfigEslint],
|
|
225
|
+
tsconfigRootDir: tsconfigRootDir,
|
|
226
|
+
createDefaultProgram: true,
|
|
227
|
+
ecmaFeatures: {
|
|
228
|
+
jsx: false,
|
|
229
|
+
},
|
|
230
|
+
},
|
|
231
|
+
};
|
|
232
|
+
|
|
233
|
+
const config = [
|
|
234
|
+
{
|
|
235
|
+
ignores: [
|
|
236
|
+
"node_modules/**",
|
|
237
|
+
"dist/**",
|
|
238
|
+
"coverage/**",
|
|
239
|
+
"logs/**",
|
|
240
|
+
"scripts/**",
|
|
241
|
+
"**/__tests__/**",
|
|
242
|
+
"src/migration/**",
|
|
243
|
+
"**/migration/**",
|
|
244
|
+
"**/*.migration.ts",
|
|
245
|
+
"**/Migration*.ts"
|
|
246
|
+
],
|
|
247
|
+
},
|
|
248
|
+
// Spezielle Konfiguration für Test-Fixtures - aktiviere neue Regeln
|
|
249
|
+
{
|
|
250
|
+
files: ["**/test-fixtures/**/*.ts"],
|
|
251
|
+
languageOptions: {
|
|
252
|
+
ecmaVersion: "latest",
|
|
253
|
+
sourceType: "module",
|
|
254
|
+
globals: globals.node,
|
|
255
|
+
...tsParserWithOptions,
|
|
256
|
+
},
|
|
257
|
+
plugins: {
|
|
258
|
+
"@typescript-eslint": typescriptEslint,
|
|
259
|
+
"@stylistic": stylisticPlugin,
|
|
260
|
+
import: importPlugin,
|
|
261
|
+
deprecate: deprecatePlugin,
|
|
262
|
+
jest: jestPlugin,
|
|
263
|
+
"custom-rules": customRulesPlugin,
|
|
264
|
+
"no-comments": noCommentsPlugin,
|
|
265
|
+
perfectionist,
|
|
266
|
+
sonarjs: sonarjsPlugin,
|
|
267
|
+
},
|
|
268
|
+
rules: {
|
|
269
|
+
// Nur die neuen Regeln aktivieren für Test-Fixtures
|
|
270
|
+
"custom-rules/enforce-module-existence": "error",
|
|
271
|
+
// Alle anderen Regeln deaktivieren
|
|
272
|
+
"@typescript-eslint/no-unused-vars": "off",
|
|
273
|
+
"@typescript-eslint/no-explicit-any": "off",
|
|
274
|
+
"no-restricted-syntax": "off",
|
|
275
|
+
"no-restricted-globals": "off",
|
|
276
|
+
},
|
|
277
|
+
},
|
|
278
|
+
// Spezielle Konfiguration für Express Middleware - deaktiviere unsafe-* Regeln
|
|
279
|
+
{
|
|
280
|
+
files: [
|
|
281
|
+
"**/middleware/cors-debug.ts",
|
|
282
|
+
"**/middleware/detailed-error-logger.ts",
|
|
283
|
+
"**/middleware/request-logger.ts",
|
|
284
|
+
"**/middleware/response-logger.ts",
|
|
285
|
+
"**/middleware/route-tracking.ts"
|
|
286
|
+
],
|
|
287
|
+
languageOptions: {
|
|
288
|
+
ecmaVersion: "latest",
|
|
289
|
+
sourceType: "module",
|
|
290
|
+
globals: globals.node,
|
|
291
|
+
...tsParserWithOptions,
|
|
292
|
+
},
|
|
293
|
+
plugins: {
|
|
294
|
+
"@typescript-eslint": typescriptEslint,
|
|
295
|
+
"@stylistic": stylisticPlugin,
|
|
296
|
+
import: importPlugin,
|
|
297
|
+
deprecate: deprecatePlugin,
|
|
298
|
+
jest: jestPlugin,
|
|
299
|
+
"custom-rules": customRulesPlugin,
|
|
300
|
+
"no-comments": noCommentsPlugin,
|
|
301
|
+
perfectionist,
|
|
302
|
+
sonarjs: sonarjsPlugin,
|
|
303
|
+
},
|
|
304
|
+
rules: {
|
|
305
|
+
// Deaktiviere unsafe-* Regeln für Express Middleware
|
|
306
|
+
"@typescript-eslint/no-unsafe-assignment": "off",
|
|
307
|
+
"@typescript-eslint/no-unsafe-call": "off",
|
|
308
|
+
"@typescript-eslint/no-unsafe-member-access": "off",
|
|
309
|
+
"@typescript-eslint/no-unsafe-argument": "off",
|
|
310
|
+
"@typescript-eslint/no-unsafe-return": "off",
|
|
311
|
+
// Alle anderen Regeln beibehalten
|
|
312
|
+
...bestPracticesRules.rules,
|
|
313
|
+
...deprecatedRules.rules,
|
|
314
|
+
...errorRules.rules,
|
|
315
|
+
...es6Rules.rules,
|
|
316
|
+
...importRules.rules,
|
|
317
|
+
"import/order": "off",
|
|
318
|
+
...jestRules.rules,
|
|
319
|
+
...nodeRules.rules,
|
|
320
|
+
...strictRules.rules,
|
|
321
|
+
...styleRules.rules,
|
|
322
|
+
...typescriptRules.rules,
|
|
323
|
+
...variableRules.rules,
|
|
324
|
+
...deadCodeDetectionRules.rules,
|
|
325
|
+
},
|
|
326
|
+
},
|
|
327
|
+
// Spezielle Konfiguration für Socket.IO - deaktiviere unsafe-* Regeln
|
|
328
|
+
{
|
|
329
|
+
files: [
|
|
330
|
+
"**/socket/SocketGateway.ts",
|
|
331
|
+
"**/socket/handlers/AuraEventHandler.ts",
|
|
332
|
+
"**/socket/handlers/ChatEventHandler.ts",
|
|
333
|
+
"**/socket/handlers/CharacterEventHandler.ts"
|
|
334
|
+
],
|
|
335
|
+
languageOptions: {
|
|
336
|
+
ecmaVersion: "latest",
|
|
337
|
+
sourceType: "module",
|
|
338
|
+
globals: globals.node,
|
|
339
|
+
...tsParserWithOptions,
|
|
340
|
+
},
|
|
341
|
+
plugins: {
|
|
342
|
+
"@typescript-eslint": typescriptEslint,
|
|
343
|
+
"@stylistic": stylisticPlugin,
|
|
344
|
+
import: importPlugin,
|
|
345
|
+
deprecate: deprecatePlugin,
|
|
346
|
+
jest: jestPlugin,
|
|
347
|
+
"custom-rules": customRulesPlugin,
|
|
348
|
+
"no-comments": noCommentsPlugin,
|
|
349
|
+
perfectionist,
|
|
350
|
+
sonarjs: sonarjsPlugin,
|
|
351
|
+
},
|
|
352
|
+
rules: {
|
|
353
|
+
// Deaktiviere unsafe-* Regeln für Socket.IO
|
|
354
|
+
"@typescript-eslint/no-unsafe-assignment": "off",
|
|
355
|
+
"@typescript-eslint/no-unsafe-call": "off",
|
|
356
|
+
"@typescript-eslint/no-unsafe-member-access": "off",
|
|
357
|
+
"@typescript-eslint/no-unsafe-argument": "off",
|
|
358
|
+
"@typescript-eslint/no-unsafe-return": "off",
|
|
359
|
+
// Alle anderen Regeln beibehalten
|
|
360
|
+
...bestPracticesRules.rules,
|
|
361
|
+
...deprecatedRules.rules,
|
|
362
|
+
...errorRules.rules,
|
|
363
|
+
...es6Rules.rules,
|
|
364
|
+
...importRules.rules,
|
|
365
|
+
"import/order": "off",
|
|
366
|
+
...jestRules.rules,
|
|
367
|
+
...nodeRules.rules,
|
|
368
|
+
...strictRules.rules,
|
|
369
|
+
...styleRules.rules,
|
|
370
|
+
...typescriptRules.rules,
|
|
371
|
+
...variableRules.rules,
|
|
372
|
+
...deadCodeDetectionRules.rules,
|
|
373
|
+
},
|
|
374
|
+
},
|
|
375
|
+
// Spezielle Konfiguration für Authentication/Utilities - deaktiviere unsafe-* Regeln
|
|
376
|
+
{
|
|
377
|
+
files: [
|
|
378
|
+
"**/utilities/authentication.ts",
|
|
379
|
+
"**/utilities/CorsVerificationHelper.ts",
|
|
380
|
+
"**/utilities/CorsLoggerMiddleware.ts"
|
|
381
|
+
],
|
|
382
|
+
languageOptions: {
|
|
383
|
+
ecmaVersion: "latest",
|
|
384
|
+
sourceType: "module",
|
|
385
|
+
globals: globals.node,
|
|
386
|
+
...tsParserWithOptions,
|
|
387
|
+
},
|
|
388
|
+
plugins: {
|
|
389
|
+
"@typescript-eslint": typescriptEslint,
|
|
390
|
+
"@stylistic": stylisticPlugin,
|
|
391
|
+
import: importPlugin,
|
|
392
|
+
deprecate: deprecatePlugin,
|
|
393
|
+
jest: jestPlugin,
|
|
394
|
+
"custom-rules": customRulesPlugin,
|
|
395
|
+
"no-comments": noCommentsPlugin,
|
|
396
|
+
perfectionist,
|
|
397
|
+
sonarjs: sonarjsPlugin,
|
|
398
|
+
},
|
|
399
|
+
rules: {
|
|
400
|
+
// Deaktiviere unsafe-* Regeln für Authentication/Utilities
|
|
401
|
+
"@typescript-eslint/no-unsafe-assignment": "off",
|
|
402
|
+
"@typescript-eslint/no-unsafe-call": "off",
|
|
403
|
+
"@typescript-eslint/no-unsafe-member-access": "off",
|
|
404
|
+
"@typescript-eslint/no-unsafe-argument": "off",
|
|
405
|
+
"@typescript-eslint/no-unsafe-return": "off",
|
|
406
|
+
// Alle anderen Regeln beibehalten
|
|
407
|
+
...bestPracticesRules.rules,
|
|
408
|
+
...deprecatedRules.rules,
|
|
409
|
+
...errorRules.rules,
|
|
410
|
+
...es6Rules.rules,
|
|
411
|
+
...importRules.rules,
|
|
412
|
+
"import/order": "off",
|
|
413
|
+
...jestRules.rules,
|
|
414
|
+
...nodeRules.rules,
|
|
415
|
+
...strictRules.rules,
|
|
416
|
+
...styleRules.rules,
|
|
417
|
+
...typescriptRules.rules,
|
|
418
|
+
...variableRules.rules,
|
|
419
|
+
...deadCodeDetectionRules.rules,
|
|
420
|
+
},
|
|
421
|
+
},
|
|
422
|
+
{
|
|
423
|
+
files: ["**/*.ts"],
|
|
424
|
+
languageOptions: {
|
|
425
|
+
ecmaVersion: "latest",
|
|
426
|
+
sourceType: "module",
|
|
427
|
+
globals: globals.node,
|
|
428
|
+
...tsParserWithOptions,
|
|
429
|
+
},
|
|
430
|
+
|
|
431
|
+
plugins: {
|
|
432
|
+
"@typescript-eslint": typescriptEslint,
|
|
433
|
+
|
|
434
|
+
"@stylistic": stylisticPlugin,
|
|
435
|
+
import: importPlugin,
|
|
436
|
+
deprecate: deprecatePlugin,
|
|
437
|
+
jest: jestPlugin,
|
|
438
|
+
"custom-rules": customRulesPlugin,
|
|
439
|
+
"no-comments": noCommentsPlugin,
|
|
440
|
+
"no-fetch": { rules: { "no-fetch": noFetchRule } },
|
|
441
|
+
perfectionist,
|
|
442
|
+
sonarjs: sonarjsPlugin,
|
|
443
|
+
},
|
|
444
|
+
|
|
445
|
+
rules: {
|
|
446
|
+
...bestPracticesRules.rules,
|
|
447
|
+
...deprecatedRules.rules,
|
|
448
|
+
...errorRules.rules,
|
|
449
|
+
...es6Rules.rules,
|
|
450
|
+
...importRules.rules,
|
|
451
|
+
// Deaktiviere import/order um Konflikte mit perfectionist/sort-imports zu vermeiden
|
|
452
|
+
"import/order": "off",
|
|
453
|
+
...jestRules.rules,
|
|
454
|
+
...nodeRules.rules,
|
|
455
|
+
...strictRules.rules,
|
|
456
|
+
...styleRules.rules,
|
|
457
|
+
...typescriptRules.rules,
|
|
458
|
+
...variableRules.rules,
|
|
459
|
+
...deadCodeDetectionRules.rules,
|
|
460
|
+
|
|
461
|
+
// Array formatting rules
|
|
462
|
+
"array-element-newline": ["error", "always"],
|
|
463
|
+
"array-bracket-newline": ["error", "consistent"],
|
|
464
|
+
"indent": "off", // Deaktiviert, da @stylistic/indent verwendet wird
|
|
465
|
+
"@stylistic/indent": ["error", 2, { SwitchCase: 1 }],
|
|
466
|
+
// Semikolons erzwingen
|
|
467
|
+
"semi": ["error", "always"],
|
|
468
|
+
"@stylistic/semi": ["error", "always"],
|
|
469
|
+
// Newline-before-return mit Padding-Lines ersetzen (bessere Indentation-Unterstützung)
|
|
470
|
+
"newline-before-return": "off",
|
|
471
|
+
"padding-line-between-statements": [
|
|
472
|
+
"error",
|
|
473
|
+
{ blankLine: "always", prev: "*", next: "return" }
|
|
474
|
+
],
|
|
475
|
+
// Verwende die benutzerdefinierten Regeln direkt
|
|
476
|
+
"custom-rules/require-valid-relations": "error",
|
|
477
|
+
"custom-rules/enforce-basecontroller": "error",
|
|
478
|
+
"custom-rules/enforce-body-request-dto": "error",
|
|
479
|
+
"custom-rules/enforce-dto-usage": "error",
|
|
480
|
+
"custom-rules/controller-swagger-docs": "error",
|
|
481
|
+
"custom-rules/controller-swagger-complete": "error",
|
|
482
|
+
"custom-rules/controller-swagger-english": "error",
|
|
483
|
+
"custom-rules/controller-naming-conventions": "error",
|
|
484
|
+
"custom-rules/dto-entity-swagger-separation": "error",
|
|
485
|
+
"custom-rules/controller-architecture": "error",
|
|
486
|
+
"custom-rules/require-proper-response-handling": "error",
|
|
487
|
+
"custom-rules/no-write-methods-in-public-controllers": [
|
|
488
|
+
"error",
|
|
489
|
+
{
|
|
490
|
+
exceptions: [
|
|
491
|
+
"CharacterController.ts",
|
|
492
|
+
"AuthController.ts",
|
|
493
|
+
]
|
|
494
|
+
}
|
|
495
|
+
],
|
|
496
|
+
"custom-rules/no-entity-type-casting": "error",
|
|
497
|
+
"custom-rules/no-partial-type": "error",
|
|
498
|
+
"custom-rules/no-tsyringe": "error",
|
|
499
|
+
"custom-rules/no-dto-duplicates": "error",
|
|
500
|
+
"custom-rules/no-dynamic-import-in-types": "error",
|
|
501
|
+
"custom-rules/no-undefined-entity-properties": "error",
|
|
502
|
+
"custom-rules/dto-annotation-property-consistency": "error",
|
|
503
|
+
"custom-rules/admin-controller-security": "error",
|
|
504
|
+
"custom-rules/no-entity-imports-in-controllers": "error",
|
|
505
|
+
"custom-rules/enforce-controller-response-dto": "error",
|
|
506
|
+
"custom-rules/no-entity-in-swagger-docs": "error",
|
|
507
|
+
"custom-rules/prefer-dto-classes": "warn",
|
|
508
|
+
"custom-rules/enforce-dto-from-entity-method": "error",
|
|
509
|
+
"custom-rules/enforce-dto-create-method": "error",
|
|
510
|
+
|
|
511
|
+
"max-depth": ["error", 4],
|
|
512
|
+
"max-nested-callbacks": ["error", 3],
|
|
513
|
+
"max-params": ["error", { "max": 10 }], // Maximal 10 Parameter erlaubt
|
|
514
|
+
"custom-rules/no-comments": "error",
|
|
515
|
+
"custom-rules/coordinate-naming": [
|
|
516
|
+
"error",
|
|
517
|
+
{
|
|
518
|
+
min: 2,
|
|
519
|
+
exceptions: ["_", "constructor"]
|
|
520
|
+
}
|
|
521
|
+
],
|
|
522
|
+
"custom-rules/analyze-relation-usage": "error",
|
|
523
|
+
"custom-rules/no-import-meta-env": "error",
|
|
524
|
+
"custom-rules/dto-entity-mapping-completeness": "error",
|
|
525
|
+
"custom-rules/dto-entity-type-matching": "error",
|
|
526
|
+
"custom-rules/dto-entity-type-consistency": "error",
|
|
527
|
+
"custom-rules/forbid-fromentity-outside-entity-folder": "error",
|
|
528
|
+
"custom-rules/dto-visibility-modifiers": "error",
|
|
529
|
+
"import/no-relative-parent-imports": "error",
|
|
530
|
+
"import/no-relative-packages": "error",
|
|
531
|
+
"custom-rules/no-relative-imports": "error",
|
|
532
|
+
"custom-rules/enforce-explicit-dto-types": "error",
|
|
533
|
+
"custom-rules/no-dto-constructors": "error",
|
|
534
|
+
"custom-rules/max-classes-per-file": "error",
|
|
535
|
+
// Regel zum Verbieten aller Kommentare
|
|
536
|
+
"no-comments/no-comments": "error",
|
|
537
|
+
|
|
538
|
+
// Entity-Validierung
|
|
539
|
+
"custom-rules/entity-required-properties": "error",
|
|
540
|
+
"custom-rules/typeorm-column-type-validation": "error",
|
|
541
|
+
"custom-rules/enforce-typeorm-naming-conventions": "error",
|
|
542
|
+
"custom-rules/enforce-translations-required": "error",
|
|
543
|
+
|
|
544
|
+
// Neue Härtungsregeln
|
|
545
|
+
"custom-rules/enforce-repository-token-handling": "error",
|
|
546
|
+
"custom-rules/enforce-inject-decorator": "error",
|
|
547
|
+
"custom-rules/enforce-result-pattern": "error",
|
|
548
|
+
"custom-rules/enforce-api-versioning": "error",
|
|
549
|
+
"custom-rules/enforce-error-handling": "error",
|
|
550
|
+
"custom-rules/pino-logger-format": "error",
|
|
551
|
+
"custom-rules/enforce-service-dto": "error",
|
|
552
|
+
"custom-rules/enforce-dto-from-entity": "error", // Alte Regel deaktiviert
|
|
553
|
+
"custom-rules/enforce-entity-dto-no-request-dto": "error",
|
|
554
|
+
"custom-rules/enforce-entity-dto-optional-auto-fields": "error", // id, createdAt, updatedAt müssen optional sein
|
|
555
|
+
"custom-rules/enforce-entity-dto-create-no-id": "error", // EntityDto.create() darf kein id, createdAt, updatedAt haben
|
|
556
|
+
"custom-rules/enforce-nonentity-dto-create": "error", // Neue spezialisierte Regel für Non-Entity-DTOs
|
|
557
|
+
"custom-rules/enforce-request-dto-no-entity-dto": "error", // Request-DTOs dürfen keine EntityDto-Properties haben
|
|
558
|
+
"custom-rules/enforce-entity-factory-pattern": "error", // Entities nur in DTO fromEntity-Methoden initialisieren
|
|
559
|
+
"custom-rules/enforce-dto-factory-in-services": "error", // Services müssen EntityDto.fromRequestDto() → toEntity() → save() verwenden
|
|
560
|
+
"custom-rules/enforce-from-request-dto-usage": "error", // Services MÜSSEN fromRequestDto verwenden statt repository.create()
|
|
561
|
+
"custom-rules/enforce-service-relation-loading": "warn", // Services sollten load*EntityDto() Methoden für Relations verwenden
|
|
562
|
+
"custom-rules/enforce-dto-entity-creation": "error", // Verbotet entityManager.create() und erzwingt DTO-basierte Entity-Erstellung
|
|
563
|
+
"custom-rules/enforce-entity-creation-pattern": "error", // Entities über DTOs erstellen und mit .toEntity() konvertieren
|
|
564
|
+
"custom-rules/enforce-dto-create-pattern": "error", // DTO create-Methoden müssen striktes Pattern verwenden
|
|
565
|
+
"custom-rules/enforce-dto-create-parameter-types": "error", // DTO create-Methoden Parameter müssen 1:1 mit DTO-Properties übereinstimmen
|
|
566
|
+
"custom-rules/enforce-entity-instantiation-in-toentity": "error", // new Entity() nur in toEntity/fromRequestDto erlaubt
|
|
567
|
+
"custom-rules/enforce-toentity-conditional-assignment": "error", // id, createdAt, updatedAt müssen mit Guards gesetzt werden
|
|
568
|
+
"custom-rules/enforce-custom-error-classes": "error", // Custom Error-Klassen statt generischem Error
|
|
569
|
+
"custom-rules/enforce-dto-naming-conventions": "error", // DTO-Namenskonventionen
|
|
570
|
+
"custom-rules/enforce-dto-constructor": "error",
|
|
571
|
+
"custom-rules/filename-class-name-match": "error",
|
|
572
|
+
"custom-rules/enforce-lazy-type-loading": "error", // Lazy type loading für zirkuläre Imports
|
|
573
|
+
"custom-rules/enum-database-validation": "error",
|
|
574
|
+
"custom-rules/no-type-assertion": "error",
|
|
575
|
+
"custom-rules/no-dto-default-values": "error",
|
|
576
|
+
"custom-rules/enforce-eager-translation-loading": "error", // Eager loading für translation relations
|
|
577
|
+
"custom-rules/enforce-playable-entity-naming": "error", // Erzwingt playableRace/playableClass/playableFaction
|
|
578
|
+
"custom-rules/enforce-enum-for-playable-entities": "error", // Erzwingt Enum-Typen für playable entities
|
|
579
|
+
// Neue Regeln für TypeScript-Fehler-Abfangung
|
|
580
|
+
"custom-rules/enforce-module-existence": "error",
|
|
581
|
+
|
|
582
|
+
// Perfectionist-Regeln für Code-Organisation - verwende Perfectionist statt import/order
|
|
583
|
+
"perfectionist/sort-array-includes": "error",
|
|
584
|
+
"perfectionist/sort-classes": "error",
|
|
585
|
+
"perfectionist/sort-enums": "error",
|
|
586
|
+
"perfectionist/sort-exports": "error",
|
|
587
|
+
"perfectionist/sort-imports": "error", // Perfectionist für Import-Sortierung
|
|
588
|
+
"perfectionist/sort-interfaces": "error",
|
|
589
|
+
"perfectionist/sort-intersection-types": "error",
|
|
590
|
+
"perfectionist/sort-jsx-props": "error",
|
|
591
|
+
"perfectionist/sort-maps": "error",
|
|
592
|
+
"perfectionist/sort-named-exports": "error",
|
|
593
|
+
"perfectionist/sort-named-imports": "error", // Perfectionist für Named Imports
|
|
594
|
+
"perfectionist/sort-object-types": "error",
|
|
595
|
+
"perfectionist/sort-objects": "error",
|
|
596
|
+
"perfectionist/sort-sets": "error",
|
|
597
|
+
"perfectionist/sort-switch-case": "error",
|
|
598
|
+
"perfectionist/sort-union-types": "error",
|
|
599
|
+
"perfectionist/sort-variable-declarations": "error",
|
|
600
|
+
|
|
601
|
+
// SonarJS-Regeln für Code-Qualität und Sicherheit
|
|
602
|
+
"sonarjs/no-identical-expressions": "error",
|
|
603
|
+
"sonarjs/no-identical-functions": "error",
|
|
604
|
+
"sonarjs/no-redundant-boolean": "error",
|
|
605
|
+
"sonarjs/no-redundant-jump": "error",
|
|
606
|
+
"sonarjs/no-unused-collection": "error",
|
|
607
|
+
"sonarjs/no-use-of-empty-return-value": "error",
|
|
608
|
+
"sonarjs/prefer-immediate-return": "error",
|
|
609
|
+
"sonarjs/prefer-object-literal": "error",
|
|
610
|
+
"sonarjs/prefer-single-boolean-return": "error",
|
|
611
|
+
"sonarjs/prefer-while": "error",
|
|
612
|
+
|
|
613
|
+
// Deaktiviere semicolon-Regeln für bulletproof code (verhindert Konflikte in TypeScript-Interfaces)
|
|
614
|
+
"no-extra-semi": "off",
|
|
615
|
+
"semi": "off",
|
|
616
|
+
|
|
617
|
+
// Konfiguriere Export-Sortierung mit mehrzeiligem Format
|
|
618
|
+
|
|
619
|
+
// Verbietet direkte Verwendung von import.meta.env und process.env
|
|
620
|
+
"no-restricted-syntax": [
|
|
621
|
+
"error",
|
|
622
|
+
{
|
|
623
|
+
"selector": "MemberExpression[object.type='MemberExpression'][object.object.type='MetaProperty'][object.object.meta.name='import'][object.object.property.name='meta'][object.property.name='env']",
|
|
624
|
+
"message": "Direkte Verwendung von import.meta.env ist nicht erlaubt. Verwende stattdessen ConfigProvider.getXxx()."
|
|
625
|
+
},
|
|
626
|
+
{
|
|
627
|
+
"selector": "MemberExpression[object.type='MemberExpression'][object.object.name='process'][object.property.name='env']",
|
|
628
|
+
"message": "Direkte Verwendung von process.env ist nicht erlaubt. Verwende stattdessen ConfigProvider.getXxx()."
|
|
629
|
+
},
|
|
630
|
+
{
|
|
631
|
+
"selector": "MemberExpression[object.name='process'][property.name='env']",
|
|
632
|
+
"message": "Direkte Verwendung von process.env ist nicht erlaubt. Verwende stattdessen ConfigProvider.getXxx()."
|
|
633
|
+
},
|
|
634
|
+
{
|
|
635
|
+
"selector": "TSTypeReference[typeName.name='Record']",
|
|
636
|
+
"message": "Usage of Record<string, unknown> is not allowed. Define a specific interface or type instead."
|
|
637
|
+
},
|
|
638
|
+
{
|
|
639
|
+
"selector": "TSInterfaceBody > TSIndexSignature[typeAnnotation.typeAnnotation.type='TSUnknownKeyword']",
|
|
640
|
+
"message": "Index signatures with 'unknown' type ([key: string]: unknown) are not allowed. Define specific properties instead."
|
|
641
|
+
}
|
|
642
|
+
],
|
|
643
|
+
|
|
644
|
+
// No Direct Fetch - Enforce ApiClient Usage
|
|
645
|
+
"no-fetch/no-fetch": "error",
|
|
646
|
+
},
|
|
647
|
+
},
|
|
648
|
+
// Spezielle Konfiguration für Controller
|
|
649
|
+
{
|
|
650
|
+
files: ["**/controller/**/*.ts"],
|
|
651
|
+
rules: {
|
|
652
|
+
// Maximal 10 Parameter erlaubt
|
|
653
|
+
"@typescript-eslint/max-params": ["error", { "max": 10 }],
|
|
654
|
+
// Aktiviere die Regel für BaseController-Nutzung
|
|
655
|
+
"custom-rules/enforce-basecontroller": "error",
|
|
656
|
+
// Indent-Fehler in bestehenden Controllern ignorieren (bestehender 4-Space-Stil)
|
|
657
|
+
"@stylistic/indent": ["error", 2, { SwitchCase: 1 }],
|
|
658
|
+
// Stilregeln vereinfachen für bestehende Controller
|
|
659
|
+
"object-curly-newline": "off",
|
|
660
|
+
"newline-before-return": "off",
|
|
661
|
+
// DTO-Zwang in Controllern deaktivieren, Responses werden separat typisiert
|
|
662
|
+
"custom-rules/enforce-dto-usage": "error",
|
|
663
|
+
// Temporär Naming-Konventionen für Controller deaktivieren
|
|
664
|
+
"custom-rules/controller-naming-conventions": "off",
|
|
665
|
+
// ensure absolute imports are above relative imports and that unassigned imports are ignored
|
|
666
|
+
// https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/order.md
|
|
667
|
+
// TODO: enforce a stricter convention in module import order?
|
|
668
|
+
"import/order": "off", // Deaktiviert wegen Circular Fixes Konflikten
|
|
669
|
+
// Deaktiviere sort-classes für Controller - Route-Reihenfolge muss manuell kontrolliert werden
|
|
670
|
+
"perfectionist/sort-classes": "off",
|
|
671
|
+
}
|
|
672
|
+
},
|
|
673
|
+
// Spezifische Ausnahme für AdminAuraController hinsichtlich Englisch-Erkennung
|
|
674
|
+
{
|
|
675
|
+
files: ["**/controller/Admin/AdminAuraController.ts"],
|
|
676
|
+
rules: {
|
|
677
|
+
"custom-rules/controller-swagger-english": "off",
|
|
678
|
+
},
|
|
679
|
+
},
|
|
680
|
+
// Spezielle Konfiguration für Entity-Dateien
|
|
681
|
+
{
|
|
682
|
+
files: ["**/entity/**/*.ts", "**/*Entity.ts"],
|
|
683
|
+
rules: {
|
|
684
|
+
// Aktiviere die Regel gegen DTO-Verwendung in Entities
|
|
685
|
+
"custom-rules/no-dto-in-entity": "error",
|
|
686
|
+
// Deaktiviere DTO-Usage für Entity-Dateien (TypeORM Decorators verwenden anonyme Objekte)
|
|
687
|
+
"custom-rules/enforce-dto-usage": "off",
|
|
688
|
+
// Deaktiviere Perfectionist für Entities (Entity-Property-Reihenfolge ist frei wählbar)
|
|
689
|
+
"perfectionist/sort-objects": "off",
|
|
690
|
+
"perfectionist/sort-classes": "off",
|
|
691
|
+
},
|
|
692
|
+
},
|
|
693
|
+
// Spezielle Konfiguration für Entity-DTOs - Circular Dependency Prevention
|
|
694
|
+
{
|
|
695
|
+
files: ["**/dto/Entity/**/*.ts", "**/*EntityDto.ts"],
|
|
696
|
+
rules: {
|
|
697
|
+
// Aktiviere die neuen Circular Dependency Prevention Regeln
|
|
698
|
+
"custom-rules/enforce-entity-dto-extends-base": "error",
|
|
699
|
+
"custom-rules/enforce-entity-dto-convert-method": "error",
|
|
700
|
+
"custom-rules/enforce-entity-dto-from-request-dto-structure": "error",
|
|
701
|
+
// Deaktiviere DTO-Usage für Entity-DTOs (@ApiProperty Decorators verwenden anonyme Objekte)
|
|
702
|
+
"custom-rules/enforce-dto-usage": "off",
|
|
703
|
+
// Deaktiviere Perfectionist für Entity-DTOs (Property-Reihenfolge ist frei wählbar)
|
|
704
|
+
"perfectionist/sort-objects": "off",
|
|
705
|
+
"perfectionist/sort-classes": "off",
|
|
706
|
+
},
|
|
707
|
+
},
|
|
708
|
+
// Spezielle Konfiguration für DTO-Dateien
|
|
709
|
+
{
|
|
710
|
+
files: ["**/dto/**/*.ts"],
|
|
711
|
+
rules: {
|
|
712
|
+
// Deaktiviere DTO-Usage für DTO-Dateien (@ApiProperty Decorators verwenden anonyme Objekte)
|
|
713
|
+
"custom-rules/enforce-dto-usage": "off",
|
|
714
|
+
},
|
|
715
|
+
},
|
|
716
|
+
// Ausnahme für ConfigProvider - darf import.meta.env und process.env verwenden
|
|
717
|
+
{
|
|
718
|
+
files: ["**/config/ConfigProvider.ts"],
|
|
719
|
+
rules: {
|
|
720
|
+
"no-restricted-syntax": "off",
|
|
721
|
+
},
|
|
722
|
+
},
|
|
723
|
+
// Ausnahme für Build-Tools - dürfen any-types und komplexere Logik verwenden
|
|
724
|
+
{
|
|
725
|
+
files: ["**/config/swagger-adapter.ts"],
|
|
726
|
+
rules: {
|
|
727
|
+
"@typescript-eslint/no-explicit-any": "off",
|
|
728
|
+
"@typescript-eslint/no-unsafe-return": "off",
|
|
729
|
+
"@typescript-eslint/no-unsafe-call": "off",
|
|
730
|
+
"@typescript-eslint/no-unsafe-member-access": "off",
|
|
731
|
+
"@typescript-eslint/no-unsafe-assignment": "error",
|
|
732
|
+
"no-cond-assign": "off",
|
|
733
|
+
"prefer-regex-literals": "off",
|
|
734
|
+
"prefer-destructuring": "off",
|
|
735
|
+
"@typescript-eslint/naming-convention": "off",
|
|
736
|
+
"@typescript-eslint/no-unused-vars": "off",
|
|
737
|
+
"import/no-extraneous-dependencies": "off",
|
|
738
|
+
"custom-rules/enforce-dto-usage": "error",
|
|
739
|
+
"no-restricted-syntax": "off",
|
|
740
|
+
},
|
|
741
|
+
},
|
|
742
|
+
// Ausnahme für Test-Dateien - dürfen process.env für Mocking verwenden
|
|
743
|
+
{
|
|
744
|
+
files: ["**/*.test.ts", "**/*.spec.ts", "**/__tests__/**/*.ts", "**/test-fixtures/**/*.ts"],
|
|
745
|
+
rules: {
|
|
746
|
+
"no-restricted-syntax": "off",
|
|
747
|
+
"@typescript-eslint/naming-convention": "off",
|
|
748
|
+
"@typescript-eslint/no-unsafe-assignment": "error",
|
|
749
|
+
"@typescript-eslint/no-unsafe-member-access": "off",
|
|
750
|
+
"import/no-extraneous-dependencies": "off",
|
|
751
|
+
},
|
|
752
|
+
},
|
|
753
|
+
{
|
|
754
|
+
files: ["**/__tests__/**/*", "**/migration/**/*"],
|
|
755
|
+
rules: {
|
|
756
|
+
...Object.fromEntries(
|
|
757
|
+
Object.keys({
|
|
758
|
+
...bestPracticesRules.rules,
|
|
759
|
+
...deprecatedRules.rules,
|
|
760
|
+
...errorRules.rules,
|
|
761
|
+
...es6Rules.rules,
|
|
762
|
+
...importRules.rules,
|
|
763
|
+
...jestRules.rules,
|
|
764
|
+
...nodeRules.rules,
|
|
765
|
+
...strictRules.rules,
|
|
766
|
+
...styleRules.rules,
|
|
767
|
+
...typescriptRules.rules,
|
|
768
|
+
...variableRules.rules,
|
|
769
|
+
...deadCodeDetectionRules.rules,
|
|
770
|
+
}).map(rule => [rule, "off"])
|
|
771
|
+
),
|
|
772
|
+
// Deaktiviere auch alle custom-rules
|
|
773
|
+
"custom-rules/require-valid-relations": "error",
|
|
774
|
+
"custom-rules/enforce-basecontroller": "error",
|
|
775
|
+
"custom-rules/controller-swagger-docs": "off",
|
|
776
|
+
"custom-rules/controller-swagger-complete": "off",
|
|
777
|
+
"custom-rules/controller-swagger-english": "off",
|
|
778
|
+
"custom-rules/controller-naming-conventions": "off",
|
|
779
|
+
"custom-rules/dto-entity-swagger-separation": "off",
|
|
780
|
+
"custom-rules/controller-architecture": "off",
|
|
781
|
+
"custom-rules/require-proper-response-handling": "off",
|
|
782
|
+
"custom-rules/no-write-methods-in-public-controllers": "off",
|
|
783
|
+
"custom-rules/no-tsyringe": "off",
|
|
784
|
+
"custom-rules/admin-controller-security": "off",
|
|
785
|
+
"custom-rules/no-entity-imports-in-controllers": "off",
|
|
786
|
+
"custom-rules/no-entity-in-swagger-docs": "off",
|
|
787
|
+
"custom-rules/prefer-dto-classes": "off",
|
|
788
|
+
"custom-rules/enforce-dto-from-entity-method": "error",
|
|
789
|
+
"custom-rules/enforce-dto-create-method": "error",
|
|
790
|
+
"custom-rules/coordinate-naming": "off",
|
|
791
|
+
"custom-rules/auth-guard-required": "off",
|
|
792
|
+
"custom-rules/analyze-relation-usage": "off",
|
|
793
|
+
"custom-rules/no-import-meta-env": "off",
|
|
794
|
+
"custom-rules/dto-entity-mapping-completeness": "error",
|
|
795
|
+
"custom-rules/dto-visibility-modifiers": "error",
|
|
796
|
+
"custom-rules/no-dto-constructors": "off",
|
|
797
|
+
"custom-rules/max-classes-per-file": "off",
|
|
798
|
+
"no-comments/no-comments": "error",
|
|
799
|
+
"custom-rules/entity-required-properties": "off",
|
|
800
|
+
"custom-rules/typeorm-column-type-validation": "off",
|
|
801
|
+
"custom-rules/enforce-typeorm-naming-conventions": "off",
|
|
802
|
+
"custom-rules/enforce-repository-token-handling": "off",
|
|
803
|
+
"custom-rules/enforce-result-pattern": "off",
|
|
804
|
+
"custom-rules/enforce-api-versioning": "off",
|
|
805
|
+
"custom-rules/enforce-error-handling": "off",
|
|
806
|
+
"custom-rules/enforce-service-dto": "off",
|
|
807
|
+
"custom-rules/enforce-dto-from-entity": "off",
|
|
808
|
+
"custom-rules/enforce-entity-dto-no-request-dto": "error",
|
|
809
|
+
"custom-rules/enforce-entity-dto-optional-auto-fields": "error", // id, createdAt, updatedAt müssen optional sein
|
|
810
|
+
"custom-rules/enforce-entity-instantiation-in-toentity": "error", // Prüft "new Entity() nur in toEntity/fromRequestDto"
|
|
811
|
+
"custom-rules/enforce-toentity-conditional-assignment": "error", // id, createdAt, updatedAt müssen mit Guards gesetzt werden
|
|
812
|
+
"custom-rules/enforce-entity-dto-extends-base": "error",
|
|
813
|
+
"custom-rules/enforce-entity-dto-convert-method": "error",
|
|
814
|
+
"custom-rules/enforce-nonentity-dto-create": "off",
|
|
815
|
+
"custom-rules/enforce-dto-naming-conventions": "error",
|
|
816
|
+
"custom-rules/enforce-dto-constructor": "off",
|
|
817
|
+
"custom-rules/filename-class-name-match": "error",
|
|
818
|
+
"custom-rules/enum-database-validation": "off",
|
|
819
|
+
"custom-rules/enforce-dto-usage": "error",
|
|
820
|
+
"no-restricted-syntax": "off",
|
|
821
|
+
"no-restricted-globals": "off",
|
|
822
|
+
},
|
|
823
|
+
},
|
|
824
|
+
// Echoes of Order-spezifische Overrides
|
|
825
|
+
{
|
|
826
|
+
files: ['src/testing/**/*.ts'],
|
|
827
|
+
rules: {
|
|
828
|
+
'custom-rules/enforce-dto-usage': 'off',
|
|
829
|
+
'custom-rules/enforce-entity-factory-pattern': 'off',
|
|
830
|
+
'custom-rules/no-comments': 'off',
|
|
831
|
+
'no-comments/no-comments': 'off',
|
|
832
|
+
},
|
|
833
|
+
},
|
|
834
|
+
{
|
|
835
|
+
files: [
|
|
836
|
+
'src/dto/Service/**/*.ts',
|
|
837
|
+
'src/dto/Response/Eoo/Game/Config/**/*.ts'
|
|
838
|
+
],
|
|
839
|
+
rules: {
|
|
840
|
+
'no-restricted-syntax': 'off',
|
|
841
|
+
},
|
|
842
|
+
},
|
|
843
|
+
{
|
|
844
|
+
files: ['src/dto/Common/EmptyDto.ts'],
|
|
845
|
+
rules: {
|
|
846
|
+
'sonarjs/prefer-immediate-return': 'off',
|
|
847
|
+
},
|
|
848
|
+
},
|
|
849
|
+
{
|
|
850
|
+
files: ['src/service/Eoo/Game/Combat/CombatantFactory.ts'],
|
|
851
|
+
rules: {
|
|
852
|
+
'custom-rules/enforce-entity-factory-pattern': 'off',
|
|
853
|
+
'custom-rules/enforce-error-handling': 'off',
|
|
854
|
+
'custom-rules/no-type-assertion': 'off',
|
|
855
|
+
'no-restricted-syntax': 'off',
|
|
856
|
+
},
|
|
857
|
+
},
|
|
858
|
+
{
|
|
859
|
+
files: ['src/service/Admin/Chat/ChatTestExecutionService.ts'],
|
|
860
|
+
rules: {
|
|
861
|
+
'@typescript-eslint/no-explicit-any': 'off',
|
|
862
|
+
'@typescript-eslint/no-unsafe-argument': 'off',
|
|
863
|
+
'@typescript-eslint/no-unsafe-assignment': 'off',
|
|
864
|
+
'@typescript-eslint/no-unsafe-member-access': 'off',
|
|
865
|
+
'custom-rules/enforce-error-handling': 'off',
|
|
866
|
+
'custom-rules/enforce-inject-decorator': 'off',
|
|
867
|
+
'no-await-in-loop': 'off',
|
|
868
|
+
},
|
|
869
|
+
},
|
|
870
|
+
{
|
|
871
|
+
files: ['src/service/Eoo/Game/Combat/CombatMechanicsConfigService.ts'],
|
|
872
|
+
rules: {
|
|
873
|
+
'@typescript-eslint/no-unsafe-assignment': 'off',
|
|
874
|
+
'@typescript-eslint/no-unsafe-call': 'off',
|
|
875
|
+
'@typescript-eslint/no-unsafe-member-access': 'off',
|
|
876
|
+
'@typescript-eslint/no-unsafe-return': 'off',
|
|
877
|
+
'custom-rules/no-type-assertion': 'off',
|
|
878
|
+
},
|
|
879
|
+
},
|
|
880
|
+
{
|
|
881
|
+
files: ['src/guards/ApiKeyGuard.ts'],
|
|
882
|
+
rules: {
|
|
883
|
+
'custom-rules/no-type-assertion': 'off',
|
|
884
|
+
'no-restricted-syntax': 'off',
|
|
885
|
+
},
|
|
886
|
+
},
|
|
887
|
+
{
|
|
888
|
+
files: ['src/service/Admin/Battle/BattleSimulationService.ts'],
|
|
889
|
+
rules: {
|
|
890
|
+
'no-await-in-loop': 'off',
|
|
891
|
+
},
|
|
892
|
+
},
|
|
893
|
+
];
|
|
894
|
+
|
|
895
|
+
export default config;
|