@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,541 +1,541 @@
1
-
2
- import { DyFM_Select } from '../_models/control-models/select.control-model';
3
- import { DyFM_SelectOptionsCustomConstructor } from '../_models/interfaces/select-options-custom-constructor.interface';
4
-
5
- /**
6
- * Copies properties from `setTo` to `setOn` when a value exists on
7
- * the source and is not already defined on the destination.
8
- */
9
- export function DyFM_setExisitngNonSetValuesOnly<T>(setOn: T, setTo: T): void {
10
- for (const key in setTo) {
11
- if (setTo[key] !== undefined && !setOn[key]) {
12
- setOn[key] = setTo[key];
13
- }
14
- }
15
- }
16
-
17
- /**
18
- *
19
- * @param objA
20
- * @param objB
21
- * @returns
22
- */
23
- /**
24
- * Compares two objects by value using JSON stringification.
25
- */
26
- export function DyFM_sameObjects<T>(objA: T, objB: T): boolean {
27
- return JSON.stringify(objA) === JSON.stringify(objB);
28
- }
29
-
30
- /**
31
- * Checks if `objA` equals each object in `objBs` by value.
32
- */
33
- export function DyFM_sameObjectsMultipleComparasion<T>(objA: T, ...objBs: T[]): boolean {
34
- let same = true;
35
- const strObjA = JSON.stringify(objA);
36
-
37
- for (let i = 0; i < objBs.length && same; i++) {
38
- if (strObjA !== JSON.stringify(objBs[i])) {
39
- same = false;
40
- }
41
- }
42
-
43
- return same;
44
- }
45
-
46
- /**
47
- * Collection of helper utilities used across the library.
48
- */
49
- export class DyFM_SharedService {
50
-
51
- /**
52
- * enum key will be the value, and the value will be the label
53
- * @param enumObject
54
- * @param withNull
55
- * @returns
56
- */
57
- static getSelectOptionsByEnumKeys<EnumObj_T>(
58
- enumObject: EnumObj_T,
59
- withNull?: string
60
- ): DyFM_Select<string>[] {
61
- const selectOptions: DyFM_Select<string>[] = [];
62
- const keys = Object.keys(enumObject);
63
-
64
- if (withNull) {
65
- selectOptions.push(new DyFM_Select<string>(withNull, null));
66
- }
67
- keys.forEach((key): void => {
68
- selectOptions.push(
69
- new DyFM_Select<string>(enumObject[<keyof EnumObj_T>key] as string, key)
70
- );
71
- });
72
-
73
- return selectOptions;
74
- }
75
-
76
- /**
77
- * enum value will be the label AND the value
78
- * @param enumObject
79
- * @param withNull
80
- * @returns
81
- */
82
- static getSelectOptionsByEnumValues<EnumObj_T, Enum_T>(
83
- enumObject: EnumObj_T,
84
- withNull?: string
85
- ): DyFM_Select<Enum_T>[] {
86
- const selectOptions: DyFM_Select<Enum_T>[] = [];
87
- const keys = Object.keys(enumObject);
88
-
89
- if (withNull) {
90
- selectOptions.push(new DyFM_Select<Enum_T>(withNull, null));
91
- }
92
- keys.forEach((key): void => {
93
- selectOptions.push(
94
- new DyFM_Select<Enum_T>(
95
- enumObject[<keyof EnumObj_T>key] as string,
96
- enumObject[<keyof EnumObj_T>key] as Enum_T
97
- )
98
- );
99
- });
100
-
101
- return selectOptions;
102
- }
103
-
104
-
105
- /**
106
- * this object is used by DynamoSharedService.getSelectOptionsByCustomObjectList()
107
- * this will help you create select options from any object list
108
- *
109
- * if withNull is setted, the first element will be a selectoption with the given label and with a null as value
110
- *
111
- * the priority rule is by:
112
- *
113
- * if objList & objListLabelKey setted:
114
- * these will be used,
115
- * if objListValueKey is setted it will be used,
116
- * otherwise the full object will be used as value
117
- * keys can be defined as sub-objects as well like 'main.person.face.eyeColor' or ['main','person','face','eyeColor']
118
- *
119
- * if obj is given:
120
- * objects all key will be label, and every value will be value
121
- *
122
- * if list is given:
123
- * all labels and values will be a string setted in by the string list
124
- *
125
- * @example
126
- * DynamoSharedService.getSelectOptionsByCustomObjectList({
127
- * objListLabelKey: `name`,
128
- * objListValueKey: '_id',
129
- * objList: customObjectList,
130
- * withNull: true
131
- * })
132
- */
133
- static getSelectOptionsByCustomObjectList<Select_T, Constructor_T>(
134
- params: DyFM_SelectOptionsCustomConstructor<Constructor_T>
135
- ): DyFM_Select<Select_T>[] {
136
- if (params.objListLabelKey?.includes('.')) {
137
- params.objListLabelKey = (params.objListLabelKey as string).split('.');
138
- }
139
-
140
- if (params.objListLabelKey?.includes('.')) {
141
- params.objListValueKey = (params.objListValueKey as string).split('.');
142
- }
143
- const labelNested = Array.isArray(params.objListLabelKey);
144
- const valueNested = Array.isArray(params.objListValueKey);
145
-
146
- if (params.objList && (labelNested || valueNested)) {
147
- if (!labelNested) {
148
- params.objListLabelKey = [ params.objListLabelKey as string ];
149
- }
150
-
151
- if (!valueNested) {
152
- params.objListValueKey = [ params.objListValueKey as string ];
153
- }
154
- params.objList = this.mapObjList(
155
- params.objList,
156
- [ params.objListLabelKey, params.objListValueKey ] as string[][]
157
- );
158
- params.objListLabelKey = params.objListLabelKey[params.objListLabelKey.length - 1];
159
- params.objListValueKey = params.objListValueKey[params.objListValueKey.length - 1];
160
- console.log('obj reduced', params);
161
- }
162
-
163
- const dropdown: DyFM_Select<Select_T>[] = [];
164
-
165
- if (params.withNull) {
166
- dropdown.push(new DyFM_Select<Select_T>(params.withNull, null));
167
- }
168
-
169
- if (params.objList && params.objListLabelKey) {
170
- if (params.objListValueKey) {
171
- params.objList.forEach((item): void => {
172
- if (item[params.objListLabelKey as string] && item[params.objListValueKey as string]) {
173
- dropdown.push(
174
- new DyFM_Select<Select_T>(
175
- item[params.objListLabelKey as string],
176
- item[params.objListValueKey as string] as Select_T
177
- )
178
- );
179
- } else {
180
- console.error(
181
- `DYNAMO ERROR: `,
182
- `\n missing property! '${params.objListLabelKey}' OR `,
183
- `'${params.objListValueKey}' from`, item,
184
- );
185
- }
186
- });
187
-
188
- return dropdown;
189
- } else {
190
- params.objList.forEach((item): void => {
191
- if (item[params.objListLabelKey as string]) {
192
- dropdown.push(new DyFM_Select<any>(item[params.objListLabelKey as string], item));
193
- } else {
194
- console.error(
195
- 'DYNAMO ERROR: ',
196
- '\n missing property!',
197
- params.objListLabelKey,
198
- item,
199
- );
200
- }
201
- });
202
-
203
- return dropdown;
204
- }
205
- } else if (params.obj) {
206
- // tslint:disable-next-line: forin
207
- for (const key in params.obj) {
208
- dropdown.push(
209
- new DyFM_Select<Select_T>(key, params.obj[<keyof Constructor_T>key] as Select_T)
210
- );
211
- }
212
-
213
- return dropdown;
214
- } else if (params.list) {
215
- params.list.forEach((item: string): void => {
216
- dropdown.push(new DyFM_Select<Select_T>(item, item as Select_T));
217
- });
218
-
219
- return dropdown;
220
- } else {
221
- console.error(
222
- 'DYNAMO ERROR: ',
223
- '\n no list or object was provided!',
224
- );
225
-
226
- return dropdown;
227
- }
228
- }
229
-
230
- /**
231
- * returns remapped object list by path list
232
- * @param objList object list to map
233
- * @param paths string list of path etc.:
234
- * [ [ 'first', 'sub', 'label' ], [ 'first', 'dif', 'name' ]] will be...
235
- * from
236
- * {
237
- * first: {
238
- * sub: {
239
- * label: 'vlmi'
240
- * },
241
- * dif: {
242
- * name: 'asd'
243
- * }
244
- * }
245
- * }[]
246
- * to
247
- * { label: 'vlmi', name: 'asd' }[]
248
- * @returns remapped object list (the final obj will use the deepest keys)
249
- */
250
- static mapObjList<SourceObj_T, ResultObj_T>(
251
- objList: SourceObj_T[],
252
- paths: string[][]
253
- ): ResultObj_T[] {
254
- const resultObjList: ResultObj_T[] = [];
255
-
256
- objList.forEach((obj: SourceObj_T): void => {
257
- const newObj: ResultObj_T = {} as ResultObj_T;
258
-
259
- paths.forEach((path: string[]): void => {
260
- newObj[<keyof ResultObj_T>path[path.length - 1]] = this.getNestedData(obj, path);
261
- });
262
-
263
- /* return newObj; */
264
- });
265
-
266
- return resultObjList;
267
- }
268
- /* OLD
269
- static mapObjList(objList: object[], paths: string[][]): object[] {
270
- let newObjList = [ ...objList ];
271
-
272
- newObjList = newObjList.map(obj => {
273
- const newObj = {};
274
-
275
- paths.forEach((path: string[]) => {
276
- newObj[path[path.length - 1]] = this.getNestedData(obj, path);
277
- });
278
-
279
- return newObj;
280
- });
281
-
282
- return newObjList;
283
- } */
284
-
285
- /**
286
- * returns nested value from object
287
- * @param parentObj data source object
288
- * @param nestedDataKeys path of value as string list
289
- * etc.: ['nestLvl1', 'nestLvl2', 'nestLvl3'] as parentObj.nestLvl1.nestLvl2.nestLvl3
290
- * @returns data from object by path
291
- */
292
- static getNestedData(parentObj: any, nestedDataKeys: string[]): any {
293
- if (!parentObj) {
294
- console.error(
295
- 'DYNAMO ERROR: ',
296
- `\nDyFM_SharedService.getNestedData failed; missing parent object`,
297
- `\nfor: ${nestedDataKeys[0]}`,
298
- );
299
- }
300
-
301
- let data = parentObj;
302
-
303
- for(const element of nestedDataKeys) {
304
- if (data) {
305
- data = data[element];
306
- } else {
307
- console.error(
308
- 'DYNAMO ERROR: ',
309
- `\nDyFM_SharedService.getNestedData failed; missing parent for: ${element}`,
310
- `\nfromKeys: ${nestedDataKeys}`,
311
- );
312
- break;
313
- }
314
- }
315
- /* nestedDataKeys.forEach((dk: string): void => {
316
- if (data) {
317
- data = data[dk];
318
- } else {
319
- console.error(
320
- 'DYNAMO ERROR: ' +
321
- `\nDyFM_SharedService.getNestedData failed; missing parent for: ${dk}`,
322
- `\nfromKeys: ${nestedDataKeys[0]}`,
323
- '\n\n', new Error()
324
- );
325
- }
326
- }); */
327
-
328
- return data;
329
- }
330
- /* OLD
331
- static getNestedData(parentObj: any, nestedDataKeys: string[]): any {
332
- let data = { ...parentObj };
333
-
334
- nestedDataKeys.forEach((dk: string) => {
335
- if (data) {
336
- data = data[dk];
337
- }
338
- });
339
-
340
- return data;
341
- } */
342
-
343
- /**
344
- * recursive function that nests data
345
- * @param newData the object that that is needed to be updated
346
- * @param nestKeys the path where the data should be updated
347
- * @param dataToSet the actual value that will be setted
348
- * @returns modified data
349
- */
350
- static nestData<T>(
351
- parentObj: T,
352
- nestKeys: string[],
353
- dataToSet: any,
354
- createMissingObjs?: boolean
355
- ): void {
356
- if (!parentObj) {
357
- if (createMissingObjs) {
358
- parentObj = {} as T;
359
- } else {
360
- console.error(
361
- 'DYNAMO ERROR: ',
362
- `\nDyFM_SharedService.nestData failed; missing parent object for: ${nestKeys[0]}`,
363
- `\nturn on createMissingObjs to create missing objects`,
364
- );
365
- }
366
- }
367
-
368
- if (nestKeys.length > 1) {
369
- const keys = [ ...nestKeys ];
370
- const nextNestKey = keys.shift();
371
-
372
- this.nestData(parentObj[<keyof T>nextNestKey], keys, dataToSet, createMissingObjs);
373
- } else {
374
- parentObj[<keyof T>nestKeys[0]] = dataToSet;
375
- }
376
- }
377
- /* OLD
378
- static nestData<T>(parentObj: T, nestKeys: string[], dataToSet: any): T {
379
- const newData = DyFM_Object.clone(parentObj); // {...parentObj};
380
-
381
- if (nestKeys.length > 1) {
382
- const keys = [ ...nestKeys ];
383
- const nextNestKey = keys.shift();
384
-
385
- newData[nextNestKey] = this.nestData(newData[nextNestKey], keys, dataToSet);
386
- } else {
387
- newData[nestKeys[0]] = dataToSet;
388
- }
389
-
390
- return newData;
391
- } */
392
-
393
- /**
394
- * recursive function that adds to nested data
395
- * @param newData the object that that is needed to be updated
396
- * @param nestKeys the path where the data should be updated
397
- * @param dataToAdd the actual value that will be setted
398
- * @returns modified data
399
- */
400
- static addToNestedData<T>(
401
- parentObj: T,
402
- nestKeys: string[],
403
- dataToAdd: any,
404
- createMissingObjs?: boolean
405
- ): void {
406
- if (!parentObj) {
407
- if (createMissingObjs) {
408
- parentObj = {} as T;
409
- } else {
410
- console.error(
411
- 'DYNAMO ERROR: ',
412
- `\nDyFM_SharedService.addToNestedData failed; missing parent object for: ${nestKeys[0]}`,
413
- `\nturn on createMissingObjs to create missing objects`,
414
- );
415
- }
416
- }
417
-
418
- if (nestKeys.length > 1) {
419
- const keys = [ ...nestKeys ];
420
- const nextNestKey = keys.shift();
421
-
422
- this.addToNestedData(parentObj[<keyof T>nextNestKey], keys, dataToAdd);
423
- } else {
424
- parentObj[<keyof T>(nestKeys[0])] += dataToAdd;
425
- }
426
- }
427
-
428
- // TODO
429
- /*
430
- static addToNestedData<T>(parentObj: T, nestKeys: string[], dataToAdd: any): T {
431
- const newData: T = DyFM_Object.clone(parentObj); // {...parentObj};
432
-
433
- if (nestKeys.length > 1) {
434
- const keys = [ ...nestKeys ];
435
- const nextNestKey = keys.shift();
436
-
437
- newData[<keyof T>nextNestKey] = this.addToNestedData(newData[<keyof T>nextNestKey], keys, dataToAdd);
438
- } else {
439
- newData[<keyof T>(nestKeys[0])] += dataToAdd;
440
- }
441
-
442
- return newData;
443
- } */
444
-
445
- /**
446
- * recursive function that pushes to nested data
447
- * @param newData the object that that is needed to be updated
448
- * @param nestKeys the path where the data should be updated
449
- * @param dataToPush the actual value that will be setted
450
- * @returns modified data
451
- */
452
- static pushToNestedData<Obj_T, Data_T>(
453
- parentObj: Obj_T,
454
- nestKeys: string[],
455
- dataToPush: Data_T
456
- ): void {
457
- if (1 < nestKeys.length) {
458
- const keys = [ ...nestKeys ];
459
- const nextNestKey = keys.shift();
460
-
461
- this.pushToNestedData(parentObj[nextNestKey], keys, dataToPush);
462
- } else {
463
- if (Array.isArray(parentObj[nestKeys[0]])) {
464
- parentObj[nestKeys[0]].push(dataToPush);
465
- } else {
466
- parentObj[nestKeys[0]] = [ dataToPush ];
467
- }
468
- }
469
- }
470
-
471
- // TODO
472
- /*
473
- static pushToNestedData(parentObj: any, nestKeys: string[], dataToPush: any): any {
474
- const newData = { ...parentObj };
475
-
476
- if (1 < nestKeys.length) {
477
- const keys = [ ...nestKeys ];
478
- const nextNestKey = keys.shift();
479
-
480
- newData[nextNestKey] = this.pushToNestedData(newData[nextNestKey], keys, dataToPush);
481
- } else {
482
- if (Array.isArray(newData[nestKeys[0]])) {
483
- newData[nestKeys[0]].push(dataToPush);
484
- } else {
485
- newData[nestKeys[0]] = [dataToPush];
486
- }
487
- }
488
-
489
- return newData;
490
- } */
491
-
492
- /**
493
- * recursive function that nests data on recursive data structure etc.: xData: { ..., 'nestedListKey': xData[] }
494
- * @param newData the object that that is needed to be updated
495
- * @param nestedListKey the location of nested dataList
496
- * @param nestIndexes path to the subject ect.: xData.listKey[1].listKey[4].listKey[0] will be [1, 4, 0]
497
- * @param dataToSet the actual value that will be setted on location
498
- * @returns modified data
499
- */
500
- static nestRecursiveListedData<T, List_T>(
501
- parentObj: T,
502
- nestedListKey: string,
503
- nestIndexes: number[],
504
- dataToSet: List_T
505
- ): void {
506
- const nestedList: List_T[] = parentObj[<keyof T>nestedListKey] as List_T[];
507
-
508
- if (1 < nestIndexes.length) {
509
- const indexes: number[] = [ ...nestIndexes ];
510
- const nextLevelKey: number = indexes.shift();
511
-
512
- this.nestRecursiveListedData(
513
- nestedList[nextLevelKey], nestedListKey, indexes, dataToSet
514
- );
515
- } else {
516
- nestedList[nestIndexes[0]] = dataToSet;
517
- }
518
- }
519
- /* OLD
520
- static nestRecursiveListedData<T>(
521
- parentObj: T,
522
- nestedListKey: string,
523
- nestIndexes: number[],
524
- dataToSet: unknown
525
- ): T {
526
- const newData: T = { ...parentObj };
527
-
528
- if (1 < nestIndexes.length) {
529
- const indexes: number[] = [ ...nestIndexes ];
530
- const nextLevelKey: number = indexes.shift();
531
-
532
- newData[nestedListKey][nextLevelKey] = this.nestRecursiveListedData(
533
- newData[nestedListKey][nextLevelKey], nestedListKey, indexes, dataToSet
534
- );
535
- } else {
536
- newData[nestedListKey][nestIndexes[0]] = dataToSet;
537
- }
538
-
539
- return newData;
540
- } */
541
- }
1
+
2
+ import { DyFM_Select } from '../_models/control-models/select.control-model';
3
+ import { DyFM_SelectOptionsCustomConstructor } from '../_models/interfaces/select-options-custom-constructor.interface';
4
+
5
+ /**
6
+ * Copies properties from `setTo` to `setOn` when a value exists on
7
+ * the source and is not already defined on the destination.
8
+ */
9
+ export function DyFM_setExisitngNonSetValuesOnly<T>(setOn: T, setTo: T): void {
10
+ for (const key in setTo) {
11
+ if (setTo[key] !== undefined && !setOn[key]) {
12
+ setOn[key] = setTo[key];
13
+ }
14
+ }
15
+ }
16
+
17
+ /**
18
+ *
19
+ * @param objA
20
+ * @param objB
21
+ * @returns
22
+ */
23
+ /**
24
+ * Compares two objects by value using JSON stringification.
25
+ */
26
+ export function DyFM_sameObjects<T>(objA: T, objB: T): boolean {
27
+ return JSON.stringify(objA) === JSON.stringify(objB);
28
+ }
29
+
30
+ /**
31
+ * Checks if `objA` equals each object in `objBs` by value.
32
+ */
33
+ export function DyFM_sameObjectsMultipleComparasion<T>(objA: T, ...objBs: T[]): boolean {
34
+ let same = true;
35
+ const strObjA = JSON.stringify(objA);
36
+
37
+ for (let i = 0; i < objBs.length && same; i++) {
38
+ if (strObjA !== JSON.stringify(objBs[i])) {
39
+ same = false;
40
+ }
41
+ }
42
+
43
+ return same;
44
+ }
45
+
46
+ /**
47
+ * Collection of helper utilities used across the library.
48
+ */
49
+ export class DyFM_SharedService {
50
+
51
+ /**
52
+ * enum key will be the value, and the value will be the label
53
+ * @param enumObject
54
+ * @param withNull
55
+ * @returns
56
+ */
57
+ static getSelectOptionsByEnumKeys<EnumObj_T>(
58
+ enumObject: EnumObj_T,
59
+ withNull?: string
60
+ ): DyFM_Select<string>[] {
61
+ const selectOptions: DyFM_Select<string>[] = [];
62
+ const keys = Object.keys(enumObject);
63
+
64
+ if (withNull) {
65
+ selectOptions.push(new DyFM_Select<string>(withNull, null));
66
+ }
67
+ keys.forEach((key): void => {
68
+ selectOptions.push(
69
+ new DyFM_Select<string>(enumObject[<keyof EnumObj_T>key] as string, key)
70
+ );
71
+ });
72
+
73
+ return selectOptions;
74
+ }
75
+
76
+ /**
77
+ * enum value will be the label AND the value
78
+ * @param enumObject
79
+ * @param withNull
80
+ * @returns
81
+ */
82
+ static getSelectOptionsByEnumValues<EnumObj_T, Enum_T>(
83
+ enumObject: EnumObj_T,
84
+ withNull?: string
85
+ ): DyFM_Select<Enum_T>[] {
86
+ const selectOptions: DyFM_Select<Enum_T>[] = [];
87
+ const keys = Object.keys(enumObject);
88
+
89
+ if (withNull) {
90
+ selectOptions.push(new DyFM_Select<Enum_T>(withNull, null));
91
+ }
92
+ keys.forEach((key): void => {
93
+ selectOptions.push(
94
+ new DyFM_Select<Enum_T>(
95
+ enumObject[<keyof EnumObj_T>key] as string,
96
+ enumObject[<keyof EnumObj_T>key] as Enum_T
97
+ )
98
+ );
99
+ });
100
+
101
+ return selectOptions;
102
+ }
103
+
104
+
105
+ /**
106
+ * this object is used by DynamoSharedService.getSelectOptionsByCustomObjectList()
107
+ * this will help you create select options from any object list
108
+ *
109
+ * if withNull is setted, the first element will be a selectoption with the given label and with a null as value
110
+ *
111
+ * the priority rule is by:
112
+ *
113
+ * if objList & objListLabelKey setted:
114
+ * these will be used,
115
+ * if objListValueKey is setted it will be used,
116
+ * otherwise the full object will be used as value
117
+ * keys can be defined as sub-objects as well like 'main.person.face.eyeColor' or ['main','person','face','eyeColor']
118
+ *
119
+ * if obj is given:
120
+ * objects all key will be label, and every value will be value
121
+ *
122
+ * if list is given:
123
+ * all labels and values will be a string setted in by the string list
124
+ *
125
+ * @example
126
+ * DynamoSharedService.getSelectOptionsByCustomObjectList({
127
+ * objListLabelKey: `name`,
128
+ * objListValueKey: '_id',
129
+ * objList: customObjectList,
130
+ * withNull: true
131
+ * })
132
+ */
133
+ static getSelectOptionsByCustomObjectList<Select_T, Constructor_T>(
134
+ params: DyFM_SelectOptionsCustomConstructor<Constructor_T>
135
+ ): DyFM_Select<Select_T>[] {
136
+ if (params.objListLabelKey?.includes('.')) {
137
+ params.objListLabelKey = (params.objListLabelKey as string).split('.');
138
+ }
139
+
140
+ if (params.objListLabelKey?.includes('.')) {
141
+ params.objListValueKey = (params.objListValueKey as string).split('.');
142
+ }
143
+ const labelNested = Array.isArray(params.objListLabelKey);
144
+ const valueNested = Array.isArray(params.objListValueKey);
145
+
146
+ if (params.objList && (labelNested || valueNested)) {
147
+ if (!labelNested) {
148
+ params.objListLabelKey = [ params.objListLabelKey as string ];
149
+ }
150
+
151
+ if (!valueNested) {
152
+ params.objListValueKey = [ params.objListValueKey as string ];
153
+ }
154
+ params.objList = this.mapObjList(
155
+ params.objList,
156
+ [ params.objListLabelKey, params.objListValueKey ] as string[][]
157
+ );
158
+ params.objListLabelKey = params.objListLabelKey[params.objListLabelKey.length - 1];
159
+ params.objListValueKey = params.objListValueKey[params.objListValueKey.length - 1];
160
+ console.log('obj reduced', params);
161
+ }
162
+
163
+ const dropdown: DyFM_Select<Select_T>[] = [];
164
+
165
+ if (params.withNull) {
166
+ dropdown.push(new DyFM_Select<Select_T>(params.withNull, null));
167
+ }
168
+
169
+ if (params.objList && params.objListLabelKey) {
170
+ if (params.objListValueKey) {
171
+ params.objList.forEach((item): void => {
172
+ if (item[params.objListLabelKey as string] && item[params.objListValueKey as string]) {
173
+ dropdown.push(
174
+ new DyFM_Select<Select_T>(
175
+ item[params.objListLabelKey as string],
176
+ item[params.objListValueKey as string] as Select_T
177
+ )
178
+ );
179
+ } else {
180
+ console.error(
181
+ `DYNAMO ERROR: `,
182
+ `\n missing property! '${params.objListLabelKey}' OR `,
183
+ `'${params.objListValueKey}' from`, item,
184
+ );
185
+ }
186
+ });
187
+
188
+ return dropdown;
189
+ } else {
190
+ params.objList.forEach((item): void => {
191
+ if (item[params.objListLabelKey as string]) {
192
+ dropdown.push(new DyFM_Select<any>(item[params.objListLabelKey as string], item));
193
+ } else {
194
+ console.error(
195
+ 'DYNAMO ERROR: ',
196
+ '\n missing property!',
197
+ params.objListLabelKey,
198
+ item,
199
+ );
200
+ }
201
+ });
202
+
203
+ return dropdown;
204
+ }
205
+ } else if (params.obj) {
206
+ // tslint:disable-next-line: forin
207
+ for (const key in params.obj) {
208
+ dropdown.push(
209
+ new DyFM_Select<Select_T>(key, params.obj[<keyof Constructor_T>key] as Select_T)
210
+ );
211
+ }
212
+
213
+ return dropdown;
214
+ } else if (params.list) {
215
+ params.list.forEach((item: string): void => {
216
+ dropdown.push(new DyFM_Select<Select_T>(item, item as Select_T));
217
+ });
218
+
219
+ return dropdown;
220
+ } else {
221
+ console.error(
222
+ 'DYNAMO ERROR: ',
223
+ '\n no list or object was provided!',
224
+ );
225
+
226
+ return dropdown;
227
+ }
228
+ }
229
+
230
+ /**
231
+ * returns remapped object list by path list
232
+ * @param objList object list to map
233
+ * @param paths string list of path etc.:
234
+ * [ [ 'first', 'sub', 'label' ], [ 'first', 'dif', 'name' ]] will be...
235
+ * from
236
+ * {
237
+ * first: {
238
+ * sub: {
239
+ * label: 'vlmi'
240
+ * },
241
+ * dif: {
242
+ * name: 'asd'
243
+ * }
244
+ * }
245
+ * }[]
246
+ * to
247
+ * { label: 'vlmi', name: 'asd' }[]
248
+ * @returns remapped object list (the final obj will use the deepest keys)
249
+ */
250
+ static mapObjList<SourceObj_T, ResultObj_T>(
251
+ objList: SourceObj_T[],
252
+ paths: string[][]
253
+ ): ResultObj_T[] {
254
+ const resultObjList: ResultObj_T[] = [];
255
+
256
+ objList.forEach((obj: SourceObj_T): void => {
257
+ const newObj: ResultObj_T = {} as ResultObj_T;
258
+
259
+ paths.forEach((path: string[]): void => {
260
+ newObj[<keyof ResultObj_T>path[path.length - 1]] = this.getNestedData(obj, path);
261
+ });
262
+
263
+ /* return newObj; */
264
+ });
265
+
266
+ return resultObjList;
267
+ }
268
+ /* OLD
269
+ static mapObjList(objList: object[], paths: string[][]): object[] {
270
+ let newObjList = [ ...objList ];
271
+
272
+ newObjList = newObjList.map(obj => {
273
+ const newObj = {};
274
+
275
+ paths.forEach((path: string[]) => {
276
+ newObj[path[path.length - 1]] = this.getNestedData(obj, path);
277
+ });
278
+
279
+ return newObj;
280
+ });
281
+
282
+ return newObjList;
283
+ } */
284
+
285
+ /**
286
+ * returns nested value from object
287
+ * @param parentObj data source object
288
+ * @param nestedDataKeys path of value as string list
289
+ * etc.: ['nestLvl1', 'nestLvl2', 'nestLvl3'] as parentObj.nestLvl1.nestLvl2.nestLvl3
290
+ * @returns data from object by path
291
+ */
292
+ static getNestedData(parentObj: any, nestedDataKeys: string[]): any {
293
+ if (!parentObj) {
294
+ console.error(
295
+ 'DYNAMO ERROR: ',
296
+ `\nDyFM_SharedService.getNestedData failed; missing parent object`,
297
+ `\nfor: ${nestedDataKeys[0]}`,
298
+ );
299
+ }
300
+
301
+ let data = parentObj;
302
+
303
+ for(const element of nestedDataKeys) {
304
+ if (data) {
305
+ data = data[element];
306
+ } else {
307
+ console.error(
308
+ 'DYNAMO ERROR: ',
309
+ `\nDyFM_SharedService.getNestedData failed; missing parent for: ${element}`,
310
+ `\nfromKeys: ${nestedDataKeys}`,
311
+ );
312
+ break;
313
+ }
314
+ }
315
+ /* nestedDataKeys.forEach((dk: string): void => {
316
+ if (data) {
317
+ data = data[dk];
318
+ } else {
319
+ console.error(
320
+ 'DYNAMO ERROR: ' +
321
+ `\nDyFM_SharedService.getNestedData failed; missing parent for: ${dk}`,
322
+ `\nfromKeys: ${nestedDataKeys[0]}`,
323
+ '\n\n', new Error()
324
+ );
325
+ }
326
+ }); */
327
+
328
+ return data;
329
+ }
330
+ /* OLD
331
+ static getNestedData(parentObj: any, nestedDataKeys: string[]): any {
332
+ let data = { ...parentObj };
333
+
334
+ nestedDataKeys.forEach((dk: string) => {
335
+ if (data) {
336
+ data = data[dk];
337
+ }
338
+ });
339
+
340
+ return data;
341
+ } */
342
+
343
+ /**
344
+ * recursive function that nests data
345
+ * @param newData the object that that is needed to be updated
346
+ * @param nestKeys the path where the data should be updated
347
+ * @param dataToSet the actual value that will be setted
348
+ * @returns modified data
349
+ */
350
+ static nestData<T>(
351
+ parentObj: T,
352
+ nestKeys: string[],
353
+ dataToSet: any,
354
+ createMissingObjs?: boolean
355
+ ): void {
356
+ if (!parentObj) {
357
+ if (createMissingObjs) {
358
+ parentObj = {} as T;
359
+ } else {
360
+ console.error(
361
+ 'DYNAMO ERROR: ',
362
+ `\nDyFM_SharedService.nestData failed; missing parent object for: ${nestKeys[0]}`,
363
+ `\nturn on createMissingObjs to create missing objects`,
364
+ );
365
+ }
366
+ }
367
+
368
+ if (nestKeys.length > 1) {
369
+ const keys = [ ...nestKeys ];
370
+ const nextNestKey = keys.shift();
371
+
372
+ this.nestData(parentObj[<keyof T>nextNestKey], keys, dataToSet, createMissingObjs);
373
+ } else {
374
+ parentObj[<keyof T>nestKeys[0]] = dataToSet;
375
+ }
376
+ }
377
+ /* OLD
378
+ static nestData<T>(parentObj: T, nestKeys: string[], dataToSet: any): T {
379
+ const newData = DyFM_Object.clone(parentObj); // {...parentObj};
380
+
381
+ if (nestKeys.length > 1) {
382
+ const keys = [ ...nestKeys ];
383
+ const nextNestKey = keys.shift();
384
+
385
+ newData[nextNestKey] = this.nestData(newData[nextNestKey], keys, dataToSet);
386
+ } else {
387
+ newData[nestKeys[0]] = dataToSet;
388
+ }
389
+
390
+ return newData;
391
+ } */
392
+
393
+ /**
394
+ * recursive function that adds to nested data
395
+ * @param newData the object that that is needed to be updated
396
+ * @param nestKeys the path where the data should be updated
397
+ * @param dataToAdd the actual value that will be setted
398
+ * @returns modified data
399
+ */
400
+ static addToNestedData<T>(
401
+ parentObj: T,
402
+ nestKeys: string[],
403
+ dataToAdd: any,
404
+ createMissingObjs?: boolean
405
+ ): void {
406
+ if (!parentObj) {
407
+ if (createMissingObjs) {
408
+ parentObj = {} as T;
409
+ } else {
410
+ console.error(
411
+ 'DYNAMO ERROR: ',
412
+ `\nDyFM_SharedService.addToNestedData failed; missing parent object for: ${nestKeys[0]}`,
413
+ `\nturn on createMissingObjs to create missing objects`,
414
+ );
415
+ }
416
+ }
417
+
418
+ if (nestKeys.length > 1) {
419
+ const keys = [ ...nestKeys ];
420
+ const nextNestKey = keys.shift();
421
+
422
+ this.addToNestedData(parentObj[<keyof T>nextNestKey], keys, dataToAdd);
423
+ } else {
424
+ parentObj[<keyof T>(nestKeys[0])] += dataToAdd;
425
+ }
426
+ }
427
+
428
+ // TODO
429
+ /*
430
+ static addToNestedData<T>(parentObj: T, nestKeys: string[], dataToAdd: any): T {
431
+ const newData: T = DyFM_Object.clone(parentObj); // {...parentObj};
432
+
433
+ if (nestKeys.length > 1) {
434
+ const keys = [ ...nestKeys ];
435
+ const nextNestKey = keys.shift();
436
+
437
+ newData[<keyof T>nextNestKey] = this.addToNestedData(newData[<keyof T>nextNestKey], keys, dataToAdd);
438
+ } else {
439
+ newData[<keyof T>(nestKeys[0])] += dataToAdd;
440
+ }
441
+
442
+ return newData;
443
+ } */
444
+
445
+ /**
446
+ * recursive function that pushes to nested data
447
+ * @param newData the object that that is needed to be updated
448
+ * @param nestKeys the path where the data should be updated
449
+ * @param dataToPush the actual value that will be setted
450
+ * @returns modified data
451
+ */
452
+ static pushToNestedData<Obj_T, Data_T>(
453
+ parentObj: Obj_T,
454
+ nestKeys: string[],
455
+ dataToPush: Data_T
456
+ ): void {
457
+ if (1 < nestKeys.length) {
458
+ const keys = [ ...nestKeys ];
459
+ const nextNestKey = keys.shift();
460
+
461
+ this.pushToNestedData(parentObj[nextNestKey], keys, dataToPush);
462
+ } else {
463
+ if (Array.isArray(parentObj[nestKeys[0]])) {
464
+ parentObj[nestKeys[0]].push(dataToPush);
465
+ } else {
466
+ parentObj[nestKeys[0]] = [ dataToPush ];
467
+ }
468
+ }
469
+ }
470
+
471
+ // TODO
472
+ /*
473
+ static pushToNestedData(parentObj: any, nestKeys: string[], dataToPush: any): any {
474
+ const newData = { ...parentObj };
475
+
476
+ if (1 < nestKeys.length) {
477
+ const keys = [ ...nestKeys ];
478
+ const nextNestKey = keys.shift();
479
+
480
+ newData[nextNestKey] = this.pushToNestedData(newData[nextNestKey], keys, dataToPush);
481
+ } else {
482
+ if (Array.isArray(newData[nestKeys[0]])) {
483
+ newData[nestKeys[0]].push(dataToPush);
484
+ } else {
485
+ newData[nestKeys[0]] = [dataToPush];
486
+ }
487
+ }
488
+
489
+ return newData;
490
+ } */
491
+
492
+ /**
493
+ * recursive function that nests data on recursive data structure etc.: xData: { ..., 'nestedListKey': xData[] }
494
+ * @param newData the object that that is needed to be updated
495
+ * @param nestedListKey the location of nested dataList
496
+ * @param nestIndexes path to the subject ect.: xData.listKey[1].listKey[4].listKey[0] will be [1, 4, 0]
497
+ * @param dataToSet the actual value that will be setted on location
498
+ * @returns modified data
499
+ */
500
+ static nestRecursiveListedData<T, List_T>(
501
+ parentObj: T,
502
+ nestedListKey: string,
503
+ nestIndexes: number[],
504
+ dataToSet: List_T
505
+ ): void {
506
+ const nestedList: List_T[] = parentObj[<keyof T>nestedListKey] as List_T[];
507
+
508
+ if (1 < nestIndexes.length) {
509
+ const indexes: number[] = [ ...nestIndexes ];
510
+ const nextLevelKey: number = indexes.shift();
511
+
512
+ this.nestRecursiveListedData(
513
+ nestedList[nextLevelKey], nestedListKey, indexes, dataToSet
514
+ );
515
+ } else {
516
+ nestedList[nestIndexes[0]] = dataToSet;
517
+ }
518
+ }
519
+ /* OLD
520
+ static nestRecursiveListedData<T>(
521
+ parentObj: T,
522
+ nestedListKey: string,
523
+ nestIndexes: number[],
524
+ dataToSet: unknown
525
+ ): T {
526
+ const newData: T = { ...parentObj };
527
+
528
+ if (1 < nestIndexes.length) {
529
+ const indexes: number[] = [ ...nestIndexes ];
530
+ const nextLevelKey: number = indexes.shift();
531
+
532
+ newData[nestedListKey][nextLevelKey] = this.nestRecursiveListedData(
533
+ newData[nestedListKey][nextLevelKey], nestedListKey, indexes, dataToSet
534
+ );
535
+ } else {
536
+ newData[nestedListKey][nestIndexes[0]] = dataToSet;
537
+ }
538
+
539
+ return newData;
540
+ } */
541
+ }