@futdevpro/fsm-dynamo 1.16.38 → 1.16.40

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 (707) hide show
  1. package/.c8rc.json +26 -26
  2. package/.cursor/rules/__assistant_guide.mdc +30 -30
  3. package/.cursor/rules/__main.mdc +64 -64
  4. package/.cursor/rules/_ag_backend-structure.mdc +85 -85
  5. package/.cursor/rules/_ag_backend.mdc +16 -16
  6. package/.cursor/rules/_ag_debug.mdc +7 -7
  7. package/.cursor/rules/_ag_documentation_writing_rules.mdc +372 -372
  8. package/.cursor/rules/_ag_file-refactoring.mdc +113 -113
  9. package/.cursor/rules/_ag_fixes_rules.mdc +5 -5
  10. package/.cursor/rules/_ag_frontend-structure.mdc +86 -86
  11. package/.cursor/rules/_ag_frontend.mdc +39 -39
  12. package/.cursor/rules/_ag_import-rules.mdc +44 -44
  13. package/.cursor/rules/_ag_naming.mdc +115 -115
  14. package/.cursor/rules/_ag_running_commands.mdc +4 -4
  15. package/.cursor/rules/_ag_server-controller.mdc +5 -5
  16. package/.cursor/rules/_ag_should-be.mdc +6 -6
  17. package/.cursor/rules/_ag_swearing.mdc +47 -47
  18. package/.cursor/rules/ai_development_guide.md +60 -60
  19. package/.cursor/rules/ai_directives.md +114 -114
  20. package/.cursor/rules/cursor-rules.md +160 -160
  21. package/.cursor/rules/default-command.mdc +464 -464
  22. package/.cursor/rules/error_code_pattern.md +39 -39
  23. package/.cursor/rules/saved rule mcp server use.md +15 -15
  24. package/.dynamo/pipeline.cicd.config.json +157 -157
  25. package/.dynamo/version-bump.config.json +5 -5
  26. package/.github/workflows/main.yml +439 -439
  27. package/.husky/pre-commit +2 -2
  28. package/.vscode/settings.json +11 -11
  29. package/LICENSE +21 -21
  30. package/README.md +701 -693
  31. package/__documentations/2026-05-17-oai-compatible-providers-howto.md +282 -282
  32. package/__documentations/2026-06-01-fr047-fc-foundation.md +48 -48
  33. package/__documentations/2026-06-01-fr047-fr048-code-review.md +153 -153
  34. package/__documentations/2026-06-01-fr047-p1-function-calling-vocabulary.md +75 -75
  35. package/__documentations/2026-06-05-secret-mask-url-cred-any-scheme.md +37 -37
  36. package/__documentations/2026-06-06-ngx-models-merge-completion.md +100 -100
  37. package/__documentations/2026-06-22-dyfm-error-extends-error.md +109 -109
  38. package/__documentations/plans/00-MASTER-ngx-models-fsm-merge.md +75 -75
  39. package/__documentations/plans/01-naming-convention-DyNM-to-DyFM.md +103 -103
  40. package/__documentations/plans/02-consumer-rollout.md +84 -84
  41. package/_specifications/BACKLOG.md +43 -43
  42. package/build/_modules/crypto/_models/artifact-signature.interface.d.ts +37 -0
  43. package/build/_modules/crypto/_models/artifact-signature.interface.d.ts.map +1 -0
  44. package/build/_modules/crypto/_models/artifact-signature.interface.js +3 -0
  45. package/build/_modules/crypto/_models/artifact-signature.interface.js.map +1 -0
  46. package/build/_modules/crypto/_services/artifact-signature.control-service.d.ts +24 -0
  47. package/build/_modules/crypto/_services/artifact-signature.control-service.d.ts.map +1 -0
  48. package/build/_modules/crypto/_services/artifact-signature.control-service.js +281 -0
  49. package/build/_modules/crypto/_services/artifact-signature.control-service.js.map +1 -0
  50. package/build/_modules/crypto/index.d.ts +2 -0
  51. package/build/_modules/crypto/index.d.ts.map +1 -1
  52. package/build/_modules/crypto/index.js +2 -0
  53. package/build/_modules/crypto/index.js.map +1 -1
  54. package/build/_modules/socket/_models/sck-socket-event.control-model.d.ts +4 -6
  55. package/build/_modules/socket/_models/sck-socket-event.control-model.d.ts.map +1 -1
  56. package/build/_modules/socket/_models/sck-socket-event.control-model.js +9 -7
  57. package/build/_modules/socket/_models/sck-socket-event.control-model.js.map +1 -1
  58. package/eslint.config.js +4 -4
  59. package/nodemon.json +22 -22
  60. package/package.json +306 -306
  61. package/pnpm-workspace.yaml +2 -2
  62. package/scripts/_capture-out/ai-error-capture.json +398 -398
  63. package/scripts/ai-error-capture.js +171 -171
  64. package/scripts/ai-model-registry-check.js +132 -132
  65. package/scripts/crypto/CRYPTO-STABILITY-SOLUTION.md +196 -196
  66. package/scripts/crypto/README.md +113 -113
  67. package/scripts/crypto/demo-crypto-stability.js +120 -120
  68. package/scripts/crypto/stress-test-crypto.js +379 -379
  69. package/scripts/run-coverage-tests.js +24 -24
  70. package/scripts/verify-build-completeness.js +62 -62
  71. package/spec/support/helpers/ts-node-helper.js +9 -9
  72. package/spec/support/jasmine.coverage.json +23 -23
  73. package/spec/support/jasmine.json +24 -24
  74. package/src/_collections/constants/data-sizes.const.ts +40 -40
  75. package/src/_collections/constants/error-defaults.const.ts +20 -20
  76. package/src/_collections/constants/global-settings.const.spec.ts +32 -32
  77. package/src/_collections/constants/global-settings.const.ts +29 -29
  78. package/src/_collections/constants/numbers.const.ts +40 -40
  79. package/src/_collections/constants/times.const.ts +45 -45
  80. package/src/_collections/utils/array.util.spec.ts +306 -306
  81. package/src/_collections/utils/array.util.ts +813 -813
  82. package/src/_collections/utils/async.util.spec.ts +398 -398
  83. package/src/_collections/utils/async.util.ts +208 -208
  84. package/src/_collections/utils/data.util.spec.ts +345 -345
  85. package/src/_collections/utils/data.util.ts +226 -226
  86. package/src/_collections/utils/extract-error-message.util.spec.ts +204 -204
  87. package/src/_collections/utils/extract-error-message.util.ts +223 -223
  88. package/src/_collections/utils/json-error-helper.util.spec.ts +521 -521
  89. package/src/_collections/utils/json-error-helper.util.ts +301 -301
  90. package/src/_collections/utils/log.util.spec.ts +975 -975
  91. package/src/_collections/utils/log.util.ts +667 -667
  92. package/src/_collections/utils/math/box-bounds.spec.ts +73 -73
  93. package/src/_collections/utils/math/box-bounds.util.ts +183 -183
  94. package/src/_collections/utils/math/math.util.spec.ts +94 -94
  95. package/src/_collections/utils/math/math.util.ts +141 -141
  96. package/src/_collections/utils/math/random.util.spec.ts +82 -82
  97. package/src/_collections/utils/math/random.util.ts +139 -139
  98. package/src/_collections/utils/math/trigonometry.util.spec.ts +57 -57
  99. package/src/_collections/utils/math/trigonometry.util.ts +102 -102
  100. package/src/_collections/utils/math/vector2.util.spec.ts +94 -94
  101. package/src/_collections/utils/math/vector2.util.ts +653 -653
  102. package/src/_collections/utils/object.util.spec.ts +646 -646
  103. package/src/_collections/utils/object.util.ts +739 -739
  104. package/src/_collections/utils/regex/password-regex.util.spec.ts +51 -51
  105. package/src/_collections/utils/regex/password-regex.util.ts +65 -65
  106. package/src/_collections/utils/regex/regex.util.spec.ts +42 -42
  107. package/src/_collections/utils/regex/regex.util.ts +6 -6
  108. package/src/_collections/utils/regex/username-regex.util.spec.ts +61 -61
  109. package/src/_collections/utils/regex/username-regex.util.ts +35 -35
  110. package/src/_collections/utils/require-env.util.spec.ts +231 -231
  111. package/src/_collections/utils/require-env.util.ts +138 -138
  112. package/src/_collections/utils/round-list.util.spec.ts +79 -79
  113. package/src/_collections/utils/round-list.util.ts +162 -162
  114. package/src/_collections/utils/secret-mask.util.spec.ts +66 -66
  115. package/src/_collections/utils/secret-mask.util.ts +262 -262
  116. package/src/_collections/utils/stack.util.spec.ts +372 -372
  117. package/src/_collections/utils/stack.util.ts +164 -164
  118. package/src/_collections/utils/string-case.util.spec.ts +441 -441
  119. package/src/_collections/utils/string-case.util.ts +362 -362
  120. package/src/_collections/utils/string.util.spec.ts +975 -975
  121. package/src/_collections/utils/string.util.ts +449 -449
  122. package/src/_collections/utils/time.util.spec.ts +50 -50
  123. package/src/_collections/utils/time.util.ts +481 -481
  124. package/src/_collections/utils/type-cloning-facility.util.spec.ts +51 -51
  125. package/src/_collections/utils/type-cloning-facility.util.ts +168 -168
  126. package/src/_collections/utils/utilities.util.spec.ts +201 -201
  127. package/src/_collections/utils/utilities.util.ts +68 -68
  128. package/src/_collections/utils/uuid.util.spec.ts +30 -30
  129. package/src/_collections/utils/uuid.util.ts +50 -50
  130. package/src/_enums/basic-property-type.enum.ts +20 -20
  131. package/src/_enums/data-model-type.enum.ts +29 -29
  132. package/src/_enums/environment-flag.enum.ts +28 -28
  133. package/src/_enums/error-level.enum.ts +43 -43
  134. package/src/_enums/error-status.enum.ts +30 -30
  135. package/src/_enums/http/http-call-type.enum.ts +43 -43
  136. package/src/_enums/http/http-event-type.enum.ts +40 -40
  137. package/src/_enums/http/http-response-type.enum.ts +18 -18
  138. package/src/_enums/log-style.enum.ts +44 -44
  139. package/src/_enums/server-connection-status.enum.ts +6 -6
  140. package/src/_enums/time/day-of-week.enum.ts +55 -55
  141. package/src/_enums/time/month.enum.ts +25 -25
  142. package/src/_enums/time/relative-date.enum.ts +24 -24
  143. package/src/_models/control-models/data-model-params.control-model.spec.ts +156 -156
  144. package/src/_models/control-models/data-model-params.control-model.ts +362 -362
  145. package/src/_models/control-models/data-property-params.control-model.spec.ts +93 -93
  146. package/src/_models/control-models/data-property-params.control-model.ts +210 -210
  147. package/src/_models/control-models/error.control-model.spec.ts +975 -975
  148. package/src/_models/control-models/error.control-model.ts +1280 -1280
  149. package/src/_models/control-models/http/http-error-response.control-model.spec.ts +116 -116
  150. package/src/_models/control-models/http/http-error-response.control-model.ts +52 -52
  151. package/src/_models/control-models/http/http-headers.control-model.spec.ts +25 -25
  152. package/src/_models/control-models/http/http-headers.control-model.ts +124 -124
  153. package/src/_models/control-models/http/http-response.model-base.spec.ts +46 -46
  154. package/src/_models/control-models/http/http-response.model-base.ts +57 -57
  155. package/src/_models/control-models/poll.control-model.spec.ts +63 -63
  156. package/src/_models/control-models/poll.control-model.ts +151 -151
  157. package/src/_models/control-models/range-value.control-model.spec.ts +187 -187
  158. package/src/_models/control-models/range-value.control-model.ts +289 -289
  159. package/src/_models/control-models/server-status.control-model.spec.ts +66 -66
  160. package/src/_models/control-models/server-status.control-model.ts +94 -94
  161. package/src/_models/control-models/service-endpoint-settings-base.control-model.spec.ts +145 -145
  162. package/src/_models/control-models/service-endpoint-settings-base.control-model.ts +186 -186
  163. package/src/_models/data-models/errors.data-model.spec.ts +71 -71
  164. package/src/_models/data-models/errors.data-model.ts +200 -200
  165. package/src/_models/data-models/metadata.data-model.spec.ts +184 -184
  166. package/src/_models/data-models/metadata.data-model.ts +153 -153
  167. package/src/_models/interfaces/box-bounds.interface.ts +7 -7
  168. package/src/_models/interfaces/environment/global-log-settings.interface.ts +86 -86
  169. package/src/_models/interfaces/environment/global-settings.interface.ts +69 -69
  170. package/src/_models/interfaces/error-defaults.interface.ts +18 -18
  171. package/src/_models/interfaces/paged.interface.ts +12 -12
  172. package/src/_models/interfaces/random-weight.interface.ts +7 -7
  173. package/src/_models/interfaces/route-settings.interface.ts +15 -15
  174. package/src/_models/interfaces/search-query.interface.ts +23 -23
  175. package/src/_models/interfaces/search-result.interface.ts +5 -5
  176. package/src/_models/interfaces/server-error-statistics.interface.ts +24 -24
  177. package/src/_models/interfaces/vector2.interface.ts +20 -20
  178. package/src/_models/types/db-filter.type.ts +110 -110
  179. package/src/_models/types/db-sort.type.ts +4 -4
  180. package/src/_models/types/ds-filter.type.ts +68 -68
  181. package/src/_models/types/ds-sort.type.ts +21 -21
  182. package/src/_modules/ai/_collections/ai-model-ref.util.ts +88 -88
  183. package/src/_modules/ai/_collections/ai-model-registry.util.spec.ts +37 -37
  184. package/src/_modules/ai/_collections/ai-model-registry.util.ts +30 -30
  185. package/src/_modules/ai/_enums/ai-message-role.enum.ts +7 -7
  186. package/src/_modules/ai/_enums/ai-model-type.enum.ts +7 -7
  187. package/src/_modules/ai/_enums/ai-provider.enum.ts +7 -7
  188. package/src/_modules/ai/_models/ai-call-settings.interface.ts +84 -84
  189. package/src/_modules/ai/_models/ai-config.interface.ts +14 -14
  190. package/src/_modules/ai/_models/ai-embedding-request.interface.ts +20 -20
  191. package/src/_modules/ai/_models/ai-embedding-response.interface.ts +26 -26
  192. package/src/_modules/ai/_models/ai-llm-request.interface.ts +24 -24
  193. package/src/_modules/ai/_models/ai-llm-response.interface.ts +30 -30
  194. package/src/_modules/ai/_models/ai-message.interface.ts +12 -12
  195. package/src/_modules/ai/_models/ai-model-capabilities.interface.ts +35 -35
  196. package/src/_modules/ai/_models/ai-model-info.interface.ts +63 -63
  197. package/src/_modules/ai/_models/ai-model-settings-schema.interface.ts +52 -52
  198. package/src/_modules/ai/_models/ai-provider-capabilities.interface.ts +28 -28
  199. package/src/_modules/ai/_models/ai-settings.interface.ts +17 -17
  200. package/src/_modules/ai/_models/ai-tool-call.interface.ts +18 -18
  201. package/src/_modules/ai/_models/ai-tool-handler.type.ts +11 -11
  202. package/src/_modules/ai/_models/ai-tool-result.interface.ts +16 -16
  203. package/src/_modules/ai/_models/ai-tool.interface.ts +16 -16
  204. package/src/_modules/ai/_models/ai-user-provider-config.control-model.ts +29 -29
  205. package/src/_modules/ai/_modules/anthropic/_collections/aai-models.const.ts +135 -135
  206. package/src/_modules/ai/_modules/anthropic/_enums/aai-model.enum.ts +19 -19
  207. package/src/_modules/ai/_modules/anthropic/_models/aai-call-settings.control-model.spec.ts +28 -28
  208. package/src/_modules/ai/_modules/anthropic/_models/aai-call-settings.control-model.ts +23 -23
  209. package/src/_modules/ai/_modules/anthropic/_models/aai-client-options.interface.ts +10 -10
  210. package/src/_modules/ai/_modules/anthropic/_models/aai-settings.control-model.spec.ts +22 -22
  211. package/src/_modules/ai/_modules/anthropic/_models/aai-settings.control-model.ts +27 -27
  212. package/src/_modules/ai/_modules/anthropic/_models/aai-user-provider-config.control-model.ts +20 -20
  213. package/src/_modules/ai/_modules/anthropic/index.ts +14 -14
  214. package/src/_modules/ai/_modules/document-ai/_models/dai-embedding-info.interface.ts +12 -12
  215. package/src/_modules/ai/_modules/document-ai/_models/dai-vector-search-params.interface.ts +22 -22
  216. package/src/_modules/ai/_modules/document-ai/index.ts +4 -4
  217. package/src/_modules/ai/_modules/fdp-ai/_collections/fdpai-models.const.ts +40 -40
  218. package/src/_modules/ai/_modules/fdp-ai/_enums/fdpai-model.enum.ts +6 -6
  219. package/src/_modules/ai/_modules/fdp-ai/_models/fdpai-call-settings.control-model.ts +19 -19
  220. package/src/_modules/ai/_modules/fdp-ai/_models/fdpai-client-options.interface.ts +11 -11
  221. package/src/_modules/ai/_modules/fdp-ai/_models/fdpai-settings.control-model.ts +24 -24
  222. package/src/_modules/ai/_modules/fdp-ai/_models/fdpai-user-provider-config.control-model.ts +20 -20
  223. package/src/_modules/ai/_modules/fdp-ai/index.ts +11 -11
  224. package/src/_modules/ai/_modules/google-ai/_collections/gai-models.const.ts +161 -161
  225. package/src/_modules/ai/_modules/google-ai/_enums/gai-model.enum.ts +16 -16
  226. package/src/_modules/ai/_modules/google-ai/_models/gai-call-settings.control-model.spec.ts +28 -28
  227. package/src/_modules/ai/_modules/google-ai/_models/gai-call-settings.control-model.ts +21 -21
  228. package/src/_modules/ai/_modules/google-ai/_models/gai-client-options.interface.ts +8 -8
  229. package/src/_modules/ai/_modules/google-ai/_models/gai-settings.control-model.spec.ts +22 -22
  230. package/src/_modules/ai/_modules/google-ai/_models/gai-settings.control-model.ts +25 -25
  231. package/src/_modules/ai/_modules/google-ai/_models/gai-user-provider-config.control-model.ts +20 -20
  232. package/src/_modules/ai/_modules/google-ai/index.ts +14 -14
  233. package/src/_modules/ai/_modules/local-ai/_collections/lai-models.const.ts +59 -59
  234. package/src/_modules/ai/_modules/local-ai/_enums/lai-model.enum.ts +6 -6
  235. package/src/_modules/ai/_modules/local-ai/_models/lai-call-settings.control-model.spec.ts +28 -28
  236. package/src/_modules/ai/_modules/local-ai/_models/lai-call-settings.control-model.ts +18 -18
  237. package/src/_modules/ai/_modules/local-ai/_models/lai-client-options.interface.ts +9 -9
  238. package/src/_modules/ai/_modules/local-ai/_models/lai-settings.control-model.spec.ts +22 -22
  239. package/src/_modules/ai/_modules/local-ai/_models/lai-settings.control-model.ts +23 -23
  240. package/src/_modules/ai/_modules/local-ai/index.ts +14 -14
  241. package/src/_modules/ai/_modules/open-ai/_collections/oai-embedding-model-dimensions.const.ts +7 -7
  242. package/src/_modules/ai/_modules/open-ai/_collections/oai-models.const.ts +404 -404
  243. package/src/_modules/ai/_modules/open-ai/_enums/oai-model.enum.ts +179 -179
  244. package/src/_modules/ai/_modules/open-ai/_models/oai-call-settings.control-model.spec.ts +28 -28
  245. package/src/_modules/ai/_modules/open-ai/_models/oai-call-settings.control-model.ts +21 -21
  246. package/src/_modules/ai/_modules/open-ai/_models/oai-client-options.interface.ts +81 -81
  247. package/src/_modules/ai/_modules/open-ai/_models/oai-embedding-info.interface.ts +13 -13
  248. package/src/_modules/ai/_modules/open-ai/_models/oai-settings.control-model.spec.ts +22 -22
  249. package/src/_modules/ai/_modules/open-ai/_models/oai-settings.control-model.ts +25 -25
  250. package/src/_modules/ai/_modules/open-ai/_models/oai-user-provider-config.control-model.ts +21 -21
  251. package/src/_modules/ai/_modules/open-ai/index.ts +28 -28
  252. package/src/_modules/ai/index.ts +27 -27
  253. package/src/_modules/ci-tools/_enums/cit-ci-result-code.enum.ts +11 -11
  254. package/src/_modules/ci-tools/_enums/cit-ci-step-result-code.enum.ts +9 -9
  255. package/src/_modules/ci-tools/_models/cit-ci-result-info.data-models.spec.ts +58 -58
  256. package/src/_modules/ci-tools/_models/cit-ci-result-info.data-models.ts +77 -77
  257. package/src/_modules/ci-tools/_models/cit-ci-step-result.interface.ts +12 -12
  258. package/src/_modules/ci-tools/index.ts +8 -8
  259. package/src/_modules/crypto/_collections/crypto-v1.util.ts +225 -225
  260. package/src/_modules/crypto/_collections/crypto-v2.util.ts +331 -331
  261. package/src/_modules/crypto/_collections/crypto-v4.util.ts +702 -702
  262. package/src/_modules/crypto/_collections/crypto.util.db-envelope.spec.ts +51 -51
  263. package/src/_modules/crypto/_collections/crypto.util.edge.spec.ts +605 -605
  264. package/src/_modules/crypto/_collections/crypto.util.extra.spec.ts +642 -642
  265. package/src/_modules/crypto/_collections/crypto.util.simple.spec.ts +512 -512
  266. package/src/_modules/crypto/_collections/crypto.util.ts +748 -748
  267. package/src/_modules/crypto/_models/artifact-signature.interface.ts +39 -0
  268. package/src/_modules/crypto/_services/artifact-signature.control-service.spec.ts +223 -0
  269. package/src/_modules/crypto/_services/artifact-signature.control-service.ts +395 -0
  270. package/src/_modules/crypto/index.ts +16 -14
  271. package/src/_modules/custom-data/_collections/cud-module-settings.const.ts +21 -21
  272. package/src/_modules/custom-data/_models/cud.data-model.spec.ts +38 -38
  273. package/src/_modules/custom-data/_models/cud.data-model.ts +39 -39
  274. package/src/_modules/custom-data/index.ts +10 -10
  275. package/src/_modules/data-handler/_models/data-handler-settings.control-model.spec.ts +110 -110
  276. package/src/_modules/data-handler/_models/data-handler-settings.control-model.ts +110 -110
  277. package/src/_modules/data-handler/_models/data-handler.control-model.spec.ts +473 -473
  278. package/src/_modules/data-handler/_models/data-handler.control-model.ts +486 -486
  279. package/src/_modules/data-handler/_models/data-list-handler.control-model.spec.ts +263 -263
  280. package/src/_modules/data-handler/_models/data-list-handler.control-model.ts +252 -252
  281. package/src/_modules/data-handler/_models/data-search-handler.control-model.spec.ts +417 -417
  282. package/src/_modules/data-handler/_models/data-search-handler.control-model.ts +390 -390
  283. package/src/_modules/data-handler/_models/list-collector-data-handler.control-model.spec.ts +374 -374
  284. package/src/_modules/data-handler/_models/list-collector-data-handler.control-model.ts +274 -274
  285. package/src/_modules/data-handler/index.ts +6 -6
  286. package/src/_modules/game/_collections/audio-mixer.util.spec.ts +198 -198
  287. package/src/_modules/game/_collections/audio-mixer.util.ts +143 -143
  288. package/src/_modules/game/_collections/audio-scale.util.spec.ts +140 -140
  289. package/src/_modules/game/_collections/audio-scale.util.ts +129 -129
  290. package/src/_modules/game/_enums/audio-channel.enum.ts +22 -22
  291. package/src/_modules/game/_models/audio-mixer-config.interface.ts +53 -53
  292. package/src/_modules/game/_models/audio-mixer-settings.interface.ts +38 -38
  293. package/src/_modules/game/_models/audio-mixer-state.interface.ts +36 -36
  294. package/src/_modules/game/_models/audio-mixer.control-model.spec.ts +376 -376
  295. package/src/_modules/game/_models/audio-mixer.control-model.ts +419 -419
  296. package/src/_modules/game/_models/audio-scale.interface.ts +21 -21
  297. package/src/_modules/game/_models/seeded-random-state.interface.ts +21 -21
  298. package/src/_modules/game/_models/seeded-random.control-model.spec.ts +290 -290
  299. package/src/_modules/game/_models/seeded-random.control-model.ts +311 -311
  300. package/src/_modules/game/index.ts +15 -15
  301. package/src/_modules/location/_collections/assets/country-codes-ISO-3166.json +3239 -3239
  302. package/src/_modules/location/_collections/assets/country-divisions-ISO-3166-all-list.json +19035 -19035
  303. package/src/_modules/location/_collections/assets/country-divisions-ISO-3166.json +4993 -4993
  304. package/src/_modules/location/_collections/assets/country-phone-codes.json +1203 -1203
  305. package/src/_modules/location/_collections/assets/country-subdivisions/afghanistan.json +137 -137
  306. package/src/_modules/location/_collections/assets/country-subdivisions/albania.json +49 -49
  307. package/src/_modules/location/_collections/assets/country-subdivisions/algeria.json +193 -193
  308. package/src/_modules/location/_collections/assets/country-subdivisions/andorra.json +29 -29
  309. package/src/_modules/location/_collections/assets/country-subdivisions/angola.json +73 -73
  310. package/src/_modules/location/_collections/assets/country-subdivisions/antigua-and-barbuda.json +33 -33
  311. package/src/_modules/location/_collections/assets/country-subdivisions/argentina.json +97 -97
  312. package/src/_modules/location/_collections/assets/country-subdivisions/armenia.json +45 -45
  313. package/src/_modules/location/_collections/assets/country-subdivisions/australia.json +33 -33
  314. package/src/_modules/location/_collections/assets/country-subdivisions/austria.json +37 -37
  315. package/src/_modules/location/_collections/assets/country-subdivisions/azerbaijan.json +5 -5
  316. package/src/_modules/location/_collections/assets/country-subdivisions/bahamas.json +125 -125
  317. package/src/_modules/location/_collections/assets/country-subdivisions/bahrain.json +21 -21
  318. package/src/_modules/location/_collections/assets/country-subdivisions/bangladesh.json +29 -29
  319. package/src/_modules/location/_collections/assets/country-subdivisions/barbados.json +45 -45
  320. package/src/_modules/location/_collections/assets/country-subdivisions/belarus.json +29 -29
  321. package/src/_modules/location/_collections/assets/country-subdivisions/belgium.json +13 -13
  322. package/src/_modules/location/_collections/assets/country-subdivisions/belize.json +25 -25
  323. package/src/_modules/location/_collections/assets/country-subdivisions/benin.json +49 -49
  324. package/src/_modules/location/_collections/assets/country-subdivisions/bhutan.json +81 -81
  325. package/src/_modules/location/_collections/assets/country-subdivisions/bolivia.json +37 -37
  326. package/src/_modules/location/_collections/assets/country-subdivisions/bosnia-and-herzegovina.json +13 -13
  327. package/src/_modules/location/_collections/assets/country-subdivisions/botswana.json +65 -65
  328. package/src/_modules/location/_collections/assets/country-subdivisions/brazil.json +109 -109
  329. package/src/_modules/location/_collections/assets/country-subdivisions/brunei-darussalam.json +17 -17
  330. package/src/_modules/location/_collections/assets/country-subdivisions/bulgaria.json +113 -113
  331. package/src/_modules/location/_collections/assets/country-subdivisions/burkina-faso.json +53 -53
  332. package/src/_modules/location/_collections/assets/country-subdivisions/burundi.json +69 -69
  333. package/src/_modules/location/_collections/assets/country-subdivisions/cambodia.json +97 -97
  334. package/src/_modules/location/_collections/assets/country-subdivisions/cameroon.json +41 -41
  335. package/src/_modules/location/_collections/assets/country-subdivisions/canada.json +79 -79
  336. package/src/_modules/location/_collections/assets/country-subdivisions/cape-verde.json +9 -9
  337. package/src/_modules/location/_collections/assets/country-subdivisions/central-african-republic.json +69 -69
  338. package/src/_modules/location/_collections/assets/country-subdivisions/chad.json +89 -89
  339. package/src/_modules/location/_collections/assets/country-subdivisions/chile.json +61 -61
  340. package/src/_modules/location/_collections/assets/country-subdivisions/china.json +205 -205
  341. package/src/_modules/location/_collections/assets/country-subdivisions/colombia.json +133 -133
  342. package/src/_modules/location/_collections/assets/country-subdivisions/comoros.json +13 -13
  343. package/src/_modules/location/_collections/assets/country-subdivisions/congo-the-democratic-republic-of-the.json +45 -45
  344. package/src/_modules/location/_collections/assets/country-subdivisions/congo.json +49 -49
  345. package/src/_modules/location/_collections/assets/country-subdivisions/costa-rica.json +29 -29
  346. package/src/_modules/location/_collections/assets/country-subdivisions/cote-d-ivoire-republic-of.json +77 -77
  347. package/src/_modules/location/_collections/assets/country-subdivisions/croatia.json +85 -85
  348. package/src/_modules/location/_collections/assets/country-subdivisions/cuba.json +65 -65
  349. package/src/_modules/location/_collections/assets/country-subdivisions/cyprus.json +25 -25
  350. package/src/_modules/location/_collections/assets/country-subdivisions/czech-republic.json +57 -57
  351. package/src/_modules/location/_collections/assets/country-subdivisions/denmark.json +21 -21
  352. package/src/_modules/location/_collections/assets/country-subdivisions/djibouti.json +25 -25
  353. package/src/_modules/location/_collections/assets/country-subdivisions/dominica.json +41 -41
  354. package/src/_modules/location/_collections/assets/country-subdivisions/dominican-republic.json +41 -41
  355. package/src/_modules/location/_collections/assets/country-subdivisions/ecuador.json +97 -97
  356. package/src/_modules/location/_collections/assets/country-subdivisions/egypt.json +117 -117
  357. package/src/_modules/location/_collections/assets/country-subdivisions/el-salvador.json +57 -57
  358. package/src/_modules/location/_collections/assets/country-subdivisions/equatorial-guinea.json +9 -9
  359. package/src/_modules/location/_collections/assets/country-subdivisions/eritrea.json +25 -25
  360. package/src/_modules/location/_collections/assets/country-subdivisions/estonia.json +61 -61
  361. package/src/_modules/location/_collections/assets/country-subdivisions/ethiopia.json +45 -45
  362. package/src/_modules/location/_collections/assets/country-subdivisions/fiji.json +21 -21
  363. package/src/_modules/location/_collections/assets/country-subdivisions/finland.json +77 -77
  364. package/src/_modules/location/_collections/assets/country-subdivisions/france.json +133 -133
  365. package/src/_modules/location/_collections/assets/country-subdivisions/gabon.json +37 -37
  366. package/src/_modules/location/_collections/assets/country-subdivisions/gambia.json +25 -25
  367. package/src/_modules/location/_collections/assets/country-subdivisions/georgia.json +49 -49
  368. package/src/_modules/location/_collections/assets/country-subdivisions/germany.json +65 -65
  369. package/src/_modules/location/_collections/assets/country-subdivisions/ghana.json +41 -41
  370. package/src/_modules/location/_collections/assets/country-subdivisions/greece.json +53 -53
  371. package/src/_modules/location/_collections/assets/country-subdivisions/greenland.json +17 -17
  372. package/src/_modules/location/_collections/assets/country-subdivisions/grenada.json +29 -29
  373. package/src/_modules/location/_collections/assets/country-subdivisions/guatemala.json +89 -89
  374. package/src/_modules/location/_collections/assets/country-subdivisions/guinea-bissau.json +13 -13
  375. package/src/_modules/location/_collections/assets/country-subdivisions/guinea.json +33 -33
  376. package/src/_modules/location/_collections/assets/country-subdivisions/guyana.json +41 -41
  377. package/src/_modules/location/_collections/assets/country-subdivisions/haiti.json +41 -41
  378. package/src/_modules/location/_collections/assets/country-subdivisions/honduras.json +73 -73
  379. package/src/_modules/location/_collections/assets/country-subdivisions/hong-kong.json +4 -4
  380. package/src/_modules/location/_collections/assets/country-subdivisions/hungary.json +173 -173
  381. package/src/_modules/location/_collections/assets/country-subdivisions/iceland.json +37 -37
  382. package/src/_modules/location/_collections/assets/country-subdivisions/india.json +181 -181
  383. package/src/_modules/location/_collections/assets/country-subdivisions/indonesia.json +29 -29
  384. package/src/_modules/location/_collections/assets/country-subdivisions/iran-islamic-republic-of.json +125 -125
  385. package/src/_modules/location/_collections/assets/country-subdivisions/iraq.json +73 -73
  386. package/src/_modules/location/_collections/assets/country-subdivisions/ireland.json +17 -17
  387. package/src/_modules/location/_collections/assets/country-subdivisions/israel.json +25 -25
  388. package/src/_modules/location/_collections/assets/country-subdivisions/italy.json +81 -81
  389. package/src/_modules/location/_collections/assets/country-subdivisions/jamaica.json +57 -57
  390. package/src/_modules/location/_collections/assets/country-subdivisions/japan.json +189 -189
  391. package/src/_modules/location/_collections/assets/country-subdivisions/jordan.json +49 -49
  392. package/src/_modules/location/_collections/assets/country-subdivisions/kazakhstan.json +65 -65
  393. package/src/_modules/location/_collections/assets/country-subdivisions/kenya.json +33 -33
  394. package/src/_modules/location/_collections/assets/country-subdivisions/kiribati.json +13 -13
  395. package/src/_modules/location/_collections/assets/country-subdivisions/korea-democratic-people-s-republic-of.json +45 -45
  396. package/src/_modules/location/_collections/assets/country-subdivisions/korea-republic-of.json +69 -69
  397. package/src/_modules/location/_collections/assets/country-subdivisions/kuwait.json +25 -25
  398. package/src/_modules/location/_collections/assets/country-subdivisions/kyrgyzstan.json +33 -33
  399. package/src/_modules/location/_collections/assets/country-subdivisions/lao-people-s-democratic-republic.json +73 -73
  400. package/src/_modules/location/_collections/assets/country-subdivisions/latvia.json +477 -477
  401. package/src/_modules/location/_collections/assets/country-subdivisions/lebanon.json +33 -33
  402. package/src/_modules/location/_collections/assets/country-subdivisions/lesotho.json +41 -41
  403. package/src/_modules/location/_collections/assets/country-subdivisions/liberia.json +61 -61
  404. package/src/_modules/location/_collections/assets/country-subdivisions/libyan-arab-jamahiriya.json +89 -89
  405. package/src/_modules/location/_collections/assets/country-subdivisions/liechtenstein.json +45 -45
  406. package/src/_modules/location/_collections/assets/country-subdivisions/lithuania.json +41 -41
  407. package/src/_modules/location/_collections/assets/country-subdivisions/luxembourg.json +13 -13
  408. package/src/_modules/location/_collections/assets/country-subdivisions/macedonia-the-former-yugoslav-republic-of.json +337 -337
  409. package/src/_modules/location/_collections/assets/country-subdivisions/madagascar.json +25 -25
  410. package/src/_modules/location/_collections/assets/country-subdivisions/malawi.json +13 -13
  411. package/src/_modules/location/_collections/assets/country-subdivisions/malaysia.json +81 -81
  412. package/src/_modules/location/_collections/assets/country-subdivisions/maldives.json +33 -33
  413. package/src/_modules/location/_collections/assets/country-subdivisions/mali.json +37 -37
  414. package/src/_modules/location/_collections/assets/country-subdivisions/malta.json +273 -273
  415. package/src/_modules/location/_collections/assets/country-subdivisions/marshall-islands.json +9 -9
  416. package/src/_modules/location/_collections/assets/country-subdivisions/mauritania.json +53 -53
  417. package/src/_modules/location/_collections/assets/country-subdivisions/mauritius.json +69 -69
  418. package/src/_modules/location/_collections/assets/country-subdivisions/mexico.json +161 -161
  419. package/src/_modules/location/_collections/assets/country-subdivisions/micronesia-federated-states-of.json +17 -17
  420. package/src/_modules/location/_collections/assets/country-subdivisions/moldova-republic-of.json +149 -149
  421. package/src/_modules/location/_collections/assets/country-subdivisions/monaco.json +69 -69
  422. package/src/_modules/location/_collections/assets/country-subdivisions/mongolia.json +89 -89
  423. package/src/_modules/location/_collections/assets/country-subdivisions/montenegro.json +93 -93
  424. package/src/_modules/location/_collections/assets/country-subdivisions/morocco.json +65 -65
  425. package/src/_modules/location/_collections/assets/country-subdivisions/mozambique.json +45 -45
  426. package/src/_modules/location/_collections/assets/country-subdivisions/myanmar.json +57 -57
  427. package/src/_modules/location/_collections/assets/country-subdivisions/namibia.json +57 -57
  428. package/src/_modules/location/_collections/assets/country-subdivisions/nauru.json +57 -57
  429. package/src/_modules/location/_collections/assets/country-subdivisions/nepal.json +21 -21
  430. package/src/_modules/location/_collections/assets/country-subdivisions/netherlands.json +91 -91
  431. package/src/_modules/location/_collections/assets/country-subdivisions/new-zealand.json +111 -111
  432. package/src/_modules/location/_collections/assets/country-subdivisions/nicaragua.json +69 -69
  433. package/src/_modules/location/_collections/assets/country-subdivisions/niger.json +33 -33
  434. package/src/_modules/location/_collections/assets/country-subdivisions/nigeria.json +149 -149
  435. package/src/_modules/location/_collections/assets/country-subdivisions/norway.json +85 -85
  436. package/src/_modules/location/_collections/assets/country-subdivisions/oman.json +37 -37
  437. package/src/_modules/location/_collections/assets/country-subdivisions/pakistan.json +33 -33
  438. package/src/_modules/location/_collections/assets/country-subdivisions/palau.json +65 -65
  439. package/src/_modules/location/_collections/assets/country-subdivisions/palestinian-territory-occupied.json +65 -65
  440. package/src/_modules/location/_collections/assets/country-subdivisions/panama.json +53 -53
  441. package/src/_modules/location/_collections/assets/country-subdivisions/papua-new-guinea.json +81 -81
  442. package/src/_modules/location/_collections/assets/country-subdivisions/paraguay.json +73 -73
  443. package/src/_modules/location/_collections/assets/country-subdivisions/peru.json +105 -105
  444. package/src/_modules/location/_collections/assets/country-subdivisions/philippines.json +69 -69
  445. package/src/_modules/location/_collections/assets/country-subdivisions/poland.json +65 -65
  446. package/src/_modules/location/_collections/assets/country-subdivisions/portugal.json +81 -81
  447. package/src/_modules/location/_collections/assets/country-subdivisions/qatar.json +29 -29
  448. package/src/_modules/location/_collections/assets/country-subdivisions/romania.json +169 -169
  449. package/src/_modules/location/_collections/assets/country-subdivisions/russian-federation.json +499 -499
  450. package/src/_modules/location/_collections/assets/country-subdivisions/rwanda.json +21 -21
  451. package/src/_modules/location/_collections/assets/country-subdivisions/saint-helena-ascension-and-tristan-da-cunha.json +13 -13
  452. package/src/_modules/location/_collections/assets/country-subdivisions/saint-kitts-and-nevis.json +9 -9
  453. package/src/_modules/location/_collections/assets/country-subdivisions/saint-lucia.json +45 -45
  454. package/src/_modules/location/_collections/assets/country-subdivisions/saint-vincent-and-the-grenadines.json +25 -25
  455. package/src/_modules/location/_collections/assets/country-subdivisions/samoa.json +45 -45
  456. package/src/_modules/location/_collections/assets/country-subdivisions/san-marino.json +37 -37
  457. package/src/_modules/location/_collections/assets/country-subdivisions/sao-tome-and-principe.json +9 -9
  458. package/src/_modules/location/_collections/assets/country-subdivisions/saudi-arabia.json +53 -53
  459. package/src/_modules/location/_collections/assets/country-subdivisions/senegal.json +57 -57
  460. package/src/_modules/location/_collections/assets/country-subdivisions/serbia.json +9 -9
  461. package/src/_modules/location/_collections/assets/country-subdivisions/seychelles.json +101 -101
  462. package/src/_modules/location/_collections/assets/country-subdivisions/sierra-leone.json +17 -17
  463. package/src/_modules/location/_collections/assets/country-subdivisions/singapore.json +21 -21
  464. package/src/_modules/location/_collections/assets/country-subdivisions/slovakia.json +33 -33
  465. package/src/_modules/location/_collections/assets/country-subdivisions/slovenia.json +841 -841
  466. package/src/_modules/location/_collections/assets/country-subdivisions/solomon-islands.json +41 -41
  467. package/src/_modules/location/_collections/assets/country-subdivisions/somalia.json +73 -73
  468. package/src/_modules/location/_collections/assets/country-subdivisions/south-africa.json +37 -37
  469. package/src/_modules/location/_collections/assets/country-subdivisions/south-sudan.json +41 -41
  470. package/src/_modules/location/_collections/assets/country-subdivisions/spain.json +346 -346
  471. package/src/_modules/location/_collections/assets/country-subdivisions/sri-lanka.json +37 -37
  472. package/src/_modules/location/_collections/assets/country-subdivisions/sudan.json +69 -69
  473. package/src/_modules/location/_collections/assets/country-subdivisions/suriname.json +41 -41
  474. package/src/_modules/location/_collections/assets/country-subdivisions/swaziland.json +17 -17
  475. package/src/_modules/location/_collections/assets/country-subdivisions/sweden.json +85 -85
  476. package/src/_modules/location/_collections/assets/country-subdivisions/switzerland.json +105 -105
  477. package/src/_modules/location/_collections/assets/country-subdivisions/syrian-arab-republic.json +57 -57
  478. package/src/_modules/location/_collections/assets/country-subdivisions/taiwan-province-of-china.json +93 -93
  479. package/src/_modules/location/_collections/assets/country-subdivisions/tajikistan.json +17 -17
  480. package/src/_modules/location/_collections/assets/country-subdivisions/tanzania-united-republic-of.json +105 -105
  481. package/src/_modules/location/_collections/assets/country-subdivisions/thailand.json +313 -313
  482. package/src/_modules/location/_collections/assets/country-subdivisions/timor-leste.json +53 -53
  483. package/src/_modules/location/_collections/assets/country-subdivisions/togo.json +21 -21
  484. package/src/_modules/location/_collections/assets/country-subdivisions/tonga.json +21 -21
  485. package/src/_modules/location/_collections/assets/country-subdivisions/trinidad-and-tobago.json +65 -65
  486. package/src/_modules/location/_collections/assets/country-subdivisions/tunisia.json +97 -97
  487. package/src/_modules/location/_collections/assets/country-subdivisions/turkey.json +325 -325
  488. package/src/_modules/location/_collections/assets/country-subdivisions/turkmenistan.json +25 -25
  489. package/src/_modules/location/_collections/assets/country-subdivisions/tuvalu.json +33 -33
  490. package/src/_modules/location/_collections/assets/country-subdivisions/uganda.json +17 -17
  491. package/src/_modules/location/_collections/assets/country-subdivisions/ukraine.json +109 -109
  492. package/src/_modules/location/_collections/assets/country-subdivisions/united-arab-emirates.json +29 -29
  493. package/src/_modules/location/_collections/assets/country-subdivisions/united-kingdom.json +1196 -1196
  494. package/src/_modules/location/_collections/assets/country-subdivisions/united-states-minor-outlying-islands.json +37 -37
  495. package/src/_modules/location/_collections/assets/country-subdivisions/united-states.json +286 -286
  496. package/src/_modules/location/_collections/assets/country-subdivisions/uruguay.json +77 -77
  497. package/src/_modules/location/_collections/assets/country-subdivisions/uzbekistan.json +57 -57
  498. package/src/_modules/location/_collections/assets/country-subdivisions/vanuatu.json +25 -25
  499. package/src/_modules/location/_collections/assets/country-subdivisions/venezuela.json +101 -101
  500. package/src/_modules/location/_collections/assets/country-subdivisions/viet-nam.json +257 -257
  501. package/src/_modules/location/_collections/assets/country-subdivisions/yemen.json +85 -85
  502. package/src/_modules/location/_collections/assets/country-subdivisions/zambia.json +37 -37
  503. package/src/_modules/location/_collections/assets/country-subdivisions/zimbabwe.json +41 -41
  504. package/src/_modules/location/_collections/loc-country-divisions.const.ts +10 -10
  505. package/src/_modules/location/_collections/loc-country-isos.const.ts +8 -8
  506. package/src/_modules/location/_collections/loc-regions.util.spec.ts +61 -61
  507. package/src/_modules/location/_collections/loc-regions.util.ts +137 -137
  508. package/src/_modules/location/_collections/loc.util.spec.ts +52 -52
  509. package/src/_modules/location/_collections/loc.util.ts +74 -74
  510. package/src/_modules/location/_enums/loc-region.enum.ts +14 -14
  511. package/src/_modules/location/_enums/loc-sub-region.enum.ts +31 -31
  512. package/src/_modules/location/_enums/loc-subdivision-region-type.enum.ts +47 -47
  513. package/src/_modules/location/_models/loc-coordinates.interface.ts +7 -7
  514. package/src/_modules/location/_models/loc-country-division.interface.ts +8 -8
  515. package/src/_modules/location/_models/loc-country-iso.interface.ts +23 -23
  516. package/src/_modules/location/_models/loc-country-phone-code.interface.ts +9 -9
  517. package/src/_modules/location/_models/loc-division-collection.interface.ts +12 -12
  518. package/src/_modules/location/_models/loc-division-region-data.interface.ts +9 -9
  519. package/src/_modules/location/_models/loc-geo-ip-location.interface.ts +27 -27
  520. package/src/_modules/location/index.ts +22 -22
  521. package/src/_modules/messaging/README.md +279 -279
  522. package/src/_modules/messaging/_collections/msg-module-settings.const.ts +46 -46
  523. package/src/_modules/messaging/_enums/msg-attachment-type.enum.ts +26 -26
  524. package/src/_modules/messaging/_enums/msg-conversation-type.enum.ts +20 -20
  525. package/src/_modules/messaging/_enums/msg-delivery-status.enum.ts +17 -17
  526. package/src/_modules/messaging/_enums/msg-event-key.enum.ts +31 -31
  527. package/src/_modules/messaging/_enums/msg-participant-role.enum.ts +20 -20
  528. package/src/_modules/messaging/_enums/msg-provider-type.enum.ts +7 -7
  529. package/src/_modules/messaging/_enums/msg-status.enum.ts +26 -26
  530. package/src/_modules/messaging/_enums/msg-type.enum.ts +23 -23
  531. package/src/_modules/messaging/_models/msg-attachment.interface.ts +46 -46
  532. package/src/_modules/messaging/_models/msg-conversation.data-model.spec.ts +69 -69
  533. package/src/_modules/messaging/_models/msg-conversation.data-model.ts +96 -96
  534. package/src/_modules/messaging/_models/msg-mention.interface.ts +29 -29
  535. package/src/_modules/messaging/_models/msg-message.data-model.spec.ts +79 -79
  536. package/src/_modules/messaging/_models/msg-message.data-model.ts +127 -127
  537. package/src/_modules/messaging/_models/msg-participant.interface.ts +46 -46
  538. package/src/_modules/messaging/_models/msg-reaction.interface.ts +20 -20
  539. package/src/_modules/messaging/_models/msg-thread-info.interface.ts +35 -35
  540. package/src/_modules/messaging/_modules/agent/_enums/agt-process-step-type.enum.ts +35 -35
  541. package/src/_modules/messaging/_modules/agent/_enums/agt-tool-status.enum.ts +23 -23
  542. package/src/_modules/messaging/_modules/agent/_models/agt-process-step.interface.ts +55 -55
  543. package/src/_modules/messaging/_modules/agent/_models/agt-reasoning-info.interface.ts +26 -26
  544. package/src/_modules/messaging/_modules/agent/_models/agt-tool-usage.interface.ts +37 -37
  545. package/src/_modules/messaging/_modules/agent/index.ts +8 -8
  546. package/src/_modules/messaging/index.ts +28 -28
  547. package/src/_modules/ngx-models/_collections/angular-placeholders.ts +34 -34
  548. package/src/_modules/ngx-models/_collections/button-new-style-settings-presets.const.ts +181 -181
  549. package/src/_modules/ngx-models/_collections/dynamo-global.settings.spec.ts +74 -74
  550. package/src/_modules/ngx-models/_collections/dynamo-global.settings.ts +103 -103
  551. package/src/_modules/ngx-models/_enums/button-new/button-new-border-radius.enum.ts +16 -16
  552. package/src/_modules/ngx-models/_enums/button-new/button-new-icon-style-type.enum.ts +14 -14
  553. package/src/_modules/ngx-models/_enums/button-new/button-new-size.enum.ts +16 -16
  554. package/src/_modules/ngx-models/_enums/button-new/button-new-style-type.enum.ts +18 -18
  555. package/src/_modules/ngx-models/_enums/button-type.enum.ts +36 -36
  556. package/src/_modules/ngx-models/_enums/checkbox-label-position.enum.ts +8 -8
  557. package/src/_modules/ngx-models/_enums/container-type.enum.ts +11 -11
  558. package/src/_modules/ngx-models/_enums/errors/error-level.enum.ts +13 -13
  559. package/src/_modules/ngx-models/_enums/errors/error-notification-color.enum.ts +13 -13
  560. package/src/_modules/ngx-models/_enums/errors/error-ui-mode.enum.ts +13 -13
  561. package/src/_modules/ngx-models/_enums/field-appearance.enum.ts +14 -14
  562. package/src/_modules/ngx-models/_enums/field-type.enum.ts +52 -52
  563. package/src/_modules/ngx-models/_enums/file-type.enum.ts +12 -12
  564. package/src/_modules/ngx-models/_enums/flex/flex-layout-align.enum.ts +21 -21
  565. package/src/_modules/ngx-models/_enums/flex/flex-layout.enum.ts +5 -5
  566. package/src/_modules/ngx-models/_enums/form-access.enum.ts +9 -9
  567. package/src/_modules/ngx-models/_enums/form-reset-data.enum.ts +12 -12
  568. package/src/_modules/ngx-models/_enums/form-store-on.enum.ts +9 -9
  569. package/src/_modules/ngx-models/_enums/forms-new/field-new-validator-type.enum.ts +20 -20
  570. package/src/_modules/ngx-models/_enums/frames/header-item-type.enum.ts +15 -15
  571. package/src/_modules/ngx-models/_enums/frames/header-position.enum.ts +10 -10
  572. package/src/_modules/ngx-models/_enums/frames/side-nav-badge-color.enum.ts +13 -13
  573. package/src/_modules/ngx-models/_enums/html/input-types.enum.ts +27 -27
  574. package/src/_modules/ngx-models/_enums/material-color.enum.ts +16 -16
  575. package/src/_modules/ngx-models/_enums/material-tooltip-position.enum.ts +16 -16
  576. package/src/_modules/ngx-models/_enums/preconfigured-field-type.enum.ts +8 -8
  577. package/src/_modules/ngx-models/_enums/storage-type.enum.ts +15 -15
  578. package/src/_modules/ngx-models/_enums/validator-type.enum.ts +9 -9
  579. package/src/_modules/ngx-models/_enums/voice/audio-mime-type.enum.ts +14 -14
  580. package/src/_modules/ngx-models/_enums/voice/voice-provider-type.enum.ts +26 -26
  581. package/src/_modules/ngx-models/_enums/voice/voice-recorder-state.enum.ts +20 -20
  582. package/src/_modules/ngx-models/_models/control-models/button-new-style-settings.control-model.ts +37 -37
  583. package/src/_modules/ngx-models/_models/control-models/button-params.control-model.spec.ts +70 -70
  584. package/src/_modules/ngx-models/_models/control-models/button-params.control-model.ts +332 -332
  585. package/src/_modules/ngx-models/_models/control-models/chat/chat-column-layout-settings.control-model.ts +28 -28
  586. package/src/_modules/ngx-models/_models/control-models/data-handler-settings.control-model.spec.ts +90 -90
  587. package/src/_modules/ngx-models/_models/control-models/data-handler-settings.control-model.ts +134 -134
  588. package/src/_modules/ngx-models/_models/control-models/data-handler.control-model.ts +529 -529
  589. package/src/_modules/ngx-models/_models/control-models/errors/error-notification.control-model.ts +52 -52
  590. package/src/_modules/ngx-models/_models/control-models/errors/error-settings.control-model.ts +34 -34
  591. package/src/_modules/ngx-models/_models/control-models/errors/errors-pojo.spec.ts +86 -86
  592. package/src/_modules/ngx-models/_models/control-models/errors/errors-settings.control-model.ts +52 -52
  593. package/src/_modules/ngx-models/_models/control-models/field-settings.control-model.spec.ts +109 -109
  594. package/src/_modules/ngx-models/_models/control-models/field-settings.control-model.ts +133 -133
  595. package/src/_modules/ngx-models/_models/control-models/form-settings.control-model.spec.ts +109 -109
  596. package/src/_modules/ngx-models/_models/control-models/form-settings.control-model.ts +160 -160
  597. package/src/_modules/ngx-models/_models/control-models/forms-new/checkbox-field-new-settings.control-model.ts +25 -25
  598. package/src/_modules/ngx-models/_models/control-models/forms-new/date-field-new-settings.control-model.ts +26 -26
  599. package/src/_modules/ngx-models/_models/control-models/forms-new/date-range-field-new-settings.control-model.ts +42 -42
  600. package/src/_modules/ngx-models/_models/control-models/forms-new/datetime-field-new-settings.control-model.ts +35 -35
  601. package/src/_modules/ngx-models/_models/control-models/forms-new/datetime-range-field-new-settings.control-model.ts +35 -35
  602. package/src/_modules/ngx-models/_models/control-models/forms-new/field-new-settings.control-model.ts +85 -85
  603. package/src/_modules/ngx-models/_models/control-models/forms-new/field-new-types.ts +42 -42
  604. package/src/_modules/ngx-models/_models/control-models/forms-new/form-new-settings.control-model.ts +40 -40
  605. package/src/_modules/ngx-models/_models/control-models/forms-new/forms-new.spec.ts +179 -179
  606. package/src/_modules/ngx-models/_models/control-models/forms-new/index.ts +20 -20
  607. package/src/_modules/ngx-models/_models/control-models/forms-new/multiselect-field-new-settings.control-model.ts +27 -27
  608. package/src/_modules/ngx-models/_models/control-models/forms-new/number-field-new-settings.control-model.ts +24 -24
  609. package/src/_modules/ngx-models/_models/control-models/forms-new/password-field-new-settings.control-model.ts +35 -35
  610. package/src/_modules/ngx-models/_models/control-models/forms-new/radio-select-field-new-settings.control-model.ts +35 -35
  611. package/src/_modules/ngx-models/_models/control-models/forms-new/select-field-new-settings.control-model.ts +46 -46
  612. package/src/_modules/ngx-models/_models/control-models/forms-new/slider-field-new-settings.control-model.ts +37 -37
  613. package/src/_modules/ngx-models/_models/control-models/forms-new/slider-range-field-new-settings.control-model.ts +45 -45
  614. package/src/_modules/ngx-models/_models/control-models/forms-new/text-field-new-settings.control-model.ts +30 -30
  615. package/src/_modules/ngx-models/_models/control-models/forms-new/textarea-field-new-settings.control-model.ts +22 -22
  616. package/src/_modules/ngx-models/_models/control-models/frames/frames-pojo.spec.ts +108 -108
  617. package/src/_modules/ngx-models/_models/control-models/frames/header-item-settings.control-model.ts +52 -52
  618. package/src/_modules/ngx-models/_models/control-models/frames/main-frame-settings.control-model.ts +40 -40
  619. package/src/_modules/ngx-models/_models/control-models/frames/side-nav-item-settings.control-model.ts +55 -55
  620. package/src/_modules/ngx-models/_models/control-models/frames/side-nav-settings.control-model.ts +30 -30
  621. package/src/_modules/ngx-models/_models/control-models/select.control-model.spec.ts +45 -45
  622. package/src/_modules/ngx-models/_models/control-models/select.control-model.ts +28 -28
  623. package/src/_modules/ngx-models/_models/control-models/voice/voice-pojo.spec.ts +111 -111
  624. package/src/_modules/ngx-models/_models/control-models/voice/voice-providers-settings.control-model.ts +74 -74
  625. package/src/_modules/ngx-models/_models/control-models/voice/voice-record-button-settings.control-model.ts +42 -42
  626. package/src/_modules/ngx-models/_models/control-models/voice/voice-recorder-settings.control-model.ts +37 -37
  627. package/src/_modules/ngx-models/_models/interfaces/button-new-settings.interface.ts +74 -74
  628. package/src/_modules/ngx-models/_models/interfaces/confirm-settings.interface.ts +20 -20
  629. package/src/_modules/ngx-models/_models/interfaces/global-settings.interface.ts +67 -67
  630. package/src/_modules/ngx-models/_models/interfaces/select-options-custom-constructor.interface.ts +40 -40
  631. package/src/_modules/ngx-models/_models/interfaces/storage.service.spec.ts +18 -18
  632. package/src/_modules/ngx-models/_models/interfaces/storage.service.ts +40 -40
  633. package/src/_modules/ngx-models/_models/interfaces/voice/speak-options.interface.ts +19 -19
  634. package/src/_modules/ngx-models/_models/interfaces/voice/speak-result.interface.ts +14 -14
  635. package/src/_modules/ngx-models/_models/interfaces/voice/transcribe-options.interface.ts +14 -14
  636. package/src/_modules/ngx-models/_models/interfaces/voice/transcribe-result.interface.ts +15 -15
  637. package/src/_modules/ngx-models/_models/interfaces/voice/voice-profile.interface.ts +18 -18
  638. package/src/_modules/ngx-models/_models/interfaces/voice/voice-provider-init.interface.ts +21 -21
  639. package/src/_modules/ngx-models/_utils/shared.service.spec.ts +7 -7
  640. package/src/_modules/ngx-models/_utils/shared.service.ts +541 -541
  641. package/src/_modules/ngx-models/index.ts +110 -110
  642. package/src/_modules/pipe/_collections/pip-transforms.const.ts +42 -42
  643. package/src/_modules/pipe/_collections/utils/pip-country-pipe.util.spec.ts +47 -47
  644. package/src/_modules/pipe/_collections/utils/pip-country-pipe.util.ts +41 -41
  645. package/src/_modules/pipe/_collections/utils/pip-custom-pipe.util.spec.ts +39 -39
  646. package/src/_modules/pipe/_collections/utils/pip-custom-pipe.util.ts +30 -30
  647. package/src/_modules/pipe/_collections/utils/pip-division-pipe.util.spec.ts +41 -41
  648. package/src/_modules/pipe/_collections/utils/pip-division-pipe.util.ts +36 -36
  649. package/src/_modules/pipe/_collections/utils/pip-json-pipe.util.spec.ts +62 -62
  650. package/src/_modules/pipe/_collections/utils/pip-json-pipe.util.ts +17 -17
  651. package/src/_modules/pipe/_collections/utils/pip-list-pipe.util.spec.ts +34 -34
  652. package/src/_modules/pipe/_collections/utils/pip-list-pipe.util.ts +25 -25
  653. package/src/_modules/pipe/_collections/utils/pip-multi-pipe-pipe.util.spec.ts +67 -67
  654. package/src/_modules/pipe/_collections/utils/pip-multi-pipe-pipe.util.ts +226 -226
  655. package/src/_modules/pipe/_collections/utils/pip-obj-key-pipe.util.spec.ts +28 -28
  656. package/src/_modules/pipe/_collections/utils/pip-obj-key-pipe.util.ts +21 -21
  657. package/src/_modules/pipe/_collections/utils/pip-range-pipe.util.spec.ts +59 -59
  658. package/src/_modules/pipe/_collections/utils/pip-range-pipe.util.ts +106 -106
  659. package/src/_modules/pipe/_collections/utils/pip-region-pipe.util.spec.ts +31 -31
  660. package/src/_modules/pipe/_collections/utils/pip-region-pipe.util.ts +35 -35
  661. package/src/_modules/pipe/_collections/utils/pip-replace-pipe.util.spec.ts +44 -44
  662. package/src/_modules/pipe/_collections/utils/pip-replace-pipe.util.ts +23 -23
  663. package/src/_modules/pipe/_collections/utils/pip-slider-pipe.util.spec.ts +21 -21
  664. package/src/_modules/pipe/_collections/utils/pip-slider-pipe.util.ts +33 -33
  665. package/src/_modules/pipe/_collections/utils/pip-smart-replace-pipe.util.spec.ts +62 -62
  666. package/src/_modules/pipe/_collections/utils/pip-smart-replace-pipe.util.ts +80 -80
  667. package/src/_modules/pipe/_enums/pip-range-pipe-setting.enum.ts +15 -15
  668. package/src/_modules/pipe/_enums/pip.enum.ts +65 -65
  669. package/src/_modules/pipe/_models/pip-multi-pipe-settings.type.ts +8 -8
  670. package/src/_modules/pipe/_models/pip-transforms.interface.ts +30 -30
  671. package/src/_modules/pipe/index.ts +30 -30
  672. package/src/_modules/security/_collections/stored-secret.util.spec.ts +81 -81
  673. package/src/_modules/security/_collections/stored-secret.util.ts +96 -96
  674. package/src/_modules/security/_models/stored-secret.control-model.ts +55 -55
  675. package/src/_modules/security/index.ts +9 -9
  676. package/src/_modules/socket/_enums/sck-event-key.enum.ts +21 -21
  677. package/src/_modules/socket/_models/sck-client-params.control-model.spec.ts +67 -67
  678. package/src/_modules/socket/_models/sck-client-params.control-model.ts +50 -50
  679. package/src/_modules/socket/_models/sck-socket-event.control-model.spec.ts +89 -66
  680. package/src/_modules/socket/_models/sck-socket-event.control-model.ts +185 -172
  681. package/src/_modules/socket/_services/sck-client.service-base.spec.ts +99 -99
  682. package/src/_modules/socket/_services/sck-client.service-base.ts +353 -353
  683. package/src/_modules/socket/index.ts +14 -14
  684. package/src/_modules/state-machine/_models/state-machine-config.interface.ts +19 -19
  685. package/src/_modules/state-machine/_models/state-machine-event.interface.ts +25 -25
  686. package/src/_modules/state-machine/_models/state-machine.control-model.spec.ts +314 -314
  687. package/src/_modules/state-machine/_models/state-machine.control-model.ts +298 -298
  688. package/src/_modules/state-machine/_models/state-transition-result.interface.ts +53 -53
  689. package/src/_modules/state-machine/_models/state-transition.interface.ts +30 -30
  690. package/src/_modules/state-machine/index.ts +6 -6
  691. package/src/_modules/test/_collections/tst-module-settings.const.ts +67 -67
  692. package/src/_modules/test/index.ts +5 -5
  693. package/src/_modules/usage/_collections/usg-module-settings.const.ts +33 -33
  694. package/src/_modules/usage/_models/usg-action.control-model.spec.ts +27 -27
  695. package/src/_modules/usage/_models/usg-action.control-model.ts +28 -28
  696. package/src/_modules/usage/_models/usg-daily-usage-data.control-model.spec.ts +36 -36
  697. package/src/_modules/usage/_models/usg-daily-usage-data.control-model.ts +35 -35
  698. package/src/_modules/usage/_models/usg-data.control-model.spec.ts +41 -41
  699. package/src/_modules/usage/_models/usg-data.control-model.ts +35 -35
  700. package/src/_modules/usage/_models/usg-session.data-model.spec.ts +97 -97
  701. package/src/_modules/usage/_models/usg-session.data-model.ts +72 -72
  702. package/src/_modules/usage/index.ts +11 -11
  703. package/src/index.ts +104 -104
  704. package/tsconfig.app.json +12 -12
  705. package/tsconfig.json +31 -31
  706. package/tsconfig.test.json +16 -16
  707. package/tslint.json +153 -153
@@ -1,529 +1,529 @@
1
- import { DyFM_Log, DyFM_Metadata, DyFM_SearchQuery, DyFM_SearchResult, second } from '../../../..';
2
- import { BehaviorSubject } from 'rxjs';
3
-
4
- import { DyFM_WritableSignalPlaceholder } from '../../_collections/angular-placeholders';
5
- import { DyFM_SignalDataHandler_Settings } from './data-handler-settings.control-model';
6
-
7
- /* export type DNM_DataHandler<
8
- T extends DyFM_Metadata | DyFM_Metadata[],
9
- Dependency_T extends DyFM_Metadata = any
10
- > = DyFM_SignalDataHandler<T, Dependency_T>; */
11
-
12
- /* export type DNM_DataHandler_Settings<
13
- T extends DyFM_Metadata | DyFM_Metadata[],
14
- Dependency_T extends DyFM_Metadata = any
15
- > = DyFM_SignalDataHandler_Settings<T, Dependency_T>; */
16
-
17
- /**
18
- * DyFM_SignalDataHandlerDataLoadInProgress
19
- * @deprecated
20
- * meg kell nézni hogy mit kell az fsm-ből használni, és mit kell signal-osra alakítani
21
- * ellenőrizni kell, hogy minden funkcionalitás átkerült az fsm-be mielőtt remove-oljuk ezeket
22
- */
23
- export interface DyFM_SignalDataHandlerDataLoadInProgress<T_LoadBy> {
24
- loadBy: T_LoadBy;
25
- progress: Promise<any>;
26
- }
27
-
28
- /**
29
- * DyFM_DataHandlerDataPostProcess
30
- * @deprecated
31
- * meg kell nézni hogy mit kell az fsm-ből használni, és mit kell signal-osra alakítani
32
- * ellenőrizni kell, hogy minden funkcionalitás átkerült az fsm-be mielőtt remove-oljuk ezeket
33
- */
34
- export type DyFM_SignalDataHandlerDataLoadPostProcess<T_LoadBy> = (data: any, loadedBy: T_LoadBy) => Promise<any> | any;
35
-
36
- /**
37
- * DynamoDataHandler is used to create application wide data handling
38
- * used to create subscribeAble data handler
39
- *
40
- * this implements data reload function that uses predefined apiService,
41
- * using previous or given id,
42
- * prevents multiple load calls and triggers data change subscriptions when done
43
- *
44
- * load post processes can be implemented to ensure special conditions
45
- *
46
- * @example
47
- * personalInformationDH = new DynamoDataHandler<PersonalInformation>({
48
- * apiService: this.accountApiService,
49
- * getDataFunctionName: 'getPersonalInformation',
50
- * });
51
- * @deprecated
52
- * meg kell nézni hogy mit kell az fsm-ből használni, és mit kell signal-osra alakítani
53
- * ellenőrizni kell, hogy minden funkcionalitás átkerült az fsm-be mielőtt remove-oljuk ezeket
54
- */
55
- export abstract class DyFM_SignalDataHandler<
56
- T extends DyFM_Metadata | DyFM_Metadata[],
57
- T_Dependency extends DyFM_Metadata = any,
58
- T_LoadBy = string
59
- > {
60
- name: string;
61
-
62
- abstract readonly data_$: DyFM_WritableSignalPlaceholder<T>;
63
- /**
64
- * this is only declared if createObservable is set to true in settings
65
- * (handled by DyNX_DataHandler)
66
- */
67
- protected abstract readonly data_BS: BehaviorSubject<T>;
68
- get data(): T {
69
- return this.data_$();
70
- }
71
-
72
- /**
73
- * last loaded by will work properly only if you use the Dynamo form of "_id" for loading
74
- */
75
- lastLoadedBy: T_LoadBy; // for lists
76
-
77
- /** this will handle the data loading from the api */
78
- protected readonly get: (loadBy?: T_LoadBy) => Promise<any>;
79
- /** this will handle the data setting to the data handler */
80
- protected readonly set: (data: T) => Promise<T>;
81
- /** this will handle the data patching to the data handler */
82
- /* patch: (data: T) => Promise<T>; */
83
-
84
- // TODO
85
- /* directApiSetup: any; */
86
-
87
- /**
88
- * post processes will be called as pipes after data is loaded by get function,
89
- * but before data is set to data handler by data_$.set (after get, before Signal triggers)
90
- */
91
- protected readonly getPostProcesses: DyFM_SignalDataHandlerDataLoadPostProcess<T_LoadBy>[] = [];
92
-
93
- noId?: boolean;
94
-
95
- abstract readonly loaded_$: DyFM_WritableSignalPlaceholder<boolean>;
96
- abstract readonly loadInProgress_$: DyFM_WritableSignalPlaceholder<DyFM_SignalDataHandlerDataLoadInProgress<T_LoadBy> | false>;
97
- waitsOnLoad: {
98
- promise: Promise<void>;
99
- resolve: () => void;
100
- }[] = [];
101
-
102
- protected readonly dependentDataHandlers?: DyFM_SignalDataHandler<any>[] = [];
103
-
104
- loopSafetyCollection: {
105
- at: Date;
106
- stack: string;
107
- }[] = [];
108
- loopSafetyTimeout: number = second;
109
- /** if set to 0, loop safety will be disabled */
110
- loopSafety: number = 10;
111
- debugLog?: boolean;
112
-
113
- /**
114
- * DynamoDataHandler
115
- * @param apiService any service can be used as apiService
116
- * as long as the function, you pass in getDataFunctionName exists,
117
- * uses (or not uses an ID as input) and returns the data as Promise<Type>
118
- * @param getDataFunctionName the function name on the apiService,
119
- * that will be used as get api call
120
- *
121
- * @param successfulReloadCallBack you can create direct callback for successful reloads
122
- * by passing it here
123
- *
124
- * @param getPostPreprocessLoad post processes can be implemented to ensure special conditions on data
125
- *
126
- * @param defaultValue you can set default value that will be used before any load
127
- * @param noId this flag needs to be true, when using api function without id
128
- *
129
- * @example
130
- * personalInformationDH = new DynamoDataHandler<PersonalInformation>({
131
- * apiService: this.accountApiService,
132
- * getDataFunctionName: 'getPersonalInformation',
133
- * });
134
- */
135
- constructor(
136
- set: DyFM_SignalDataHandler_Settings<T, T_Dependency, T_LoadBy>,
137
- /** is in construct?
138
- * so the dependent data handlers are not added here, but in the extended class */
139
- skipDependencyConnections?: boolean
140
- ) {
141
- try {
142
- // TODO: + TRYTOGETTYPE(this.data);
143
- if (!set.name) {
144
- set.name = 'Unnamed DataHandler ' + (+new Date());
145
-
146
- DyFM_Log.warn(
147
- `DYNAMO DH.constructor (${this.name}) WARN: ` +
148
- `\n Name is not set!`,
149
- '\n\n', new Error()
150
- );
151
- }
152
-
153
- this.name = set.name;
154
- this.debugLog = set?.debugLog;
155
-
156
- if (set.loopSafety === undefined) {
157
- set.loopSafety = 10;
158
- } else {
159
- this.loopSafety = set.loopSafety;
160
- }
161
-
162
- if (set.get) {
163
- this.get = set.get;
164
- }
165
-
166
- if (set.set) {
167
- this.set = set.set;
168
- }
169
-
170
- this.noId = !!set.noId;
171
-
172
- if (!skipDependencyConnections) {
173
- if (set.dependencyDataHandler) {
174
- this.addDependencyDataHandler(set.dependencyDataHandler, true);
175
- }
176
-
177
- if (set.dependentDataHandlers) {
178
- this.addDependentDataHandlers(set.dependentDataHandlers, true);
179
- }
180
- }
181
-
182
- if (set.getPostProcess) {
183
- this.getPostProcesses.push(set.getPostProcess);
184
- }
185
- } catch (error) {
186
- DyFM_Log.error(`Error creating DyFM_SignalDataHandler (${set.name}):`, error);
187
- }
188
- }
189
-
190
- addDependencyDataHandler(dependencyDataHandler: DyFM_SignalDataHandler<any>, isInConstruct?: boolean): void {
191
- try {
192
- if (!dependencyDataHandler) {
193
- throw new Error(
194
- `DYNAMO DH.addDependencyDataHandler (${this.name}) ERROR: ` +
195
- `\n Dependent DataHandler is null or undefined! (${this.name})`
196
- );
197
- }
198
-
199
- if (!(dependencyDataHandler instanceof DyFM_SignalDataHandler)) {
200
- throw new Error(
201
- `DYNAMO DH.addDependencyDataHandler (${this.name}) ERROR: ` +
202
- `\n Dependent DataHandler is not instance of DyFM_SignalDataHandler! (${this.name})`
203
- );
204
- }
205
-
206
- dependencyDataHandler.addDependentDataHandlers([ this ], isInConstruct);
207
- } catch (error) {
208
- console.error(
209
- `DYNAMO DH.addDependencyDataHandler (${this.name}) ERROR: ` +
210
- `\n Failed to add dependency data handler! ("${this.name}": "${this.constructor.name}")`,
211
- '\n\n', error,
212
- '\n\n', new Error()
213
- );
214
- }
215
- }
216
-
217
- addDependentDataHandlers(
218
- dependentDataHandlers: DyFM_SignalDataHandler<any, any, any>[],
219
- isInConstruct?: boolean
220
- ): void {
221
- try {
222
- dependentDataHandlers.forEach((dependent_DH: DyFM_SignalDataHandler<any>): void => {
223
- if (!dependent_DH) {
224
- throw new Error(
225
- `DYNAMO DH.addDependentDataHandlers (${this.name}) ERROR: ` +
226
- `\n Dependent DataHandler is null or undefined! (${this.name})`
227
- );
228
- }
229
-
230
- if (!(dependent_DH instanceof DyFM_SignalDataHandler)) {
231
- throw new Error(
232
- `DYNAMO DH.addDependentDataHandlers (${this.name}) ERROR: ` +
233
- `\n Dependent DataHandler is not instance of DyFM_SignalDataHandler! (${this.name})`
234
- );
235
- }
236
-
237
- if (dependent_DH.name === this.name) {
238
- throw new Error(
239
- `DYNAMO DH.addDependentDataHandlers (${this.name}) ERROR: ` +
240
- `\n Dependent DataHandler has the same name as the current DataHandler! (${this.name})`
241
- );
242
- }
243
-
244
- if (!dependent_DH.data_$) {
245
- throw new Error(
246
- `DYNAMO DH.addDependentDataHandlers (${this.name}) ERROR: ` +
247
- `\n Dependent DataHandler has not been set up yet! ` +
248
- `(this: "${this.name}", dependent: "${dependent_DH.name}")` +
249
- `\n Try the opposite direction of dependency!\n\n`
250
- );
251
- }
252
-
253
- if (!dependentDataHandlers.includes(dependent_DH)) {
254
- dependentDataHandlers.push(dependent_DH);
255
- }
256
-
257
- if (this.debugLog) {
258
- this.getPostProcesses.push(async (newData: T): Promise<T> => {
259
- console.log(
260
- `DYNAMO DH.addDependentDataHandlers (${this.name}) DEBUG:` +
261
- `\nDataHandler triggering dependent dataHandler (${dependent_DH.name}) to reload... ` +
262
- `\n(using id: ${newData && newData['_id'] ? newData['_id'] : ''})`
263
- );
264
-
265
- return newData;
266
- });
267
- }
268
-
269
- // Dependency _id változásának követése - csak akkor reload-oljuk a dependenseket, ha a dependency _id ténylegesen változott
270
- // Inicializáljuk az aktuális dependency _id-vel, ha már van adat
271
- /* let previousDependencyId: any = this.data && this.data['_id'] ? this.data['_id'] : undefined; */
272
-
273
- this.getPostProcesses.push(
274
- async (newData: T): Promise<T> => {
275
- if (newData && newData['_id'] && newData['_id'] !== dependent_DH.lastLoadedBy) {
276
- dependent_DH.reloadData(newData['_id']);
277
- } else if (!newData) {
278
- dependent_DH.clear();
279
- }
280
-
281
- /* const currentDependencyId = newData && newData['_id'] ? newData['_id'] : undefined;
282
-
283
- // Csak akkor reload-olunk, ha a dependency _id ténylegesen változott
284
- if (currentDependencyId && currentDependencyId !== previousDependencyId) {
285
- previousDependencyId = currentDependencyId;
286
- if (currentDependencyId !== dependent_DH.lastLoadedBy) {
287
- dependent_DH.reloadData(currentDependencyId);
288
- }
289
- } else if (!newData && previousDependencyId !== undefined) {
290
- previousDependencyId = undefined;
291
- dependent_DH.clear();
292
- } */
293
-
294
- return newData;
295
- }
296
- );
297
-
298
- if (!isInConstruct && this.data) {
299
- dependent_DH.reloadData(this.data['_id']);
300
- }
301
- });
302
- } catch (error) {
303
- DyFM_Log.error(`Error adding dependent data handlers in DyFM_SignalDataHandler (${this.name}):`, error);
304
- }
305
- }
306
-
307
- /**
308
- * reloads data on DynamoDataHandler using predefined apiservice,
309
- * using previous or given id,
310
- * prevents multiple load calls and triggers data change subscriptions when done
311
- * @param loadBy previous or given id (or can be disabled trough setup by: { noId: true })
312
- * @param opts BFR-MASTERPROMPTER-024: `silentMissingId` — a hiányzó-ID ág NE console.error-ozzon
313
- * (a throw MARAD). A `getData()` not-loaded-yet útja használja: friss boot-on a dependency-cascade
314
- * (header token-balance/user-data read) a session-restore ELŐTT ér ide → az ID-hiány ott
315
- * „még-nincs-betöltve", NEM caller-hiba — a korábbi feltétel-nélküli console.error minden
316
- * hard-nav-on 2 hamis error-t tett a konzolra (release-gate-zaj). Direct `reloadData()`-hívásnál
317
- * a hiba-log változatlan (valódi caller-hiba látható marad).
318
- * @returns the data as Promise<T>, finishes when the call ends (throws error on fail)
319
- */
320
- async reloadData(loadBy?: T_LoadBy, opts?: { silentMissingId?: boolean }): Promise<T> {
321
- try {
322
- const loadInProgress = this.loadInProgress_$();
323
- const useLoadBy: T_LoadBy = loadBy ??
324
- (this.data && this.data['_id'] ? this.data['_id'] : this.lastLoadedBy);
325
-
326
- if (!useLoadBy && !this.noId) {
327
- if (!opts?.silentMissingId) {
328
- console.error(
329
- `DynamoERROR (DH.reloadData): Missing ID! (${this.name})`,
330
- this.data,
331
- '\n\n', new Error()
332
- );
333
- }
334
-
335
- throw new Error(`DynamoERROR (DH.reloadData): Missing ID! (${this.name})`);
336
- }
337
-
338
- if (loadInProgress && loadInProgress.loadBy === useLoadBy) {
339
- if (this.debugLog) {
340
- console.log(
341
- `DYNAMO DH.reloadData (${this.name}) DEBUG:` +
342
- `\n DataHandler reloadData... (using id: ${useLoadBy})` +
343
- `\n DataHandler is already loading data...`
344
- );
345
- }
346
-
347
- return this.data;
348
- }
349
-
350
- if (this.debugLog) {
351
- console.log(
352
- `DYNAMO DH.reloadData (${this.name}) DEBUG:` +
353
- `\n DataHandler reloadData... (using id: ${useLoadBy})`
354
- );
355
- }
356
-
357
- const loadProgress = this.doReloadDataBy(useLoadBy);
358
- this.loadInProgress_$.set({
359
- loadBy: useLoadBy,
360
- progress: loadProgress
361
- });
362
- loadProgress.finally(() => {
363
- this.loadInProgress_$.set(false);
364
- });
365
-
366
- return await loadProgress;
367
- } catch (error) {
368
- this.loadInProgress_$.set(false);
369
- this.loaded_$.set(false);
370
-
371
- if (!error?.error?.handled) {
372
- console.error(
373
- `DYNAMO DH.reloadData (${this.name}) ERROR: ` +
374
- `\n reloadData was UNSUCCESSFUL`,
375
- '\n\n', error,
376
- '\n\n', new Error()
377
- );
378
-
379
- if (error?.error?.flag?.includes('DYNAMO')) {
380
- error.error.handled = true;
381
- }
382
- }
383
-
384
- throw error;
385
- }
386
- }
387
-
388
- async getData(): Promise<T> {
389
- if (!this.data) {
390
- const loadProgress = this.loadInProgress_$();
391
- if (loadProgress) {
392
- return await loadProgress.progress;
393
- } else {
394
- // BFR-MASTERPROMPTER-024: a getData not-loaded-yet útján a hiányzó ID „még-nincs-betöltve"
395
- // (boot-race a session-restore-ral), NEM caller-hiba → silent (a throw marad, a hívó catch-eli).
396
- return await this.reloadData(undefined, { silentMissingId: true });
397
- }
398
- } else {
399
- return this.data;
400
- }
401
- }
402
-
403
- protected async doReloadDataBy(loadedBy: T_LoadBy): Promise<T> {
404
- try {
405
- this.lastLoadedBy = loadedBy;
406
-
407
- return await this.processLoadResult(await this.get(loadedBy), loadedBy);
408
- } catch (error) {
409
- this.resolveWaitsOnLoad();
410
- throw error;
411
- }
412
- }
413
-
414
- /**
415
- * Az adat közvetlen frissítése (round-trip nélkül; pl. SPA-login → user_DH.updateData). Alapból CSAK
416
- * a saját `data_$`-t frissíti.
417
- *
418
- * @param reloadDependents opt-in (BFR-MASTERPROMPTER-013): ha true, a dependent DataHandler-eket
419
- * (pl. token-balance) is újratölti az új adat `_id`-jével — a `reloadData` post-process
420
- * dependent-lánca az `updateData` (round-trip-mentes) úton eddig NEM futott → a friss SPA-login után
421
- * a dependent-DH-adatok üresek maradtak hard-reload-ig. DEFAULT false (backward-safe: a vak
422
- * dependent-reload HTTP-flood-ot okozhatna, az updateData szándéka épp a szerver-hívás elkerülése).
423
- */
424
- async updateData(data: T, dontSendUpdate?: boolean, reloadDependents?: boolean): Promise<void> {
425
- if (this.set && !dontSendUpdate) {
426
- this.data_$.set(await this.set(data));
427
- } else {
428
- this.data_$.set(data);
429
- }
430
-
431
- if (reloadDependents) {
432
- // ugyanaz a reload-vagy-clear logika, mint a reloadData dependent-lánc-postprocess-e
433
- this.dependentDataHandlers?.forEach((dependent_DH: DyFM_SignalDataHandler<any>): void => {
434
- if (data && data['_id'] && data['_id'] !== dependent_DH.lastLoadedBy) {
435
- dependent_DH.reloadData(data['_id']);
436
- } else if (!data) {
437
- dependent_DH.clear();
438
- }
439
- });
440
- }
441
- }
442
-
443
- clear(dontClearDependents?: boolean): void {
444
- this.data_$.set(undefined);
445
- this.lastLoadedBy = undefined;
446
- if (!dontClearDependents) {
447
- this.dependentDataHandlers.forEach((ddh: DyFM_SignalDataHandler<any>): void => {
448
- ddh.clear();
449
- });
450
- }
451
- }
452
-
453
- protected async processLoadResult(result: any, loadedBy: T_LoadBy): Promise<T> {
454
- try {
455
- if (this.debugLog) {
456
- console.log(
457
- `DYNAMO DH.processLoadResult (${this.name}) DEBUG:` +
458
- `\n DataHandler processLoadResult... (using id: ${loadedBy})` +
459
- `\n Result:`, result
460
- );
461
- }
462
-
463
- for (const postProcess of this.getPostProcesses) {
464
- if (this.debugLog) {
465
- console.log(
466
- `DYNAMO DH.processLoadResult (${this.name}) DEBUG:` +
467
- `\n Post process:`, postProcess
468
- );
469
- }
470
-
471
- result = await postProcess(result, loadedBy);
472
-
473
- if (!result) {
474
- DyFM_Log.warn(
475
- `DYNAMO DH.processLoadResult (${this.name}) WARN: ` +
476
- `\nPost process returned null or undefined!`,
477
- '\n\n', new Error()
478
- );
479
- }
480
- }
481
- this.data_$.set(result);
482
- this.loaded_$.set(true);
483
- this.resolveWaitsOnLoad();
484
- return result;
485
- } catch (error) {
486
- DyFM_Log.error(`Error in DH.processLoadResult (${this.name}):`, error);
487
- throw error;
488
- }
489
- }
490
-
491
- private resolveWaitsOnLoad(): void {
492
- this.waitsOnLoad.forEach(({ promise, resolve }) => {
493
- resolve();
494
- });
495
- this.waitsOnLoad = [];
496
- }
497
-
498
- /**
499
- * waits for the first load to finish
500
- * @returns a promise that resolves when the first load finishes after this "subscription"
501
- */
502
- waitForLoad(): Promise<void> {
503
- let resolve: (value: void) => void;
504
- const promise = new Promise<void>((r) => { resolve = r; });
505
- this.waitsOnLoad.push({ promise, resolve });
506
- return promise;
507
- }
508
-
509
- protected loopSafetyCheck(): void {
510
- this.loopSafetyCollection = this.loopSafetyCollection.filter(
511
- (item) => item.at.getTime() > new Date().getTime() - this.loopSafetyTimeout
512
- );
513
-
514
- this.loopSafetyCollection.push({
515
- at: new Date(),
516
- stack: new Error().stack,
517
- });
518
-
519
- if (this.loopSafetyCollection.length > this.loopSafety) {
520
- throw new Error(
521
- `DYNAMO DH.loopSafetyCheck (${this.name}) ERROR: ` +
522
- `\n Loop safety triggered! Count: ${this.loopSafetyCollection.length}` +
523
- `\n Timeout: ${this.loopSafetyTimeout} MaxCount: ${this.loopSafety} Stack: ${new Error().stack}`
524
- );
525
- }
526
- }
527
- }
528
-
529
-
1
+ import { DyFM_Log, DyFM_Metadata, DyFM_SearchQuery, DyFM_SearchResult, second } from '../../../..';
2
+ import { BehaviorSubject } from 'rxjs';
3
+
4
+ import { DyFM_WritableSignalPlaceholder } from '../../_collections/angular-placeholders';
5
+ import { DyFM_SignalDataHandler_Settings } from './data-handler-settings.control-model';
6
+
7
+ /* export type DNM_DataHandler<
8
+ T extends DyFM_Metadata | DyFM_Metadata[],
9
+ Dependency_T extends DyFM_Metadata = any
10
+ > = DyFM_SignalDataHandler<T, Dependency_T>; */
11
+
12
+ /* export type DNM_DataHandler_Settings<
13
+ T extends DyFM_Metadata | DyFM_Metadata[],
14
+ Dependency_T extends DyFM_Metadata = any
15
+ > = DyFM_SignalDataHandler_Settings<T, Dependency_T>; */
16
+
17
+ /**
18
+ * DyFM_SignalDataHandlerDataLoadInProgress
19
+ * @deprecated
20
+ * meg kell nézni hogy mit kell az fsm-ből használni, és mit kell signal-osra alakítani
21
+ * ellenőrizni kell, hogy minden funkcionalitás átkerült az fsm-be mielőtt remove-oljuk ezeket
22
+ */
23
+ export interface DyFM_SignalDataHandlerDataLoadInProgress<T_LoadBy> {
24
+ loadBy: T_LoadBy;
25
+ progress: Promise<any>;
26
+ }
27
+
28
+ /**
29
+ * DyFM_DataHandlerDataPostProcess
30
+ * @deprecated
31
+ * meg kell nézni hogy mit kell az fsm-ből használni, és mit kell signal-osra alakítani
32
+ * ellenőrizni kell, hogy minden funkcionalitás átkerült az fsm-be mielőtt remove-oljuk ezeket
33
+ */
34
+ export type DyFM_SignalDataHandlerDataLoadPostProcess<T_LoadBy> = (data: any, loadedBy: T_LoadBy) => Promise<any> | any;
35
+
36
+ /**
37
+ * DynamoDataHandler is used to create application wide data handling
38
+ * used to create subscribeAble data handler
39
+ *
40
+ * this implements data reload function that uses predefined apiService,
41
+ * using previous or given id,
42
+ * prevents multiple load calls and triggers data change subscriptions when done
43
+ *
44
+ * load post processes can be implemented to ensure special conditions
45
+ *
46
+ * @example
47
+ * personalInformationDH = new DynamoDataHandler<PersonalInformation>({
48
+ * apiService: this.accountApiService,
49
+ * getDataFunctionName: 'getPersonalInformation',
50
+ * });
51
+ * @deprecated
52
+ * meg kell nézni hogy mit kell az fsm-ből használni, és mit kell signal-osra alakítani
53
+ * ellenőrizni kell, hogy minden funkcionalitás átkerült az fsm-be mielőtt remove-oljuk ezeket
54
+ */
55
+ export abstract class DyFM_SignalDataHandler<
56
+ T extends DyFM_Metadata | DyFM_Metadata[],
57
+ T_Dependency extends DyFM_Metadata = any,
58
+ T_LoadBy = string
59
+ > {
60
+ name: string;
61
+
62
+ abstract readonly data_$: DyFM_WritableSignalPlaceholder<T>;
63
+ /**
64
+ * this is only declared if createObservable is set to true in settings
65
+ * (handled by DyNX_DataHandler)
66
+ */
67
+ protected abstract readonly data_BS: BehaviorSubject<T>;
68
+ get data(): T {
69
+ return this.data_$();
70
+ }
71
+
72
+ /**
73
+ * last loaded by will work properly only if you use the Dynamo form of "_id" for loading
74
+ */
75
+ lastLoadedBy: T_LoadBy; // for lists
76
+
77
+ /** this will handle the data loading from the api */
78
+ protected readonly get: (loadBy?: T_LoadBy) => Promise<any>;
79
+ /** this will handle the data setting to the data handler */
80
+ protected readonly set: (data: T) => Promise<T>;
81
+ /** this will handle the data patching to the data handler */
82
+ /* patch: (data: T) => Promise<T>; */
83
+
84
+ // TODO
85
+ /* directApiSetup: any; */
86
+
87
+ /**
88
+ * post processes will be called as pipes after data is loaded by get function,
89
+ * but before data is set to data handler by data_$.set (after get, before Signal triggers)
90
+ */
91
+ protected readonly getPostProcesses: DyFM_SignalDataHandlerDataLoadPostProcess<T_LoadBy>[] = [];
92
+
93
+ noId?: boolean;
94
+
95
+ abstract readonly loaded_$: DyFM_WritableSignalPlaceholder<boolean>;
96
+ abstract readonly loadInProgress_$: DyFM_WritableSignalPlaceholder<DyFM_SignalDataHandlerDataLoadInProgress<T_LoadBy> | false>;
97
+ waitsOnLoad: {
98
+ promise: Promise<void>;
99
+ resolve: () => void;
100
+ }[] = [];
101
+
102
+ protected readonly dependentDataHandlers?: DyFM_SignalDataHandler<any>[] = [];
103
+
104
+ loopSafetyCollection: {
105
+ at: Date;
106
+ stack: string;
107
+ }[] = [];
108
+ loopSafetyTimeout: number = second;
109
+ /** if set to 0, loop safety will be disabled */
110
+ loopSafety: number = 10;
111
+ debugLog?: boolean;
112
+
113
+ /**
114
+ * DynamoDataHandler
115
+ * @param apiService any service can be used as apiService
116
+ * as long as the function, you pass in getDataFunctionName exists,
117
+ * uses (or not uses an ID as input) and returns the data as Promise<Type>
118
+ * @param getDataFunctionName the function name on the apiService,
119
+ * that will be used as get api call
120
+ *
121
+ * @param successfulReloadCallBack you can create direct callback for successful reloads
122
+ * by passing it here
123
+ *
124
+ * @param getPostPreprocessLoad post processes can be implemented to ensure special conditions on data
125
+ *
126
+ * @param defaultValue you can set default value that will be used before any load
127
+ * @param noId this flag needs to be true, when using api function without id
128
+ *
129
+ * @example
130
+ * personalInformationDH = new DynamoDataHandler<PersonalInformation>({
131
+ * apiService: this.accountApiService,
132
+ * getDataFunctionName: 'getPersonalInformation',
133
+ * });
134
+ */
135
+ constructor(
136
+ set: DyFM_SignalDataHandler_Settings<T, T_Dependency, T_LoadBy>,
137
+ /** is in construct?
138
+ * so the dependent data handlers are not added here, but in the extended class */
139
+ skipDependencyConnections?: boolean
140
+ ) {
141
+ try {
142
+ // TODO: + TRYTOGETTYPE(this.data);
143
+ if (!set.name) {
144
+ set.name = 'Unnamed DataHandler ' + (+new Date());
145
+
146
+ DyFM_Log.warn(
147
+ `DYNAMO DH.constructor (${this.name}) WARN: ` +
148
+ `\n Name is not set!`,
149
+ '\n\n', new Error()
150
+ );
151
+ }
152
+
153
+ this.name = set.name;
154
+ this.debugLog = set?.debugLog;
155
+
156
+ if (set.loopSafety === undefined) {
157
+ set.loopSafety = 10;
158
+ } else {
159
+ this.loopSafety = set.loopSafety;
160
+ }
161
+
162
+ if (set.get) {
163
+ this.get = set.get;
164
+ }
165
+
166
+ if (set.set) {
167
+ this.set = set.set;
168
+ }
169
+
170
+ this.noId = !!set.noId;
171
+
172
+ if (!skipDependencyConnections) {
173
+ if (set.dependencyDataHandler) {
174
+ this.addDependencyDataHandler(set.dependencyDataHandler, true);
175
+ }
176
+
177
+ if (set.dependentDataHandlers) {
178
+ this.addDependentDataHandlers(set.dependentDataHandlers, true);
179
+ }
180
+ }
181
+
182
+ if (set.getPostProcess) {
183
+ this.getPostProcesses.push(set.getPostProcess);
184
+ }
185
+ } catch (error) {
186
+ DyFM_Log.error(`Error creating DyFM_SignalDataHandler (${set.name}):`, error);
187
+ }
188
+ }
189
+
190
+ addDependencyDataHandler(dependencyDataHandler: DyFM_SignalDataHandler<any>, isInConstruct?: boolean): void {
191
+ try {
192
+ if (!dependencyDataHandler) {
193
+ throw new Error(
194
+ `DYNAMO DH.addDependencyDataHandler (${this.name}) ERROR: ` +
195
+ `\n Dependent DataHandler is null or undefined! (${this.name})`
196
+ );
197
+ }
198
+
199
+ if (!(dependencyDataHandler instanceof DyFM_SignalDataHandler)) {
200
+ throw new Error(
201
+ `DYNAMO DH.addDependencyDataHandler (${this.name}) ERROR: ` +
202
+ `\n Dependent DataHandler is not instance of DyFM_SignalDataHandler! (${this.name})`
203
+ );
204
+ }
205
+
206
+ dependencyDataHandler.addDependentDataHandlers([ this ], isInConstruct);
207
+ } catch (error) {
208
+ console.error(
209
+ `DYNAMO DH.addDependencyDataHandler (${this.name}) ERROR: ` +
210
+ `\n Failed to add dependency data handler! ("${this.name}": "${this.constructor.name}")`,
211
+ '\n\n', error,
212
+ '\n\n', new Error()
213
+ );
214
+ }
215
+ }
216
+
217
+ addDependentDataHandlers(
218
+ dependentDataHandlers: DyFM_SignalDataHandler<any, any, any>[],
219
+ isInConstruct?: boolean
220
+ ): void {
221
+ try {
222
+ dependentDataHandlers.forEach((dependent_DH: DyFM_SignalDataHandler<any>): void => {
223
+ if (!dependent_DH) {
224
+ throw new Error(
225
+ `DYNAMO DH.addDependentDataHandlers (${this.name}) ERROR: ` +
226
+ `\n Dependent DataHandler is null or undefined! (${this.name})`
227
+ );
228
+ }
229
+
230
+ if (!(dependent_DH instanceof DyFM_SignalDataHandler)) {
231
+ throw new Error(
232
+ `DYNAMO DH.addDependentDataHandlers (${this.name}) ERROR: ` +
233
+ `\n Dependent DataHandler is not instance of DyFM_SignalDataHandler! (${this.name})`
234
+ );
235
+ }
236
+
237
+ if (dependent_DH.name === this.name) {
238
+ throw new Error(
239
+ `DYNAMO DH.addDependentDataHandlers (${this.name}) ERROR: ` +
240
+ `\n Dependent DataHandler has the same name as the current DataHandler! (${this.name})`
241
+ );
242
+ }
243
+
244
+ if (!dependent_DH.data_$) {
245
+ throw new Error(
246
+ `DYNAMO DH.addDependentDataHandlers (${this.name}) ERROR: ` +
247
+ `\n Dependent DataHandler has not been set up yet! ` +
248
+ `(this: "${this.name}", dependent: "${dependent_DH.name}")` +
249
+ `\n Try the opposite direction of dependency!\n\n`
250
+ );
251
+ }
252
+
253
+ if (!dependentDataHandlers.includes(dependent_DH)) {
254
+ dependentDataHandlers.push(dependent_DH);
255
+ }
256
+
257
+ if (this.debugLog) {
258
+ this.getPostProcesses.push(async (newData: T): Promise<T> => {
259
+ console.log(
260
+ `DYNAMO DH.addDependentDataHandlers (${this.name}) DEBUG:` +
261
+ `\nDataHandler triggering dependent dataHandler (${dependent_DH.name}) to reload... ` +
262
+ `\n(using id: ${newData && newData['_id'] ? newData['_id'] : ''})`
263
+ );
264
+
265
+ return newData;
266
+ });
267
+ }
268
+
269
+ // Dependency _id változásának követése - csak akkor reload-oljuk a dependenseket, ha a dependency _id ténylegesen változott
270
+ // Inicializáljuk az aktuális dependency _id-vel, ha már van adat
271
+ /* let previousDependencyId: any = this.data && this.data['_id'] ? this.data['_id'] : undefined; */
272
+
273
+ this.getPostProcesses.push(
274
+ async (newData: T): Promise<T> => {
275
+ if (newData && newData['_id'] && newData['_id'] !== dependent_DH.lastLoadedBy) {
276
+ dependent_DH.reloadData(newData['_id']);
277
+ } else if (!newData) {
278
+ dependent_DH.clear();
279
+ }
280
+
281
+ /* const currentDependencyId = newData && newData['_id'] ? newData['_id'] : undefined;
282
+
283
+ // Csak akkor reload-olunk, ha a dependency _id ténylegesen változott
284
+ if (currentDependencyId && currentDependencyId !== previousDependencyId) {
285
+ previousDependencyId = currentDependencyId;
286
+ if (currentDependencyId !== dependent_DH.lastLoadedBy) {
287
+ dependent_DH.reloadData(currentDependencyId);
288
+ }
289
+ } else if (!newData && previousDependencyId !== undefined) {
290
+ previousDependencyId = undefined;
291
+ dependent_DH.clear();
292
+ } */
293
+
294
+ return newData;
295
+ }
296
+ );
297
+
298
+ if (!isInConstruct && this.data) {
299
+ dependent_DH.reloadData(this.data['_id']);
300
+ }
301
+ });
302
+ } catch (error) {
303
+ DyFM_Log.error(`Error adding dependent data handlers in DyFM_SignalDataHandler (${this.name}):`, error);
304
+ }
305
+ }
306
+
307
+ /**
308
+ * reloads data on DynamoDataHandler using predefined apiservice,
309
+ * using previous or given id,
310
+ * prevents multiple load calls and triggers data change subscriptions when done
311
+ * @param loadBy previous or given id (or can be disabled trough setup by: { noId: true })
312
+ * @param opts BFR-MASTERPROMPTER-024: `silentMissingId` — a hiányzó-ID ág NE console.error-ozzon
313
+ * (a throw MARAD). A `getData()` not-loaded-yet útja használja: friss boot-on a dependency-cascade
314
+ * (header token-balance/user-data read) a session-restore ELŐTT ér ide → az ID-hiány ott
315
+ * „még-nincs-betöltve", NEM caller-hiba — a korábbi feltétel-nélküli console.error minden
316
+ * hard-nav-on 2 hamis error-t tett a konzolra (release-gate-zaj). Direct `reloadData()`-hívásnál
317
+ * a hiba-log változatlan (valódi caller-hiba látható marad).
318
+ * @returns the data as Promise<T>, finishes when the call ends (throws error on fail)
319
+ */
320
+ async reloadData(loadBy?: T_LoadBy, opts?: { silentMissingId?: boolean }): Promise<T> {
321
+ try {
322
+ const loadInProgress = this.loadInProgress_$();
323
+ const useLoadBy: T_LoadBy = loadBy ??
324
+ (this.data && this.data['_id'] ? this.data['_id'] : this.lastLoadedBy);
325
+
326
+ if (!useLoadBy && !this.noId) {
327
+ if (!opts?.silentMissingId) {
328
+ console.error(
329
+ `DynamoERROR (DH.reloadData): Missing ID! (${this.name})`,
330
+ this.data,
331
+ '\n\n', new Error()
332
+ );
333
+ }
334
+
335
+ throw new Error(`DynamoERROR (DH.reloadData): Missing ID! (${this.name})`);
336
+ }
337
+
338
+ if (loadInProgress && loadInProgress.loadBy === useLoadBy) {
339
+ if (this.debugLog) {
340
+ console.log(
341
+ `DYNAMO DH.reloadData (${this.name}) DEBUG:` +
342
+ `\n DataHandler reloadData... (using id: ${useLoadBy})` +
343
+ `\n DataHandler is already loading data...`
344
+ );
345
+ }
346
+
347
+ return this.data;
348
+ }
349
+
350
+ if (this.debugLog) {
351
+ console.log(
352
+ `DYNAMO DH.reloadData (${this.name}) DEBUG:` +
353
+ `\n DataHandler reloadData... (using id: ${useLoadBy})`
354
+ );
355
+ }
356
+
357
+ const loadProgress = this.doReloadDataBy(useLoadBy);
358
+ this.loadInProgress_$.set({
359
+ loadBy: useLoadBy,
360
+ progress: loadProgress
361
+ });
362
+ loadProgress.finally(() => {
363
+ this.loadInProgress_$.set(false);
364
+ });
365
+
366
+ return await loadProgress;
367
+ } catch (error) {
368
+ this.loadInProgress_$.set(false);
369
+ this.loaded_$.set(false);
370
+
371
+ if (!error?.error?.handled) {
372
+ console.error(
373
+ `DYNAMO DH.reloadData (${this.name}) ERROR: ` +
374
+ `\n reloadData was UNSUCCESSFUL`,
375
+ '\n\n', error,
376
+ '\n\n', new Error()
377
+ );
378
+
379
+ if (error?.error?.flag?.includes('DYNAMO')) {
380
+ error.error.handled = true;
381
+ }
382
+ }
383
+
384
+ throw error;
385
+ }
386
+ }
387
+
388
+ async getData(): Promise<T> {
389
+ if (!this.data) {
390
+ const loadProgress = this.loadInProgress_$();
391
+ if (loadProgress) {
392
+ return await loadProgress.progress;
393
+ } else {
394
+ // BFR-MASTERPROMPTER-024: a getData not-loaded-yet útján a hiányzó ID „még-nincs-betöltve"
395
+ // (boot-race a session-restore-ral), NEM caller-hiba → silent (a throw marad, a hívó catch-eli).
396
+ return await this.reloadData(undefined, { silentMissingId: true });
397
+ }
398
+ } else {
399
+ return this.data;
400
+ }
401
+ }
402
+
403
+ protected async doReloadDataBy(loadedBy: T_LoadBy): Promise<T> {
404
+ try {
405
+ this.lastLoadedBy = loadedBy;
406
+
407
+ return await this.processLoadResult(await this.get(loadedBy), loadedBy);
408
+ } catch (error) {
409
+ this.resolveWaitsOnLoad();
410
+ throw error;
411
+ }
412
+ }
413
+
414
+ /**
415
+ * Az adat közvetlen frissítése (round-trip nélkül; pl. SPA-login → user_DH.updateData). Alapból CSAK
416
+ * a saját `data_$`-t frissíti.
417
+ *
418
+ * @param reloadDependents opt-in (BFR-MASTERPROMPTER-013): ha true, a dependent DataHandler-eket
419
+ * (pl. token-balance) is újratölti az új adat `_id`-jével — a `reloadData` post-process
420
+ * dependent-lánca az `updateData` (round-trip-mentes) úton eddig NEM futott → a friss SPA-login után
421
+ * a dependent-DH-adatok üresek maradtak hard-reload-ig. DEFAULT false (backward-safe: a vak
422
+ * dependent-reload HTTP-flood-ot okozhatna, az updateData szándéka épp a szerver-hívás elkerülése).
423
+ */
424
+ async updateData(data: T, dontSendUpdate?: boolean, reloadDependents?: boolean): Promise<void> {
425
+ if (this.set && !dontSendUpdate) {
426
+ this.data_$.set(await this.set(data));
427
+ } else {
428
+ this.data_$.set(data);
429
+ }
430
+
431
+ if (reloadDependents) {
432
+ // ugyanaz a reload-vagy-clear logika, mint a reloadData dependent-lánc-postprocess-e
433
+ this.dependentDataHandlers?.forEach((dependent_DH: DyFM_SignalDataHandler<any>): void => {
434
+ if (data && data['_id'] && data['_id'] !== dependent_DH.lastLoadedBy) {
435
+ dependent_DH.reloadData(data['_id']);
436
+ } else if (!data) {
437
+ dependent_DH.clear();
438
+ }
439
+ });
440
+ }
441
+ }
442
+
443
+ clear(dontClearDependents?: boolean): void {
444
+ this.data_$.set(undefined);
445
+ this.lastLoadedBy = undefined;
446
+ if (!dontClearDependents) {
447
+ this.dependentDataHandlers.forEach((ddh: DyFM_SignalDataHandler<any>): void => {
448
+ ddh.clear();
449
+ });
450
+ }
451
+ }
452
+
453
+ protected async processLoadResult(result: any, loadedBy: T_LoadBy): Promise<T> {
454
+ try {
455
+ if (this.debugLog) {
456
+ console.log(
457
+ `DYNAMO DH.processLoadResult (${this.name}) DEBUG:` +
458
+ `\n DataHandler processLoadResult... (using id: ${loadedBy})` +
459
+ `\n Result:`, result
460
+ );
461
+ }
462
+
463
+ for (const postProcess of this.getPostProcesses) {
464
+ if (this.debugLog) {
465
+ console.log(
466
+ `DYNAMO DH.processLoadResult (${this.name}) DEBUG:` +
467
+ `\n Post process:`, postProcess
468
+ );
469
+ }
470
+
471
+ result = await postProcess(result, loadedBy);
472
+
473
+ if (!result) {
474
+ DyFM_Log.warn(
475
+ `DYNAMO DH.processLoadResult (${this.name}) WARN: ` +
476
+ `\nPost process returned null or undefined!`,
477
+ '\n\n', new Error()
478
+ );
479
+ }
480
+ }
481
+ this.data_$.set(result);
482
+ this.loaded_$.set(true);
483
+ this.resolveWaitsOnLoad();
484
+ return result;
485
+ } catch (error) {
486
+ DyFM_Log.error(`Error in DH.processLoadResult (${this.name}):`, error);
487
+ throw error;
488
+ }
489
+ }
490
+
491
+ private resolveWaitsOnLoad(): void {
492
+ this.waitsOnLoad.forEach(({ promise, resolve }) => {
493
+ resolve();
494
+ });
495
+ this.waitsOnLoad = [];
496
+ }
497
+
498
+ /**
499
+ * waits for the first load to finish
500
+ * @returns a promise that resolves when the first load finishes after this "subscription"
501
+ */
502
+ waitForLoad(): Promise<void> {
503
+ let resolve: (value: void) => void;
504
+ const promise = new Promise<void>((r) => { resolve = r; });
505
+ this.waitsOnLoad.push({ promise, resolve });
506
+ return promise;
507
+ }
508
+
509
+ protected loopSafetyCheck(): void {
510
+ this.loopSafetyCollection = this.loopSafetyCollection.filter(
511
+ (item) => item.at.getTime() > new Date().getTime() - this.loopSafetyTimeout
512
+ );
513
+
514
+ this.loopSafetyCollection.push({
515
+ at: new Date(),
516
+ stack: new Error().stack,
517
+ });
518
+
519
+ if (this.loopSafetyCollection.length > this.loopSafety) {
520
+ throw new Error(
521
+ `DYNAMO DH.loopSafetyCheck (${this.name}) ERROR: ` +
522
+ `\n Loop safety triggered! Count: ${this.loopSafetyCollection.length}` +
523
+ `\n Timeout: ${this.loopSafetyTimeout} MaxCount: ${this.loopSafety} Stack: ${new Error().stack}`
524
+ );
525
+ }
526
+ }
527
+ }
528
+
529
+