@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,113 +1,113 @@
1
- ---
2
- description: when refactoring large files or extracting code sections from files
3
- alwaysApply: false
4
- ---
5
- # File Refactoring és Code Extraction Guidelines
6
-
7
- ## Extract File Content Parancs Használata
8
-
9
- Amikor nagy fájlokat refaktorálunk vagy kód részeket extraktolunk fájlból, **MINDIG** használjuk a Dynamo CLI `extract-file-content` parancsát.
10
-
11
- ### Parancs Használata
12
-
13
- ```bash
14
- dc efc <source-file> --start <start-line> --end <end-line> --output <output-name> [--target-dir <target-directory>]
15
- ```
16
-
17
- Vagy a hosszabb alias-szal:
18
- ```bash
19
- dc extract-file-content <source-file> --start <start-line> --end <end-line> --output <output-name> [--target-dir <target-directory>]
20
- ```
21
-
22
- ### Paraméterek
23
-
24
- - `<source-file>` - A forrás fájl elérési útja (relatív vagy abszolút)
25
- - `--start <start-line>` - A kezdő sor száma (1-based, beleértve ezt a sort)
26
- - `--end <end-line>` - A vég sor száma (1-based, beleértve ezt a sort)
27
- - `--output <output-name>` - A kimeneti fájl neve (kiterjesztés nélkül vagy kiterjesztéssel)
28
- - `--target-dir <target-directory>` - Opcionális: célkönyvtár (alapértelmezett: ugyanaz, mint a forrás fájl könyvtára)
29
-
30
- ### Automatikus Funkciók
31
-
32
- A parancs automatikusan:
33
- - **Detektálja és hozzáadja a szükséges importokat** a kiemelt kód alapján
34
- - **Hozzáadja a copyright header-t** (TypeScript fájlok esetén)
35
- - **Törli a kiemelt sorokat** az eredeti fájlból
36
- - **Konvertálja a fájlnevet kebab-case-re**
37
- - **MD fájlok esetén** nem ad hozzá copyright headert és importokat
38
-
39
- ### Használati Esetek
40
-
41
- #### 1. Nagy Fájlok Refaktorálása
42
-
43
- Ha egy fájl **500+ sor** hosszú, és logikailag szétbontható:
44
- 1. Azonosítsd a különálló funkcionalitást vagy modult
45
- 2. Használd az `efc` parancsot a kód kiemelésére új fájlba
46
- 3. Az eredeti fájlból automatikusan törlődnek a kiemelt sorok
47
-
48
- **Példa:**
49
- ```bash
50
- # Kiemeljük a user validation logikát egy külön fájlba
51
- dc efc src/services/user.service.ts --start 150 --end 300 --output user-validation
52
- # Ez létrehozza: src/services/user-validation.ts
53
- ```
54
-
55
- #### 2. Modulok Kiemelése
56
-
57
- Amikor egy nagy fájlból külön modult vagy service-t szeretnénk kiemelni:
58
- 1. Határozd meg a modul kezdő és vég sorait
59
- 2. Add meg a kimeneti fájl nevét
60
- 3. Opcionálisan add meg a célkönyvtárat
61
-
62
- **Példa:**
63
- ```bash
64
- # Kiemeljük a notification service-t egy külön fájlba
65
- dc efc src/services/communication.service.ts --start 50 --end 200 --output notification-service --target-dir src/services/notifications
66
- ```
67
-
68
- #### 3. TypeScript Interface-ek és Type-ok Kiemelése
69
-
70
- Amikor type definíciókat szeretnénk külön fájlba kiemelni:
71
- ```bash
72
- dc efc src/models/user.model.ts --start 1 --end 50 --output user-types --target-dir src/models/types
73
- ```
74
-
75
- ### Fontos Megjegyzések
76
-
77
- - **MINDIG** használd ezt a parancsot nagy fájlok refaktorálásakor
78
- - A parancs **automatikusan törli** a kiemelt sorokat az eredeti fájlból
79
- - Az importok **automatikusan detektálódnak** és hozzáadódnak az új fájlhoz
80
- - MD fájlok esetén csak a tartalom kerül kiemelésre (nincs header, nincs import)
81
- - A fájlnevek **automatikusan kebab-case-re** konvertálódnak
82
- - **PowerShell környezet**: Mivel PowerShell-ben dolgozunk, a mappa választás és parancs elválasztására **pontosvesszőt (;)** kell használni, nem az és-és (&&) operátort
83
-
84
- ### Workflow
85
-
86
- 1. Azonosítsd a kiemelendő kód részt (kezdő és vég sor)
87
- - **FONTOS**: Ahhoz, hogy az előre meghatározott sor számok jók legyenek, **hátulról előre kell haladni** - tehát csak a magas számokkal kezdjünk, legmagasabbal, és attól megyünk lefelé
88
- 2. Futtasd az `efc` parancsot a megfelelő paraméterekkel
89
- 3. Ellenőrizd az új fájlt, hogy minden szükséges import benne van-e
90
- 4. Ellenőrizd az eredeti fájlt, hogy a kiemelt sorok törölve lettek-e
91
- 5. Szükség esetén manuálisan finomhangold az importokat
92
-
93
- ### Törlés Parancs (Ha Csak Törölni Akarunk)
94
-
95
- Ha csak sorokat szeretnénk törölni (nem kiemelni), használd a `delete-file-lines` parancsot:
96
-
97
- ```bash
98
- dc dfl <source-file> --start <start-line> --end <end-line>
99
- ```
100
-
101
- Vagy:
102
- ```bash
103
- dc delete-file-lines <source-file> --start <start-line> --end <end-line>
104
- ```
105
-
106
- ### Best Practices
107
-
108
- - **Sor számok meghatározása**: Ahhoz, hogy az előre meghatározott sor számok jók legyenek, **hátulról előre kell haladni** - tehát csak a magas számokkal kezdjünk, legmagasabbal, és attól megyünk lefelé
109
- - **PowerShell parancs elválasztás**: Mivel PowerShell-ben dolgozunk, a mappa választás és parancs elválasztására **pontosvesszőt (;)** kell használni, nem az és-és (&&) operátort (pl. `cd .. ; pnpm test` helyes, `cd .. && pnpm test` helytelen)
110
- - **Előzetes ellenőrzés**: Mielőtt futtatnád a parancsot, ellenőrizd, hogy a sorok tartalma valóban kiemelhető-e
111
- - **Git commit**: Mielőtt refaktorálást kezdesz, commit-old a változtatásokat
112
- - **Tesztelés**: A refaktorálás után mindig teszteld, hogy a funkcionalitás változatlan maradt-e
113
- - **Dokumentáció**: Nagyobb refaktorálások után frissítsd a dokumentációt
1
+ ---
2
+ description: when refactoring large files or extracting code sections from files
3
+ alwaysApply: false
4
+ ---
5
+ # File Refactoring és Code Extraction Guidelines
6
+
7
+ ## Extract File Content Parancs Használata
8
+
9
+ Amikor nagy fájlokat refaktorálunk vagy kód részeket extraktolunk fájlból, **MINDIG** használjuk a Dynamo CLI `extract-file-content` parancsát.
10
+
11
+ ### Parancs Használata
12
+
13
+ ```bash
14
+ dc efc <source-file> --start <start-line> --end <end-line> --output <output-name> [--target-dir <target-directory>]
15
+ ```
16
+
17
+ Vagy a hosszabb alias-szal:
18
+ ```bash
19
+ dc extract-file-content <source-file> --start <start-line> --end <end-line> --output <output-name> [--target-dir <target-directory>]
20
+ ```
21
+
22
+ ### Paraméterek
23
+
24
+ - `<source-file>` - A forrás fájl elérési útja (relatív vagy abszolút)
25
+ - `--start <start-line>` - A kezdő sor száma (1-based, beleértve ezt a sort)
26
+ - `--end <end-line>` - A vég sor száma (1-based, beleértve ezt a sort)
27
+ - `--output <output-name>` - A kimeneti fájl neve (kiterjesztés nélkül vagy kiterjesztéssel)
28
+ - `--target-dir <target-directory>` - Opcionális: célkönyvtár (alapértelmezett: ugyanaz, mint a forrás fájl könyvtára)
29
+
30
+ ### Automatikus Funkciók
31
+
32
+ A parancs automatikusan:
33
+ - **Detektálja és hozzáadja a szükséges importokat** a kiemelt kód alapján
34
+ - **Hozzáadja a copyright header-t** (TypeScript fájlok esetén)
35
+ - **Törli a kiemelt sorokat** az eredeti fájlból
36
+ - **Konvertálja a fájlnevet kebab-case-re**
37
+ - **MD fájlok esetén** nem ad hozzá copyright headert és importokat
38
+
39
+ ### Használati Esetek
40
+
41
+ #### 1. Nagy Fájlok Refaktorálása
42
+
43
+ Ha egy fájl **500+ sor** hosszú, és logikailag szétbontható:
44
+ 1. Azonosítsd a különálló funkcionalitást vagy modult
45
+ 2. Használd az `efc` parancsot a kód kiemelésére új fájlba
46
+ 3. Az eredeti fájlból automatikusan törlődnek a kiemelt sorok
47
+
48
+ **Példa:**
49
+ ```bash
50
+ # Kiemeljük a user validation logikát egy külön fájlba
51
+ dc efc src/services/user.service.ts --start 150 --end 300 --output user-validation
52
+ # Ez létrehozza: src/services/user-validation.ts
53
+ ```
54
+
55
+ #### 2. Modulok Kiemelése
56
+
57
+ Amikor egy nagy fájlból külön modult vagy service-t szeretnénk kiemelni:
58
+ 1. Határozd meg a modul kezdő és vég sorait
59
+ 2. Add meg a kimeneti fájl nevét
60
+ 3. Opcionálisan add meg a célkönyvtárat
61
+
62
+ **Példa:**
63
+ ```bash
64
+ # Kiemeljük a notification service-t egy külön fájlba
65
+ dc efc src/services/communication.service.ts --start 50 --end 200 --output notification-service --target-dir src/services/notifications
66
+ ```
67
+
68
+ #### 3. TypeScript Interface-ek és Type-ok Kiemelése
69
+
70
+ Amikor type definíciókat szeretnénk külön fájlba kiemelni:
71
+ ```bash
72
+ dc efc src/models/user.model.ts --start 1 --end 50 --output user-types --target-dir src/models/types
73
+ ```
74
+
75
+ ### Fontos Megjegyzések
76
+
77
+ - **MINDIG** használd ezt a parancsot nagy fájlok refaktorálásakor
78
+ - A parancs **automatikusan törli** a kiemelt sorokat az eredeti fájlból
79
+ - Az importok **automatikusan detektálódnak** és hozzáadódnak az új fájlhoz
80
+ - MD fájlok esetén csak a tartalom kerül kiemelésre (nincs header, nincs import)
81
+ - A fájlnevek **automatikusan kebab-case-re** konvertálódnak
82
+ - **PowerShell környezet**: Mivel PowerShell-ben dolgozunk, a mappa választás és parancs elválasztására **pontosvesszőt (;)** kell használni, nem az és-és (&&) operátort
83
+
84
+ ### Workflow
85
+
86
+ 1. Azonosítsd a kiemelendő kód részt (kezdő és vég sor)
87
+ - **FONTOS**: Ahhoz, hogy az előre meghatározott sor számok jók legyenek, **hátulról előre kell haladni** - tehát csak a magas számokkal kezdjünk, legmagasabbal, és attól megyünk lefelé
88
+ 2. Futtasd az `efc` parancsot a megfelelő paraméterekkel
89
+ 3. Ellenőrizd az új fájlt, hogy minden szükséges import benne van-e
90
+ 4. Ellenőrizd az eredeti fájlt, hogy a kiemelt sorok törölve lettek-e
91
+ 5. Szükség esetén manuálisan finomhangold az importokat
92
+
93
+ ### Törlés Parancs (Ha Csak Törölni Akarunk)
94
+
95
+ Ha csak sorokat szeretnénk törölni (nem kiemelni), használd a `delete-file-lines` parancsot:
96
+
97
+ ```bash
98
+ dc dfl <source-file> --start <start-line> --end <end-line>
99
+ ```
100
+
101
+ Vagy:
102
+ ```bash
103
+ dc delete-file-lines <source-file> --start <start-line> --end <end-line>
104
+ ```
105
+
106
+ ### Best Practices
107
+
108
+ - **Sor számok meghatározása**: Ahhoz, hogy az előre meghatározott sor számok jók legyenek, **hátulról előre kell haladni** - tehát csak a magas számokkal kezdjünk, legmagasabbal, és attól megyünk lefelé
109
+ - **PowerShell parancs elválasztás**: Mivel PowerShell-ben dolgozunk, a mappa választás és parancs elválasztására **pontosvesszőt (;)** kell használni, nem az és-és (&&) operátort (pl. `cd .. ; pnpm test` helyes, `cd .. && pnpm test` helytelen)
110
+ - **Előzetes ellenőrzés**: Mielőtt futtatnád a parancsot, ellenőrizd, hogy a sorok tartalma valóban kiemelhető-e
111
+ - **Git commit**: Mielőtt refaktorálást kezdesz, commit-old a változtatásokat
112
+ - **Tesztelés**: A refaktorálás után mindig teszteld, hogy a funkcionalitás változatlan maradt-e
113
+ - **Dokumentáció**: Nagyobb refaktorálások után frissítsd a dokumentációt
@@ -1,6 +1,6 @@
1
- ---
2
- description: apply when we are facing errors, issues or bugs.
3
- alwaysApply: false
4
- ---
5
-
1
+ ---
2
+ description: apply when we are facing errors, issues or bugs.
3
+ alwaysApply: false
4
+ ---
5
+
6
6
  When we are trying to solve an issue, an error or a bug, we always need to check the related specifications first about what is the required best case.
@@ -1,87 +1,87 @@
1
- ---
2
- description: when creating frontend- structure, module, or new folders.
3
- alwaysApply: false
4
- ---
5
- # Frontend Project Structure [FDP-FE]
6
-
7
- ## Overview
8
- This document outlines the standard project structure for FDP frontend applications.
9
-
10
- ## Directory Structure
11
-
12
- ```
13
- 📁 app/
14
- ├── 📁 _collections/
15
- │ ├── 📁 consts(*)/
16
- │ ├── 📁 mocks(*)/
17
- │ └── 📁 utils(*)/
18
- ├── 📁 _components/
19
- │ ├── 📁 <core-component-1>/
20
- │ ├── 📁 <core-component-2>/
21
- │ └── 📁 <core-component-group-1(*)>/
22
- ├── 📁 _directives/
23
- ├── 📁 _enums/
24
- ├── 📁 _models/
25
- │ ├── 📁 control-models(*)/
26
- │ ├── 📁 data-models(*)/
27
- │ └── 📁 interfaces(*)/
28
- ├── 📁 _modules/
29
- │ ├── 📁 shared/
30
- │ │ ├── 📁 _collections/
31
- │ │ ├── 📁 _components/
32
- │ │ │ ├── 📁 s-<shared-component-1(**)>/
33
- │ │ │ └── 📁 s-<shared-component-2(**)>/
34
- │ │ ├── 📁 _directives/
35
- │ │ ├── 📁 _enums/
36
- │ │ ├── 📁 _models/
37
- │ │ ├── 📁 _pipes/
38
- │ │ └── 📁 _services/
39
- │ ├── 📁 shared-standalones/
40
- │ ├── 📁 <module-sample>/
41
- │ │ ├── 📁 _collections/
42
- │ │ ├── 📁 _components/
43
- │ │ │ ├── 📁 ms-<component-1(**)>/
44
- │ │ │ └── 📁 ms-<component-2(**)>/
45
- │ └── 📁 <other-module>/
46
- ├── 📁 _pipes/
47
- │ ├── 📁 <pipe-1>/
48
- │ └── 📁 <pipe-2>/
49
- └── 📁 _services/
50
- ├── 📁 api-services(*)/
51
- ├── 📁 control-services(*)/
52
- └── 📁 data-services(*)/
53
- ```
54
-
55
- ## Directory Guidelines
56
-
57
- ### Folder Creation Rules (*)
58
- - Create subfolders only when containing 3-5+ elements
59
- - For 3+ elements: Consider if it will grow to 5+
60
- - If likely to reach 5+: Create subfolder immediately
61
- - Otherwise: Keep files in the parent type folder
62
-
63
- ### Component Naming (**)
64
- - Prefix components with module identifier (2-3 letters)
65
- - Shared components: 's-'
66
- - Module-specific: 'ms-', 'om-', 'ad-', 'dod-', etc.
67
- - Helps with:
68
- - Easy navigation
69
- - Module identification
70
- - Preventing naming conflicts
71
-
72
- ### Type Folder Convention
73
- - Prefix type-folders with "_" (e.g., _components, _services)
74
- - Only create when containing content
75
- - Helps identify project layer visually
76
-
77
- ### Module Organization
78
- - All modules must be in the main _modules folder
79
- - No nested module folders within modules
80
- - Standard module structure includes:
81
- - _collections
82
- - _components
83
- - _directives
84
- - _enums
85
- - _models
86
- - _pipes
1
+ ---
2
+ description: when creating frontend- structure, module, or new folders.
3
+ alwaysApply: false
4
+ ---
5
+ # Frontend Project Structure [FDP-FE]
6
+
7
+ ## Overview
8
+ This document outlines the standard project structure for FDP frontend applications.
9
+
10
+ ## Directory Structure
11
+
12
+ ```
13
+ 📁 app/
14
+ ├── 📁 _collections/
15
+ │ ├── 📁 consts(*)/
16
+ │ ├── 📁 mocks(*)/
17
+ │ └── 📁 utils(*)/
18
+ ├── 📁 _components/
19
+ │ ├── 📁 <core-component-1>/
20
+ │ ├── 📁 <core-component-2>/
21
+ │ └── 📁 <core-component-group-1(*)>/
22
+ ├── 📁 _directives/
23
+ ├── 📁 _enums/
24
+ ├── 📁 _models/
25
+ │ ├── 📁 control-models(*)/
26
+ │ ├── 📁 data-models(*)/
27
+ │ └── 📁 interfaces(*)/
28
+ ├── 📁 _modules/
29
+ │ ├── 📁 shared/
30
+ │ │ ├── 📁 _collections/
31
+ │ │ ├── 📁 _components/
32
+ │ │ │ ├── 📁 s-<shared-component-1(**)>/
33
+ │ │ │ └── 📁 s-<shared-component-2(**)>/
34
+ │ │ ├── 📁 _directives/
35
+ │ │ ├── 📁 _enums/
36
+ │ │ ├── 📁 _models/
37
+ │ │ ├── 📁 _pipes/
38
+ │ │ └── 📁 _services/
39
+ │ ├── 📁 shared-standalones/
40
+ │ ├── 📁 <module-sample>/
41
+ │ │ ├── 📁 _collections/
42
+ │ │ ├── 📁 _components/
43
+ │ │ │ ├── 📁 ms-<component-1(**)>/
44
+ │ │ │ └── 📁 ms-<component-2(**)>/
45
+ │ └── 📁 <other-module>/
46
+ ├── 📁 _pipes/
47
+ │ ├── 📁 <pipe-1>/
48
+ │ └── 📁 <pipe-2>/
49
+ └── 📁 _services/
50
+ ├── 📁 api-services(*)/
51
+ ├── 📁 control-services(*)/
52
+ └── 📁 data-services(*)/
53
+ ```
54
+
55
+ ## Directory Guidelines
56
+
57
+ ### Folder Creation Rules (*)
58
+ - Create subfolders only when containing 3-5+ elements
59
+ - For 3+ elements: Consider if it will grow to 5+
60
+ - If likely to reach 5+: Create subfolder immediately
61
+ - Otherwise: Keep files in the parent type folder
62
+
63
+ ### Component Naming (**)
64
+ - Prefix components with module identifier (2-3 letters)
65
+ - Shared components: 's-'
66
+ - Module-specific: 'ms-', 'om-', 'ad-', 'dod-', etc.
67
+ - Helps with:
68
+ - Easy navigation
69
+ - Module identification
70
+ - Preventing naming conflicts
71
+
72
+ ### Type Folder Convention
73
+ - Prefix type-folders with "_" (e.g., _components, _services)
74
+ - Only create when containing content
75
+ - Helps identify project layer visually
76
+
77
+ ### Module Organization
78
+ - All modules must be in the main _modules folder
79
+ - No nested module folders within modules
80
+ - Standard module structure includes:
81
+ - _collections
82
+ - _components
83
+ - _directives
84
+ - _enums
85
+ - _models
86
+ - _pipes
87
87
  - _services
@@ -1,40 +1,40 @@
1
- ---
2
- description: when creating front-end implementations
3
- alwaysApply: false
4
- ---
5
- # FDP FronEnd development Guide
6
-
7
- ## Tech Stack
8
- - Use Angular latest version
9
- - Use Tailwind for SCSS Styles
10
- - Use the following tech stack: use Angular, Typescript, tailwind, DyNX_, DyFM_, DyNM_, FDP_, FDPNX_
11
-
12
- ## Angular
13
-
14
- ## Project Structure
15
- - Follow the structure defined in [Frontend Project Structure](frontend-structure.md)
16
-
17
- ### Components
18
- - After 4+ rows, always create separate HTML file
19
-
20
- ### Typescript
21
- - Use Signals
22
- - For Signal properties use "_$" postfix
23
- - For Subjects use "_S" postfix
24
- - For BehaviourSubjects use "_BS" postfix
25
- - For Observables use "$" postfix
26
- - Use async methods
27
- - ng methods as ngOnInit should never be a promise since they won't wait for async functions
28
- - Don't implement ngOnInit if not needed/used.
29
- - for any buttons we should use dynamo new button
30
- - For data handlings, use data handlers and data services across multiple components whenever we need to handle data.
31
-
32
- ### HTML
33
- - NEVER EVER use methods in HTML templates for getting data
34
- - Put empty lines between HTML elements in the same level
35
- - Use "@if" syntax in HTML instead of "*ngIf" for Angular
36
- - Use Tailwind classes and only create SCSS if needed, e.g. for animated elements
37
- - In HTML templates you should never ever use functions to display data or evaluate HTML tag rendering methods only allowed for event triggers! Use signal computed values or pipes for evaluations and pipings.
38
-
39
- ## Naming
1
+ ---
2
+ description: when creating front-end implementations
3
+ alwaysApply: false
4
+ ---
5
+ # FDP FronEnd development Guide
6
+
7
+ ## Tech Stack
8
+ - Use Angular latest version
9
+ - Use Tailwind for SCSS Styles
10
+ - Use the following tech stack: use Angular, Typescript, tailwind, DyNX_, DyFM_, DyNM_, FDP_, FDPNX_
11
+
12
+ ## Angular
13
+
14
+ ## Project Structure
15
+ - Follow the structure defined in [Frontend Project Structure](frontend-structure.md)
16
+
17
+ ### Components
18
+ - After 4+ rows, always create separate HTML file
19
+
20
+ ### Typescript
21
+ - Use Signals
22
+ - For Signal properties use "_$" postfix
23
+ - For Subjects use "_S" postfix
24
+ - For BehaviourSubjects use "_BS" postfix
25
+ - For Observables use "$" postfix
26
+ - Use async methods
27
+ - ng methods as ngOnInit should never be a promise since they won't wait for async functions
28
+ - Don't implement ngOnInit if not needed/used.
29
+ - for any buttons we should use dynamo new button
30
+ - For data handlings, use data handlers and data services across multiple components whenever we need to handle data.
31
+
32
+ ### HTML
33
+ - NEVER EVER use methods in HTML templates for getting data
34
+ - Put empty lines between HTML elements in the same level
35
+ - Use "@if" syntax in HTML instead of "*ngIf" for Angular
36
+ - Use Tailwind classes and only create SCSS if needed, e.g. for animated elements
37
+ - In HTML templates you should never ever use functions to display data or evaluate HTML tag rendering methods only allowed for event triggers! Use signal computed values or pipes for evaluations and pipings.
38
+
39
+ ## Naming
40
40
  - Read and follow [Naming](_ag_naming.mdc) conventions
@@ -1,45 +1,45 @@
1
- ---
2
- description: import formatting rules
3
- alwaysApply: false
4
- ---
5
- # Import Rules and Format [FDP-Dev-import]
6
-
7
- ## Overview
8
- This document outlines the standard import rules and formatting for FDP projects.
9
-
10
- ## Import Order
11
- 1. Angular Core imports (@angular/*)
12
- 2. External imports (packages)
13
- 3. FDP imports (@futdevpro/*)
14
- 4. Shared imports (from shared modules)
15
- 5. Internal imports (local)
16
-
17
- ## Format Example
18
- ```typescript
19
- import { Component, OnInit } from '@angular/core';
20
- import { Observable } from 'rxjs';
21
- import { MatDialog } from '@angular/material/dialog';
22
-
23
- import { DyFM_Log } from '@futdevpro/fsm-dynamo';
24
- import { FDP_User } from '@futdevpro/fdp-templates';
25
-
26
- import { SharedModule } from '../../_modules/shared/shared.module';
27
-
28
- import { FirstModule } from '../first/first.module';
29
- import { SecondModule } from './second.module';
30
- ```
31
-
32
- ## Rules
33
- 1. Use spaces between import groups
34
- 2. Use relative imports within the application
35
- 3. Group imports by their source/type
36
- 4. Order internal imports by relative path distance (bottom-up)
37
- 5. Keep imports clean and organized
38
- 6. Remove unused imports
39
-
40
- ## Best Practices
41
- - Use explicit imports rather than wildcards
42
- - Keep imports alphabetically sorted within their groups
43
- - Use relative paths for internal imports
44
- - Use absolute paths for package imports
1
+ ---
2
+ description: import formatting rules
3
+ alwaysApply: false
4
+ ---
5
+ # Import Rules and Format [FDP-Dev-import]
6
+
7
+ ## Overview
8
+ This document outlines the standard import rules and formatting for FDP projects.
9
+
10
+ ## Import Order
11
+ 1. Angular Core imports (@angular/*)
12
+ 2. External imports (packages)
13
+ 3. FDP imports (@futdevpro/*)
14
+ 4. Shared imports (from shared modules)
15
+ 5. Internal imports (local)
16
+
17
+ ## Format Example
18
+ ```typescript
19
+ import { Component, OnInit } from '@angular/core';
20
+ import { Observable } from 'rxjs';
21
+ import { MatDialog } from '@angular/material/dialog';
22
+
23
+ import { DyFM_Log } from '@futdevpro/fsm-dynamo';
24
+ import { FDP_User } from '@futdevpro/fdp-templates';
25
+
26
+ import { SharedModule } from '../../_modules/shared/shared.module';
27
+
28
+ import { FirstModule } from '../first/first.module';
29
+ import { SecondModule } from './second.module';
30
+ ```
31
+
32
+ ## Rules
33
+ 1. Use spaces between import groups
34
+ 2. Use relative imports within the application
35
+ 3. Group imports by their source/type
36
+ 4. Order internal imports by relative path distance (bottom-up)
37
+ 5. Keep imports clean and organized
38
+ 6. Remove unused imports
39
+
40
+ ## Best Practices
41
+ - Use explicit imports rather than wildcards
42
+ - Keep imports alphabetically sorted within their groups
43
+ - Use relative paths for internal imports
44
+ - Use absolute paths for package imports
45
45
  - Remove any duplicate imports