@futdevpro/dynamo-eslint 1.15.25 → 1.20.2

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 (146) hide show
  1. package/.c8rc.json +26 -26
  2. package/.cursor/rules/__assistant_guide.mdc +30 -30
  3. package/.cursor/rules/__main.mdc +64 -64
  4. package/.cursor/rules/_ag_backend-structure.mdc +85 -85
  5. package/.cursor/rules/_ag_backend.mdc +16 -16
  6. package/.cursor/rules/_ag_debug.mdc +7 -7
  7. package/.cursor/rules/_ag_documentation_writing_rules.mdc +372 -372
  8. package/.cursor/rules/_ag_file-refactoring.mdc +113 -113
  9. package/.cursor/rules/_ag_fixes_rules.mdc +5 -5
  10. package/.cursor/rules/_ag_frontend-structure.mdc +86 -86
  11. package/.cursor/rules/_ag_frontend.mdc +39 -39
  12. package/.cursor/rules/_ag_import-rules.mdc +44 -44
  13. package/.cursor/rules/_ag_naming.mdc +115 -115
  14. package/.cursor/rules/_ag_running_commands.mdc +4 -4
  15. package/.cursor/rules/_ag_server-controller.mdc +5 -5
  16. package/.cursor/rules/_ag_should-be.mdc +6 -6
  17. package/.cursor/rules/_ag_swearing.mdc +47 -47
  18. package/.cursor/rules/ai_development_guide.md +60 -60
  19. package/.cursor/rules/ai_directives.md +114 -114
  20. package/.cursor/rules/cursor-rules.md +160 -160
  21. package/.cursor/rules/default-command.mdc +464 -464
  22. package/.cursor/rules/error_code_pattern.md +39 -39
  23. package/.cursor/rules/saved rule mcp server use.md +15 -15
  24. package/.dynamo/pipeline.cicd.config.json +184 -184
  25. package/.dynamo/version-bump.config.json +5 -5
  26. package/.eslintrc.json +4 -4
  27. package/.github/workflows/main.yml +436 -436
  28. package/.husky/pre-commit +2 -2
  29. package/.vscode/settings.json +11 -11
  30. package/README.md +312 -315
  31. package/__documentations/2026-04-18-ccap-review-integration.md +173 -173
  32. package/__documentations/2026-08-18-bfr-ctm-005-eslint9-validator-report.md +45 -0
  33. package/__documentations/2026-08-22-angular-20-phase2-release.md +79 -0
  34. package/build/configs/base.d.ts +1 -2
  35. package/build/configs/base.d.ts.map +1 -1
  36. package/build/configs/base.js +3 -4
  37. package/build/configs/base.js.map +1 -1
  38. package/build/configs/ngx.d.ts +1 -3
  39. package/build/configs/ngx.d.ts.map +1 -1
  40. package/build/configs/ngx.js +4 -7
  41. package/build/configs/ngx.js.map +1 -1
  42. package/build/plugin/index.d.ts +24 -24
  43. package/build/plugin/rules/no-getter-logic.js +1 -1
  44. package/build/plugin/rules/no-getter-logic.js.map +1 -1
  45. package/build/plugin/rules/prefer-enum-over-string-union.js +7 -7
  46. package/build/plugin/rules/prefer-enum-over-string-union.js.map +1 -1
  47. package/build/plugin/rules/prefer-interface-over-duplicate-types.js +2 -2
  48. package/build/plugin/rules/prefer-interface-over-duplicate-types.js.map +1 -1
  49. package/build/plugin/rules/require-jsdoc-description.js +7 -7
  50. package/build/plugin/rules/require-jsdoc-description.js.map +1 -1
  51. package/build/scripts/dynamo-fix.js +1 -1
  52. package/build/scripts/dynamo-fix.js.map +1 -1
  53. package/build/scripts/fix-return-types.d.ts.map +1 -1
  54. package/build/scripts/fix-return-types.js.map +1 -1
  55. package/build/scripts/validate-imports.js +51 -27
  56. package/build/scripts/validate-imports.js.map +1 -1
  57. package/build/scripts/validate-naming.js +49 -10
  58. package/build/scripts/validate-naming.js.map +1 -1
  59. package/eslint.config.js +15 -15
  60. package/package.json +27 -28
  61. package/pnpm-workspace.yaml +2 -0
  62. package/samples/.vscode/settings.json +13 -13
  63. package/samples/base/.eslintrc.json +6 -6
  64. package/samples/base/eslint.config.js +3 -3
  65. package/samples/fsm/.eslintrc.json +4 -4
  66. package/samples/fsm/eslint.config.js +3 -3
  67. package/samples/ngx/.eslintrc.json +6 -6
  68. package/samples/ngx/eslint.config.js +3 -3
  69. package/samples/ngx-package/.eslintrc.json +4 -4
  70. package/samples/ngx-package/eslint.config.js +3 -3
  71. package/samples/nts/.eslintrc.json +6 -6
  72. package/samples/nts/eslint.config.js +3 -3
  73. package/samples/nts-package/.eslintrc.json +4 -4
  74. package/samples/nts-package/eslint.config.js +3 -3
  75. package/samples/package.json.example +22 -26
  76. package/samples/poc-sample.ts +38 -38
  77. package/samples/poc-violations.ts +54 -54
  78. package/scripts/run-coverage-tests.js +24 -24
  79. package/spec/support/helpers/ts-node-helper.js +9 -9
  80. package/spec/support/jasmine.coverage.json +23 -23
  81. package/spec/support/jasmine.json +24 -24
  82. package/src/configs/angular20-compatibility.spec.ts +62 -0
  83. package/src/configs/base.ts +156 -157
  84. package/src/configs/fsm.ts +10 -10
  85. package/src/configs/ngx-package.ts +10 -10
  86. package/src/configs/ngx.ts +92 -95
  87. package/src/configs/nts-package.ts +20 -20
  88. package/src/configs/nts.ts +34 -34
  89. package/src/index.ts +4 -4
  90. package/src/plugin/index.ts +86 -86
  91. package/src/plugin/rules/angular/angular-for-track-logic.spec.ts +44 -44
  92. package/src/plugin/rules/angular/angular-for-track-logic.ts +88 -88
  93. package/src/plugin/rules/angular/effect-signal-loop.spec.ts +89 -89
  94. package/src/plugin/rules/angular/effect-signal-loop.ts +125 -125
  95. package/src/plugin/rules/angular/no-async-ngoninit.spec.ts +50 -50
  96. package/src/plugin/rules/angular/no-async-ngoninit.ts +43 -43
  97. package/src/plugin/rules/angular/no-component-direct-api.spec.ts +78 -78
  98. package/src/plugin/rules/angular/no-component-direct-api.ts +82 -82
  99. package/src/plugin/rules/angular/no-method-call-in-template.spec.ts +63 -63
  100. package/src/plugin/rules/angular/no-method-call-in-template.ts +89 -89
  101. package/src/plugin/rules/angular/no-ngfor-directive.spec.ts +44 -44
  102. package/src/plugin/rules/angular/no-ngfor-directive.ts +62 -62
  103. package/src/plugin/rules/angular/no-ngif-directive.spec.ts +44 -44
  104. package/src/plugin/rules/angular/no-ngif-directive.ts +62 -62
  105. package/src/plugin/rules/explicit-types.spec.ts +190 -190
  106. package/src/plugin/rules/explicit-types.ts +186 -186
  107. package/src/plugin/rules/import/import-order.spec.ts +219 -219
  108. package/src/plugin/rules/import/import-order.ts +197 -197
  109. package/src/plugin/rules/import/no-import-type.spec.ts +69 -69
  110. package/src/plugin/rules/import/no-import-type.ts +46 -46
  111. package/src/plugin/rules/import/no-js-import.spec.ts +82 -82
  112. package/src/plugin/rules/import/no-js-import.ts +45 -45
  113. package/src/plugin/rules/naming-patterns.spec.ts +189 -189
  114. package/src/plugin/rules/naming-patterns.ts +426 -426
  115. package/src/plugin/rules/no-getter-logic.spec.ts +591 -591
  116. package/src/plugin/rules/no-getter-logic.ts +220 -220
  117. package/src/plugin/rules/prefer-enum-over-string-union.spec.ts +583 -583
  118. package/src/plugin/rules/prefer-enum-over-string-union.ts +333 -334
  119. package/src/plugin/rules/prefer-interface-over-duplicate-types.spec.ts +404 -404
  120. package/src/plugin/rules/prefer-interface-over-duplicate-types.ts +314 -314
  121. package/src/plugin/rules/require-jsdoc-description.spec.ts +779 -779
  122. package/src/plugin/rules/require-jsdoc-description.ts +572 -572
  123. package/src/plugin/rules/require-test-description-prefix.spec.ts +459 -459
  124. package/src/plugin/rules/require-test-description-prefix.ts +154 -154
  125. package/src/plugin/rules/ts/data-model-extends.spec.ts +84 -84
  126. package/src/plugin/rules/ts/data-model-extends.ts +100 -100
  127. package/src/plugin/rules/ts/no-any-type.spec.ts +28 -28
  128. package/src/plugin/rules/ts/no-any-type.ts +36 -36
  129. package/src/plugin/rules/ts/no-as-cast.spec.ts +51 -51
  130. package/src/plugin/rules/ts/no-as-cast.ts +51 -51
  131. package/src/plugin/rules/ts/no-dynamic-imports.spec.ts +54 -54
  132. package/src/plugin/rules/ts/no-dynamic-imports.ts +49 -49
  133. package/src/plugin/rules/ts/no-native-browser-dialogs.spec.ts +54 -54
  134. package/src/plugin/rules/ts/no-native-browser-dialogs.ts +84 -84
  135. package/src/plugin/rules/ts/no-plain-function-export.spec.ts +72 -72
  136. package/src/plugin/rules/ts/no-plain-function-export.ts +73 -73
  137. package/src/plugin/rules/ts/one-export-per-file.spec.ts +64 -64
  138. package/src/plugin/rules/ts/one-export-per-file.ts +77 -77
  139. package/src/scripts/dynamo-fix.ts +172 -172
  140. package/src/scripts/eslintrc-audit.ts +116 -116
  141. package/src/scripts/fix-return-types.spec.ts +65 -65
  142. package/src/scripts/fix-return-types.ts +286 -285
  143. package/src/scripts/validate-imports.ts +288 -257
  144. package/src/scripts/validate-naming.ts +209 -183
  145. package/src/scripts/validator-cli.integration.spec.ts +99 -0
  146. package/tsconfig.json +31 -31
@@ -1,173 +1,173 @@
1
- # CCAP Revisioned Review integráció a Dynamo ESLint-be
2
-
3
- **Dátum:** 2026-04-18
4
-
5
- ## Összefoglaló
6
-
7
- A `ccap-revisioned/server/src/_modules/developer-tools/` alatti **Code Review
8
- toolkit** AST-portable részének átültetése a `@futdevpro/dynamo-eslint`
9
- plugin-be. Eredmény: az IDE a háttér-ben azonnal mutatja a CCAP-szintű
10
- review-violation-öket — `eslint --fix`-szel a fixálható-k automatikusan
11
- javíthatók.
12
-
13
- Az eredeti `ccap-revisioned` projekt-hez **nem** nyúltunk hozzá.
14
-
15
- ## Áttekintés: 25 AST-portable review
16
-
17
- A 38 CCAP review-ból:
18
-
19
- - **8 review** csak filesystem-szinten értelmezhető (cross-file konzisztencia,
20
- file-rename autofix) → **csak `dc rev`-ben** él (lásd `dynamo-cli` doc).
21
- - **6 review** lefedve **ESLint built-in** vagy `@typescript-eslint`
22
- szabállyal — `base.ts`-ben aktiválva.
23
- - **4 review** **megerősítve** meglévő `@futdevpro/dynamo` szabályokon
24
- belül (sub-check-ek + szigorúbb logika).
25
- - **14 review** **új AST-szabály-ként** implementálva.
26
-
27
- ## 1. Új ESLint built-in / typescript-eslint aktiválás (`base.ts`)
28
-
29
- | Szabály | Megfelelő CCAP review |
30
- | ------------------------------------------------ | ---------------------------- |
31
- | `max-params: [warn, 3]` (régről 4) | `method-input-count` |
32
- | `object-shorthand: [warn, never]` | `no-object-shorthand` |
33
- | `dot-notation: warn` | `no-bracket-property-access` |
34
- | `@typescript-eslint/array-type: [warn, array]` | `no-array-generic` |
35
- | `@typescript-eslint/prefer-optional-chain: warn` | `prefer-optional-chaining` |
36
- | `@typescript-eslint/no-require-imports: warn` | `no-dynamic-imports` (CJS) |
37
-
38
- ## 2. Megerősített meglévő szabályok
39
-
40
- ### `naming-patterns` (komplett rewrite)
41
-
42
- Konfigurálható sub-check-ek `checks` schema option-nel — mind a 7 CCAP
43
- naming-review egy szabály-on belül, AST-alapú PropertyDefinition /
44
- ClassDeclaration / TSEnumDeclaration visitor-okkal.
45
-
46
- Sub-check-ek (default: mind aktív):
47
-
48
- - `booleanIsPrefix` — boolean property `is`-prefix
49
- - `signalPostfix` — `signal()` / `computed()` factory `_$` postfix
50
- - `rxjsPostfix` — `BehaviorSubject` `_BS`, `Subject` `_S`, `Observable` `$`
51
- - `fileClassPostfix` — class-postfix illeszkedik a fájl-pattern-hez
52
- - `enumValueFormat` — enum kulcs camelCase, érték kebab-case (`*.type-enum.ts`)
53
- - `servicePropertyPostfix` — `_DataService` injektált prop `_DS`-re végződik (`_AS`, `_CS`, `_MS` is)
54
- - `fileClassNameConsistency` — fájl-entity rész = class-entity rész (kebab-átkonvertálva)
55
-
56
- ### `no-getter-logic` (CCAP-megerősítés)
57
-
58
- - Új tiltott AST node-ok: `IfStatement`, `ForStatement`, `WhileStatement`,
59
- `SwitchStatement`, `TryStatement`, `ThrowStatement`, `VariableDeclaration`
60
- - Új ellenőrzés: `BlockStatement.body.length > 1` — több-utasításos getter tilos
61
-
62
- ### `require-jsdoc-description` (CCAP-megerősítés)
63
-
64
- - Új visitor: `TSTypeAliasDeclaration` — exportált `type X = …` is kötelező
65
- JSDoc-os
66
-
67
- ### `import-order` (változatlanul lefedi)
68
-
69
- A CCAP `import-group-order` review 4-csoport-os elvét már a meglévő rule
70
- implementálja.
71
-
72
- ## 3. Új TypeScript szabályok (`src/plugin/rules/ts/`)
73
-
74
- | Szabály | CCAP review |
75
- | ----------------------------- | ---------------------------- |
76
- | `no-as-cast` | `no-as-cast` (kivéve `as const`) |
77
- | `no-any-type` | `no-any-type` |
78
- | `no-dynamic-imports` | `no-dynamic-imports` (ES + CJS) |
79
- | `one-export-per-file` | `one-export-per-file` (kivételek: `.const.ts`, `.type-enum.ts`, `.interface.ts`, `.data-model.ts`, `.control-model.ts`) |
80
- | `no-plain-function-export` | `no-plain-function-export` (kivéve `.spec.ts`) |
81
- | `data-model-extends` | `data-model-extends-metadata` + `parallel-date-fields` (egy szabály) |
82
- | `no-native-browser-dialogs` | `no-native-browser-dialogs` |
83
-
84
- ## 4. Új Angular szabályok (`src/plugin/rules/angular/`)
85
-
86
- ### TypeScript-AST (alkalmazva `*.ts` fájlokra)
87
-
88
- | Szabály | CCAP review |
89
- | ----------------------------- | ---------------------------- |
90
- | `no-async-ngoninit` | `no-async-ngoninit` — `async ngOnInit` tilos |
91
- | `no-component-direct-api` | `no-component-direct-api` — komponens nem importálhat `*ApiService`-t / `HttpClient`-et |
92
- | `effect-signal-loop` | `effect-signal-loop` — `effect()` signal read+write detection |
93
-
94
- ### Template-text-scan (alkalmazva `*.html` fájlokra)
95
-
96
- | Szabály | CCAP review |
97
- | ----------------------------- | ---------------------------- |
98
- | `no-method-call-in-template` | `no-method-call-in-template` — `{{ method() }}` / `[attr]="m()"` / `@if (m())` tilos |
99
- | `angular-for-track-logic` | `angular-for-track-logic` — `@for track` csak property access lehet |
100
- | `no-ngif-directive` | `no-ngif-directive` — `*ngIf` helyett `@if` |
101
- | `no-ngfor-directive` | `no-ngfor-directive` — `*ngFor` helyett `@for` |
102
-
103
- > **Megjegyzés**: A 4 template-szabály nem AST-t, hanem source-text regex-et
104
- > használ a `Program` visitor-ban. Ez direkt döntés — robosztusabb a többféle
105
- > Angular template-parser verzió ellenében, és a CCAP review is ugyanígy
106
- > szöveg-szinten skennel.
107
-
108
- ## Aktiválás
109
-
110
- A 7 új TS szabály mind regisztrálódik a `base.ts`-ben (default: `warn`).
111
-
112
- A 7 Angular szabály a `ngx.ts`-ben aktiválódik:
113
-
114
- - 3 darab a `*.ts` block-ban (no-async-ngoninit, no-component-direct-api, effect-signal-loop)
115
- - 4 darab a `*.html` block-ban (template-szabályok)
116
-
117
- A `ngx.ts` html-block plugins szekcióját kibővítettük `...ngxBaseConfig[1].plugins`-szal,
118
- hogy a `@futdevpro/dynamo` plugin a html files alatt is regisztrált legyen.
119
-
120
- ## Tesztek
121
-
122
- Minden új szabály-hoz `*.spec.ts` (mock-context pattern, ahogy a meglévő
123
- specek is csinálták):
124
-
125
- - 7 darab `src/plugin/rules/ts/*.spec.ts`
126
- - 7 darab `src/plugin/rules/angular/*.spec.ts`
127
- - `naming-patterns.spec.ts` — komplett rewrite a 7 sub-check-hez
128
- - `no-getter-logic.spec.ts` — multi-statement + if-statement edge case-ek
129
- - `require-jsdoc-description.spec.ts` — `TSTypeAliasDeclaration` visitor expose
130
-
131
- Eredmény: **186 spec, 0 failure** (a meglévő 167-en felül a 19 új).
132
-
133
- Futtatás: `pnpm test`.
134
-
135
- ## Disable comment
136
-
137
- ESLint natív disable-komment-tel kapcsolható ki egy adott rule:
138
-
139
- ```typescript
140
- // eslint-disable-next-line @futdevpro/dynamo/no-as-cast
141
- const x: MyType = (someUnknown as MyType);
142
- ```
143
-
144
- A CCAP `// ccap-review-disable` és az új `// dy-review-disable` szintaxis
145
- **csak** a CLI-szintű `dc rev` által értelmezett — ESLint-en nem hat. Ha
146
- mindkét toolból ki akarsz tiltani egy violation-t, mindkét komment-stílust
147
- használd.
148
-
149
- ## When to use which?
150
-
151
- | Helyzet | CLI (`dc rev`) | ESLint plugin |
152
- | ------------------------------------------------ | -------------- | ------------- |
153
- | IDE inline-hint, save-on-format autofix | | ✓ |
154
- | Pre-commit hook (gyors, fájlonkénti) | | ✓ |
155
- | CI repo-wide audit JSON output-tal | ✓ | |
156
- | Cross-file konzisztencia (module-export-prefix) | ✓ | |
157
- | File-rename autofix (file-class-name-consistency) | ✓ | |
158
- | Bulk autofix (`--fix --apply`) | ✓ | |
159
- | Per-fájl, AST-pontosságú szabály-violation | | ✓ |
160
- | Naming + signal + rxjs postfix | ✓ | ✓ (mindkettő) |
161
- | Template `*ngIf` / `@for track` ellenőrzés | ✓ | ✓ (mindkettő) |
162
-
163
- A két toolkit **komplementer**: az ESLint az IDE-szintű real-time feedback,
164
- a CLI a repo-szintű audit + bulk-autofix. Ahol mindkét tool implementálja
165
- ugyanazt a review-t, ott double-coverage van — ez szándékos: az ESLint az
166
- IDE-ben azonnal jelez, a CLI pedig CI-ben még egyszer leellenőriz.
167
-
168
- ## Kapcsolódó dokumentumok
169
-
170
- - `dynamo-cli/__documentations/2026-04-18-ccap-review-integration.md` — CLI oldal
171
- - `dynamo-eslint/src/configs/base.ts` — base ruleset (összes új TS szabály)
172
- - `dynamo-eslint/src/configs/ngx.ts` — Angular ruleset (új Angular + template szabályok)
173
- - `dynamo-eslint/src/plugin/index.ts` — plugin export + recommended config
1
+ # CCAP Revisioned Review integráció a Dynamo ESLint-be
2
+
3
+ **Dátum:** 2026-04-18
4
+
5
+ ## Összefoglaló
6
+
7
+ A `ccap-revisioned/server/src/_modules/developer-tools/` alatti **Code Review
8
+ toolkit** AST-portable részének átültetése a `@futdevpro/dynamo-eslint`
9
+ plugin-be. Eredmény: az IDE a háttér-ben azonnal mutatja a CCAP-szintű
10
+ review-violation-öket — `eslint --fix`-szel a fixálható-k automatikusan
11
+ javíthatók.
12
+
13
+ Az eredeti `ccap-revisioned` projekt-hez **nem** nyúltunk hozzá.
14
+
15
+ ## Áttekintés: 25 AST-portable review
16
+
17
+ A 38 CCAP review-ból:
18
+
19
+ - **8 review** csak filesystem-szinten értelmezhető (cross-file konzisztencia,
20
+ file-rename autofix) → **csak `dc rev`-ben** él (lásd `dynamo-cli` doc).
21
+ - **6 review** lefedve **ESLint built-in** vagy `@typescript-eslint`
22
+ szabállyal — `base.ts`-ben aktiválva.
23
+ - **4 review** **megerősítve** meglévő `@futdevpro/dynamo` szabályokon
24
+ belül (sub-check-ek + szigorúbb logika).
25
+ - **14 review** **új AST-szabály-ként** implementálva.
26
+
27
+ ## 1. Új ESLint built-in / typescript-eslint aktiválás (`base.ts`)
28
+
29
+ | Szabály | Megfelelő CCAP review |
30
+ | ------------------------------------------------ | ---------------------------- |
31
+ | `max-params: [warn, 3]` (régről 4) | `method-input-count` |
32
+ | `object-shorthand: [warn, never]` | `no-object-shorthand` |
33
+ | `dot-notation: warn` | `no-bracket-property-access` |
34
+ | `@typescript-eslint/array-type: [warn, array]` | `no-array-generic` |
35
+ | `@typescript-eslint/prefer-optional-chain: warn` | `prefer-optional-chaining` |
36
+ | `@typescript-eslint/no-require-imports: warn` | `no-dynamic-imports` (CJS) |
37
+
38
+ ## 2. Megerősített meglévő szabályok
39
+
40
+ ### `naming-patterns` (komplett rewrite)
41
+
42
+ Konfigurálható sub-check-ek `checks` schema option-nel — mind a 7 CCAP
43
+ naming-review egy szabály-on belül, AST-alapú PropertyDefinition /
44
+ ClassDeclaration / TSEnumDeclaration visitor-okkal.
45
+
46
+ Sub-check-ek (default: mind aktív):
47
+
48
+ - `booleanIsPrefix` — boolean property `is`-prefix
49
+ - `signalPostfix` — `signal()` / `computed()` factory `_$` postfix
50
+ - `rxjsPostfix` — `BehaviorSubject` `_BS`, `Subject` `_S`, `Observable` `$`
51
+ - `fileClassPostfix` — class-postfix illeszkedik a fájl-pattern-hez
52
+ - `enumValueFormat` — enum kulcs camelCase, érték kebab-case (`*.type-enum.ts`)
53
+ - `servicePropertyPostfix` — `_DataService` injektált prop `_DS`-re végződik (`_AS`, `_CS`, `_MS` is)
54
+ - `fileClassNameConsistency` — fájl-entity rész = class-entity rész (kebab-átkonvertálva)
55
+
56
+ ### `no-getter-logic` (CCAP-megerősítés)
57
+
58
+ - Új tiltott AST node-ok: `IfStatement`, `ForStatement`, `WhileStatement`,
59
+ `SwitchStatement`, `TryStatement`, `ThrowStatement`, `VariableDeclaration`
60
+ - Új ellenőrzés: `BlockStatement.body.length > 1` — több-utasításos getter tilos
61
+
62
+ ### `require-jsdoc-description` (CCAP-megerősítés)
63
+
64
+ - Új visitor: `TSTypeAliasDeclaration` — exportált `type X = …` is kötelező
65
+ JSDoc-os
66
+
67
+ ### `import-order` (változatlanul lefedi)
68
+
69
+ A CCAP `import-group-order` review 4-csoport-os elvét már a meglévő rule
70
+ implementálja.
71
+
72
+ ## 3. Új TypeScript szabályok (`src/plugin/rules/ts/`)
73
+
74
+ | Szabály | CCAP review |
75
+ | ----------------------------- | ---------------------------- |
76
+ | `no-as-cast` | `no-as-cast` (kivéve `as const`) |
77
+ | `no-any-type` | `no-any-type` |
78
+ | `no-dynamic-imports` | `no-dynamic-imports` (ES + CJS) |
79
+ | `one-export-per-file` | `one-export-per-file` (kivételek: `.const.ts`, `.type-enum.ts`, `.interface.ts`, `.data-model.ts`, `.control-model.ts`) |
80
+ | `no-plain-function-export` | `no-plain-function-export` (kivéve `.spec.ts`) |
81
+ | `data-model-extends` | `data-model-extends-metadata` + `parallel-date-fields` (egy szabály) |
82
+ | `no-native-browser-dialogs` | `no-native-browser-dialogs` |
83
+
84
+ ## 4. Új Angular szabályok (`src/plugin/rules/angular/`)
85
+
86
+ ### TypeScript-AST (alkalmazva `*.ts` fájlokra)
87
+
88
+ | Szabály | CCAP review |
89
+ | ----------------------------- | ---------------------------- |
90
+ | `no-async-ngoninit` | `no-async-ngoninit` — `async ngOnInit` tilos |
91
+ | `no-component-direct-api` | `no-component-direct-api` — komponens nem importálhat `*ApiService`-t / `HttpClient`-et |
92
+ | `effect-signal-loop` | `effect-signal-loop` — `effect()` signal read+write detection |
93
+
94
+ ### Template-text-scan (alkalmazva `*.html` fájlokra)
95
+
96
+ | Szabály | CCAP review |
97
+ | ----------------------------- | ---------------------------- |
98
+ | `no-method-call-in-template` | `no-method-call-in-template` — `{{ method() }}` / `[attr]="m()"` / `@if (m())` tilos |
99
+ | `angular-for-track-logic` | `angular-for-track-logic` — `@for track` csak property access lehet |
100
+ | `no-ngif-directive` | `no-ngif-directive` — `*ngIf` helyett `@if` |
101
+ | `no-ngfor-directive` | `no-ngfor-directive` — `*ngFor` helyett `@for` |
102
+
103
+ > **Megjegyzés**: A 4 template-szabály nem AST-t, hanem source-text regex-et
104
+ > használ a `Program` visitor-ban. Ez direkt döntés — robosztusabb a többféle
105
+ > Angular template-parser verzió ellenében, és a CCAP review is ugyanígy
106
+ > szöveg-szinten skennel.
107
+
108
+ ## Aktiválás
109
+
110
+ A 7 új TS szabály mind regisztrálódik a `base.ts`-ben (default: `warn`).
111
+
112
+ A 7 Angular szabály a `ngx.ts`-ben aktiválódik:
113
+
114
+ - 3 darab a `*.ts` block-ban (no-async-ngoninit, no-component-direct-api, effect-signal-loop)
115
+ - 4 darab a `*.html` block-ban (template-szabályok)
116
+
117
+ A `ngx.ts` html-block plugins szekcióját kibővítettük `...ngxBaseConfig[1].plugins`-szal,
118
+ hogy a `@futdevpro/dynamo` plugin a html files alatt is regisztrált legyen.
119
+
120
+ ## Tesztek
121
+
122
+ Minden új szabály-hoz `*.spec.ts` (mock-context pattern, ahogy a meglévő
123
+ specek is csinálták):
124
+
125
+ - 7 darab `src/plugin/rules/ts/*.spec.ts`
126
+ - 7 darab `src/plugin/rules/angular/*.spec.ts`
127
+ - `naming-patterns.spec.ts` — komplett rewrite a 7 sub-check-hez
128
+ - `no-getter-logic.spec.ts` — multi-statement + if-statement edge case-ek
129
+ - `require-jsdoc-description.spec.ts` — `TSTypeAliasDeclaration` visitor expose
130
+
131
+ Eredmény: **186 spec, 0 failure** (a meglévő 167-en felül a 19 új).
132
+
133
+ Futtatás: `pnpm test`.
134
+
135
+ ## Disable comment
136
+
137
+ ESLint natív disable-komment-tel kapcsolható ki egy adott rule:
138
+
139
+ ```typescript
140
+ // eslint-disable-next-line @futdevpro/dynamo/no-as-cast
141
+ const x: MyType = (someUnknown as MyType);
142
+ ```
143
+
144
+ A CCAP `// ccap-review-disable` és az új `// dy-review-disable` szintaxis
145
+ **csak** a CLI-szintű `dc rev` által értelmezett — ESLint-en nem hat. Ha
146
+ mindkét toolból ki akarsz tiltani egy violation-t, mindkét komment-stílust
147
+ használd.
148
+
149
+ ## When to use which?
150
+
151
+ | Helyzet | CLI (`dc rev`) | ESLint plugin |
152
+ | ------------------------------------------------ | -------------- | ------------- |
153
+ | IDE inline-hint, save-on-format autofix | | ✓ |
154
+ | Pre-commit hook (gyors, fájlonkénti) | | ✓ |
155
+ | CI repo-wide audit JSON output-tal | ✓ | |
156
+ | Cross-file konzisztencia (module-export-prefix) | ✓ | |
157
+ | File-rename autofix (file-class-name-consistency) | ✓ | |
158
+ | Bulk autofix (`--fix --apply`) | ✓ | |
159
+ | Per-fájl, AST-pontosságú szabály-violation | | ✓ |
160
+ | Naming + signal + rxjs postfix | ✓ | ✓ (mindkettő) |
161
+ | Template `*ngIf` / `@for track` ellenőrzés | ✓ | ✓ (mindkettő) |
162
+
163
+ A két toolkit **komplementer**: az ESLint az IDE-szintű real-time feedback,
164
+ a CLI a repo-szintű audit + bulk-autofix. Ahol mindkét tool implementálja
165
+ ugyanazt a review-t, ott double-coverage van — ez szándékos: az ESLint az
166
+ IDE-ben azonnal jelez, a CLI pedig CI-ben még egyszer leellenőriz.
167
+
168
+ ## Kapcsolódó dokumentumok
169
+
170
+ - `dynamo-cli/__documentations/2026-04-18-ccap-review-integration.md` — CLI oldal
171
+ - `dynamo-eslint/src/configs/base.ts` — base ruleset (összes új TS szabály)
172
+ - `dynamo-eslint/src/configs/ngx.ts` — Angular ruleset (új Angular + template szabályok)
173
+ - `dynamo-eslint/src/plugin/index.ts` — plugin export + recommended config
@@ -0,0 +1,45 @@
1
+ # BFR-CTM-005 — ESLint 9 validator flat-config correction
2
+
3
+ **Date:** 2026-08-18
4
+
5
+ **Target release:** `@futdevpro/dynamo-eslint@1.15.28`
6
+
7
+ **Consumer:** Company Toolmaker
8
+
9
+ ## Failure reproduced
10
+
11
+ The published `1.15.25` `dynamo-validate-imports` CLI supplied an eslintrc-shaped `baseConfig` to ESLint 9.
12
+ Every scanned file failed with `ConfigError: Key "parser" ... eslintrc format`, and the existing fail-hard guard
13
+ correctly rejected the untrustworthy result. The naming CLI loaded the package's full NTS config, so formatting,
14
+ JSDoc and TypeScript rules were incorrectly reported as naming violations.
15
+
16
+ ## Correction
17
+
18
+ - Both CLIs now set `overrideConfigFile: true` and supply an isolated ESLint 9 flat config.
19
+ - Import validation enables only `@futdevpro/dynamo/import-order`.
20
+ - Naming validation enables only `@futdevpro/dynamo/naming-patterns`.
21
+ - Unused disable-directive diagnostics are disabled inside the narrow validators because they are unrelated to
22
+ either target rule and otherwise produce false failures.
23
+ - Parser resolution remains a consumer peer dependency; the explicit top-level runtime load preserves the
24
+ package's legacy TypeScript module-resolution compatibility.
25
+ - Runtime/config processing failures remain fail-hard.
26
+
27
+ ## Evidence
28
+
29
+ - TypeScript compile: PASS.
30
+ - Modified-source ESLint: PASS with zero warnings.
31
+ - Jasmine: 202 specs, 0 failures after the final isolation fixture extension.
32
+ - New subprocess integration coverage proves clean/violating fixtures for both CLIs, absence of `ConfigError`,
33
+ and isolation from unrelated disable/JSDoc diagnostics.
34
+ - Company Toolmaker verification against the built fix:
35
+ - server import validation: PASS;
36
+ - server naming validation: PASS;
37
+ - client naming validation: PASS;
38
+ - client import baseline exposed two real ordering findings, corrected in the consumer change-set.
39
+
40
+ ## Release hygiene
41
+
42
+ The working directory contains a pre-existing untracked `SKILLS.md` owned by another change-set. npm's default
43
+ file discovery would include it in a package built directly from this dirty directory. The `1.15.28` publish must
44
+ therefore run from a clean worktree at the reviewed commit with lifecycle scripts disabled; the packed manifest
45
+ must be rechecked there before publication. The unrelated file is preserved and excluded from this commit.
@@ -0,0 +1,79 @@
1
+ # Angular 20 fleet upgrade — Phase 2 Dynamo ESLint release
2
+
3
+ **Date:** 2026-08-22
4
+
5
+ **Requirement:** BFR-CTM-006
6
+
7
+ **Release:** `@futdevpro/dynamo-eslint@1.20.2` after the repository release hook
8
+
9
+ **Dependency baseline:** `@futdevpro/fsm-dynamo@1.20.2`
10
+
11
+ ## Outcome
12
+
13
+ The shared Dynamo ESLint package now has an Angular 20-compatible, ESLint 9 flat-config contract. The presets use
14
+ the unified `angular-eslint` and `typescript-eslint` public packages instead of requiring their implementation
15
+ subpackages as separate consumer peers. The obsolete Angular rule
16
+ `@angular-eslint/no-host-metadata-property`, which is not exported by Angular ESLint 20, is no longer configured.
17
+
18
+ This is a direct Bedrock correction. Consumers continue to load the existing public preset subpaths
19
+ (`base`, `nts`, `nts-package`, `fsm`, `ngx`, and `ngx-package`); no compatibility wrapper or replacement package
20
+ was introduced.
21
+
22
+ ## Published dependency contract
23
+
24
+ - `angular-eslint`: `~20.7.0`
25
+ - `typescript-eslint`: `~8.67.0`
26
+ - `eslint`: `~9.39.5`
27
+ - `typescript`: `>=5.8.2 <6.0.0`
28
+ - runtime Bedrock dependency: exact `@futdevpro/fsm-dynamo@1.20.2`
29
+
30
+ `angular-eslint` is optional at package-install level so Node-only preset consumers do not need the Angular toolchain;
31
+ it remains mandatory whenever an Angular preset is loaded.
32
+
33
+ The previous `eslint-plugin-import`, `eslint-plugin-jsdoc`, `eslint-plugin-prettier`, and `prettier` peers were
34
+ removed because the exported presets do not load or configure them. Keeping unused peers forced unrelated
35
+ consumer installations and created false peer conflicts.
36
+
37
+ ## Flat-config and validator corrections
38
+
39
+ - TypeScript parser/plugin resolution now comes from `typescript-eslint`.
40
+ - Angular TypeScript plugin, template plugin, and template parser resolution now comes from `angular-eslint`.
41
+ - An executable compatibility specification verifies that every configured Angular rule exists in the Angular
42
+ 20 plugin objects and that the unified parser/plugin instances are the exported preset instances.
43
+ - TypeScript 5.9's current ESLint visitor callback declarations are reflected in the direct unit-test invocations.
44
+ Runtime visitor behavior is unchanged; unused synthetic visitor arguments were removed from implementations.
45
+ - Package-local validator scripts now invoke their built entry points directly. The former scripts attempted to
46
+ execute the package's own bin alias before that alias existed in `node_modules/.bin`.
47
+ - Import and naming validators disable consumer inline config and filter only ESLint's corresponding informational
48
+ `noInlineConfig` diagnostic. Parse/runtime failures still fail hard.
49
+ - Validator discovery excludes `samples/**`, because the repository intentionally contains violating samples.
50
+ - Subprocess integration coverage proves that unknown consumer-only inline directives cannot contaminate either
51
+ isolated validator result.
52
+
53
+ ## Verification evidence before commit
54
+
55
+ - TypeScript 5.9.3 compilation: PASS.
56
+ - Jasmine: 205 specifications, 0 failures.
57
+ - Angular 20 preset compatibility: 3 executable specifications, PASS.
58
+ - Import validator: 37 production source files, PASS.
59
+ - Naming validator: 37 production source files, PASS.
60
+ - Production dependency audit: 0 known vulnerabilities.
61
+ - Package dependency tree: all declared direct dependencies resolved.
62
+ - Pre-hook package dry run: `@futdevpro/dynamo-eslint@1.20.1` generated successfully; the release hook then aligned
63
+ the final package version to `1.20.2`.
64
+ - Full repository ESLint: 0 errors and 2,728 legacy warning-level findings; the existing script exits successfully.
65
+ This release adds no warning-level release gate claim for the historical package source. The consumer release
66
+ gate remains zero-warning lint, and the upgraded presets must be proven there before BFR-CTM-006 resolution.
67
+
68
+ ## Release and downstream gates
69
+
70
+ 1. Complete two consecutive post-fix review passes.
71
+ 2. Commit; inspect any version/dependency changes made by the Bedrock release hook.
72
+ 3. Reinstall and rerun compilation, all specifications, validators, audit, and package manifest checks against the
73
+ post-hook tree.
74
+ 4. Push and publish the exact reviewed commit.
75
+ 5. Read back registry version, integrity, shasum, and peer dependencies.
76
+ 6. Adopt the exact release in `@futdevpro/ngx-dynamo`, prove its Angular 20 sandbox and package gates, then publish
77
+ that Bedrock layer.
78
+ 7. Adopt the exact Angular 20 Bedrock chain in Company Toolmaker and close BFR-CTM-006 only after the full consumer
79
+ security, browser, test, audit, and user-journey gates are green.
@@ -2,8 +2,7 @@
2
2
  * Base Rulesets For Dynamo Based Systems
3
3
  * ESLint v9 Flat Config Format
4
4
  */
5
- declare const tsParser: any;
6
- declare const tsPlugin: any;
5
+ declare const tsEslint: any;
7
6
  declare const unusedImportsPlugin: any;
8
7
  declare const maxParamsNoConstructorPlugin: any;
9
8
  declare const dynamoPlugin: any;
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/configs/base.ts"],"names":[],"mappings":"AACA;;;GAGG;AACH,QAAA,MAAM,QAAQ,KAAuC,CAAC;AACtD,QAAA,MAAM,QAAQ,KAA8C,CAAC;AAC7D,QAAA,MAAM,mBAAmB,KAA0C,CAAC;AACpE,QAAA,MAAM,4BAA4B,KAAqD,CAAC;AACxF,QAAA,MAAM,YAAY,KAAuB,CAAC"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/configs/base.ts"],"names":[],"mappings":"AACA;;;GAGG;AACH,QAAA,MAAM,QAAQ,KAA+B,CAAC;AAC9C,QAAA,MAAM,mBAAmB,KAA0C,CAAC;AACpE,QAAA,MAAM,4BAA4B,KAAqD,CAAC;AACxF,QAAA,MAAM,YAAY,KAAuB,CAAC"}
@@ -2,8 +2,7 @@
2
2
  * Base Rulesets For Dynamo Based Systems
3
3
  * ESLint v9 Flat Config Format
4
4
  */
5
- const tsParser = require('@typescript-eslint/parser');
6
- const tsPlugin = require('@typescript-eslint/eslint-plugin');
5
+ const tsEslint = require('typescript-eslint');
7
6
  const unusedImportsPlugin = require('eslint-plugin-unused-imports');
8
7
  const maxParamsNoConstructorPlugin = require('eslint-plugin-max-params-no-constructor');
9
8
  const dynamoPlugin = require('../plugin');
@@ -19,7 +18,7 @@ module.exports = [
19
18
  {
20
19
  files: ['**/*.ts', '**/*.tsx'],
21
20
  languageOptions: {
22
- parser: tsParser,
21
+ parser: tsEslint.parser,
23
22
  parserOptions: {
24
23
  ecmaVersion: 'latest',
25
24
  sourceType: 'module',
@@ -42,7 +41,7 @@ module.exports = [
42
41
  },
43
42
  },
44
43
  plugins: {
45
- '@typescript-eslint': tsPlugin,
44
+ '@typescript-eslint': tsEslint.plugin,
46
45
  'unused-imports': unusedImportsPlugin,
47
46
  'max-params-no-constructor': maxParamsNoConstructorPlugin,
48
47
  '@futdevpro/dynamo': dynamoPlugin,
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/configs/base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/configs/base.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,3 @@
1
1
  declare const ngxBaseConfig: any;
2
- declare const angularPlugin: any;
3
- declare const angularTemplatePlugin: any;
4
- declare const angularTemplateParser: any;
2
+ declare const angularEslint: any;
5
3
  //# sourceMappingURL=ngx.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngx.d.ts","sourceRoot":"","sources":["../../src/configs/ngx.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,aAAa,KAAoB,CAAC;AACxC,QAAA,MAAM,aAAa,KAA2C,CAAC;AAC/D,QAAA,MAAM,qBAAqB,KAAoD,CAAC;AAChF,QAAA,MAAM,qBAAqB,KAA6C,CAAC"}
1
+ {"version":3,"file":"ngx.d.ts","sourceRoot":"","sources":["../../src/configs/ngx.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,aAAa,KAAoB,CAAC;AACxC,QAAA,MAAM,aAAa,KAA4B,CAAC"}
@@ -1,7 +1,5 @@
1
1
  const ngxBaseConfig = require('./base');
2
- const angularPlugin = require('@angular-eslint/eslint-plugin');
3
- const angularTemplatePlugin = require('@angular-eslint/eslint-plugin-template');
4
- const angularTemplateParser = require('@angular-eslint/template-parser');
2
+ const angularEslint = require('angular-eslint');
5
3
  /**
6
4
  * Rulesets For Dynamo Based Systems
7
5
  * NGX: Angular Projects
@@ -30,7 +28,7 @@ module.exports = [
30
28
  },
31
29
  plugins: {
32
30
  ...ngxBaseConfig[1].plugins,
33
- '@angular-eslint': angularPlugin,
31
+ '@angular-eslint': angularEslint.tsPlugin,
34
32
  },
35
33
  rules: {
36
34
  ...ngxBaseConfig[1].rules,
@@ -38,7 +36,6 @@ module.exports = [
38
36
  '@angular-eslint/directive-selector': 'error',
39
37
  '@angular-eslint/component-selector': 'error',
40
38
  '@angular-eslint/no-conflicting-lifecycle': 'error',
41
- '@angular-eslint/no-host-metadata-property': 'error',
42
39
  '@angular-eslint/no-input-rename': 'error',
43
40
  '@angular-eslint/no-output-rename': 'error',
44
41
  '@angular-eslint/no-outputs-metadata-property': 'error',
@@ -53,7 +50,7 @@ module.exports = [
53
50
  {
54
51
  files: ['**/*.html'],
55
52
  languageOptions: {
56
- parser: angularTemplateParser,
53
+ parser: angularEslint.templateParser,
57
54
  parserOptions: {
58
55
  ecmaVersion: 'latest',
59
56
  sourceType: 'module',
@@ -61,7 +58,7 @@ module.exports = [
61
58
  },
62
59
  plugins: {
63
60
  ...ngxBaseConfig[1].plugins,
64
- '@angular-eslint/template': angularTemplatePlugin,
61
+ '@angular-eslint/template': angularEslint.templatePlugin,
65
62
  },
66
63
  rules: {
67
64
  '@angular-eslint/template/banana-in-box': 'error',
@@ -1 +1 @@
1
- {"version":3,"file":"ngx.js","sourceRoot":"","sources":["../../src/configs/ngx.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AACxC,MAAM,aAAa,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAAC;AAC/D,MAAM,qBAAqB,GAAG,OAAO,CAAC,wCAAwC,CAAC,CAAC;AAChF,MAAM,qBAAqB,GAAG,OAAO,CAAC,iCAAiC,CAAC,CAAC;AAEzE;;;;GAIG;AACH,MAAM,CAAC,OAAO,GAAG;IACf,GAAG,aAAa;IAChB;QACE,KAAK,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;QAC9B,eAAe,EAAE;YACf,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,eAAe;YACnC,OAAO,EAAE;gBACP,kBAAkB;gBAClB,MAAM,EAAE,UAAU;gBAClB,QAAQ,EAAE,UAAU;gBACpB,OAAO,EAAE,UAAU;gBACnB,OAAO,EAAE,UAAU;gBACnB,MAAM,EAAE,UAAU;gBAClB,MAAM,EAAE,UAAU;gBAClB,SAAS,EAAE,UAAU;gBACrB,UAAU,EAAE,UAAU;gBACtB,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,UAAU;gBACnB,OAAO,EAAE,UAAU;aACpB;SACF;QACD,OAAO,EAAE;YACP,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO;YAC3B,iBAAiB,EAAE,aAAa;SACjC;QACD,KAAK,EAAE;YACL,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK;YACzB,yBAAyB;YACzB,oCAAoC,EAAE,OAAO;YAC7C,oCAAoC,EAAE,OAAO;YAC7C,0CAA0C,EAAE,OAAO;YACnD,2CAA2C,EAAE,OAAO;YACpD,iCAAiC,EAAE,OAAO;YAC1C,kCAAkC,EAAE,OAAO;YAC3C,8CAA8C,EAAE,OAAO;YACvD,yCAAyC,EAAE,OAAO;YAClD,8CAA8C,EAAE,OAAO;YAEvD,4CAA4C;YAC5C,qCAAqC,EAAE,MAAM;YAC7C,2CAA2C,EAAE,MAAM;YACnD,sCAAsC,EAAE,MAAM;SAC/C;KACF;IACD;QACE,KAAK,EAAE,CAAC,WAAW,CAAC;QACpB,eAAe,EAAE;YACf,MAAM,EAAE,qBAAqB;YAC7B,aAAa,EAAE;gBACb,WAAW,EAAE,QAAQ;gBACrB,UAAU,EAAE,QAAQ;aACrB;SACF;QACD,OAAO,EAAE;YACP,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO;YAC3B,0BAA0B,EAAE,qBAAqB;SAClD;QACD,KAAK,EAAE;YACL,wCAAwC,EAAE,OAAO;YACjD,gDAAgD,EAAE,OAAO;YACzD,iCAAiC,EAAE,OAAO;YAC1C,0EAA0E;YAC1E,yEAAyE;YACzE,yEAAyE;YACzE,6DAA6D;YAC7D,4EAA4E;YAC5E,gEAAgE;YAChE,8DAA8D;YAC9D,oFAAoF;YACpF,2FAA2F;YAC3F,4EAA4E;YAC5E,6CAA6C,EAAE,CAAE,MAAM,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;YAC/E,kDAAkD,EAAE,OAAO;YAC3D,2CAA2C,EAAE,OAAO;YACpD,gDAAgD,EAAE,OAAO;YAEzD,kEAAkE;YAClE,8CAA8C,EAAE,MAAM;YACtD,2CAA2C,EAAE,MAAM;YACnD,qCAAqC,EAAE,MAAM;YAC7C,sCAAsC,EAAE,MAAM;SAC/C;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"ngx.js","sourceRoot":"","sources":["../../src/configs/ngx.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AACxC,MAAM,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAEhD;;;;GAIG;AACH,MAAM,CAAC,OAAO,GAAG;IACf,GAAG,aAAa;IAChB;QACE,KAAK,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;QAC9B,eAAe,EAAE;YACf,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,eAAe;YACnC,OAAO,EAAE;gBACP,kBAAkB;gBAClB,MAAM,EAAE,UAAU;gBAClB,QAAQ,EAAE,UAAU;gBACpB,OAAO,EAAE,UAAU;gBACnB,OAAO,EAAE,UAAU;gBACnB,MAAM,EAAE,UAAU;gBAClB,MAAM,EAAE,UAAU;gBAClB,SAAS,EAAE,UAAU;gBACrB,UAAU,EAAE,UAAU;gBACtB,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,UAAU;gBACnB,OAAO,EAAE,UAAU;aACpB;SACF;QACD,OAAO,EAAE;YACP,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO;YAC3B,iBAAiB,EAAE,aAAa,CAAC,QAAQ;SAC1C;QACD,KAAK,EAAE;YACL,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK;YACzB,yBAAyB;YACzB,oCAAoC,EAAE,OAAO;YAC7C,oCAAoC,EAAE,OAAO;YAC7C,0CAA0C,EAAE,OAAO;YACnD,iCAAiC,EAAE,OAAO;YAC1C,kCAAkC,EAAE,OAAO;YAC3C,8CAA8C,EAAE,OAAO;YACvD,yCAAyC,EAAE,OAAO;YAClD,8CAA8C,EAAE,OAAO;YAEvD,4CAA4C;YAC5C,qCAAqC,EAAE,MAAM;YAC7C,2CAA2C,EAAE,MAAM;YACnD,sCAAsC,EAAE,MAAM;SAC/C;KACF;IACD;QACE,KAAK,EAAE,CAAC,WAAW,CAAC;QACpB,eAAe,EAAE;YACf,MAAM,EAAE,aAAa,CAAC,cAAc;YACpC,aAAa,EAAE;gBACb,WAAW,EAAE,QAAQ;gBACrB,UAAU,EAAE,QAAQ;aACrB;SACF;QACD,OAAO,EAAE;YACP,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO;YAC3B,0BAA0B,EAAE,aAAa,CAAC,cAAc;SACzD;QACD,KAAK,EAAE;YACL,wCAAwC,EAAE,OAAO;YACjD,gDAAgD,EAAE,OAAO;YACzD,iCAAiC,EAAE,OAAO;YAC1C,0EAA0E;YAC1E,yEAAyE;YACzE,yEAAyE;YACzE,6DAA6D;YAC7D,4EAA4E;YAC5E,gEAAgE;YAChE,8DAA8D;YAC9D,oFAAoF;YACpF,2FAA2F;YAC3F,4EAA4E;YAC5E,6CAA6C,EAAE,CAAE,MAAM,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;YAC/E,kDAAkD,EAAE,OAAO;YAC3D,2CAA2C,EAAE,OAAO;YACpD,gDAAgD,EAAE,OAAO;YAEzD,kEAAkE;YAClE,8CAA8C,EAAE,MAAM;YACtD,2CAA2C,EAAE,MAAM;YACnD,qCAAqC,EAAE,MAAM;YAC7C,sCAAsC,EAAE,MAAM;SAC/C;KACF;CACF,CAAC"}