@futdevpro/dynamo-eslint 1.20.3 β†’ 1.20.5

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 (125) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +304 -304
  3. package/build/plugin/rules/ts/no-as-cast.d.ts.map +1 -1
  4. package/build/plugin/rules/ts/no-as-cast.js +43 -0
  5. package/build/plugin/rules/ts/no-as-cast.js.map +1 -1
  6. package/package.json +14 -7
  7. package/.c8rc.json +0 -26
  8. package/.cursor/rules/__assistant_guide.mdc +0 -30
  9. package/.cursor/rules/__main.mdc +0 -64
  10. package/.cursor/rules/_ag_backend-structure.mdc +0 -86
  11. package/.cursor/rules/_ag_backend.mdc +0 -16
  12. package/.cursor/rules/_ag_debug.mdc +0 -8
  13. package/.cursor/rules/_ag_documentation_writing_rules.mdc +0 -372
  14. package/.cursor/rules/_ag_file-refactoring.mdc +0 -113
  15. package/.cursor/rules/_ag_fixes_rules.mdc +0 -6
  16. package/.cursor/rules/_ag_frontend-structure.mdc +0 -87
  17. package/.cursor/rules/_ag_frontend.mdc +0 -40
  18. package/.cursor/rules/_ag_import-rules.mdc +0 -45
  19. package/.cursor/rules/_ag_naming.mdc +0 -116
  20. package/.cursor/rules/_ag_running_commands.mdc +0 -5
  21. package/.cursor/rules/_ag_server-controller.mdc +0 -6
  22. package/.cursor/rules/_ag_should-be.mdc +0 -7
  23. package/.cursor/rules/_ag_swearing.mdc +0 -47
  24. package/.cursor/rules/ai_development_guide.md +0 -61
  25. package/.cursor/rules/ai_directives.md +0 -114
  26. package/.cursor/rules/cursor-rules.md +0 -160
  27. package/.cursor/rules/default-command.mdc +0 -465
  28. package/.cursor/rules/error_code_pattern.md +0 -40
  29. package/.cursor/rules/saved rule mcp server use.md +0 -16
  30. package/.dynamo/pipeline.cicd.config.json +0 -184
  31. package/.dynamo/version-bump.config.json +0 -5
  32. package/.eslintrc.json +0 -4
  33. package/.github/workflows/main.yml +0 -436
  34. package/.husky/pre-commit +0 -2
  35. package/.vscode/settings.json +0 -11
  36. package/__documentations/2026-04-18-ccap-review-integration.md +0 -173
  37. package/__documentations/2026-08-18-bfr-ctm-005-eslint9-validator-report.md +0 -45
  38. package/__documentations/2026-08-22-angular-20-phase2-release.md +0 -83
  39. package/eslint.config.js +0 -15
  40. package/pnpm-workspace.yaml +0 -2
  41. package/samples/.vscode/settings.json +0 -13
  42. package/samples/base/.eslintrc.json +0 -6
  43. package/samples/base/eslint.config.js +0 -3
  44. package/samples/fsm/.eslintrc.json +0 -4
  45. package/samples/fsm/eslint.config.js +0 -3
  46. package/samples/ngx/.eslintrc.json +0 -6
  47. package/samples/ngx/eslint.config.js +0 -3
  48. package/samples/ngx-package/.eslintrc.json +0 -4
  49. package/samples/ngx-package/eslint.config.js +0 -3
  50. package/samples/nts/.eslintrc.json +0 -6
  51. package/samples/nts/eslint.config.js +0 -3
  52. package/samples/nts-package/.eslintrc.json +0 -4
  53. package/samples/nts-package/eslint.config.js +0 -3
  54. package/samples/package.json.example +0 -22
  55. package/samples/poc-sample.ts +0 -38
  56. package/samples/poc-violations.ts +0 -54
  57. package/scripts/run-coverage-tests.js +0 -24
  58. package/spec/support/helpers/ts-node-helper.js +0 -9
  59. package/spec/support/jasmine.coverage.json +0 -23
  60. package/spec/support/jasmine.json +0 -24
  61. package/src/configs/angular20-compatibility.spec.ts +0 -73
  62. package/src/configs/base.ts +0 -156
  63. package/src/configs/fsm.ts +0 -10
  64. package/src/configs/ngx-package.ts +0 -10
  65. package/src/configs/ngx.ts +0 -93
  66. package/src/configs/nts-package.ts +0 -20
  67. package/src/configs/nts.ts +0 -34
  68. package/src/index.ts +0 -4
  69. package/src/plugin/index.ts +0 -86
  70. package/src/plugin/rules/angular/angular-for-track-logic.spec.ts +0 -44
  71. package/src/plugin/rules/angular/angular-for-track-logic.ts +0 -88
  72. package/src/plugin/rules/angular/effect-signal-loop.spec.ts +0 -89
  73. package/src/plugin/rules/angular/effect-signal-loop.ts +0 -125
  74. package/src/plugin/rules/angular/no-async-ngoninit.spec.ts +0 -50
  75. package/src/plugin/rules/angular/no-async-ngoninit.ts +0 -43
  76. package/src/plugin/rules/angular/no-component-direct-api.spec.ts +0 -78
  77. package/src/plugin/rules/angular/no-component-direct-api.ts +0 -82
  78. package/src/plugin/rules/angular/no-method-call-in-template.spec.ts +0 -63
  79. package/src/plugin/rules/angular/no-method-call-in-template.ts +0 -89
  80. package/src/plugin/rules/angular/no-ngfor-directive.spec.ts +0 -44
  81. package/src/plugin/rules/angular/no-ngfor-directive.ts +0 -62
  82. package/src/plugin/rules/angular/no-ngif-directive.spec.ts +0 -44
  83. package/src/plugin/rules/angular/no-ngif-directive.ts +0 -62
  84. package/src/plugin/rules/explicit-types.spec.ts +0 -190
  85. package/src/plugin/rules/explicit-types.ts +0 -186
  86. package/src/plugin/rules/import/import-order.spec.ts +0 -219
  87. package/src/plugin/rules/import/import-order.ts +0 -197
  88. package/src/plugin/rules/import/no-import-type.spec.ts +0 -69
  89. package/src/plugin/rules/import/no-import-type.ts +0 -46
  90. package/src/plugin/rules/import/no-js-import.spec.ts +0 -82
  91. package/src/plugin/rules/import/no-js-import.ts +0 -45
  92. package/src/plugin/rules/naming-patterns.spec.ts +0 -189
  93. package/src/plugin/rules/naming-patterns.ts +0 -426
  94. package/src/plugin/rules/no-getter-logic.spec.ts +0 -591
  95. package/src/plugin/rules/no-getter-logic.ts +0 -220
  96. package/src/plugin/rules/prefer-enum-over-string-union.spec.ts +0 -583
  97. package/src/plugin/rules/prefer-enum-over-string-union.ts +0 -333
  98. package/src/plugin/rules/prefer-interface-over-duplicate-types.spec.ts +0 -404
  99. package/src/plugin/rules/prefer-interface-over-duplicate-types.ts +0 -314
  100. package/src/plugin/rules/require-jsdoc-description.spec.ts +0 -779
  101. package/src/plugin/rules/require-jsdoc-description.ts +0 -572
  102. package/src/plugin/rules/require-test-description-prefix.spec.ts +0 -459
  103. package/src/plugin/rules/require-test-description-prefix.ts +0 -154
  104. package/src/plugin/rules/ts/data-model-extends.spec.ts +0 -84
  105. package/src/plugin/rules/ts/data-model-extends.ts +0 -100
  106. package/src/plugin/rules/ts/no-any-type.spec.ts +0 -28
  107. package/src/plugin/rules/ts/no-any-type.ts +0 -36
  108. package/src/plugin/rules/ts/no-as-cast.spec.ts +0 -51
  109. package/src/plugin/rules/ts/no-as-cast.ts +0 -51
  110. package/src/plugin/rules/ts/no-dynamic-imports.spec.ts +0 -54
  111. package/src/plugin/rules/ts/no-dynamic-imports.ts +0 -49
  112. package/src/plugin/rules/ts/no-native-browser-dialogs.spec.ts +0 -54
  113. package/src/plugin/rules/ts/no-native-browser-dialogs.ts +0 -84
  114. package/src/plugin/rules/ts/no-plain-function-export.spec.ts +0 -72
  115. package/src/plugin/rules/ts/no-plain-function-export.ts +0 -73
  116. package/src/plugin/rules/ts/one-export-per-file.spec.ts +0 -64
  117. package/src/plugin/rules/ts/one-export-per-file.ts +0 -77
  118. package/src/scripts/dynamo-fix.ts +0 -172
  119. package/src/scripts/eslintrc-audit.ts +0 -116
  120. package/src/scripts/fix-return-types.spec.ts +0 -65
  121. package/src/scripts/fix-return-types.ts +0 -289
  122. package/src/scripts/validate-imports.ts +0 -292
  123. package/src/scripts/validate-naming.ts +0 -213
  124. package/src/scripts/validator-cli.integration.spec.ts +0 -99
  125. package/tsconfig.json +0 -32
@@ -1,5 +1,44 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ /** A HTTP-keres azon mezoi, amikbol a bemenet erkezik. */
4
+ const REQUEST_INPUT_KEYS = ['params', 'query', 'body', 'headers'];
5
+ /** A keres-objektum szokasos nevei a controller-handlerekben. */
6
+ const REQUEST_IDENTIFIER_REGEX = /^req(?:uest)?$/;
7
+ /**
8
+ * FR-325 (2026-08-23, owner-dontes) β€” a HTTP-KERES bemeneteinek kasztolasa NEM lelet.
9
+ *
10
+ * Az Express `req.params` / `req.query` / `req.body` / `req.headers` tipusa a keretrendszerben
11
+ * `string` (illetve `string | string[] | undefined`), a controller viszont a domain-tipussal
12
+ * dolgozik. Itt a cast NEM tervezesi problema, hanem a HATAR-ATLEPES kifejezese β€” ez az
13
+ * ELFOGADOTT megkozelites:
14
+ *
15
+ * const system: FDP_LiveProject = req.params.system as FDP_LiveProject;
16
+ *
17
+ * FIGYELEM: a cast NEM helyettesiti a VALIDACIOT. A hatarrol bejovo erteket validalni kell
18
+ * (enum-tagsag / whitelist / sema), kulonben a tipus hazudik β€” ezt a `dc rev`
19
+ * `controller-input-validation` review-ja keri szamon.
20
+ *
21
+ * A vizsgalat a kifejezes-lancot jarja vegig: a lancban szerepelnie kell egy bemenet-kulcsnak
22
+ * (`params` / `query` / `body` / `headers`), ES a lanc GYOKERENEK `req` / `request` azonositonak
23
+ * kell lennie. Igy egy `this.cache.body as X` NEM esik a kivetel ala.
24
+ */
25
+ function isRequestInputExpression(expression) {
26
+ let current = expression;
27
+ let hasInputKey = false;
28
+ while (current && current.type === 'MemberExpression') {
29
+ const property = current.property;
30
+ if (property
31
+ && property.type === 'Identifier'
32
+ && REQUEST_INPUT_KEYS.includes(property.name)) {
33
+ hasInputKey = true;
34
+ }
35
+ current = current.object;
36
+ }
37
+ return hasInputKey
38
+ && !!current
39
+ && current.type === 'Identifier'
40
+ && REQUEST_IDENTIFIER_REGEX.test(current.name);
41
+ }
3
42
  /**
4
43
  * No-as-cast szabΓ‘ly: TypeScript `as` type cast tilos.
5
44
  * CCAP "no-as-cast" review ESLint AST-portja.
@@ -32,6 +71,10 @@ const rule = {
32
71
  && annotation.typeName.name === 'const') {
33
72
  return;
34
73
  }
74
+ // FR-325 β€” a keres-bemenet kasztolasa elfogadott hatar-atlepes (lasd fent).
75
+ if (isRequestInputExpression(node.expression)) {
76
+ return;
77
+ }
35
78
  const typeName = context.sourceCode.getText(annotation);
36
79
  context.report({
37
80
  node: node,
@@ -1 +1 @@
1
- {"version":3,"file":"no-as-cast.js","sourceRoot":"","sources":["../../../../src/plugin/rules/ts/no-as-cast.ts"],"names":[],"mappings":";;AAEA;;;;GAIG;AACH,MAAM,IAAI,GAAoB;IAC5B,IAAI,EAAE;QACJ,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE;YACJ,WAAW,EAAE,gFAAgF;YAC7F,WAAW,EAAE,IAAI;SAClB;QACD,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE;YACR,QAAQ,EAAE,2FAA2F;SACtG;KACF;IACD,MAAM,CAAC,OAAyB;QAC9B,OAAO;YACL,cAAc,CAAC,IAAS;gBACtB,IAAI,CAAC;oBACH,MAAM,UAAU,GAAQ,IAAI,CAAC,cAAc,CAAC;oBAC5C,IAAI,CAAC,UAAU,EAAE,CAAC;wBAChB,OAAO;oBACT,CAAC;oBACD,gEAAgE;oBAChE,IACE,UAAU,CAAC,IAAI,KAAK,iBAAiB;2BAClC,UAAU,CAAC,QAAQ;2BACnB,UAAU,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY;2BACzC,UAAU,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,EACvC,CAAC;wBACD,OAAO;oBACT,CAAC;oBACD,MAAM,QAAQ,GAAW,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;oBAChE,OAAO,CAAC,MAAM,CAAC;wBACb,IAAI,EAAE,IAAI;wBACV,SAAS,EAAE,UAAU;wBACrB,IAAI,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE;qBAC7B,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAE,KAAK,CAAC,CAAC;gBACxE,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,kBAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"no-as-cast.js","sourceRoot":"","sources":["../../../../src/plugin/rules/ts/no-as-cast.ts"],"names":[],"mappings":";;AAEA,0DAA0D;AAC1D,MAAM,kBAAkB,GAAa,CAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAE,CAAC;AAE9E,iEAAiE;AACjE,MAAM,wBAAwB,GAAW,gBAAgB,CAAC;AAE1D;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAS,wBAAwB,CAAC,UAAe;IAC/C,IAAI,OAAO,GAAQ,UAAU,CAAC;IAC9B,IAAI,WAAW,GAAY,KAAK,CAAC;IAEjC,OAAO,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;QACtD,MAAM,QAAQ,GAAQ,OAAO,CAAC,QAAQ,CAAC;QACvC,IACE,QAAQ;eACL,QAAQ,CAAC,IAAI,KAAK,YAAY;eAC9B,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAC7C,CAAC;YACD,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC;QACD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED,OAAO,WAAW;WACb,CAAC,CAAC,OAAO;WACT,OAAO,CAAC,IAAI,KAAK,YAAY;WAC7B,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACnD,CAAC;AAGD;;;;GAIG;AACH,MAAM,IAAI,GAAoB;IAC5B,IAAI,EAAE;QACJ,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE;YACJ,WAAW,EAAE,gFAAgF;YAC7F,WAAW,EAAE,IAAI;SAClB;QACD,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE;YACR,QAAQ,EAAE,2FAA2F;SACtG;KACF;IACD,MAAM,CAAC,OAAyB;QAC9B,OAAO;YACL,cAAc,CAAC,IAAS;gBACtB,IAAI,CAAC;oBACH,MAAM,UAAU,GAAQ,IAAI,CAAC,cAAc,CAAC;oBAC5C,IAAI,CAAC,UAAU,EAAE,CAAC;wBAChB,OAAO;oBACT,CAAC;oBACD,gEAAgE;oBAChE,IACE,UAAU,CAAC,IAAI,KAAK,iBAAiB;2BAClC,UAAU,CAAC,QAAQ;2BACnB,UAAU,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY;2BACzC,UAAU,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,EACvC,CAAC;wBACD,OAAO;oBACT,CAAC;oBACD,4EAA4E;oBAC5E,IAAI,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;wBAC9C,OAAO;oBACT,CAAC;oBACD,MAAM,QAAQ,GAAW,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;oBAChE,OAAO,CAAC,MAAM,CAAC;wBACb,IAAI,EAAE,IAAI;wBACV,SAAS,EAAE,UAAU;wBACrB,IAAI,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE;qBAC7B,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAE,KAAK,CAAC,CAAC;gBACxE,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,kBAAe,IAAI,CAAC"}
package/package.json CHANGED
@@ -1,11 +1,18 @@
1
1
  {
2
2
  "name": "@futdevpro/dynamo-eslint",
3
- "version": "1.20.3",
3
+ "version": "1.20.5",
4
4
  "description": "Shared ESLint configs, Dynamo-powered plugin and validators for FutDevPro stacks",
5
5
  "author": "Future Development Program Ltd.",
6
- "license": "ISC",
6
+ "license": "MIT",
7
7
  "type": "commonjs",
8
8
  "main": "./build/index.js",
9
+ "files": [
10
+ "build",
11
+ "!build/**/*.spec.*",
12
+ "README.md",
13
+ "LICENSE",
14
+ "CHANGELOG.md"
15
+ ],
9
16
  "types": "./build/index.d.ts",
10
17
  "DyBu_settings": {
11
18
  "packageType": "full-stack-package",
@@ -17,11 +24,11 @@
17
24
  "preprep-setup-safechain-windows": "iex (iwr \"https://raw.githubusercontent.com/AikidoSec/safe-chain/main/install-scripts/install-safe-chain.ps1\" -UseBasicParsing)",
18
25
  "preprep-setup-safechain-linux": "curl -fsSL https://raw.githubusercontent.com/AikidoSec/safe-chain/main/install-scripts/install-safe-chain.sh | sh",
19
26
  "start": "npm run prep && nodemon",
20
- "deploy": "npm run build",
21
- "clean-deploy": "pnpm run clean && pnpm run build-all",
22
- "build": "pnpm run build-base && jasmine && npm publish",
27
+ "deploy": "pnpm run build && npm publish",
28
+ "clean-deploy": "pnpm run clean && pnpm run deploy-all",
29
+ "build": "pnpm run build-base && jasmine",
23
30
  "build-tgz": "pnpm run build-base && jasmine && pnpm pack && move ./*.tgz ../tgz-collection/dynamo-eslint",
24
- "build-all": "pnpm run build-tgz && pnpm run build",
31
+ "deploy-all": "pnpm run build-tgz && pnpm run deploy",
25
32
  "build-base": "rimraf ./build && npx tsc",
26
33
  "build-clean": "pnpm run clean && pnpm run build-base",
27
34
  "build-n-test": "pnpm i && pnpm run build-tgz",
@@ -82,7 +89,7 @@
82
89
  }
83
90
  },
84
91
  "dependencies": {
85
- "@futdevpro/fsm-dynamo": "1.20.2",
92
+ "@futdevpro/fsm-dynamo": "1.20.9",
86
93
  "eslint-plugin-max-params-no-constructor": "0.0.4",
87
94
  "eslint-plugin-unused-imports": "4.4.1",
88
95
  "fast-glob": "3.3.3",
package/.c8rc.json DELETED
@@ -1,26 +0,0 @@
1
- {
2
- "reporter": [
3
- "html",
4
- "text",
5
- "lcov"
6
- ],
7
- "reports-dir": "./coverage",
8
- "include": [
9
- "src/**/*.ts"
10
- ],
11
- "exclude": [
12
- "src/**/*.spec.ts",
13
- "src/**/*.spec.js",
14
- "src/spec/**",
15
- "**/node_modules/**",
16
- "**/coverage/**",
17
- "**/*.d.ts",
18
- "**/*.const.ts",
19
- "**/*.enum.ts",
20
- "**/*.interface.ts",
21
- "**/*.type.ts",
22
- "**/index.ts"
23
- ],
24
- "all": true
25
- }
26
-
@@ -1,30 +0,0 @@
1
- ---
2
- description: Apply if planning or reviewing operations
3
- alwaysApply: false
4
- ---
5
- # Global planning and execution policy
6
- - mindig amikor a user olyat vagy olyasmit, mond, hogy "ennek ΓΊgy kΓ©ne mΕ±kΓΆdnie, hogy ..." annak bele kell kerΓΌlni a specifikΓ‘ciΓ³ba
7
- - minden nagyobb fejlesztΓ©s vΓ©gΓ©n dokumentΓ‘ciΓ³t kell kΓ©szΓ­teni
8
-
9
- ## fejlesztΓ©si folyamat;
10
- Az alΓ‘bbi folyamatot a user szoros kΓΆzremΕ±kΓΆdΓ©sΓ©vel fogjuk vΓ©gezni
11
- - valamilyen hibΓ‘bΓ³l vagy feature request-bΕ‘l indulunk ki
12
- - Γ‘tnΓ©zzΓΌk az ΓΆsszes kapcsolΓ³dΓ³ elemet
13
- - mindig kΓ©rjΓΌk, hogy
14
- - "review the issue very carefully"
15
- - "be very very careful"
16
- - "plan comprehensive"
17
- - "always check exisitng solutions"
18
- - "always follow existing patterns very strictly"
19
- - tervezΓΌnk egy megoldΓ‘st
20
- - implementΓ‘ljuk a megoldΓ‘st
21
- - leteszteltetjΓΌk a felhasznΓ‘lΓ³val, ΓΊgy hogy futtassa az alkalmazΓ‘st Γ©s a lehetΕ‘ legtΓΆbb fΓ©le kΓ©ppen triggereljΓΌk a subjct feature-t
22
- - ellenΕ‘riztetjΓΌk az Γ©rintett mΓ‘s funkcionalitΓ‘sokat
23
- - ha van hiba akkor megprΓ³bΓ‘ljuk megoldani
24
- - a hibajavΓ­tΓ‘sok sorΓ‘n figyelΓΌnk arra, hogy ha ugyan az a hiba ΓΊjra elΕ‘jΓΆn tΓΆbbszΓΆr egymΓ‘s utΓ‘n mikΓΆzben javΓ­tΓ‘sokat vΓ©gzΓΌnk, akkor az valamilyen nagyobb szintΕ± hibΓ‘ra utal ami Γ‘tfogΓ³bb review-t Γ©s solution planning-et igΓ©nyel. (ehhez hasonlΓ³ pΓ‘rhuzamos session)
25
- - ha minden javΓ­tΓ‘s kΓ©sz, ΓΊjbΓ³l Γ‘tfogΓ³ tesztet vΓ©geztetΓΌnk, majd ha ezen is Γ‘tment, akkor push-oltatjuk a megoldΓ‘st a user-el. figyelve az automata GIT build-ek eredmΓ©nyΓ©re (hΓ‘tha ΓΊjabb error jelentkezik, ezt a user fogja tudni visszajelezni)
26
- - dokumentΓ‘ciΓ³t kΓ©szΓ­tΓΌnk a session-rΕ‘l, amiben legyen benne a user kΓ©rΓ©se is (a legkΓΆzelebbi "__documentations" folder-be)
27
- - menet kΓΆzben ahogy a user-el egyeztetΓΌnk, kieshetnek ΓΊjabb feature request-ek Γ©s specifikΓ‘ciΓ³s kΓ©rΓ©sek amiket fontos hogy feljegyezzΓΌnk!
28
- - Amikor fΓ‘zisonkΓ©nti fejlesztΓ©seket hajtunk vΓ©gre, mindig kΓ©szΓ­tsΓΌnk dokumentΓ‘ciΓ³t az eredmΓ©nyekrΕ‘l, Γ©s update-eljΓΌk a soron kΓΆvetkezΕ‘-, mΓ‘r megtervezett fΓ‘zisokat, amennyiben szΓΌksΓ©ges. (de csak miutΓ‘n a user elfogadta Γ©s vΓ©glegesΓ­tette a megoldΓ‘st.)
29
-
30
-
@@ -1,64 +0,0 @@
1
- ---
2
- description:
3
- globs:
4
- alwaysApply: true
5
- ---
6
- # Follow these
7
- [cursor-rules](cursor-rules.md)
8
-
9
- Strictly keep and follow patterns from the existing codebase!
10
- Always use, and align to @futdevpro/* packages
11
- Never import from "*/../../NPM-packages/*", use '@futdevpro/*' instead
12
- when suggesting, always try to read both main opened screen, since they are usually releated
13
- Always try to follow the existing patterns for code and formatting (dont forget to break long lines and use existing naming patterns).
14
- Always follow patterns of existing projects! (tech stack, naming, codes, everything!)
15
- We need no quick fixes only the best solution possible using Dy*
16
- Always look around for existing solutions before implementing new one
17
- Always look for samples in codebase
18
- Always maintain a "Single Source of Truth" for data management: each data domain should have ONE dedicated data-service that owns and manages that data. All components, services, and modules must consume data through these centralized data-services instead of duplicating queries, fetches, or data transformations. Never create parallel data access paths β€” if a data-service already handles a resource, extend it rather than creating a new one.
19
- Always implement fixes and features that are highlighted or requested by the user
20
- Always use existing scripts and architecture.
21
- Never try to modify configs if the user didn't asked specially to do so.
22
- Never create new test file types other than is already used in the project.
23
- Never create javascript files!
24
- Never use powershell commands, or anything that is not on the allowed list. (allowed: npm, pnpm, cd, npx)
25
- Don't use custom scripts, use the npm scripts provided in the current project.
26
- The npm scripts are complex, no need to run build and test separately, run only "npm test" (or check the scripts first)
27
- (IF you want to run multiple scripts you need to use ";" instead of "&&", eg.: cd .. ; npm test instead of cd .. && npm test)
28
- All projects have a _specifications folder in root, where we describe the expected functionality of how certain parts of the application should work (AI should never modify these files)
29
- All projects can have a __documentations folder in root, where we create documentations about what we've done in previous sessions (AI should always create very brief but describing documentations after each bigger implementation or refactor) (date flag these)
30
-
31
-
32
- my common requirements:
33
- - use existing enums, interfaces, services, etc. if possible
34
- - follow the existing patterns sctriclty;
35
- namings, file namings, module structure, error handlings, logging, testing, documentation, etc.
36
- - create enums instead of string literals
37
- - create interfaces for sub-objects
38
- - create interfaces for every object that is used more than once
39
- - one file should have only one export (only allowed more for DataModels and its dataParams)
40
- - enums should be; keyNameIsCamelCase = 'value-is-kebab-case'
41
- - break long lines at 120 characters
42
- - EVERY let, const, function, arrow function, and all inputs should have types. (always use types, dont create "as" casters)
43
- - 'as' casts should NEVER be used (only in very unique cases), (if 'as' casters are inevitable and unleavable then that indicates a serious issue)
44
- - if a file is longer than 500 lines, it should be considered for a refactor (main service can be ~1000 lines)
45
- - create static util service for services that are not needs connection to other services
46
- - add code documentation for every function, class, interface, enum, etc. (skip inputs)
47
- - add inline code documentation for every logical step, decision, and other important parts of the code
48
- - create sub-folders for more than 3 files with the same group (same system part)
49
- - every method needs more than 3 inputs should use a single object input instead of an argument list.
50
- - when passing or declaring objects, always write both key and value, never shorthand from local variable
51
- - use time constants for times from fsm eg: second, minute, hour, day, week
52
- - use "string[]" instead of "Array<string>"
53
- - use shortest, simplest codes eg: "if (inputResponse?.missingInformation?.flag) {" instead of "if (inputResponse && inputResponse.missingInformation && inputResponse.missingInformation.flag === true) {", or "if (!count) {" instead of "if (count === 0) {"
54
- - never create new index files for modules
55
- - put main methods in try catch (eg methods that are called from controllers)
56
- - prefer async and promise-based solutions over Observables and subscribe; use async/await and Promise where it fits, avoid RxJS subscribe when a one-shot async flow is enough.
57
- - No backward compatibility. No legacy support. Refactor all affected code. Do not keep migration layers, shims, or transitional code. Breaking changes allowed.
58
-
59
- - avoid using import() or require() methods, put the imports at the top of the file
60
-
61
- - the documentation should be in Hungarian
62
- - use Hunglish, use English words for technical terms, element names and programming concepts to maintain clarity and consistency with code implementation
63
- - add "-" between english words and hungarian (affixation), eg: "figyelΓΌnk a channel-re"
64
-
@@ -1,86 +0,0 @@
1
- ---
2
- description: when creating backend structure, backend module or backend folders.
3
- alwaysApply: false
4
- ---
5
- # Backend Project Structure [FDP-BE]
6
-
7
- ## Overview
8
- This document outlines the standard project structure for FDP backend applications.
9
-
10
- ## Directory Structure
11
-
12
- ```
13
- πŸ“ app/
14
- β”œβ”€β”€ πŸ“ _assets/
15
- β”œβ”€β”€ πŸ“ _collections/
16
- β”‚ β”œβ”€β”€ πŸ“ email(*)/
17
- β”‚ β”œβ”€β”€ πŸ“ consts(*)/
18
- β”‚ β”œβ”€β”€ πŸ“ mocks(*)/
19
- β”‚ └── πŸ“ utils(*)/
20
- β”œβ”€β”€ πŸ“ _enums/
21
- β”œβ”€β”€ πŸ“ _models/
22
- β”‚ β”œβ”€β”€ πŸ“ control-models(*)/
23
- β”‚ β”œβ”€β”€ πŸ“ data-models(*)/
24
- β”‚ └── πŸ“ interfaces(*)/
25
- β”œβ”€β”€ πŸ“ _modules/
26
- β”‚ β”œβ”€β”€ πŸ“ moduleName/
27
- β”‚ β”‚ β”œβ”€β”€ πŸ“ _collections/
28
- β”‚ β”‚ β”œβ”€β”€ πŸ“ _enums/
29
- β”‚ β”‚ β”œβ”€β”€ πŸ“ _models/
30
- β”‚ β”‚ └── πŸ“ _services/
31
- β”‚ └── πŸ“ anotherModule/
32
- β”‚ β”œβ”€β”€ πŸ“ _collections/
33
- β”‚ β”œβ”€β”€ πŸ“ _enums/
34
- β”‚ β”œβ”€β”€ πŸ“ _models/
35
- β”‚ └── πŸ“ _services/
36
- └── πŸ“ _routes(**)
37
- β”œβ”€β”€ πŸ“ user/
38
- β”‚ β”œβ”€β”€ πŸ“ user/
39
- β”‚ β”‚ β”œβ”€β”€ user.controller.ts
40
- β”‚ β”‚ └── user.data-service.ts
41
- β”‚ β”œβ”€β”€ πŸ“ userData/
42
- β”‚ β”‚ β”œβ”€β”€ user-data.controller.ts
43
- β”‚ β”‚ └── user-data.data-service.ts
44
- β”‚ └── πŸ“ userCarts/
45
- β”‚ β”œβ”€β”€ user-carts.controller.ts
46
- β”‚ └── user-carts.data-service.ts
47
- β”œβ”€β”€ πŸ“ products/
48
- └── πŸ“ server/
49
- β”œβ”€β”€ πŸ“ server-status/
50
- β”œβ”€β”€ πŸ“ error/
51
- β”œβ”€β”€ πŸ“ _socket-services/
52
- └── πŸ“ core-services/
53
- β”œβ”€β”€ πŸ“ api-services/
54
- └── πŸ“ email-services/
55
- ```
56
-
57
- ## Directory Guidelines
58
-
59
- ### Folder Creation Rules (*)
60
- - Create subfolders only when containing 3-5+ elements
61
- - For 3+ elements: Consider if it will grow to 5+
62
- - If likely to reach 5+: Create subfolder immediately
63
- - Otherwise: Keep files in the parent type folder
64
-
65
- ### Route Structure (**)
66
- - `_routes` structure must match API paths
67
- - Each route folder contains related controllers and services
68
-
69
- ### Module Structure (***)
70
- - `_modules` contains reusable, self-contained modules
71
- - Each module folder must contain the standard structure:
72
- - `_collections/` - module-specific collections
73
- - `_enums/` - module-specific enums
74
- - `_models/` - module-specific models (control-models, data-models, interfaces)
75
- - `_services/` - module-specific services
76
- - Module folders follow the same naming conventions as routes
77
- - Modules are organized in a flat structure within `_modules`
78
-
79
- ### Naming Convention
80
- - Prefix type-folders with "_" for better visual hierarchy
81
- - Only create type-folders when they contain content
82
- - All modules must be in the main modules folder
83
- - No nested module folders within modules
84
-
85
- ## Module Organization
86
- Modules should be organized in a flat structure within the main modules folder. Each module follows the same internal structure with `_collections`, `_enums`, `_models`, and `_services` folders.
@@ -1,16 +0,0 @@
1
- ---
2
- description: when creating backend development
3
- alwaysApply: false
4
- ---
5
- # Backend Development Guidelines
6
-
7
- ## Project Structure
8
- - Follow the structure defined in [Backend Project Structure](backend-structure.md)
9
-
10
- ## Error Handling
11
- - Use try-catch blocks for ALL operations
12
- - Implement proper error logging
13
- - Use standardized error codes (see [Error Code Pattern](error_code_pattern.md))
14
- - Handle all edge cases
15
- - Validate all inputs
16
-
@@ -1,8 +0,0 @@
1
- ---
2
- description: when debug
3
- alwaysApply: false
4
- ---
5
-
6
-
7
- - when debugging always use unified global debug log method
8
- - use global debugging tool instead of fetch() (global telewag tool should have that fetch())