@futdevpro/nts-dynamo 1.15.151 → 1.15.154

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