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