@futdevpro/nts-dynamo 1.15.151 → 1.15.153

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 (621) hide show
  1. package/.c8rc.json +26 -26
  2. package/.copilot/patterns.json +7 -7
  3. package/.cursor/rules/__assistant_guide.mdc +30 -30
  4. package/.cursor/rules/__main.mdc +64 -64
  5. package/.cursor/rules/_ag_backend-structure.mdc +85 -85
  6. package/.cursor/rules/_ag_backend.mdc +16 -16
  7. package/.cursor/rules/_ag_debug.mdc +7 -7
  8. package/.cursor/rules/_ag_documentation_writing_rules.mdc +372 -372
  9. package/.cursor/rules/_ag_file-refactoring.mdc +113 -113
  10. package/.cursor/rules/_ag_fixes_rules.mdc +5 -5
  11. package/.cursor/rules/_ag_frontend-structure.mdc +86 -86
  12. package/.cursor/rules/_ag_frontend.mdc +39 -39
  13. package/.cursor/rules/_ag_import-rules.mdc +44 -44
  14. package/.cursor/rules/_ag_naming.mdc +115 -115
  15. package/.cursor/rules/_ag_running_commands.mdc +4 -4
  16. package/.cursor/rules/_ag_server-controller.mdc +5 -5
  17. package/.cursor/rules/_ag_should-be.mdc +6 -6
  18. package/.cursor/rules/_ag_swearing.mdc +47 -47
  19. package/.cursor/rules/ai_development_guide.md +60 -60
  20. package/.cursor/rules/ai_directives.md +114 -114
  21. package/.cursor/rules/cursor-rules.md +160 -160
  22. package/.cursor/rules/default-command.mdc +464 -464
  23. package/.cursor/rules/error_code_pattern.md +39 -39
  24. package/.cursor/rules/saved rule mcp server use.md +15 -15
  25. package/.dynamo/pipeline.cicd.config.json +190 -190
  26. package/.dynamo/version-bump.config.json +5 -5
  27. package/.github/workflows/main.yml +438 -438
  28. package/.husky/pre-commit +3 -3
  29. package/.vscode/settings.json +10 -10
  30. package/HOWTO.md +15 -15
  31. package/LICENSE +21 -21
  32. package/README.md +780 -754
  33. package/__documentations/2026-04-28-logs-module.md +49 -49
  34. package/__documentations/2026-05-17-oai-compatible-providers.md +229 -229
  35. package/__documentations/2026-05-17-static-client-serving-howto.md +144 -144
  36. package/__documentations/2026-06-01-fr041-cors-middleware.md +96 -96
  37. package/__documentations/2026-06-01-fr047-p2p3-function-calling.md +81 -81
  38. package/__documentations/2026-06-15-fr193-memory-guard.md +73 -73
  39. package/__documentations/2026-08-08-fr292-app-version-header.md +38 -38
  40. package/__documentations/2026-08-14-field-encryption-mongoose-document-spread.md +124 -124
  41. package/__documentations/2026-08-18-artifact-compiler.md +46 -46
  42. package/__documentations/2026-08-18-mongo-transaction-control-service.md +82 -82
  43. package/__documentations/2026-08-18-standalone-account-security-and-privacy-bedrock.md +132 -132
  44. package/__documentations/2026-08-21-distributed-rate-limit-bfr-ctm-010.md +59 -59
  45. package/__documentations/2026-08-22-npm-token-state-classifier.md +92 -92
  46. package/__documentations/nts-integration-tests-2026-03-17.md +26 -26
  47. package/__documentations/plans/BEDROCK-HYPERPLAN.md +95 -95
  48. package/_specifications/BACKLOG.md +92 -92
  49. package/_specifications/TODO.md +15 -15
  50. package/_specifications/agent.md +138 -138
  51. package/build/_modules/server/index.d.ts +4 -0
  52. package/build/_modules/server/index.d.ts.map +1 -1
  53. package/build/_modules/server/index.js +4 -0
  54. package/build/_modules/server/index.js.map +1 -1
  55. package/build/_modules/server/server-status/db-readiness-probe-code.type-enum.d.ts +14 -0
  56. package/build/_modules/server/server-status/db-readiness-probe-code.type-enum.d.ts.map +1 -0
  57. package/build/_modules/server/server-status/db-readiness-probe-code.type-enum.js +18 -0
  58. package/build/_modules/server/server-status/db-readiness-probe-code.type-enum.js.map +1 -0
  59. package/build/_modules/server/server-status/db-readiness-probe-stage.type-enum.d.ts +8 -0
  60. package/build/_modules/server/server-status/db-readiness-probe-stage.type-enum.d.ts.map +1 -0
  61. package/build/_modules/server/server-status/db-readiness-probe-stage.type-enum.js +12 -0
  62. package/build/_modules/server/server-status/db-readiness-probe-stage.type-enum.js.map +1 -0
  63. package/build/_modules/server/server-status/db-readiness-probe.control-service.d.ts +14 -0
  64. package/build/_modules/server/server-status/db-readiness-probe.control-service.d.ts.map +1 -0
  65. package/build/_modules/server/server-status/db-readiness-probe.control-service.js +126 -0
  66. package/build/_modules/server/server-status/db-readiness-probe.control-service.js.map +1 -0
  67. package/build/_modules/server/server-status/db-readiness-probe.interface.d.ts +18 -0
  68. package/build/_modules/server/server-status/db-readiness-probe.interface.d.ts.map +1 -0
  69. package/build/_modules/server/server-status/db-readiness-probe.interface.js +3 -0
  70. package/build/_modules/server/server-status/db-readiness-probe.interface.js.map +1 -0
  71. package/eslint.config.js +3 -3
  72. package/nodemon.json +24 -24
  73. package/package.json +1 -1
  74. package/pnpm-workspace.yaml +6 -6
  75. package/scripts/_seed-out/aim-seed.fixtures.ts +161 -161
  76. package/scripts/_seed-out/llm-expand-raw.json +59 -59
  77. package/scripts/_seed-out/seed-raw.json +152 -152
  78. package/scripts/ai-fixture-seed.js +126 -126
  79. package/scripts/run-coverage-tests.js +28 -28
  80. package/spec/support/helpers/spec-reporter-loader.js +359 -359
  81. package/spec/support/helpers/ts-node-helper.js +93 -93
  82. package/spec/support/jasmine.coverage.json +24 -24
  83. package/spec/support/jasmine.json +24 -24
  84. package/src/_collections/app-version-header.util.spec.ts +108 -108
  85. package/src/_collections/app-version-header.util.ts +74 -74
  86. package/src/_collections/archive-service-registry.const.ts +21 -21
  87. package/src/_collections/archive.util.spec.ts +57 -57
  88. package/src/_collections/archive.util.ts +18 -18
  89. package/src/_collections/atlas-default-db-options.const.ts +9 -9
  90. package/src/_collections/client-safe-error.util.spec.ts +151 -151
  91. package/src/_collections/client-safe-error.util.ts +107 -107
  92. package/src/_collections/default-fallback-cache-max-age.const.spec.ts +11 -11
  93. package/src/_collections/default-fallback-cache-max-age.const.ts +2 -2
  94. package/src/_collections/default-not-found-page.const.spec.ts +19 -19
  95. package/src/_collections/default-not-found-page.const.ts +22 -22
  96. package/src/_collections/default-socket-path.const.spec.ts +12 -12
  97. package/src/_collections/default-socket-path.const.ts +2 -2
  98. package/src/_collections/field-encryption.util.spec.ts +195 -195
  99. package/src/_collections/field-encryption.util.ts +222 -222
  100. package/src/_collections/get-environment-settings.util.spec.ts +210 -210
  101. package/src/_collections/get-environment-settings.util.ts +48 -48
  102. package/src/_collections/global-settings.const.ts +126 -126
  103. package/src/_collections/load-shed.util.spec.ts +62 -62
  104. package/src/_collections/load-shed.util.ts +51 -51
  105. package/src/_collections/mongo-reconnect-guard.util.spec.ts +52 -52
  106. package/src/_collections/mongo-reconnect-guard.util.ts +172 -172
  107. package/src/_collections/npm-token-check.util.spec.ts +218 -218
  108. package/src/_collections/npm-token-check.util.ts +327 -327
  109. package/src/_collections/sample.env +21 -21
  110. package/src/_collections/security-headers.util.spec.ts +98 -98
  111. package/src/_collections/security-headers.util.ts +96 -96
  112. package/src/_collections/signed-url.util.spec.ts +198 -198
  113. package/src/_collections/signed-url.util.ts +170 -170
  114. package/src/_collections/star.controller.spec.ts +224 -224
  115. package/src/_collections/star.controller.ts +129 -129
  116. package/src/_collections/static-cache-control.util.spec.ts +47 -47
  117. package/src/_collections/static-cache-control.util.ts +25 -25
  118. package/src/_enums/data-model-type.enum.ts +14 -14
  119. package/src/_enums/data-service-function.enum.ts +24 -24
  120. package/src/_enums/predefined-data-types.enum.ts +16 -16
  121. package/src/_enums/route-security.enum.ts +12 -12
  122. package/src/_models/control-models/api-call-params.control-model.spec.ts +152 -152
  123. package/src/_models/control-models/api-call-params.control-model.ts +142 -142
  124. package/src/_models/control-models/app-ext-system-controls.control-model.spec.ts +52 -52
  125. package/src/_models/control-models/app-ext-system-controls.control-model.ts +9 -9
  126. package/src/_models/control-models/app-params.control-model.spec.ts +225 -225
  127. package/src/_models/control-models/app-params.control-model.ts +136 -136
  128. package/src/_models/control-models/app-system-controls.control-model.spec.ts +31 -31
  129. package/src/_models/control-models/app-system-controls.control-model.ts +9 -9
  130. package/src/_models/control-models/endpoint-params.control-model.spec.ts +669 -669
  131. package/src/_models/control-models/endpoint-params.control-model.ts +664 -664
  132. package/src/_models/control-models/http-settings.control-model.spec.ts +77 -77
  133. package/src/_models/control-models/http-settings.control-model.ts +37 -37
  134. package/src/_models/control-models/system-control.control-model.spec.ts +27 -27
  135. package/src/_models/control-models/system-control.control-model.ts +12 -12
  136. package/src/_models/data-models/schema-migration.data-model.ts +50 -50
  137. package/src/_models/interfaces/app-version-header-settings.interface.ts +17 -17
  138. package/src/_models/interfaces/certification-settings.interface.ts +7 -7
  139. package/src/_models/interfaces/compare-data-options.interface.ts +27 -27
  140. package/src/_models/interfaces/compare-data-result.interface.ts +12 -12
  141. package/src/_models/interfaces/cors-settings.interface.spec.ts +52 -52
  142. package/src/_models/interfaces/cors-settings.interface.ts +56 -56
  143. package/src/_models/interfaces/db-query-options.interface.ts +33 -33
  144. package/src/_models/interfaces/environment-settings.interface.ts +59 -59
  145. package/src/_models/interfaces/global-log-settings.interface.ts +171 -171
  146. package/src/_models/interfaces/global-service-settings.interface.ts +47 -47
  147. package/src/_models/interfaces/global-settings.interface.ts +294 -294
  148. package/src/_models/interfaces/migration-entry.interface.ts +19 -19
  149. package/src/_models/interfaces/mongo-transaction-settings.interface.ts +9 -9
  150. package/src/_models/interfaces/routing-module-settings.interface.ts +21 -21
  151. package/src/_models/interfaces/security-headers-settings.interface.ts +50 -50
  152. package/src/_models/interfaces/signed-url-verify-result.interface.ts +13 -13
  153. package/src/_models/interfaces/static-client-settings.interface.spec.ts +29 -29
  154. package/src/_models/interfaces/static-client-settings.interface.ts +36 -36
  155. package/src/_models/types/db-update.type.ts +100 -100
  156. package/src/_modules/account-security/_enums/account-challenge-purpose.type-enum.ts +5 -5
  157. package/src/_modules/account-security/_enums/account-refresh-token-state.type-enum.ts +6 -6
  158. package/src/_modules/account-security/_enums/account-session-state.type-enum.ts +6 -6
  159. package/src/_modules/account-security/_models/account-challenge-adapter.interface.ts +17 -17
  160. package/src/_modules/account-security/_models/account-challenge-issued.interface.ts +6 -6
  161. package/src/_modules/account-security/_models/account-challenge-record.interface.ts +13 -13
  162. package/src/_modules/account-security/_models/account-challenge-result.interface.ts +8 -8
  163. package/src/_modules/account-security/_models/account-challenge-settings.interface.ts +9 -9
  164. package/src/_modules/account-security/_models/account-password-policy.interface.ts +11 -11
  165. package/src/_modules/account-security/_models/account-password-verification.interface.ts +5 -5
  166. package/src/_modules/account-security/_models/account-refresh-token-record.interface.ts +13 -13
  167. package/src/_modules/account-security/_models/account-session-adapter.interface.ts +19 -19
  168. package/src/_modules/account-security/_models/account-session-claims.interface.ts +7 -7
  169. package/src/_modules/account-security/_models/account-session-context.interface.ts +6 -6
  170. package/src/_modules/account-security/_models/account-session-create.interface.ts +8 -8
  171. package/src/_modules/account-security/_models/account-session-record.interface.ts +21 -21
  172. package/src/_modules/account-security/_models/account-session-rotate.interface.ts +11 -11
  173. package/src/_modules/account-security/_models/account-session-settings.interface.ts +11 -11
  174. package/src/_modules/account-security/_models/account-session-token-pair.interface.ts +8 -8
  175. package/src/_modules/account-security/_models/account-session-view.interface.ts +13 -13
  176. package/src/_modules/account-security/account-challenge.control-service.spec.ts +195 -195
  177. package/src/_modules/account-security/account-challenge.control-service.ts +164 -164
  178. package/src/_modules/account-security/account-password.control-service.spec.ts +96 -96
  179. package/src/_modules/account-security/account-password.control-service.ts +288 -288
  180. package/src/_modules/account-security/account-session.control-service.spec.ts +294 -294
  181. package/src/_modules/account-security/account-session.control-service.ts +376 -376
  182. package/src/_modules/account-security/index.ts +31 -31
  183. package/src/_modules/admin-auth/_models/admin-api-key-config.interface.ts +33 -33
  184. package/src/_modules/admin-auth/admin-api-key.auth-service.spec.ts +200 -200
  185. package/src/_modules/admin-auth/admin-api-key.auth-service.ts +220 -220
  186. package/src/_modules/admin-auth/index.ts +2 -2
  187. package/src/_modules/ai/_collections/ai-model-config-validator.util.spec.ts +150 -150
  188. package/src/_modules/ai/_collections/ai-model-config-validator.util.ts +131 -131
  189. package/src/_modules/ai/_collections/ai-provider-error.util.ts +144 -144
  190. package/src/_modules/ai/_models/ai-input-interfaces.ts +117 -117
  191. package/src/_modules/ai/_models/ai-test-generation-result.interface.ts +16 -16
  192. package/src/_modules/ai/_models/interfaces/dynts-ai-cost-event-callback.interface.ts +14 -14
  193. package/src/_modules/ai/_models/interfaces/dynts-ai-cost-event.interface.ts +56 -56
  194. package/src/_modules/ai/_models/interfaces/dynts-ai-provider-error.interface.ts +16 -16
  195. package/src/_modules/ai/_modules/ai-mock/_collections/aim-default-collection.util.spec.ts +72 -72
  196. package/src/_modules/ai/_modules/ai-mock/_collections/aim-default-collection.util.ts +71 -71
  197. package/src/_modules/ai/_modules/ai-mock/_collections/aim-fixture-match.util.spec.ts +57 -57
  198. package/src/_modules/ai/_modules/ai-mock/_collections/aim-fixture-match.util.ts +60 -60
  199. package/src/_modules/ai/_modules/ai-mock/_collections/aim-fixture-serializer.util.spec.ts +56 -56
  200. package/src/_modules/ai/_modules/ai-mock/_collections/aim-fixture-serializer.util.ts +117 -117
  201. package/src/_modules/ai/_modules/ai-mock/_enums/aim-modality.enum.ts +28 -28
  202. package/src/_modules/ai/_modules/ai-mock/_models/interfaces/aim-call-input.interface.ts +14 -14
  203. package/src/_modules/ai/_modules/ai-mock/_models/interfaces/aim-error.interface.ts +11 -11
  204. package/src/_modules/ai/_modules/ai-mock/_models/interfaces/aim-fixture.interface.ts +30 -30
  205. package/src/_modules/ai/_modules/ai-mock/_models/interfaces/aim-request.interface.ts +19 -19
  206. package/src/_modules/ai/_modules/ai-mock/_models/interfaces/aim-service-collection.interface.ts +20 -20
  207. package/src/_modules/ai/_modules/ai-mock/_services/ai-embedding-mock.service.spec.ts +115 -115
  208. package/src/_modules/ai/_modules/ai-mock/_services/ai-embedding-mock.service.ts +233 -233
  209. package/src/_modules/ai/_modules/ai-mock/_services/aim-fixture-harness.service.spec.ts +134 -134
  210. package/src/_modules/ai/_modules/ai-mock/_services/aim-fixture-harness.service.ts +127 -127
  211. package/src/_modules/ai/_modules/ai-mock/_services/aim-fixture-pipeline.spec.ts +105 -105
  212. package/src/_modules/ai/_modules/ai-mock/_services/aim-fixture-store.service.spec.ts +50 -50
  213. package/src/_modules/ai/_modules/ai-mock/_services/aim-fixture-store.service.ts +65 -65
  214. package/src/_modules/ai/_modules/ai-mock/_services/aim-integration-proof.spec.ts +92 -92
  215. package/src/_modules/ai/_modules/ai-mock/_services/aim-mock.service.spec.ts +112 -112
  216. package/src/_modules/ai/_modules/ai-mock/_services/aim-mock.service.ts +155 -155
  217. package/src/_modules/ai/_modules/ai-mock/fixtures/aim-text.fixtures.ts +649 -649
  218. package/src/_modules/ai/_modules/ai-mock/index.ts +47 -47
  219. package/src/_modules/ai/_modules/anthropic/_services/aai-user-key.control-service.ts +138 -138
  220. package/src/_modules/ai/_modules/anthropic/index.ts +5 -5
  221. package/src/_modules/ai/_modules/document-ai/_collections/dai-chunking.util.spec.ts +242 -242
  222. package/src/_modules/ai/_modules/document-ai/_collections/dai-chunking.util.ts +639 -639
  223. package/src/_modules/ai/_modules/document-ai/_collections/dai-code-chunking.util.spec.ts +295 -295
  224. package/src/_modules/ai/_modules/document-ai/_collections/dai-code-chunking.util.ts +552 -552
  225. package/src/_modules/ai/_modules/document-ai/_collections/dai-document.util.spec.ts +209 -209
  226. package/src/_modules/ai/_modules/document-ai/_collections/dai-document.util.ts +85 -85
  227. package/src/_modules/ai/_modules/document-ai/_enums/dai-compare-result-type.enum.ts +7 -7
  228. package/src/_modules/ai/_modules/document-ai/_models/data-models/dai-doc-chunk.data-model.ts +146 -146
  229. package/src/_modules/ai/_modules/document-ai/_models/data-models/dai-doc-page.data-model.ts +162 -162
  230. package/src/_modules/ai/_modules/document-ai/_models/data-models/dai-document.data-model.ts +99 -99
  231. package/src/_modules/ai/_modules/document-ai/_models/interfaces/dai-code-chunk.interface.ts +68 -68
  232. package/src/_modules/ai/_modules/document-ai/_models/interfaces/dai-doc-chunk-compare-result.interface.ts +18 -18
  233. package/src/_modules/ai/_modules/document-ai/_models/interfaces/dai-doc-page-compare-result.interface.ts +19 -19
  234. package/src/_modules/ai/_modules/document-ai/_models/interfaces/dai-document-compare-result.interface.ts +25 -25
  235. package/src/_modules/ai/_modules/document-ai/index.ts +30 -30
  236. package/src/_modules/ai/_modules/fdp-ai/_services/fdpai-user-key.control-service.ts +189 -189
  237. package/src/_modules/ai/_modules/fdp-ai/index.ts +5 -5
  238. package/src/_modules/ai/_modules/open-ai/_collections/oai-global-settings.const.ts +9 -9
  239. package/src/_modules/ai/_modules/open-ai/_collections/oai-llm-predefined-requests-hu.conts.ts +82 -82
  240. package/src/_modules/ai/_modules/open-ai/_collections/oai-llm-predefined-requests.conts.ts +75 -75
  241. package/src/_modules/ai/_modules/open-ai/_enums/oai-gpt-message-role.enum.ts +45 -45
  242. package/src/_modules/ai/_modules/open-ai/_models/interfaces/oai-global-settings.interface.ts +7 -7
  243. package/src/_modules/ai/_modules/open-ai/_models/interfaces/oai-gpt-message.interface.ts +7 -7
  244. package/src/_modules/ai/_modules/open-ai/_models/interfaces/oai-llm-predefined-requests.interface.ts +57 -57
  245. package/src/_modules/ai/_modules/open-ai/_services/data-services/oai-doc-chunk-data.service.ts +292 -292
  246. package/src/_modules/ai/_modules/open-ai/_services/data-services/oai-doc-page.data-service.ts +572 -572
  247. package/src/_modules/ai/_modules/open-ai/_services/data-services/oai-document.data-service.spec.ts +342 -342
  248. package/src/_modules/ai/_modules/open-ai/_services/data-services/oai-document.data-service.ts +435 -435
  249. package/src/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.spec.ts +550 -550
  250. package/src/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.ts +630 -630
  251. package/src/_modules/ai/_modules/open-ai/_services/oai-embedding.control-service.spec.ts +332 -332
  252. package/src/_modules/ai/_modules/open-ai/_services/oai-embedding.control-service.ts +132 -132
  253. package/src/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.spec.ts +462 -462
  254. package/src/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.ts +634 -634
  255. package/src/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.spec.ts +489 -489
  256. package/src/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.tools.spec.ts +173 -173
  257. package/src/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.ts +1085 -1085
  258. package/src/_modules/ai/_modules/open-ai/_services/oai-user-key.control-service.ts +157 -157
  259. package/src/_modules/ai/_modules/open-ai/index.ts +74 -74
  260. package/src/_modules/ai/_services/ai-embedding-provider.registry.spec.ts +110 -110
  261. package/src/_modules/ai/_services/ai-embedding-provider.registry.ts +114 -114
  262. package/src/_modules/ai/_services/ai-embedding.service-base.spec.ts +98 -98
  263. package/src/_modules/ai/_services/ai-embedding.service-base.ts +48 -48
  264. package/src/_modules/ai/_services/ai-llm-chat.service-base.spec.ts +229 -229
  265. package/src/_modules/ai/_services/ai-llm-chat.service-base.ts +68 -68
  266. package/src/_modules/ai/_services/ai-llm.service-base.reconciler.spec.ts +133 -133
  267. package/src/_modules/ai/_services/ai-llm.service-base.spec.ts +250 -250
  268. package/src/_modules/ai/_services/ai-llm.service-base.ts +599 -599
  269. package/src/_modules/ai/_services/ai-provider.service-base.spec.ts +158 -158
  270. package/src/_modules/ai/_services/ai-provider.service-base.ts +67 -67
  271. package/src/_modules/ai/_services/ai-user-key.service-base.ts +59 -59
  272. package/src/_modules/ai/_services/lmstudio-embedding.control-service.spec.ts +197 -197
  273. package/src/_modules/ai/_services/lmstudio-embedding.control-service.ts +399 -399
  274. package/src/_modules/ai/index.ts +33 -33
  275. package/src/_modules/artifact-compiler/_enums/artifact-compile-outcome.type-enum.ts +5 -5
  276. package/src/_modules/artifact-compiler/_enums/artifact-compile-stage.type-enum.ts +8 -8
  277. package/src/_modules/artifact-compiler/_enums/artifact-retry-class.type-enum.ts +6 -6
  278. package/src/_modules/artifact-compiler/_models/artifact-compile.interface.ts +35 -35
  279. package/src/_modules/artifact-compiler/artifact-compiler.control-service.spec.ts +151 -151
  280. package/src/_modules/artifact-compiler/artifact-compiler.control-service.ts +356 -356
  281. package/src/_modules/artifact-compiler/index.ts +9 -9
  282. package/src/_modules/assistant/_collections/ass-global-settings.const.ts +13 -13
  283. package/src/_modules/assistant/_collections/ass.util.spec.ts +176 -176
  284. package/src/_modules/assistant/_collections/ass.util.ts +50 -50
  285. package/src/_modules/assistant/_models/ass-global-settings.interface.ts +15 -15
  286. package/src/_modules/assistant/_services/ass-io.control-service.spec.ts +140 -140
  287. package/src/_modules/assistant/_services/ass-io.control-service.ts +74 -74
  288. package/src/_modules/assistant/_services/ass-main.control-service.spec.ts +192 -192
  289. package/src/_modules/assistant/_services/ass-main.control-service.ts +107 -107
  290. package/src/_modules/assistant/index.ts +19 -19
  291. package/src/_modules/bot/_collections/bot-default-commands.const.ts +12 -12
  292. package/src/_modules/bot/_collections/bot-global-settings.const.ts +39 -39
  293. package/src/_modules/bot/_models/bot-channel-wrapper.interface.ts +62 -62
  294. package/src/_modules/bot/_models/bot-command.interface.ts +8 -8
  295. package/src/_modules/bot/_models/bot-global-settings.interface.ts +96 -96
  296. package/src/_modules/bot/_models/bot-last-mention-date.interface.ts +6 -6
  297. package/src/_modules/bot/_models/bot-last-message-date.interface.ts +5 -5
  298. package/src/_modules/bot/_models/bot-message-wrapper.interface.ts +90 -90
  299. package/src/_modules/bot/_models/bot-user-wrapper.interface.ts +41 -41
  300. package/src/_modules/bot/_modules/discord-bot/_models/dib-platform.types.ts +9 -9
  301. package/src/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.control-service.spec.ts +431 -431
  302. package/src/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.control-service.ts +641 -641
  303. package/src/_modules/bot/_modules/discord-bot/index.ts +12 -12
  304. package/src/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.spec.ts +160 -160
  305. package/src/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.ts +55 -55
  306. package/src/_modules/bot/_modules/dynamo-bot/_models/dyb-platform.types.ts +15 -15
  307. package/src/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.spec.ts +374 -374
  308. package/src/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.ts +447 -447
  309. package/src/_modules/bot/_modules/dynamo-bot/index.ts +15 -15
  310. package/src/_modules/bot/_modules/slack-bot/_models/slb-platform.types.ts +9 -9
  311. package/src/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.spec.ts +344 -344
  312. package/src/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.ts +197 -197
  313. package/src/_modules/bot/_modules/slack-bot/index.ts +12 -12
  314. package/src/_modules/bot/_modules/teams-bot/_models/teb-platform.types.ts +9 -9
  315. package/src/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.spec.ts +345 -345
  316. package/src/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.ts +197 -197
  317. package/src/_modules/bot/_modules/teams-bot/index.ts +11 -11
  318. package/src/_modules/bot/_services/bot-commands.control-service.spec.ts +116 -116
  319. package/src/_modules/bot/_services/bot-commands.control-service.ts +158 -158
  320. package/src/_modules/bot/_services/bot-io.control-service.spec.ts +285 -285
  321. package/src/_modules/bot/_services/bot-io.control-service.ts +329 -329
  322. package/src/_modules/bot/_services/bot-main.control-service.spec.ts +208 -208
  323. package/src/_modules/bot/_services/bot-main.control-service.ts +489 -489
  324. package/src/_modules/bot/_services/bot-messaging-provider.service-base.spec.ts +349 -349
  325. package/src/_modules/bot/_services/bot-messaging-provider.service-base.ts +158 -158
  326. package/src/_modules/bot/_services/bot-routines.control-service.spec.ts +111 -111
  327. package/src/_modules/bot/_services/bot-routines.control-service.ts +78 -78
  328. package/src/_modules/bot/index.ts +37 -37
  329. package/src/_modules/custom-data/custom-data.controller.spec.ts +49 -49
  330. package/src/_modules/custom-data/custom-data.controller.ts +67 -67
  331. package/src/_modules/custom-data/custom-data.data-service.spec.ts +54 -54
  332. package/src/_modules/custom-data/custom-data.data-service.ts +21 -21
  333. package/src/_modules/custom-data/get-custom-data-routing-module.util.spec.ts +28 -28
  334. package/src/_modules/custom-data/get-custom-data-routing-module.util.ts +24 -24
  335. package/src/_modules/custom-data/index.ts +9 -9
  336. package/src/_modules/data-readers/_collections/dynts-sqlite-reader.util.spec.ts +176 -176
  337. package/src/_modules/data-readers/_collections/dynts-sqlite-reader.util.ts +203 -203
  338. package/src/_modules/data-readers/_models/interfaces/dynts-sqlite-reader.interface.ts +33 -33
  339. package/src/_modules/data-readers/index.ts +11 -11
  340. package/src/_modules/defaults/_collections/default-endpoints.util.ts +487 -487
  341. package/src/_modules/defaults/_models/default-user.data-model.ts +72 -72
  342. package/src/_modules/defaults/_services/default-auth.service.spec.ts +269 -269
  343. package/src/_modules/defaults/_services/default-auth.service.ts +177 -177
  344. package/src/_modules/defaults/_services/default-socket-events.service.spec.ts +42 -42
  345. package/src/_modules/defaults/_services/default-socket-events.service.ts +61 -61
  346. package/src/_modules/defaults/_services/default-user.data-service.spec.ts +187 -187
  347. package/src/_modules/defaults/_services/default-user.data-service.ts +98 -98
  348. package/src/_modules/defaults/index.ts +17 -17
  349. package/src/_modules/discord-assistant/_collections/dias-global-settings.const.ts +19 -19
  350. package/src/_modules/discord-assistant/_collections/dias.util.spec.ts +366 -366
  351. package/src/_modules/discord-assistant/_collections/dias.util.ts +132 -132
  352. package/src/_modules/discord-assistant/_models/dias-global-settings.interface.ts +19 -19
  353. package/src/_modules/discord-assistant/_models/dias-knowledge.data-model.ts +52 -52
  354. package/src/_modules/discord-assistant/_services/dias-chunk.data-service.ts +177 -177
  355. package/src/_modules/discord-assistant/_services/dias-io.control-service.spec.ts +108 -108
  356. package/src/_modules/discord-assistant/_services/dias-io.control-service.ts +69 -69
  357. package/src/_modules/discord-assistant/_services/dias-main.control-service.spec.ts +22 -22
  358. package/src/_modules/discord-assistant/_services/dias-main.control-service.ts +27 -27
  359. package/src/_modules/discord-assistant/_services/dias.service-base.spec.ts +195 -195
  360. package/src/_modules/discord-assistant/_services/dias.service-base.ts +76 -76
  361. package/src/_modules/discord-assistant/index.ts +38 -38
  362. package/src/_modules/discord-assistant-voiced/_services/dias-discord-bot.control-service.spec.ts +34 -34
  363. package/src/_modules/discord-assistant-voiced/_services/dias-discord-bot.control-service.ts +11 -11
  364. package/src/_modules/discord-assistant-voiced/index.ts +36 -36
  365. package/src/_modules/discord-bot/_collections/dibo-default-commands.const.ts +16 -16
  366. package/src/_modules/discord-bot/_collections/dibo-global-settings.conts.ts +55 -55
  367. package/src/_modules/discord-bot/_collections/dibo-operations.util.spec.ts +214 -214
  368. package/src/_modules/discord-bot/_collections/dibo-operations.util.ts +387 -387
  369. package/src/_modules/discord-bot/_models/dibo-command.interface.ts +12 -12
  370. package/src/_modules/discord-bot/_models/dibo-global-settings.interface.ts +98 -98
  371. package/src/_modules/discord-bot/_models/dibo-last-mention-date.inteface.ts +7 -7
  372. package/src/_modules/discord-bot/_models/dibo-last-message-date.interface.ts +6 -6
  373. package/src/_modules/discord-bot/_services/dibo-commands.control-service.spec.ts +154 -154
  374. package/src/_modules/discord-bot/_services/dibo-commands.control-service.ts +153 -153
  375. package/src/_modules/discord-bot/_services/dibo-io.control-service.spec.ts +264 -264
  376. package/src/_modules/discord-bot/_services/dibo-io.control-service.ts +306 -306
  377. package/src/_modules/discord-bot/_services/dibo-main.control-service.spec.ts +408 -408
  378. package/src/_modules/discord-bot/_services/dibo-main.control-service.ts +487 -487
  379. package/src/_modules/discord-bot/_services/dibo-routines.control-service.spec.ts +105 -105
  380. package/src/_modules/discord-bot/_services/dibo-routines.control-service.ts +97 -97
  381. package/src/_modules/discord-bot/index.ts +36 -36
  382. package/src/_modules/local-vector-search/_enums/lvs-search-mode.enum.ts +35 -35
  383. package/src/_modules/local-vector-search/_models/data-models/lvs-vector-persist.data-model.ts +60 -60
  384. package/src/_modules/local-vector-search/_models/lvs-search-result.interface.ts +17 -17
  385. package/src/_modules/local-vector-search/_services/lvs-bm25.util.spec.ts +159 -159
  386. package/src/_modules/local-vector-search/_services/lvs-bm25.util.ts +206 -206
  387. package/src/_modules/local-vector-search/_services/lvs-doc-chunk-data.service.spec.ts +418 -418
  388. package/src/_modules/local-vector-search/_services/lvs-doc-chunk-data.service.ts +276 -276
  389. package/src/_modules/local-vector-search/_services/lvs-local-vector-search.data-service.spec.ts +480 -480
  390. package/src/_modules/local-vector-search/_services/lvs-local-vector-search.data-service.ts +416 -416
  391. package/src/_modules/local-vector-search/_services/lvs-persistent-vector-pool.control-service.spec.ts +214 -214
  392. package/src/_modules/local-vector-search/_services/lvs-persistent-vector-pool.control-service.ts +186 -186
  393. package/src/_modules/local-vector-search/_services/lvs-vector-persist.data-service.spec.ts +167 -167
  394. package/src/_modules/local-vector-search/_services/lvs-vector-persist.data-service.ts +130 -130
  395. package/src/_modules/local-vector-search/_services/lvs-vector-pool.control-service.spec.ts +509 -509
  396. package/src/_modules/local-vector-search/_services/lvs-vector-pool.control-service.ts +323 -323
  397. package/src/_modules/local-vector-search/index.ts +16 -16
  398. package/src/_modules/logs/_models/file-log-entry.interface.ts +13 -13
  399. package/src/_modules/logs/_models/file-log-read-result.interface.ts +37 -37
  400. package/src/_modules/logs/file-log.service.spec.ts +341 -341
  401. package/src/_modules/logs/file-log.service.ts +466 -466
  402. package/src/_modules/logs/file-logs.controller.spec.ts +245 -245
  403. package/src/_modules/logs/file-logs.controller.ts +165 -165
  404. package/src/_modules/logs/get-file-logs-routing-module.util.ts +51 -51
  405. package/src/_modules/logs/get-logs-routing-module.util.ts +36 -36
  406. package/src/_modules/logs/index.ts +11 -11
  407. package/src/_modules/logs/log-buffer.service.ts +101 -101
  408. package/src/_modules/logs/logs.controller.ts +109 -109
  409. package/src/_modules/logs/logs.service.ts +100 -100
  410. package/src/_modules/mcp/_models/interfaces/dynts-mcp.interface.ts +111 -111
  411. package/src/_modules/mcp/_services/dynts-mcp-server.service-base.spec.ts +151 -151
  412. package/src/_modules/mcp/_services/dynts-mcp-server.service-base.ts +125 -125
  413. package/src/_modules/mcp/_services/dynts-mcp.adapter.ts +168 -168
  414. package/src/_modules/mcp/index.ts +13 -13
  415. package/src/_modules/messaging/README.md +354 -354
  416. package/src/_modules/messaging/_collections/get-messaging-routing-module.util.ts +26 -26
  417. package/src/_modules/messaging/_collections/msg-global-settings.const.ts +22 -22
  418. package/src/_modules/messaging/_collections/msg.util.spec.ts +226 -226
  419. package/src/_modules/messaging/_collections/msg.util.ts +83 -83
  420. package/src/_modules/messaging/_models/msg-global-settings.interface.ts +37 -37
  421. package/src/_modules/messaging/_services/msg-conversation.data-service.ts +146 -146
  422. package/src/_modules/messaging/_services/msg-events.service.spec.ts +219 -219
  423. package/src/_modules/messaging/_services/msg-events.service.ts +267 -267
  424. package/src/_modules/messaging/_services/msg-integration.control-service.ts +179 -179
  425. package/src/_modules/messaging/_services/msg-main.control-service.spec.ts +147 -147
  426. package/src/_modules/messaging/_services/msg-main.control-service.ts +571 -571
  427. package/src/_modules/messaging/_services/msg-message.data-service.ts +129 -129
  428. package/src/_modules/messaging/_services/msg.controller.spec.ts +201 -201
  429. package/src/_modules/messaging/_services/msg.controller.ts +370 -370
  430. package/src/_modules/messaging/index.ts +30 -30
  431. package/src/_modules/mock/app-extended-server.mock.ts +201 -201
  432. package/src/_modules/mock/app-integration-test.mock.ts +51 -51
  433. package/src/_modules/mock/app-params.mock.spec.ts +21 -21
  434. package/src/_modules/mock/app-params.mock.ts +9 -9
  435. package/src/_modules/mock/app-server.mock.ts +188 -188
  436. package/src/_modules/mock/auth-service.mock.spec.ts +47 -47
  437. package/src/_modules/mock/auth-service.mock.ts +28 -28
  438. package/src/_modules/mock/controller.mock.spec.ts +26 -26
  439. package/src/_modules/mock/controller.mock.ts +16 -16
  440. package/src/_modules/mock/data-model.mock.spec.ts +111 -111
  441. package/src/_modules/mock/data-model.mock.ts +82 -82
  442. package/src/_modules/mock/email-service-collection.mock.spec.ts +24 -24
  443. package/src/_modules/mock/email-service-collection.mock.ts +15 -15
  444. package/src/_modules/mock/email-service.mock.spec.ts +17 -17
  445. package/src/_modules/mock/email-service.mock.ts +20 -20
  446. package/src/_modules/mock/email-template.mock.html +14 -14
  447. package/src/_modules/mock/endpoint.mock.ts +91 -91
  448. package/src/_modules/mock/socket-client.mock.spec.ts +40 -40
  449. package/src/_modules/mock/socket-client.mock.ts +45 -45
  450. package/src/_modules/mock/socket-server.mock.spec.ts +44 -44
  451. package/src/_modules/mock/socket-server.mock.ts +46 -46
  452. package/src/_modules/oauth2/_routes/oauth2.controller.spec.ts +107 -107
  453. package/src/_modules/oauth2/_routes/oauth2.controller.ts +98 -98
  454. package/src/_modules/oauth2/_services/oauth2.auth-service.spec.ts +254 -254
  455. package/src/_modules/oauth2/_services/oauth2.auth-service.ts +232 -232
  456. package/src/_modules/oauth2/_services/oauth2.control-service.spec.ts +585 -585
  457. package/src/_modules/oauth2/_services/oauth2.control-service.ts +653 -653
  458. package/src/_modules/oauth2/index.ts +17 -17
  459. package/src/_modules/privacy-lifecycle/_enums/privacy-consent-decision.type-enum.ts +5 -5
  460. package/src/_modules/privacy-lifecycle/_enums/privacy-contributor-action.type-enum.ts +10 -10
  461. package/src/_modules/privacy-lifecycle/_enums/privacy-contributor-outcome.type-enum.ts +7 -7
  462. package/src/_modules/privacy-lifecycle/_enums/privacy-request-state.type-enum.ts +15 -15
  463. package/src/_modules/privacy-lifecycle/_enums/privacy-request.type-enum.ts +9 -9
  464. package/src/_modules/privacy-lifecycle/_models/privacy-consent-input.interface.ts +12 -12
  465. package/src/_modules/privacy-lifecycle/_models/privacy-consent-persistence-result.interface.ts +7 -7
  466. package/src/_modules/privacy-lifecycle/_models/privacy-consent-record.interface.ts +15 -15
  467. package/src/_modules/privacy-lifecycle/_models/privacy-consent-result.interface.ts +7 -7
  468. package/src/_modules/privacy-lifecycle/_models/privacy-consent-view.interface.ts +13 -13
  469. package/src/_modules/privacy-lifecycle/_models/privacy-contributor-context.interface.ts +9 -9
  470. package/src/_modules/privacy-lifecycle/_models/privacy-contributor-outcome.interface.ts +14 -14
  471. package/src/_modules/privacy-lifecycle/_models/privacy-contributor-plan.interface.ts +8 -8
  472. package/src/_modules/privacy-lifecycle/_models/privacy-contributor.interface.ts +17 -17
  473. package/src/_modules/privacy-lifecycle/_models/privacy-ledger-adapter.interface.ts +21 -21
  474. package/src/_modules/privacy-lifecycle/_models/privacy-ledger-result.interface.ts +9 -9
  475. package/src/_modules/privacy-lifecycle/_models/privacy-ledger-settings.interface.ts +7 -7
  476. package/src/_modules/privacy-lifecycle/_models/privacy-legal-acceptance-input.interface.ts +10 -10
  477. package/src/_modules/privacy-lifecycle/_models/privacy-legal-acceptance-persistence-result.interface.ts +7 -7
  478. package/src/_modules/privacy-lifecycle/_models/privacy-legal-acceptance-result.interface.ts +7 -7
  479. package/src/_modules/privacy-lifecycle/_models/privacy-legal-acceptance-view.interface.ts +11 -11
  480. package/src/_modules/privacy-lifecycle/_models/privacy-legal-acceptance.interface.ts +13 -13
  481. package/src/_modules/privacy-lifecycle/_models/privacy-lifecycle-adapter.interface.ts +19 -19
  482. package/src/_modules/privacy-lifecycle/_models/privacy-lifecycle-settings.interface.ts +9 -9
  483. package/src/_modules/privacy-lifecycle/_models/privacy-request-create-result.interface.ts +7 -7
  484. package/src/_modules/privacy-lifecycle/_models/privacy-request-open.interface.ts +10 -10
  485. package/src/_modules/privacy-lifecycle/_models/privacy-request-persistence-create-result.interface.ts +7 -7
  486. package/src/_modules/privacy-lifecycle/_models/privacy-request-record.interface.ts +21 -21
  487. package/src/_modules/privacy-lifecycle/_models/privacy-request-result.interface.ts +8 -8
  488. package/src/_modules/privacy-lifecycle/_models/privacy-request-view.interface.ts +20 -20
  489. package/src/_modules/privacy-lifecycle/index.ts +40 -40
  490. package/src/_modules/privacy-lifecycle/privacy-ledger.control-service.spec.ts +206 -206
  491. package/src/_modules/privacy-lifecycle/privacy-ledger.control-service.ts +253 -253
  492. package/src/_modules/privacy-lifecycle/privacy-lifecycle.control-service.spec.ts +353 -353
  493. package/src/_modules/privacy-lifecycle/privacy-lifecycle.control-service.ts +586 -586
  494. package/src/_modules/rate-limit/_enums/rate-limit-store-kind.type-enum.ts +5 -5
  495. package/src/_modules/rate-limit/_models/rate-limit-config.interface.ts +82 -82
  496. package/src/_modules/rate-limit/_models/rate-limit-consume-request.interface.ts +9 -9
  497. package/src/_modules/rate-limit/_models/rate-limit-consume-result.interface.ts +6 -6
  498. package/src/_modules/rate-limit/_models/rate-limit-policy.interface.ts +16 -16
  499. package/src/_modules/rate-limit/_models/rate-limit-store.interface.ts +9 -9
  500. package/src/_modules/rate-limit/index.ts +8 -8
  501. package/src/_modules/rate-limit/rate-limit-in-memory.store.ts +91 -91
  502. package/src/_modules/rate-limit/rate-limit.middleware.spec.ts +488 -488
  503. package/src/_modules/rate-limit/rate-limit.middleware.ts +504 -504
  504. package/src/_modules/scheduler/_models/scheduler-job.interface.ts +35 -35
  505. package/src/_modules/scheduler/get-scheduler-routing-module.util.ts +33 -33
  506. package/src/_modules/scheduler/index.ts +8 -8
  507. package/src/_modules/scheduler/scheduler.controller.spec.ts +42 -42
  508. package/src/_modules/scheduler/scheduler.controller.ts +69 -69
  509. package/src/_modules/scheduler/scheduler.service.spec.ts +141 -141
  510. package/src/_modules/scheduler/scheduler.service.ts +176 -176
  511. package/src/_modules/scoped-config/_enums/dynts-scoped-config-level.enum.ts +22 -22
  512. package/src/_modules/scoped-config/_models/data-models/dynts-scoped-config.data-model.ts +82 -82
  513. package/src/_modules/scoped-config/_models/interfaces/dynts-scoped-config.interface.ts +107 -107
  514. package/src/_modules/scoped-config/_services/dynts-scoped-config.control-service.spec.ts +312 -312
  515. package/src/_modules/scoped-config/_services/dynts-scoped-config.control-service.ts +311 -311
  516. package/src/_modules/scoped-config/_services/dynts-scoped-config.data-service.spec.ts +123 -123
  517. package/src/_modules/scoped-config/_services/dynts-scoped-config.data-service.ts +108 -108
  518. package/src/_modules/scoped-config/index.ts +17 -17
  519. package/src/_modules/server/errors/errors.control-service.spec.ts +246 -246
  520. package/src/_modules/server/errors/errors.control-service.ts +100 -100
  521. package/src/_modules/server/errors/errors.controller.spec.ts +340 -340
  522. package/src/_modules/server/errors/errors.controller.ts +559 -559
  523. package/src/_modules/server/errors/errors.data-service.spec.ts +480 -480
  524. package/src/_modules/server/errors/errors.data-service.ts +867 -867
  525. package/src/_modules/server/index.ts +34 -30
  526. package/src/_modules/server/server-status/db-readiness-probe-code.type-enum.ts +13 -0
  527. package/src/_modules/server/server-status/db-readiness-probe-stage.type-enum.ts +7 -0
  528. package/src/_modules/server/server-status/db-readiness-probe.control-service.spec.ts +235 -0
  529. package/src/_modules/server/server-status/db-readiness-probe.control-service.ts +158 -0
  530. package/src/_modules/server/server-status/db-readiness-probe.interface.ts +20 -0
  531. package/src/_modules/server/server-status/server-status-snapshot.control-service.spec.ts +70 -70
  532. package/src/_modules/server/server-status/server-status-snapshot.control-service.ts +17 -17
  533. package/src/_modules/server/server-status/server-status-snapshot.data-service.spec.ts +77 -77
  534. package/src/_modules/server/server-status/server-status-snapshot.data-service.ts +37 -37
  535. package/src/_modules/server/server-status/server-status.control-service.spec.ts +672 -672
  536. package/src/_modules/server/server-status/server-status.control-service.ts +490 -490
  537. package/src/_modules/server/server-status/server-status.controller.spec.ts +276 -276
  538. package/src/_modules/server/server-status/server-status.controller.ts +336 -336
  539. package/src/_modules/socket/_enums/socket-security.enum.ts +11 -11
  540. package/src/_modules/socket/_models/socket-client-service-params.control-model.spec.ts +32 -32
  541. package/src/_modules/socket/_models/socket-client-service-params.control-model.ts +22 -22
  542. package/src/_modules/socket/_models/socket-presence.control-model.spec.ts +165 -165
  543. package/src/_modules/socket/_models/socket-presence.control-model.ts +211 -211
  544. package/src/_modules/socket/_models/socket-server-service-params.control-model.spec.ts +69 -69
  545. package/src/_modules/socket/_models/socket-server-service-params.control-model.ts +33 -33
  546. package/src/_modules/socket/_services/socket-client.service.spec.ts +15 -15
  547. package/src/_modules/socket/_services/socket-client.service.ts +260 -260
  548. package/src/_modules/socket/_services/socket-server.service.spec.ts +272 -272
  549. package/src/_modules/socket/_services/socket-server.service.ts +1037 -1037
  550. package/src/_modules/socket/app-extended.integration.spec.ts +85 -85
  551. package/src/_modules/socket/app-extended.server.ts +648 -648
  552. package/src/_modules/socket/index.ts +42 -42
  553. package/src/_modules/test/get-test-routing-module.util.spec.ts +28 -28
  554. package/src/_modules/test/get-test-routing-module.util.ts +23 -23
  555. package/src/_modules/test/index.ts +11 -11
  556. package/src/_modules/test/test.controller.spec.ts +72 -72
  557. package/src/_modules/test/test.controller.ts +115 -115
  558. package/src/_modules/test-email-sink/_collections/test-email-pattern.const.ts +10 -10
  559. package/src/_modules/test-email-sink/_models/data-models/dynts-sent-test-mail.data-model.ts +41 -41
  560. package/src/_modules/test-email-sink/_services/dynts-test-email-sink.service.spec.ts +112 -112
  561. package/src/_modules/test-email-sink/_services/dynts-test-email-sink.service.ts +141 -141
  562. package/src/_modules/test-email-sink/get-sent-mail-routing-module.util.ts +29 -29
  563. package/src/_modules/test-email-sink/index.ts +11 -11
  564. package/src/_modules/test-email-sink/test-email-sink.controller.ts +83 -83
  565. package/src/_modules/usage/get-usage-routing-module.util.ts +22 -22
  566. package/src/_modules/usage/index.ts +15 -15
  567. package/src/_modules/usage/usage.controller.spec.ts +106 -106
  568. package/src/_modules/usage/usage.controller.ts +140 -140
  569. package/src/_modules/usage/usage.data-service.spec.ts +332 -332
  570. package/src/_modules/usage/usage.data-service.ts +185 -185
  571. package/src/_services/base/api.service-base.spec.ts +125 -125
  572. package/src/_services/base/api.service-base.ts +74 -74
  573. package/src/_services/base/archive-data.service.spec.ts +209 -209
  574. package/src/_services/base/archive-data.service.ts +228 -228
  575. package/src/_services/base/data.service.spec.ts +784 -784
  576. package/src/_services/base/data.service.ts +2792 -2792
  577. package/src/_services/base/db.service.encryption.spec.ts +76 -76
  578. package/src/_services/base/db.service.spec.ts +160 -160
  579. package/src/_services/base/db.service.ts +1698 -1698
  580. package/src/_services/base/singleton.service-base.spec.ts +28 -28
  581. package/src/_services/base/singleton.service-base.ts +24 -24
  582. package/src/_services/base/singleton.service.spec.ts +114 -114
  583. package/src/_services/base/singleton.service.ts +38 -38
  584. package/src/_services/core/api.service.spec.ts +187 -187
  585. package/src/_services/core/api.service.ts +627 -627
  586. package/src/_services/core/auth.service.spec.ts +159 -159
  587. package/src/_services/core/auth.service.ts +174 -174
  588. package/src/_services/core/collection-growth-monitor.service.spec.ts +119 -119
  589. package/src/_services/core/collection-growth-monitor.service.ts +234 -234
  590. package/src/_services/core/db-stats.service.ts +104 -104
  591. package/src/_services/core/diagnostics.service.spec.ts +44 -44
  592. package/src/_services/core/diagnostics.service.ts +158 -158
  593. package/src/_services/core/email.service.spec.ts +85 -85
  594. package/src/_services/core/email.service.ts +757 -757
  595. package/src/_services/core/event-loop-diag.service.spec.ts +22 -22
  596. package/src/_services/core/event-loop-diag.service.ts +144 -144
  597. package/src/_services/core/global.service.spec.ts +292 -292
  598. package/src/_services/core/global.service.ts +487 -487
  599. package/src/_services/core/memory-guard.service.spec.ts +245 -245
  600. package/src/_services/core/memory-guard.service.ts +481 -481
  601. package/src/_services/core/migration-runner.service.spec.ts +91 -91
  602. package/src/_services/core/migration-runner.service.ts +106 -106
  603. package/src/_services/core/mongo-transaction.control-service.spec.ts +165 -165
  604. package/src/_services/core/mongo-transaction.control-service.ts +148 -148
  605. package/src/_services/core/request-hunter.service.spec.ts +124 -124
  606. package/src/_services/core/request-hunter.service.ts +157 -157
  607. package/src/_services/core/service-collection.service.spec.ts +46 -46
  608. package/src/_services/core/service-collection.service.ts +6 -6
  609. package/src/_services/route/controller.service.spec.ts +53 -53
  610. package/src/_services/route/controller.service.ts +148 -148
  611. package/src/_services/route/routing-module.service.spec.ts +98 -98
  612. package/src/_services/route/routing-module.service.ts +330 -330
  613. package/src/_services/server/app.server-retention.spec.ts +106 -106
  614. package/src/_services/server/app.server.ts +2012 -2012
  615. package/src/_services/shared.static-service.spec.ts +99 -99
  616. package/src/_services/shared.static-service.ts +78 -78
  617. package/src/index.ts +117 -117
  618. package/tsconfig.app.json +12 -12
  619. package/tsconfig.json +42 -42
  620. package/.dynamo/logs/cicd-pipeline/output.log +0 -2883
  621. package/.dynamo/logs/cicd-pipeline/status.json +0 -74
package/README.md CHANGED
@@ -1,754 +1,780 @@
1
- # Dynamo-NTS
2
-
3
- ![Dynamo-NTS Logo](src/_assets/dynamo-nts-logo-256.png)
4
-
5
- **Dynamo-NTS** (NodeTS) is a comprehensive backend framework for building robust, secure, and scalable Node.js applications with TypeScript. Built on top of [Dynamo FSM](https://www.npmjs.com/package/@futdevpro/fsm-dynamo) (`@futdevpro/fsm-dynamo`), it provides a structured approach to server-side development with clear separation of concerns, extensive configuration options, and production-ready implementations for common backend tasks.
6
-
7
- Dynamo-NTS uses **[Dynamo FSM](https://www.npmjs.com/package/@futdevpro/fsm-dynamo)** as its foundational layer, implementing the server-side components of the FSM architecture. All core interfaces, types, and utilities are provided by FSM, ensuring consistency and type safety across the entire Dynamo ecosystem.
8
-
9
- Dynamo-NTS is part of the unified **Dynamo ecosystem**, a full-stack development framework designed to accelerate the development of scalable web applications. The ecosystem consists of interconnected packages that work together seamlessly, with Dynamo-NTS serving as the backend implementation layer. The frontend counterpart is **[Dynamo NGX](https://www.npmjs.com/package/@futdevpro/ngx-dynamo)**, which uses **[Dynamo NGX Models](https://www.npmjs.com/package/@futdevpro/ngx-dynamo-models)** for type-safe model definitions.
10
-
11
- ### Design Philosophy
12
-
13
- Dynamo-NTS is built with two key principles:
14
-
15
- - **Full Override Capability**: Every component, service, and class can be overridden or extended. The framework provides a solid foundation with sensible defaults, but you have complete control to customize or replace any part to fit your specific needs. This makes Dynamo-NTS highly customizable and adaptable to any project requirements.
16
-
17
- - **Complete Type Information**: All types, interfaces, and definitions are included in the compiled output. This ensures excellent readability and maintainability—everything you need is available at compile time through TypeScript's type system, providing full IntelliSense support and eliminating the need to reference external documentation during development.
18
-
19
- ### Simplified System Definitions
20
-
21
- Dynamo-NTS simplifies complex system definitions by abstracting common backend infrastructure into simple parameterization. Instead of manually configuring various libraries and services, you define your application through straightforward parameter objects:
22
-
23
- - **Express Usage**: HTTP/HTTPS server setup, routing, middleware, and error handling are configured through `DyNTS_App_Params`, `DyNTS_Http_Settings`, and `DyNTS_RoutingModule` parameters (simplifies Express server initialization and route management)
24
- - **MongoDB/Mongoose Usage**: Database connections, models, schemas, and operations are managed through `DyNTS_DBService` and `DyNTS_DataService` with simple data model parameter definitions (simplifies Mongoose schema creation and model management)
25
- - **Socket.io Usage**: Real-time communication setup, event handling, and presence tracking are configured through `DyNTS_SocketServerService` parameters and the `DyNTS_AppExtended` class (simplifies Socket.io server initialization and event management)
26
- - **Nodemailer Usage**: Email sending with templating, attachments, and async delivery is handled through `DyNTS_EmailService` with template component definitions (simplifies Nodemailer transporter setup and email template management)
27
- - **OAuth2 Implementation**: Complete OAuth2.0 protocol flows including authorization codes, token exchange, and refresh tokens are managed through `DyNTS_OAuth2_Controller` and `DyNTS_OAuth2_AuthService` (simplifies complex OAuth2 flow implementation)
28
- - **Axios Usage**: HTTP client requests to external APIs are standardized through `DyNTS_ApiService` with `DyNTS_ApiCall_Params` configuration (simplifies Axios request setup, error handling, and response management)
29
- - **Discord.js / Slack / Teams Bot Development**: Platform-agnostic bot framework through `DyNTS_Bot_MessagingProvider_ServiceBase` and bot modules (simplifies Discord.js, Slack, and Teams bot development with unified interfaces)
30
- - **OpenAI / AI Provider Integration**: AI/LLM operations including chat, embeddings, and vector search are abstracted through `DyNTS_AI_Provider_ServiceBase` and provider implementations (simplifies OpenAI SDK usage and enables multi-provider architecture)
31
- - **Location Tracking**: IP-based geolocation through `geoip-lite` is integrated into the usage tracking module (simplifies location data collection from HTTP requests)
32
-
33
- This parameterization approach eliminates boilerplate code and provides a consistent, type-safe interface for all backend operations. Instead of learning multiple library APIs and their configuration patterns, developers work with unified Dynamo-NTS parameter objects that handle the underlying complexity.
34
-
35
- ## Table of Contents
36
-
37
- - [Installation](#installation)
38
- - [Quick Start](#quick-start)
39
- - [Core Concepts](#core-concepts)
40
- - [Modules Overview](#modules-overview)
41
- - [Usage Examples](#usage-examples)
42
- - [Ecosystem Integration](#ecosystem-integration)
43
- - [API Reference](#api-reference)
44
-
45
- ## Installation
46
-
47
- Install Dynamo-NTS using pnpm (recommended) or npm:
48
-
49
- ```bash
50
- pnpm add @futdevpro/dynamo-nts
51
- # or
52
- npm install @futdevpro/dynamo-nts
53
- ```
54
-
55
- ### Peer Dependencies
56
-
57
- Dynamo-NTS requires peer dependencies that are divided into two categories: core dependencies (required for the main module) and module-specific dependencies (required only when using specific modules).
58
-
59
- #### Core Dependencies (Required)
60
-
61
- These dependencies are required for the main Dynamo-NTS functionality:
62
-
63
- - [`@futdevpro/fsm-dynamo`](https://www.npmjs.com/package/@futdevpro/fsm-dynamo) - The foundational package providing core interfaces and utilities (always required)
64
- - `express` - Web framework for Node.js (simplified through Dynamo-NTS parameterization)
65
- - `mongoose` - MongoDB object modeling (simplified through Dynamo-NTS data services)
66
- - `axios` - HTTP client (simplified through Dynamo-NTS API service)
67
- - `body-parser` - Request body parsing middleware
68
- - `dotenv` - Environment variable management
69
- - `rxjs` - Reactive programming library
70
- - `@types/express` - TypeScript types for Express
71
- - `@types/node` - TypeScript types for Node.js
72
- - `ts-node` - TypeScript execution environment
73
-
74
- Install core dependencies:
75
-
76
- ```bash
77
- pnpm add @futdevpro/fsm-dynamo express mongoose axios body-parser dotenv rxjs @types/express @types/node ts-node
78
- ```
79
-
80
- #### Module-Specific Dependencies (Optional)
81
-
82
- These dependencies are only required when using specific modules:
83
-
84
- - **Socket Module**: `socket.io` - Real-time communication (simplified through Dynamo-NTS socket services)
85
- - **Email Service**: `nodemailer` - Email sending (simplified through Dynamo-NTS email services)
86
- - **Usage Module**: `geoip-lite` and `@types/geoip-lite` - IP geolocation (simplified through Dynamo-NTS usage module)
87
- - **Bot Module (Discord)**: `discord.js` - Discord bot development (simplified through Dynamo-NTS bot module)
88
- - **AI Module (OpenAI)**: `openai` - OpenAI API integration (simplified through Dynamo-NTS AI module)
89
-
90
- Install module-specific dependencies as needed:
91
-
92
- ```bash
93
- # For Socket module
94
- pnpm add socket.io
95
-
96
- # For Email service
97
- pnpm add nodemailer
98
-
99
- # For Usage module
100
- pnpm add geoip-lite @types/geoip-lite
101
-
102
- # For Bot module (Discord)
103
- pnpm add discord.js
104
-
105
- # For AI module (OpenAI)
106
- pnpm add openai
107
- ```
108
-
109
- ## Quick Start
110
-
111
- The following example demonstrates how to set up a basic Dynamo-NTS application with routing and socket support:
112
-
113
- ```typescript
114
- import {
115
- DyNTS_AppExtended,
116
- DyNTS_App_Params,
117
- DyNTS_GlobalService_Settings,
118
- DyNTS_Http_Settings,
119
- DyNTS_RoutingModule
120
- } from '@futdevpro/nts-dynamo';
121
- import {
122
- DyNTS_SocketServerService
123
- } from '@futdevpro/nts-dynamo/socket';
124
- import { DyFM_usageSession_dataParams } from '@futdevpro/fsm-dynamo/usage';
125
- import { DyFM_customData_dataParams } from '@futdevpro/fsm-dynamo/custom-data';
126
- import { DyNTS_getUsageRoutingModule } from '@futdevpro/nts-dynamo/usage';
127
- import { DyNTS_getTestRoutingModule } from '@futdevpro/nts-dynamo/test';
128
-
129
- import { AuthService } from './core-services/auth.service';
130
- import { Email_ServiceCollection } from './core-services/email.service-collection';
131
- import { User_Controller } from './routes/user/user.controller';
132
- import { Chat_SocketServerService } from './socket-services/chat.socket-server-service';
133
-
134
- export class App extends DyNTS_AppExtended {
135
-
136
- getAppParams(): DyNTS_App_Params {
137
- return new DyNTS_App_Params({
138
- name: 'My Application',
139
- version: '1.0.0',
140
- dbName: 'myapp',
141
- dbUri: process.env.MONGO_URL || 'mongodb://localhost:27017/myapp',
142
- systemShortCodeName: 'MYAPP',
143
- });
144
- }
145
-
146
- getGlobalServiceCollection(): DyNTS_GlobalService_Settings {
147
- return {
148
- authService: AuthService.getInstance(),
149
- emailServiceCollection: Email_ServiceCollection.getInstance(),
150
- dbModels: [
151
- // Your data model parameters here
152
- DyFM_usageSession_dataParams,
153
- DyFM_customData_dataParams,
154
- ],
155
- };
156
- }
157
-
158
- getPortSettings(): DyNTS_Http_Settings {
159
- return new DyNTS_Http_Settings({
160
- httpPort: 3000,
161
- });
162
- }
163
-
164
- getRoutingModules(): DyNTS_RoutingModule[] {
165
- return [
166
- new DyNTS_RoutingModule({
167
- route: '/user',
168
- controllers: [
169
- User_Controller.getInstance(),
170
- ],
171
- }),
172
- DyNTS_getTestRoutingModule(),
173
- DyNTS_getUsageRoutingModule(),
174
- ];
175
- }
176
-
177
- getSocketServices(): DyNTS_SocketServerService<any>[] {
178
- return [
179
- Chat_SocketServerService.getInstance(),
180
- ];
181
- }
182
- }
183
-
184
- // Start the application
185
- const app = new App();
186
- ```
187
-
188
- ## Core Concepts
189
-
190
- Dynamo-NTS uses [Dynamo FSM](https://www.npmjs.com/package/@futdevpro/fsm-dynamo) as its foundation, implementing all server-side components defined in the FSM architecture. All types, interfaces, and base models are provided by FSM, ensuring full type safety and consistency.
191
-
192
- ### Extensibility and Customization
193
-
194
- Dynamo-NTS is designed with extensibility in mind. Every component, service, and class can be overridden or extended to meet your specific requirements:
195
-
196
- - **Service Override**: All services (authentication, email, data services, etc.) can be extended or completely replaced with custom implementations
197
- - **Method Override**: Abstract methods in base classes allow you to customize behavior while maintaining the framework structure
198
- - **Configuration Override**: Global settings, route security, and application parameters can be overridden at any level
199
- - **Type Safety**: All overrides maintain full TypeScript type safety, with all types and interfaces available at compile time
200
-
201
- This design philosophy ensures that Dynamo-NTS provides a solid foundation while remaining fully customizable for your specific use cases.
202
-
203
- ### Complete Type Information
204
-
205
- All types, interfaces, and definitions are included in the compiled output, ensuring excellent readability and maintainability. When you compile your project, you have access to:
206
-
207
- - Complete type definitions for all services, models, and interfaces
208
- - Full IntelliSense support in your IDE
209
- - Compile-time type checking for all framework components
210
- - Self-documenting code through TypeScript's type system
211
-
212
- This approach eliminates the need to reference external documentation during development—everything you need is available in your IDE's autocomplete and type hints.
213
-
214
- ### Application Classes
215
-
216
- Dynamo-NTS provides two main application base classes that simplify Express server setup:
217
-
218
- - **`DyNTS_App`**: Basic application class for standard HTTP server applications without real-time socket support
219
- - **`DyNTS_AppExtended`**: Extended application class that includes built-in socket server capabilities for real-time communication (simplifies Socket.io setup)
220
-
221
- Both classes abstract away Express server configuration, requiring you to implement several abstract methods with simple parameter objects:
222
-
223
- - `getAppParams()`: Define application parameters (name, version, database name, etc.) - replaces Express app initialization
224
- - `getGlobalServiceCollection()`: Configure global services (authentication, email, database models) - replaces manual service registration
225
- - `getPortSettings()`: Configure HTTP/HTTPS ports - replaces Express server.listen() configuration
226
- - `getRoutingModules()`: Define API routes and controllers - replaces Express router setup
227
-
228
- ### Data Services
229
-
230
- Data services provide a structured way to interact with MongoDB, simplifying Mongoose model and schema definitions:
231
-
232
- - **`DyNTS_DBService<T>`**: Low-level MongoDB service for direct database operations (simplifies Mongoose model creation)
233
- - **`DyNTS_DataService<T>`**: High-level data service with business logic, validation, and dependency management (simplifies MongoDB CRUD operations)
234
- - **`DyNTS_ArchiveDataService<T>`**: Service for managing archived data in separate collections
235
-
236
- Instead of manually creating Mongoose schemas and models, you define data models through `DyFM_DataModel_Params` (from FSM), and Dynamo-NTS handles schema generation, model creation, and connection management automatically. Data services handle CRUD operations, data validation, dependency tracking, and provide methods for searching, filtering, and managing data relationships.
237
-
238
- ### Atomic MongoDB transactions
239
-
240
- `DyNTS_MongoTransaction_ControlService` is the shared Bedrock entry point for business operations that must
241
- commit several MongoDB writes as one unit. The callback receives the same Mongoose `ClientSession` that must
242
- be attached to every participating query or write:
243
-
244
- ```typescript
245
- import { ClientSession } from 'mongoose';
246
-
247
- import { DyNTS_MongoTransaction_ControlService } from '@futdevpro/nts-dynamo';
248
-
249
- const transactionService: DyNTS_MongoTransaction_ControlService =
250
- DyNTS_MongoTransaction_ControlService.getInstance();
251
-
252
- const pipelineId: string = await transactionService.execute<string>({
253
- transactionName: 'publish-pipeline-version',
254
- issuer: 'pipeline-persistence-service',
255
- maxCommitTimeMs: 3_000,
256
- task: async (session: ClientSession): Promise<string> => {
257
- // Every MongoDB operation in this callback must use `session`.
258
- // Example: await model.updateOne(filter, update, { session: session });
259
- // Example: await auditModel.create([ event ], { session: session });
260
- return 'pipeline-id';
261
- },
262
- });
263
- ```
264
-
265
- The service uses snapshot reads, majority writes and primary routing, always closes the session, and emits
266
- stable content-free error codes. MongoDB transactions require a replica set or sharded deployment; a standalone
267
- MongoDB instance is intentionally not treated as transaction-capable. Mongoose may retry the callback after a
268
- transient transaction error, so the callback must not perform non-transactional side effects such as sending
269
- messages or mutating external systems.
270
-
271
- ### Routing System
272
-
273
- The routing system provides a structured approach to defining RESTful API endpoints, simplifying Express router configuration:
274
-
275
- - **`DyNTS_RoutingModule`**: Groups related controllers under a common route path (replaces Express Router setup)
276
- - **`DyNTS_Controller`**: Abstract base class for defining HTTP endpoints (simplifies Express route handlers)
277
- - **`DyNTS_Endpoint_Params`**: Configuration for individual API endpoints (replaces Express route definitions)
278
-
279
- Instead of manually setting up Express routers and route handlers, you define endpoints through parameter objects. Controllers define endpoints with support for:
280
- - Multiple HTTP methods (GET, POST, PUT, PATCH, DELETE)
281
- - Pre-processing middleware (authentication, validation)
282
- - Task functions for handling requests
283
- - Route security levels (open, secure, both)
284
-
285
- ### Global Services
286
-
287
- The `DyNTS_GlobalService` provides centralized access to:
288
-
289
- - Authentication service
290
- - Email service collection
291
- - Database models registry
292
- - Error handlers
293
- - Socket server instances
294
-
295
- ### Authentication
296
-
297
- Dynamo-NTS provides an abstract `DyNTS_AuthService` class that you can extend to implement your authentication logic. The framework supports:
298
-
299
- - Token-based authentication
300
- - OAuth2 flows (via the OAuth2 module)
301
- - Session management
302
- - Route-level security configuration
303
-
304
- For product-local accounts, the optional `@futdevpro/nts-dynamo/account-security` entry point adds production
305
- security primitives without coupling a product to a shared account provider:
306
-
307
- - versioned adaptive password hashing and rehash detection;
308
- - hash-only email-verification and password-reset challenges with atomic one-time consumption;
309
- - opaque, hash-only access credentials backed by revocable server-side sessions;
310
- - one-time refresh rotation, replay detection, session listing and subject-wide revocation.
311
-
312
- Persistence remains application-owned through explicit atomic adapters. Transports must never put the raw
313
- credentials in URLs, logs, analytics or durable client storage. A consuming application must also apply its
314
- rate-limit, authorization, cookie/storage and audit-redaction policy at the API boundary.
315
-
316
- ### Distributed rate limiting
317
-
318
- The `@futdevpro/nts-dynamo/rate-limit` entry point provides an atomic rate-limit boundary for HTTP services:
319
-
320
- - an exact sliding-window in-memory store for deterministic tests and explicitly single-instance development;
321
- - an application-owned shared-store contract for production deployments;
322
- - a production configuration gate that requires both shared persistence and explicit opaque subject/endpoint
323
- extractors;
324
- - validated positive limits, windows and weighted request costs with stable, content-free failures;
325
- - trusted `req.ip` as the safe local default instead of reading caller-controlled forwarding headers directly;
326
- - explicit opportunistic local cleanup with no timer, polling loop or hidden background task.
327
-
328
- Production consumers must implement the shared store with one atomic permit decision across every application
329
- instance. They must derive non-sensitive, purpose-scoped bucket identifiers and must not persist or log raw IP
330
- addresses, credentials, email addresses or other request content as rate-limit keys.
331
-
332
- ### Privacy lifecycle
333
-
334
- The optional `@futdevpro/nts-dynamo/privacy-lifecycle` entry point provides the shared machinery for standalone
335
- GDPR-capable products:
336
-
337
- - identity-gated, deadline-bearing data-subject requests;
338
- - explicit `received → identity-verified → scoped → planned → executing → verifying` processing;
339
- - deterministic product-domain contributors with resumable partial outcomes and documented retention bases;
340
- - append-only, checksummed legal acceptances;
341
- - versioned, purpose-specific consent grants and withdrawals.
342
-
343
- The Bedrock module coordinates state and evidence only. Each consuming product must register every data domain,
344
- implement hard-delete/anonymization/export behavior, and provide transaction-safe persistence. A request is
345
- never reported complete while a registered contributor has a failed outcome.
346
-
347
- ## Modules Overview
348
-
349
- Dynamo-NTS is organized into focused modules, each providing specific functionality:
350
-
351
- ### Main Module
352
-
353
- The core foundation providing essential components:
354
-
355
- - **Collections**: Archive utilities, global settings, environment configuration
356
- - **Enums**: Data model types, service functions, route security levels
357
- - **Models**: Application configuration interfaces, control models, database types
358
- - **Services**: Core services for API communication, authentication, data management, routing
359
-
360
- ### AI Module
361
-
362
- Provides abstractions and implementations for AI operations:
363
-
364
- - **Abstract Service Bases**: Base classes for AI providers, LLM services, LLM chat services, and embedding services
365
- - **OpenAI Implementation**: Complete OpenAI integration with LLM, chat, and embedding support
366
- - **Document AI**: Document chunking and preprocessing for AI models
367
- - **Vector Search**: MongoDB Atlas vector database operations with automatic data vectorization
368
-
369
- #### OpenAI-Compatible Providers
370
-
371
- The OAI service-ek (`DyNTS_OAI_LLM_ServiceBase`, `DyNTS_OAI_LLMChat_ServiceBase`, `DyNTS_OAI_Embedding_ControlService`) bármely OpenAI-API-kompatibilis endpoint-tal működnek — lokál LLM (LM Studio, Ollama), self-hosted (vLLM, LocalAI) is — a `DyFM_OAI_ClientOptions.baseURL` mező segítségével. Részletek + provider-konfig sample-ök: [`__documentations/2026-05-17-oai-compatible-providers.md`](__documentations/2026-05-17-oai-compatible-providers.md).
372
-
373
- ### Assistant Module
374
-
375
- Platform and AI provider agnostic solutions for creating intelligent assistants:
376
-
377
- - Integrates communication providers (bot) with AI providers (LLM Chat)
378
- - Message conversion utilities
379
- - Conversation management
380
- - Configurable settings for system prompts and message filtering
381
-
382
- ### Bot Module
383
-
384
- Platform-agnostic bot functionality:
385
-
386
- - Message, channel, and user wrappers for any messaging platform
387
- - Command system for bot commands
388
- - Routine system for scheduled and event-driven tasks
389
- - IO management for bot interactions
390
- - Provider support for Discord, Slack, and Teams
391
-
392
- ### Socket Module
393
-
394
- Real-time communication capabilities that simplify Socket.io setup:
395
-
396
- - Socket client and server implementations with secure and open connection options (simplifies Socket.io server initialization)
397
- - Event handling system for managing real-time communications (replaces manual Socket.io event handler setup)
398
- - Presence tracking for monitoring connected clients
399
- - Error handling and logging for reliable operation
400
- - Extended application class with built-in socket server capabilities (automatically configures Socket.io with Express server)
401
-
402
- ### Messaging Module
403
-
404
- Backend implementation for unified messaging system:
405
-
406
- - Data services for messages and conversations
407
- - Control services for business logic orchestration
408
- - Real-time socket events
409
- - RESTful HTTP endpoints
410
- - Integration with bot and assistant modules
411
-
412
- ### OAuth2 Module
413
-
414
- Complete OAuth2.0 protocol implementation:
415
-
416
- - OAuth2 authorization and token management
417
- - Client management and user authentication
418
- - Token exchange and refresh operations
419
- - Authorization code and access token generation
420
-
421
- ### Server Module
422
-
423
- Solutions for basic server endpoints:
424
-
425
- - Error handling for saving and retrieving server errors
426
- - Server status monitoring with version and uptime information
427
- - Server status snapshots for saving and retrieving status at specific times
428
- - Error statistics for monitoring and analysis
429
-
430
- ### Defaults Module
431
-
432
- Default implementations for common services:
433
-
434
- - Default user data model and service for authentication and user management
435
- - Default authentication service with basic token-based authentication
436
- - Default socket events service with graceful degradation
437
- - All services can be extended or replaced with custom implementations
438
-
439
- ### Custom Data Module
440
-
441
- Tools for managing custom data:
442
-
443
- - Data service for handling custom data operations with optional initialization
444
- - Controller with RESTful endpoints for data operations
445
- - GET endpoint for retrieving custom data by ID
446
- - POST endpoint for modifying custom data
447
- - Configurable routing module with optional security overrides
448
-
449
- ### Test Module
450
-
451
- Testing and monitoring tools:
452
-
453
- - Test endpoints for different HTTP methods (GET, POST, DELETE)
454
- - Server status endpoint with version and uptime information
455
- - Configurable routing module with security override options
456
- - Automatic controller registration for easy setup
457
-
458
- ### Usage Module
459
-
460
- Session and usage tracking tools:
461
-
462
- - Session management tools for creating, updating, and closing sessions
463
- - Usage data collection and analysis tools
464
- - Location tracking from HTTP requests
465
- - Usage statistics retrieval with time range filtering
466
- - Daily usage statistics calculation
467
-
468
- ## Usage Examples
469
-
470
- ### Basic Application Setup
471
-
472
- This example shows a complete application setup using `DyNTS_AppExtended`:
473
-
474
- ```typescript
475
- import {
476
- DyNTS_AppExtended,
477
- DyNTS_App_Params,
478
- DyNTS_GlobalService_Settings,
479
- DyNTS_Http_Settings,
480
- DyNTS_RoutingModule
481
- } from '@futdevpro/nts-dynamo';
482
- import { DyNTS_SocketServerService } from '@futdevpro/nts-dynamo/socket';
483
-
484
- export class App extends DyNTS_AppExtended {
485
-
486
- getAppParams(): DyNTS_App_Params {
487
- return new DyNTS_App_Params({
488
- name: 'My Server',
489
- version: '1.0.0',
490
- dbName: 'myapp',
491
- });
492
- }
493
-
494
- getGlobalServiceCollection(): DyNTS_GlobalService_Settings {
495
- return {
496
- authService: AuthService.getInstance(),
497
- dbModels: [
498
- // Your data models
499
- ],
500
- };
501
- }
502
-
503
- getPortSettings(): DyNTS_Http_Settings {
504
- return new DyNTS_Http_Settings({
505
- httpPort: 3000,
506
- });
507
- }
508
-
509
- getRoutingModules(): DyNTS_RoutingModule[] {
510
- return [
511
- new DyNTS_RoutingModule({
512
- route: '/api',
513
- controllers: [
514
- MyController.getInstance(),
515
- ],
516
- }),
517
- ];
518
- }
519
-
520
- getSocketServices(): DyNTS_SocketServerService<any>[] {
521
- return [
522
- MySocketService.getInstance(),
523
- ];
524
- }
525
- }
526
- ```
527
-
528
- ### Routing Module Configuration
529
-
530
- Multiple routing modules can be configured to organize your API:
531
-
532
- ```typescript
533
- getRoutingModules(): DyNTS_RoutingModule[] {
534
- return [
535
- new DyNTS_RoutingModule({
536
- route: '/user',
537
- controllers: [
538
- User_Controller.getInstance(),
539
- UserData_Controller.getInstance(),
540
- UserSettings_Controller.getInstance(),
541
- ],
542
- }),
543
- new DyNTS_RoutingModule({
544
- route: '/project',
545
- controllers: [
546
- Project_Controller.getInstance(),
547
- ProjectExtension_Controller.getInstance(),
548
- ],
549
- }),
550
- new DyNTS_RoutingModule({
551
- route: '/server',
552
- controllers: [
553
- ServerStatus_Controller.getInstance(),
554
- ],
555
- }),
556
- DyNTS_getTestRoutingModule(),
557
- DyNTS_getUsageRoutingModule(),
558
- ];
559
- }
560
- ```
561
-
562
- ### Controller Implementation
563
-
564
- Controllers define API endpoints with authentication and business logic:
565
-
566
- ```typescript
567
- import { Request, Response } from 'express';
568
- import { DyNTS_Controller, DyNTS_Endpoint_Params } from '@futdevpro/nts-dynamo';
569
- import { DyFM_HttpCallType } from '@futdevpro/fsm-dynamo';
570
-
571
- export class User_Controller extends DyNTS_Controller {
572
-
573
- static getInstance(): User_Controller {
574
- return User_Controller.getSingletonInstance();
575
- }
576
-
577
- private authService: AuthService = AuthService.getInstance();
578
-
579
- setupEndpoints(): void {
580
- this.endpoints = [
581
- new DyNTS_Endpoint_Params({
582
- name: 'getUser',
583
- type: DyFM_HttpCallType.get,
584
- endpoint: '/get/:userId',
585
- preProcesses: [this.authService.authenticate_tokenSelf],
586
- tasks: [
587
- async (req: Request, res: Response, issuer: string): Promise<void> => {
588
- const userService = new User_DataService({ issuer });
589
- await userService.getDataById(req.params.userId);
590
- res.send(userService.data);
591
- },
592
- ],
593
- }),
594
- new DyNTS_Endpoint_Params({
595
- name: 'updateUser',
596
- type: DyFM_HttpCallType.post,
597
- endpoint: '/update',
598
- preProcesses: [this.authService.authenticate_tokenSelf],
599
- tasks: [
600
- async (req: Request, res: Response, issuer: string): Promise<void> => {
601
- const userService = new User_DataService({ issuer });
602
- await userService.saveData(req.body);
603
- res.send(userService.data);
604
- },
605
- ],
606
- }),
607
- ];
608
- }
609
- }
610
- ```
611
-
612
- ### Data Service Implementation
613
-
614
- Data services provide a structured way to interact with MongoDB:
615
-
616
- ```typescript
617
- import { DyNTS_DataService } from '@futdevpro/nts-dynamo';
618
- import { DyFM_DataModel_Params } from '@futdevpro/fsm-dynamo'; // FSM provides the data model parameter definition
619
-
620
- // Define your data model parameters
621
- const userDataParams: DyFM_DataModel_Params<UserData> = new DyFM_DataModel_Params({
622
- dataName: 'userData',
623
- typeSample: {
624
- userId: '',
625
- preferences: {},
626
- },
627
- // ... additional configuration
628
- });
629
-
630
- export class User_DataService extends DyNTS_DataService<UserData> {
631
- constructor(params: { issuer: string }) {
632
- super(userDataParams);
633
- this.issuer = params.issuer;
634
- }
635
-
636
- // Custom business logic methods
637
- async getUserPreferences(userId: string): Promise<UserPreferences> {
638
- await this.getDataByDependencyId({ userId });
639
- return this.data?.preferences || {};
640
- }
641
- }
642
- ```
643
-
644
- ### Socket Server Service
645
-
646
- Socket services enable real-time communication:
647
-
648
- ```typescript
649
- import { DyNTS_SocketServerService, DyNTS_SocketPresence } from '@futdevpro/nts-dynamo/socket';
650
-
651
- export class Chat_SocketServerService extends DyNTS_SocketServerService<DyNTS_SocketPresence, any> {
652
-
653
- static getInstance(): Chat_SocketServerService {
654
- return Chat_SocketServerService.getSingletonInstance();
655
- }
656
-
657
- protected setupSocketEvents(): void {
658
- this.socketServer.on('connection', (socket) => {
659
- socket.on('joinRoom', (roomId: string) => {
660
- socket.join(roomId);
661
- });
662
-
663
- socket.on('sendMessage', async (data: { roomId: string; message: string }) => {
664
- this.socketServer.to(data.roomId).emit('newMessage', data);
665
- });
666
- });
667
- }
668
- }
669
- ```
670
-
671
- ### Vector Search with AI
672
-
673
- Dynamo-NTS provides built-in support for MongoDB Atlas vector search with automatic vectorization:
674
-
675
- ```typescript
676
- import { DyNTS_OAI_VectorDataService } from '@futdevpro/nts-dynamo/ai/open-ai';
677
-
678
- export class Knowledge_DataService extends DyNTS_OAI_VectorDataService<Knowledge> {
679
-
680
- constructor() {
681
- super(knowledgeDataParams);
682
- }
683
-
684
- async searchSimilarContent(query: string, limit: number = 10): Promise<Knowledge[]> {
685
- return await this.vectorSearch({
686
- input: query,
687
- searchInKey: 'content', // Property that has vectorization enabled
688
- limit: limit,
689
- numberOfCandidates: 100,
690
- });
691
- }
692
- }
693
- ```
694
-
695
- The vector search automatically:
696
- - Creates embeddings for search queries using the configured AI provider
697
- - Performs semantic search in MongoDB Atlas vector database
698
- - Returns results sorted by relevance
699
- - Supports filtering with additional MongoDB queries
700
-
701
- ## Ecosystem Integration
702
-
703
- Dynamo-NTS is part of the unified **Dynamo ecosystem**, which consists of several interconnected packages:
704
-
705
- ### Dynamo FSM (Full Stack Module)
706
-
707
- The foundational package [`@futdevpro/fsm-dynamo`](https://www.npmjs.com/package/@futdevpro/fsm-dynamo) that provides:
708
- - Core interfaces and types shared across the ecosystem
709
- - Base model definitions (used by all Dynamo-NTS data services)
710
- - Utility functions
711
- - Type definitions for system-wide use
712
- - Data model parameter definitions (`DyFM_DataModel_Params`)
713
-
714
- Dynamo-NTS is built on top of Dynamo FSM and implements the server-side components of the FSM architecture. All data models, interfaces, and type definitions used in Dynamo-NTS are provided by FSM, ensuring consistency and type safety across the entire ecosystem.
715
-
716
- ### Dynamo NGX (AngularX)
717
-
718
- The frontend counterpart [`@futdevpro/dynamo-ngx`](https://www.npmjs.com/package/@futdevpro/dynamo-ngx) provides:
719
- - Angular components and services
720
- - Frontend models that integrate with Dynamo-NTS backend (using shared FSM types)
721
- - Real-time communication clients (connects to Dynamo-NTS socket services)
722
- - Form management and data table components
723
-
724
- ### Unified Patterns
725
-
726
- The Dynamo ecosystem enforces consistent patterns across all packages:
727
-
728
- - **Naming Conventions**: Consistent prefixes (`DyNTS_` for backend, `DyNX_` for frontend, `DyFM_` for shared)
729
- - **Type Safety**: Full TypeScript support with shared type definitions
730
- - **Architecture Patterns**: Consistent service patterns, data models, and API structures
731
- - **Error Handling**: Unified error handling across the stack
732
- - **Logging**: Consistent logging patterns and utilities
733
-
734
- This unified approach ensures that:
735
- - Developers learn one set of patterns that apply everywhere
736
- - Frontend and backend code integrate seamlessly
737
- - Type safety is maintained across the entire stack
738
- - Maintenance and updates are simplified
739
-
740
- ## API Reference
741
-
742
- For detailed API documentation, see:
743
-
744
- - [Dynamo-NTS Documentation](fdp-documentations/specifications/dynamo-packages/dynamo-nts/dynamo-nts.md)
745
- - [Dynamo FSM Documentation](fdp-documentations/specifications/dynamo-packages/dynamo-fsm/dynamo-fsm.md)
746
- - [Dynamo Ecosystem Overview](fdp-documentations/specifications/dynamo-packages/dynamo_packages.md)
747
-
748
- ## License
749
-
750
- ISC
751
-
752
- ## Support
753
-
754
- For issues, questions, or contributions, please refer to the project repository.
1
+ # Dynamo-NTS
2
+
3
+ ![Dynamo-NTS Logo](src/_assets/dynamo-nts-logo-256.png)
4
+
5
+ **Dynamo-NTS** (NodeTS) is a comprehensive backend framework for building robust, secure, and scalable Node.js applications with TypeScript. Built on top of [Dynamo FSM](https://www.npmjs.com/package/@futdevpro/fsm-dynamo) (`@futdevpro/fsm-dynamo`), it provides a structured approach to server-side development with clear separation of concerns, extensive configuration options, and production-ready implementations for common backend tasks.
6
+
7
+ Dynamo-NTS uses **[Dynamo FSM](https://www.npmjs.com/package/@futdevpro/fsm-dynamo)** as its foundational layer, implementing the server-side components of the FSM architecture. All core interfaces, types, and utilities are provided by FSM, ensuring consistency and type safety across the entire Dynamo ecosystem.
8
+
9
+ Dynamo-NTS is part of the unified **Dynamo ecosystem**, a full-stack development framework designed to accelerate the development of scalable web applications. The ecosystem consists of interconnected packages that work together seamlessly, with Dynamo-NTS serving as the backend implementation layer. The frontend counterpart is **[Dynamo NGX](https://www.npmjs.com/package/@futdevpro/ngx-dynamo)**, which uses **[Dynamo NGX Models](https://www.npmjs.com/package/@futdevpro/ngx-dynamo-models)** for type-safe model definitions.
10
+
11
+ ### Design Philosophy
12
+
13
+ Dynamo-NTS is built with two key principles:
14
+
15
+ - **Full Override Capability**: Every component, service, and class can be overridden or extended. The framework provides a solid foundation with sensible defaults, but you have complete control to customize or replace any part to fit your specific needs. This makes Dynamo-NTS highly customizable and adaptable to any project requirements.
16
+
17
+ - **Complete Type Information**: All types, interfaces, and definitions are included in the compiled output. This ensures excellent readability and maintainability—everything you need is available at compile time through TypeScript's type system, providing full IntelliSense support and eliminating the need to reference external documentation during development.
18
+
19
+ ### Simplified System Definitions
20
+
21
+ Dynamo-NTS simplifies complex system definitions by abstracting common backend infrastructure into simple parameterization. Instead of manually configuring various libraries and services, you define your application through straightforward parameter objects:
22
+
23
+ - **Express Usage**: HTTP/HTTPS server setup, routing, middleware, and error handling are configured through `DyNTS_App_Params`, `DyNTS_Http_Settings`, and `DyNTS_RoutingModule` parameters (simplifies Express server initialization and route management)
24
+ - **MongoDB/Mongoose Usage**: Database connections, models, schemas, and operations are managed through `DyNTS_DBService` and `DyNTS_DataService` with simple data model parameter definitions (simplifies Mongoose schema creation and model management)
25
+ - **Socket.io Usage**: Real-time communication setup, event handling, and presence tracking are configured through `DyNTS_SocketServerService` parameters and the `DyNTS_AppExtended` class (simplifies Socket.io server initialization and event management)
26
+ - **Nodemailer Usage**: Email sending with templating, attachments, and async delivery is handled through `DyNTS_EmailService` with template component definitions (simplifies Nodemailer transporter setup and email template management)
27
+ - **OAuth2 Implementation**: Complete OAuth2.0 protocol flows including authorization codes, token exchange, and refresh tokens are managed through `DyNTS_OAuth2_Controller` and `DyNTS_OAuth2_AuthService` (simplifies complex OAuth2 flow implementation)
28
+ - **Axios Usage**: HTTP client requests to external APIs are standardized through `DyNTS_ApiService` with `DyNTS_ApiCall_Params` configuration (simplifies Axios request setup, error handling, and response management)
29
+ - **Discord.js / Slack / Teams Bot Development**: Platform-agnostic bot framework through `DyNTS_Bot_MessagingProvider_ServiceBase` and bot modules (simplifies Discord.js, Slack, and Teams bot development with unified interfaces)
30
+ - **OpenAI / AI Provider Integration**: AI/LLM operations including chat, embeddings, and vector search are abstracted through `DyNTS_AI_Provider_ServiceBase` and provider implementations (simplifies OpenAI SDK usage and enables multi-provider architecture)
31
+ - **Location Tracking**: IP-based geolocation through `geoip-lite` is integrated into the usage tracking module (simplifies location data collection from HTTP requests)
32
+
33
+ This parameterization approach eliminates boilerplate code and provides a consistent, type-safe interface for all backend operations. Instead of learning multiple library APIs and their configuration patterns, developers work with unified Dynamo-NTS parameter objects that handle the underlying complexity.
34
+
35
+ ## Table of Contents
36
+
37
+ - [Installation](#installation)
38
+ - [Quick Start](#quick-start)
39
+ - [Core Concepts](#core-concepts)
40
+ - [Modules Overview](#modules-overview)
41
+ - [Usage Examples](#usage-examples)
42
+ - [Ecosystem Integration](#ecosystem-integration)
43
+ - [API Reference](#api-reference)
44
+
45
+ ## Installation
46
+
47
+ Install Dynamo-NTS using pnpm (recommended) or npm:
48
+
49
+ ```bash
50
+ pnpm add @futdevpro/dynamo-nts
51
+ # or
52
+ npm install @futdevpro/dynamo-nts
53
+ ```
54
+
55
+ ### Peer Dependencies
56
+
57
+ Dynamo-NTS requires peer dependencies that are divided into two categories: core dependencies (required for the main module) and module-specific dependencies (required only when using specific modules).
58
+
59
+ #### Core Dependencies (Required)
60
+
61
+ These dependencies are required for the main Dynamo-NTS functionality:
62
+
63
+ - [`@futdevpro/fsm-dynamo`](https://www.npmjs.com/package/@futdevpro/fsm-dynamo) - The foundational package providing core interfaces and utilities (always required)
64
+ - `express` - Web framework for Node.js (simplified through Dynamo-NTS parameterization)
65
+ - `mongoose` - MongoDB object modeling (simplified through Dynamo-NTS data services)
66
+ - `axios` - HTTP client (simplified through Dynamo-NTS API service)
67
+ - `body-parser` - Request body parsing middleware
68
+ - `dotenv` - Environment variable management
69
+ - `rxjs` - Reactive programming library
70
+ - `@types/express` - TypeScript types for Express
71
+ - `@types/node` - TypeScript types for Node.js
72
+ - `ts-node` - TypeScript execution environment
73
+
74
+ Install core dependencies:
75
+
76
+ ```bash
77
+ pnpm add @futdevpro/fsm-dynamo express mongoose axios body-parser dotenv rxjs @types/express @types/node ts-node
78
+ ```
79
+
80
+ #### Module-Specific Dependencies (Optional)
81
+
82
+ These dependencies are only required when using specific modules:
83
+
84
+ - **Socket Module**: `socket.io` - Real-time communication (simplified through Dynamo-NTS socket services)
85
+ - **Email Service**: `nodemailer` - Email sending (simplified through Dynamo-NTS email services)
86
+ - **Usage Module**: `geoip-lite` and `@types/geoip-lite` - IP geolocation (simplified through Dynamo-NTS usage module)
87
+ - **Bot Module (Discord)**: `discord.js` - Discord bot development (simplified through Dynamo-NTS bot module)
88
+ - **AI Module (OpenAI)**: `openai` - OpenAI API integration (simplified through Dynamo-NTS AI module)
89
+
90
+ Install module-specific dependencies as needed:
91
+
92
+ ```bash
93
+ # For Socket module
94
+ pnpm add socket.io
95
+
96
+ # For Email service
97
+ pnpm add nodemailer
98
+
99
+ # For Usage module
100
+ pnpm add geoip-lite @types/geoip-lite
101
+
102
+ # For Bot module (Discord)
103
+ pnpm add discord.js
104
+
105
+ # For AI module (OpenAI)
106
+ pnpm add openai
107
+ ```
108
+
109
+ ## Quick Start
110
+
111
+ The following example demonstrates how to set up a basic Dynamo-NTS application with routing and socket support:
112
+
113
+ ```typescript
114
+ import {
115
+ DyNTS_AppExtended,
116
+ DyNTS_App_Params,
117
+ DyNTS_GlobalService_Settings,
118
+ DyNTS_Http_Settings,
119
+ DyNTS_RoutingModule
120
+ } from '@futdevpro/nts-dynamo';
121
+ import {
122
+ DyNTS_SocketServerService
123
+ } from '@futdevpro/nts-dynamo/socket';
124
+ import { DyFM_usageSession_dataParams } from '@futdevpro/fsm-dynamo/usage';
125
+ import { DyFM_customData_dataParams } from '@futdevpro/fsm-dynamo/custom-data';
126
+ import { DyNTS_getUsageRoutingModule } from '@futdevpro/nts-dynamo/usage';
127
+ import { DyNTS_getTestRoutingModule } from '@futdevpro/nts-dynamo/test';
128
+
129
+ import { AuthService } from './core-services/auth.service';
130
+ import { Email_ServiceCollection } from './core-services/email.service-collection';
131
+ import { User_Controller } from './routes/user/user.controller';
132
+ import { Chat_SocketServerService } from './socket-services/chat.socket-server-service';
133
+
134
+ export class App extends DyNTS_AppExtended {
135
+
136
+ getAppParams(): DyNTS_App_Params {
137
+ return new DyNTS_App_Params({
138
+ name: 'My Application',
139
+ version: '1.0.0',
140
+ dbName: 'myapp',
141
+ dbUri: process.env.MONGO_URL || 'mongodb://localhost:27017/myapp',
142
+ systemShortCodeName: 'MYAPP',
143
+ });
144
+ }
145
+
146
+ getGlobalServiceCollection(): DyNTS_GlobalService_Settings {
147
+ return {
148
+ authService: AuthService.getInstance(),
149
+ emailServiceCollection: Email_ServiceCollection.getInstance(),
150
+ dbModels: [
151
+ // Your data model parameters here
152
+ DyFM_usageSession_dataParams,
153
+ DyFM_customData_dataParams,
154
+ ],
155
+ };
156
+ }
157
+
158
+ getPortSettings(): DyNTS_Http_Settings {
159
+ return new DyNTS_Http_Settings({
160
+ httpPort: 3000,
161
+ });
162
+ }
163
+
164
+ getRoutingModules(): DyNTS_RoutingModule[] {
165
+ return [
166
+ new DyNTS_RoutingModule({
167
+ route: '/user',
168
+ controllers: [
169
+ User_Controller.getInstance(),
170
+ ],
171
+ }),
172
+ DyNTS_getTestRoutingModule(),
173
+ DyNTS_getUsageRoutingModule(),
174
+ ];
175
+ }
176
+
177
+ getSocketServices(): DyNTS_SocketServerService<any>[] {
178
+ return [
179
+ Chat_SocketServerService.getInstance(),
180
+ ];
181
+ }
182
+ }
183
+
184
+ // Start the application
185
+ const app = new App();
186
+ ```
187
+
188
+ ## Core Concepts
189
+
190
+ Dynamo-NTS uses [Dynamo FSM](https://www.npmjs.com/package/@futdevpro/fsm-dynamo) as its foundation, implementing all server-side components defined in the FSM architecture. All types, interfaces, and base models are provided by FSM, ensuring full type safety and consistency.
191
+
192
+ ### Extensibility and Customization
193
+
194
+ Dynamo-NTS is designed with extensibility in mind. Every component, service, and class can be overridden or extended to meet your specific requirements:
195
+
196
+ - **Service Override**: All services (authentication, email, data services, etc.) can be extended or completely replaced with custom implementations
197
+ - **Method Override**: Abstract methods in base classes allow you to customize behavior while maintaining the framework structure
198
+ - **Configuration Override**: Global settings, route security, and application parameters can be overridden at any level
199
+ - **Type Safety**: All overrides maintain full TypeScript type safety, with all types and interfaces available at compile time
200
+
201
+ This design philosophy ensures that Dynamo-NTS provides a solid foundation while remaining fully customizable for your specific use cases.
202
+
203
+ ### Complete Type Information
204
+
205
+ All types, interfaces, and definitions are included in the compiled output, ensuring excellent readability and maintainability. When you compile your project, you have access to:
206
+
207
+ - Complete type definitions for all services, models, and interfaces
208
+ - Full IntelliSense support in your IDE
209
+ - Compile-time type checking for all framework components
210
+ - Self-documenting code through TypeScript's type system
211
+
212
+ This approach eliminates the need to reference external documentation during development—everything you need is available in your IDE's autocomplete and type hints.
213
+
214
+ ### Application Classes
215
+
216
+ Dynamo-NTS provides two main application base classes that simplify Express server setup:
217
+
218
+ - **`DyNTS_App`**: Basic application class for standard HTTP server applications without real-time socket support
219
+ - **`DyNTS_AppExtended`**: Extended application class that includes built-in socket server capabilities for real-time communication (simplifies Socket.io setup)
220
+
221
+ Both classes abstract away Express server configuration, requiring you to implement several abstract methods with simple parameter objects:
222
+
223
+ - `getAppParams()`: Define application parameters (name, version, database name, etc.) - replaces Express app initialization
224
+ - `getGlobalServiceCollection()`: Configure global services (authentication, email, database models) - replaces manual service registration
225
+ - `getPortSettings()`: Configure HTTP/HTTPS ports - replaces Express server.listen() configuration
226
+ - `getRoutingModules()`: Define API routes and controllers - replaces Express router setup
227
+
228
+ ### Data Services
229
+
230
+ Data services provide a structured way to interact with MongoDB, simplifying Mongoose model and schema definitions:
231
+
232
+ - **`DyNTS_DBService<T>`**: Low-level MongoDB service for direct database operations (simplifies Mongoose model creation)
233
+ - **`DyNTS_DataService<T>`**: High-level data service with business logic, validation, and dependency management (simplifies MongoDB CRUD operations)
234
+ - **`DyNTS_ArchiveDataService<T>`**: Service for managing archived data in separate collections
235
+
236
+ Instead of manually creating Mongoose schemas and models, you define data models through `DyFM_DataModel_Params` (from FSM), and Dynamo-NTS handles schema generation, model creation, and connection management automatically. Data services handle CRUD operations, data validation, dependency tracking, and provide methods for searching, filtering, and managing data relationships.
237
+
238
+ ### Atomic MongoDB transactions
239
+
240
+ `DyNTS_MongoTransaction_ControlService` is the shared Bedrock entry point for business operations that must
241
+ commit several MongoDB writes as one unit. The callback receives the same Mongoose `ClientSession` that must
242
+ be attached to every participating query or write:
243
+
244
+ ```typescript
245
+ import { ClientSession } from 'mongoose';
246
+
247
+ import { DyNTS_MongoTransaction_ControlService } from '@futdevpro/nts-dynamo';
248
+
249
+ const transactionService: DyNTS_MongoTransaction_ControlService =
250
+ DyNTS_MongoTransaction_ControlService.getInstance();
251
+
252
+ const pipelineId: string = await transactionService.execute<string>({
253
+ transactionName: 'publish-pipeline-version',
254
+ issuer: 'pipeline-persistence-service',
255
+ maxCommitTimeMs: 3_000,
256
+ task: async (session: ClientSession): Promise<string> => {
257
+ // Every MongoDB operation in this callback must use `session`.
258
+ // Example: await model.updateOne(filter, update, { session: session });
259
+ // Example: await auditModel.create([ event ], { session: session });
260
+ return 'pipeline-id';
261
+ },
262
+ });
263
+ ```
264
+
265
+ The service uses snapshot reads, majority writes and primary routing, always closes the session, and emits
266
+ stable content-free error codes. MongoDB transactions require a replica set or sharded deployment; a standalone
267
+ MongoDB instance is intentionally not treated as transaction-capable. Mongoose may retry the callback after a
268
+ transient transaction error, so the callback must not perform non-transactional side effects such as sending
269
+ messages or mutating external systems.
270
+
271
+ ### Routing System
272
+
273
+ The routing system provides a structured approach to defining RESTful API endpoints, simplifying Express router configuration:
274
+
275
+ - **`DyNTS_RoutingModule`**: Groups related controllers under a common route path (replaces Express Router setup)
276
+ - **`DyNTS_Controller`**: Abstract base class for defining HTTP endpoints (simplifies Express route handlers)
277
+ - **`DyNTS_Endpoint_Params`**: Configuration for individual API endpoints (replaces Express route definitions)
278
+
279
+ Instead of manually setting up Express routers and route handlers, you define endpoints through parameter objects. Controllers define endpoints with support for:
280
+ - Multiple HTTP methods (GET, POST, PUT, PATCH, DELETE)
281
+ - Pre-processing middleware (authentication, validation)
282
+ - Task functions for handling requests
283
+ - Route security levels (open, secure, both)
284
+
285
+ ### Global Services
286
+
287
+ The `DyNTS_GlobalService` provides centralized access to:
288
+
289
+ - Authentication service
290
+ - Email service collection
291
+ - Database models registry
292
+ - Error handlers
293
+ - Socket server instances
294
+
295
+ ### Authentication
296
+
297
+ Dynamo-NTS provides an abstract `DyNTS_AuthService` class that you can extend to implement your authentication logic. The framework supports:
298
+
299
+ - Token-based authentication
300
+ - OAuth2 flows (via the OAuth2 module)
301
+ - Session management
302
+ - Route-level security configuration
303
+
304
+ For product-local accounts, the optional `@futdevpro/nts-dynamo/account-security` entry point adds production
305
+ security primitives without coupling a product to a shared account provider:
306
+
307
+ - versioned adaptive password hashing and rehash detection;
308
+ - hash-only email-verification and password-reset challenges with atomic one-time consumption;
309
+ - opaque, hash-only access credentials backed by revocable server-side sessions;
310
+ - one-time refresh rotation, replay detection, session listing and subject-wide revocation.
311
+
312
+ Persistence remains application-owned through explicit atomic adapters. Transports must never put the raw
313
+ credentials in URLs, logs, analytics or durable client storage. A consuming application must also apply its
314
+ rate-limit, authorization, cookie/storage and audit-redaction policy at the API boundary.
315
+
316
+ ### Distributed rate limiting
317
+
318
+ The `@futdevpro/nts-dynamo/rate-limit` entry point provides an atomic rate-limit boundary for HTTP services:
319
+
320
+ - an exact sliding-window in-memory store for deterministic tests and explicitly single-instance development;
321
+ - an application-owned shared-store contract for production deployments;
322
+ - a production configuration gate that requires both shared persistence and explicit opaque subject/endpoint
323
+ extractors;
324
+ - validated positive limits, windows and weighted request costs with stable, content-free failures;
325
+ - trusted `req.ip` as the safe local default instead of reading caller-controlled forwarding headers directly;
326
+ - explicit opportunistic local cleanup with no timer, polling loop or hidden background task.
327
+
328
+ Production consumers must implement the shared store with one atomic permit decision across every application
329
+ instance. They must derive non-sensitive, purpose-scoped bucket identifiers and must not persist or log raw IP
330
+ addresses, credentials, email addresses or other request content as rate-limit keys.
331
+
332
+ ### Privacy lifecycle
333
+
334
+ The optional `@futdevpro/nts-dynamo/privacy-lifecycle` entry point provides the shared machinery for standalone
335
+ GDPR-capable products:
336
+
337
+ - identity-gated, deadline-bearing data-subject requests;
338
+ - explicit `received → identity-verified → scoped → planned → executing → verifying` processing;
339
+ - deterministic product-domain contributors with resumable partial outcomes and documented retention bases;
340
+ - append-only, checksummed legal acceptances;
341
+ - versioned, purpose-specific consent grants and withdrawals.
342
+
343
+ The Bedrock module coordinates state and evidence only. Each consuming product must register every data domain,
344
+ implement hard-delete/anonymization/export behavior, and provide transaction-safe persistence. A request is
345
+ never reported complete while a registered contributor has a failed outcome.
346
+
347
+ ## Modules Overview
348
+
349
+ Dynamo-NTS is organized into focused modules, each providing specific functionality:
350
+
351
+ ### Main Module
352
+
353
+ The core foundation providing essential components:
354
+
355
+ - **Collections**: Archive utilities, global settings, environment configuration
356
+ - **Enums**: Data model types, service functions, route security levels
357
+ - **Models**: Application configuration interfaces, control models, database types
358
+ - **Services**: Core services for API communication, authentication, data management, routing
359
+
360
+ ### AI Module
361
+
362
+ Provides abstractions and implementations for AI operations:
363
+
364
+ - **Abstract Service Bases**: Base classes for AI providers, LLM services, LLM chat services, and embedding services
365
+ - **OpenAI Implementation**: Complete OpenAI integration with LLM, chat, and embedding support
366
+ - **Document AI**: Document chunking and preprocessing for AI models
367
+ - **Vector Search**: MongoDB Atlas vector database operations with automatic data vectorization
368
+
369
+ #### OpenAI-Compatible Providers
370
+
371
+ The OAI service-ek (`DyNTS_OAI_LLM_ServiceBase`, `DyNTS_OAI_LLMChat_ServiceBase`, `DyNTS_OAI_Embedding_ControlService`) bármely OpenAI-API-kompatibilis endpoint-tal működnek — lokál LLM (LM Studio, Ollama), self-hosted (vLLM, LocalAI) is — a `DyFM_OAI_ClientOptions.baseURL` mező segítségével. Részletek + provider-konfig sample-ök: [`__documentations/2026-05-17-oai-compatible-providers.md`](__documentations/2026-05-17-oai-compatible-providers.md).
372
+
373
+ ### Assistant Module
374
+
375
+ Platform and AI provider agnostic solutions for creating intelligent assistants:
376
+
377
+ - Integrates communication providers (bot) with AI providers (LLM Chat)
378
+ - Message conversion utilities
379
+ - Conversation management
380
+ - Configurable settings for system prompts and message filtering
381
+
382
+ ### Bot Module
383
+
384
+ Platform-agnostic bot functionality:
385
+
386
+ - Message, channel, and user wrappers for any messaging platform
387
+ - Command system for bot commands
388
+ - Routine system for scheduled and event-driven tasks
389
+ - IO management for bot interactions
390
+ - Provider support for Discord, Slack, and Teams
391
+
392
+ ### Socket Module
393
+
394
+ Real-time communication capabilities that simplify Socket.io setup:
395
+
396
+ - Socket client and server implementations with secure and open connection options (simplifies Socket.io server initialization)
397
+ - Event handling system for managing real-time communications (replaces manual Socket.io event handler setup)
398
+ - Presence tracking for monitoring connected clients
399
+ - Error handling and logging for reliable operation
400
+ - Extended application class with built-in socket server capabilities (automatically configures Socket.io with Express server)
401
+
402
+ ### Messaging Module
403
+
404
+ Backend implementation for unified messaging system:
405
+
406
+ - Data services for messages and conversations
407
+ - Control services for business logic orchestration
408
+ - Real-time socket events
409
+ - RESTful HTTP endpoints
410
+ - Integration with bot and assistant modules
411
+
412
+ ### OAuth2 Module
413
+
414
+ Complete OAuth2.0 protocol implementation:
415
+
416
+ - OAuth2 authorization and token management
417
+ - Client management and user authentication
418
+ - Token exchange and refresh operations
419
+ - Authorization code and access token generation
420
+
421
+ ### Server Module
422
+
423
+ Solutions for basic server endpoints:
424
+
425
+ - Error handling for saving and retrieving server errors
426
+ - Server status monitoring with version and uptime information
427
+ - Server status snapshots for saving and retrieving status at specific times
428
+ - Error statistics for monitoring and analysis
429
+
430
+ #### Content-free database readiness probe
431
+
432
+ Applications can perform one foreground readiness check against their own Mongoose connection without
433
+ starting a timer, listener, retry loop, subscription, process hook, or background task:
434
+
435
+ ```typescript
436
+ import {
437
+ DyNTS_DbReadinessProbe_ControlService,
438
+ DyNTS_DbReadinessProbeResult_Interface,
439
+ } from '@futdevpro/nts-dynamo/server';
440
+
441
+ const result: DyNTS_DbReadinessProbeResult_Interface =
442
+ await DyNTS_DbReadinessProbe_ControlService.probe({
443
+ connection: mongoose.connection,
444
+ });
445
+ ```
446
+
447
+ The `dynts-db-readiness/1` result contains exactly six allowlisted fields: contract version, readiness,
448
+ normalized connection state, ping success, bounded stage, and stable result code. It never contains a host,
449
+ database name, URI, model metadata, credentials, driver error text, or arbitrary error properties. Failures
450
+ resolve to a content-free, fail-closed result and the probe writes no log output.
451
+
452
+ Timeout policy and cancellation are caller-owned. The probe observes the supplied `AbortSignal` before and
453
+ after its single ping, but it does not create a timeout or interrupt an already-running driver operation.
454
+ Configure the driver's operation timeout and abort the supplied signal at the application boundary.
455
+
456
+ ### Defaults Module
457
+
458
+ Default implementations for common services:
459
+
460
+ - Default user data model and service for authentication and user management
461
+ - Default authentication service with basic token-based authentication
462
+ - Default socket events service with graceful degradation
463
+ - All services can be extended or replaced with custom implementations
464
+
465
+ ### Custom Data Module
466
+
467
+ Tools for managing custom data:
468
+
469
+ - Data service for handling custom data operations with optional initialization
470
+ - Controller with RESTful endpoints for data operations
471
+ - GET endpoint for retrieving custom data by ID
472
+ - POST endpoint for modifying custom data
473
+ - Configurable routing module with optional security overrides
474
+
475
+ ### Test Module
476
+
477
+ Testing and monitoring tools:
478
+
479
+ - Test endpoints for different HTTP methods (GET, POST, DELETE)
480
+ - Server status endpoint with version and uptime information
481
+ - Configurable routing module with security override options
482
+ - Automatic controller registration for easy setup
483
+
484
+ ### Usage Module
485
+
486
+ Session and usage tracking tools:
487
+
488
+ - Session management tools for creating, updating, and closing sessions
489
+ - Usage data collection and analysis tools
490
+ - Location tracking from HTTP requests
491
+ - Usage statistics retrieval with time range filtering
492
+ - Daily usage statistics calculation
493
+
494
+ ## Usage Examples
495
+
496
+ ### Basic Application Setup
497
+
498
+ This example shows a complete application setup using `DyNTS_AppExtended`:
499
+
500
+ ```typescript
501
+ import {
502
+ DyNTS_AppExtended,
503
+ DyNTS_App_Params,
504
+ DyNTS_GlobalService_Settings,
505
+ DyNTS_Http_Settings,
506
+ DyNTS_RoutingModule
507
+ } from '@futdevpro/nts-dynamo';
508
+ import { DyNTS_SocketServerService } from '@futdevpro/nts-dynamo/socket';
509
+
510
+ export class App extends DyNTS_AppExtended {
511
+
512
+ getAppParams(): DyNTS_App_Params {
513
+ return new DyNTS_App_Params({
514
+ name: 'My Server',
515
+ version: '1.0.0',
516
+ dbName: 'myapp',
517
+ });
518
+ }
519
+
520
+ getGlobalServiceCollection(): DyNTS_GlobalService_Settings {
521
+ return {
522
+ authService: AuthService.getInstance(),
523
+ dbModels: [
524
+ // Your data models
525
+ ],
526
+ };
527
+ }
528
+
529
+ getPortSettings(): DyNTS_Http_Settings {
530
+ return new DyNTS_Http_Settings({
531
+ httpPort: 3000,
532
+ });
533
+ }
534
+
535
+ getRoutingModules(): DyNTS_RoutingModule[] {
536
+ return [
537
+ new DyNTS_RoutingModule({
538
+ route: '/api',
539
+ controllers: [
540
+ MyController.getInstance(),
541
+ ],
542
+ }),
543
+ ];
544
+ }
545
+
546
+ getSocketServices(): DyNTS_SocketServerService<any>[] {
547
+ return [
548
+ MySocketService.getInstance(),
549
+ ];
550
+ }
551
+ }
552
+ ```
553
+
554
+ ### Routing Module Configuration
555
+
556
+ Multiple routing modules can be configured to organize your API:
557
+
558
+ ```typescript
559
+ getRoutingModules(): DyNTS_RoutingModule[] {
560
+ return [
561
+ new DyNTS_RoutingModule({
562
+ route: '/user',
563
+ controllers: [
564
+ User_Controller.getInstance(),
565
+ UserData_Controller.getInstance(),
566
+ UserSettings_Controller.getInstance(),
567
+ ],
568
+ }),
569
+ new DyNTS_RoutingModule({
570
+ route: '/project',
571
+ controllers: [
572
+ Project_Controller.getInstance(),
573
+ ProjectExtension_Controller.getInstance(),
574
+ ],
575
+ }),
576
+ new DyNTS_RoutingModule({
577
+ route: '/server',
578
+ controllers: [
579
+ ServerStatus_Controller.getInstance(),
580
+ ],
581
+ }),
582
+ DyNTS_getTestRoutingModule(),
583
+ DyNTS_getUsageRoutingModule(),
584
+ ];
585
+ }
586
+ ```
587
+
588
+ ### Controller Implementation
589
+
590
+ Controllers define API endpoints with authentication and business logic:
591
+
592
+ ```typescript
593
+ import { Request, Response } from 'express';
594
+ import { DyNTS_Controller, DyNTS_Endpoint_Params } from '@futdevpro/nts-dynamo';
595
+ import { DyFM_HttpCallType } from '@futdevpro/fsm-dynamo';
596
+
597
+ export class User_Controller extends DyNTS_Controller {
598
+
599
+ static getInstance(): User_Controller {
600
+ return User_Controller.getSingletonInstance();
601
+ }
602
+
603
+ private authService: AuthService = AuthService.getInstance();
604
+
605
+ setupEndpoints(): void {
606
+ this.endpoints = [
607
+ new DyNTS_Endpoint_Params({
608
+ name: 'getUser',
609
+ type: DyFM_HttpCallType.get,
610
+ endpoint: '/get/:userId',
611
+ preProcesses: [this.authService.authenticate_tokenSelf],
612
+ tasks: [
613
+ async (req: Request, res: Response, issuer: string): Promise<void> => {
614
+ const userService = new User_DataService({ issuer });
615
+ await userService.getDataById(req.params.userId);
616
+ res.send(userService.data);
617
+ },
618
+ ],
619
+ }),
620
+ new DyNTS_Endpoint_Params({
621
+ name: 'updateUser',
622
+ type: DyFM_HttpCallType.post,
623
+ endpoint: '/update',
624
+ preProcesses: [this.authService.authenticate_tokenSelf],
625
+ tasks: [
626
+ async (req: Request, res: Response, issuer: string): Promise<void> => {
627
+ const userService = new User_DataService({ issuer });
628
+ await userService.saveData(req.body);
629
+ res.send(userService.data);
630
+ },
631
+ ],
632
+ }),
633
+ ];
634
+ }
635
+ }
636
+ ```
637
+
638
+ ### Data Service Implementation
639
+
640
+ Data services provide a structured way to interact with MongoDB:
641
+
642
+ ```typescript
643
+ import { DyNTS_DataService } from '@futdevpro/nts-dynamo';
644
+ import { DyFM_DataModel_Params } from '@futdevpro/fsm-dynamo'; // FSM provides the data model parameter definition
645
+
646
+ // Define your data model parameters
647
+ const userDataParams: DyFM_DataModel_Params<UserData> = new DyFM_DataModel_Params({
648
+ dataName: 'userData',
649
+ typeSample: {
650
+ userId: '',
651
+ preferences: {},
652
+ },
653
+ // ... additional configuration
654
+ });
655
+
656
+ export class User_DataService extends DyNTS_DataService<UserData> {
657
+ constructor(params: { issuer: string }) {
658
+ super(userDataParams);
659
+ this.issuer = params.issuer;
660
+ }
661
+
662
+ // Custom business logic methods
663
+ async getUserPreferences(userId: string): Promise<UserPreferences> {
664
+ await this.getDataByDependencyId({ userId });
665
+ return this.data?.preferences || {};
666
+ }
667
+ }
668
+ ```
669
+
670
+ ### Socket Server Service
671
+
672
+ Socket services enable real-time communication:
673
+
674
+ ```typescript
675
+ import { DyNTS_SocketServerService, DyNTS_SocketPresence } from '@futdevpro/nts-dynamo/socket';
676
+
677
+ export class Chat_SocketServerService extends DyNTS_SocketServerService<DyNTS_SocketPresence, any> {
678
+
679
+ static getInstance(): Chat_SocketServerService {
680
+ return Chat_SocketServerService.getSingletonInstance();
681
+ }
682
+
683
+ protected setupSocketEvents(): void {
684
+ this.socketServer.on('connection', (socket) => {
685
+ socket.on('joinRoom', (roomId: string) => {
686
+ socket.join(roomId);
687
+ });
688
+
689
+ socket.on('sendMessage', async (data: { roomId: string; message: string }) => {
690
+ this.socketServer.to(data.roomId).emit('newMessage', data);
691
+ });
692
+ });
693
+ }
694
+ }
695
+ ```
696
+
697
+ ### Vector Search with AI
698
+
699
+ Dynamo-NTS provides built-in support for MongoDB Atlas vector search with automatic vectorization:
700
+
701
+ ```typescript
702
+ import { DyNTS_OAI_VectorDataService } from '@futdevpro/nts-dynamo/ai/open-ai';
703
+
704
+ export class Knowledge_DataService extends DyNTS_OAI_VectorDataService<Knowledge> {
705
+
706
+ constructor() {
707
+ super(knowledgeDataParams);
708
+ }
709
+
710
+ async searchSimilarContent(query: string, limit: number = 10): Promise<Knowledge[]> {
711
+ return await this.vectorSearch({
712
+ input: query,
713
+ searchInKey: 'content', // Property that has vectorization enabled
714
+ limit: limit,
715
+ numberOfCandidates: 100,
716
+ });
717
+ }
718
+ }
719
+ ```
720
+
721
+ The vector search automatically:
722
+ - Creates embeddings for search queries using the configured AI provider
723
+ - Performs semantic search in MongoDB Atlas vector database
724
+ - Returns results sorted by relevance
725
+ - Supports filtering with additional MongoDB queries
726
+
727
+ ## Ecosystem Integration
728
+
729
+ Dynamo-NTS is part of the unified **Dynamo ecosystem**, which consists of several interconnected packages:
730
+
731
+ ### Dynamo FSM (Full Stack Module)
732
+
733
+ The foundational package [`@futdevpro/fsm-dynamo`](https://www.npmjs.com/package/@futdevpro/fsm-dynamo) that provides:
734
+ - Core interfaces and types shared across the ecosystem
735
+ - Base model definitions (used by all Dynamo-NTS data services)
736
+ - Utility functions
737
+ - Type definitions for system-wide use
738
+ - Data model parameter definitions (`DyFM_DataModel_Params`)
739
+
740
+ Dynamo-NTS is built on top of Dynamo FSM and implements the server-side components of the FSM architecture. All data models, interfaces, and type definitions used in Dynamo-NTS are provided by FSM, ensuring consistency and type safety across the entire ecosystem.
741
+
742
+ ### Dynamo NGX (AngularX)
743
+
744
+ The frontend counterpart [`@futdevpro/dynamo-ngx`](https://www.npmjs.com/package/@futdevpro/dynamo-ngx) provides:
745
+ - Angular components and services
746
+ - Frontend models that integrate with Dynamo-NTS backend (using shared FSM types)
747
+ - Real-time communication clients (connects to Dynamo-NTS socket services)
748
+ - Form management and data table components
749
+
750
+ ### Unified Patterns
751
+
752
+ The Dynamo ecosystem enforces consistent patterns across all packages:
753
+
754
+ - **Naming Conventions**: Consistent prefixes (`DyNTS_` for backend, `DyNX_` for frontend, `DyFM_` for shared)
755
+ - **Type Safety**: Full TypeScript support with shared type definitions
756
+ - **Architecture Patterns**: Consistent service patterns, data models, and API structures
757
+ - **Error Handling**: Unified error handling across the stack
758
+ - **Logging**: Consistent logging patterns and utilities
759
+
760
+ This unified approach ensures that:
761
+ - Developers learn one set of patterns that apply everywhere
762
+ - Frontend and backend code integrate seamlessly
763
+ - Type safety is maintained across the entire stack
764
+ - Maintenance and updates are simplified
765
+
766
+ ## API Reference
767
+
768
+ For detailed API documentation, see:
769
+
770
+ - [Dynamo-NTS Documentation](fdp-documentations/specifications/dynamo-packages/dynamo-nts/dynamo-nts.md)
771
+ - [Dynamo FSM Documentation](fdp-documentations/specifications/dynamo-packages/dynamo-fsm/dynamo-fsm.md)
772
+ - [Dynamo Ecosystem Overview](fdp-documentations/specifications/dynamo-packages/dynamo_packages.md)
773
+
774
+ ## License
775
+
776
+ ISC
777
+
778
+ ## Support
779
+
780
+ For issues, questions, or contributions, please refer to the project repository.