@futdevpro/fsm-dynamo 1.15.18 → 1.15.20
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/.cursor/rules/__assistant_guide.mdc +30 -30
- package/.cursor/rules/_ag_backend-structure.mdc +85 -85
- package/.cursor/rules/_ag_backend.mdc +16 -16
- 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_should-be.mdc +6 -6
- package/.cursor/rules/ai_development_guide.md +60 -60
- 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 +128 -128
- package/.github/workflows/main.yml +433 -433
- package/.vscode/settings.json +11 -11
- package/LICENSE +21 -21
- package/__documentations/2026-06-01-fr047-fc-foundation.md +48 -0
- package/build/_models/data-models/errors.data-model.d.ts +43 -0
- package/build/_models/data-models/errors.data-model.d.ts.map +1 -1
- package/build/_models/data-models/errors.data-model.js +30 -0
- package/build/_models/data-models/errors.data-model.js.map +1 -1
- package/build/_modules/socket/_models/sck-socket-event.control-model.js +1 -1
- package/eslint.config.js +4 -4
- package/nodemon.json +22 -22
- package/package.json +11 -11
- 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/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.ts +24 -24
- 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 +354 -354
- package/src/_collections/utils/async.util.ts +197 -197
- package/src/_collections/utils/data.util.spec.ts +345 -345
- package/src/_collections/utils/data.util.ts +226 -226
- 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 +665 -665
- 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/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/round-list.util.spec.ts +79 -79
- package/src/_collections/utils/round-list.util.ts +162 -162
- 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 +28 -28
- 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 +85 -85
- package/src/_models/control-models/data-model-params.control-model.ts +300 -300
- 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 +201 -201
- package/src/_models/control-models/error.control-model.spec.ts +912 -912
- package/src/_models/control-models/error.control-model.ts +1215 -1215
- 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 +85 -85
- 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 +148 -91
- package/src/_models/data-models/metadata.data-model.spec.ts +184 -184
- package/src/_models/data-models/metadata.data-model.ts +128 -128
- 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 +47 -47
- package/src/_models/interfaces/error-defaults.interface.ts +11 -11
- 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-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 +81 -81
- 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 +34 -34
- 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 +99 -99
- 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 +53 -53
- 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 +252 -252
- 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.util.simple.spec.ts +512 -512
- package/src/_modules/crypto/index.ts +13 -13
- 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 +445 -445
- package/src/_modules/data-handler/_models/data-handler.control-model.ts +459 -459
- 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/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-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-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/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/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 +66 -66
- package/src/_modules/socket/_models/sck-socket-event.control-model.ts +172 -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/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 +102 -102
- package/tsconfig.app.json +12 -12
- package/tsconfig.json +31 -31
- package/tsconfig.test.json +16 -16
- package/tslint.json +153 -153
- package/pipeline.cicd.config.json +0 -128
|
@@ -1,445 +1,445 @@
|
|
|
1
|
-
import { DyFM_DataHandler } from './data-handler.control-model';
|
|
2
|
-
import { DyFM_Metadata } from '../../../_models/data-models/metadata.data-model';
|
|
3
|
-
import { DyFM_DataHandler_Settings } from './data-handler-settings.control-model';
|
|
4
|
-
import { DyFM_Log } from '../../../_collections/utils/log.util';
|
|
5
|
-
|
|
6
|
-
class TestMetadata extends DyFM_Metadata {
|
|
7
|
-
name?: string;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
class TestDataHandler extends DyFM_DataHandler<TestMetadata> {
|
|
11
|
-
override get data(): TestMetadata {
|
|
12
|
-
return this.data_BS.value;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
xdescribe('| DyFM_DataHandler', (): void => {
|
|
17
|
-
let handler: TestDataHandler;
|
|
18
|
-
let settings: DyFM_DataHandler_Settings<TestMetadata>;
|
|
19
|
-
|
|
20
|
-
beforeEach(() => {
|
|
21
|
-
settings = {
|
|
22
|
-
name: 'TestHandler',
|
|
23
|
-
get: async (loadBy?: string): Promise<TestMetadata> => {
|
|
24
|
-
return { _id: loadBy || 'default', name: 'test' } as TestMetadata;
|
|
25
|
-
},
|
|
26
|
-
set: async (data: TestMetadata): Promise<TestMetadata> => data,
|
|
27
|
-
defaultValue: { _id: 'default', name: 'default' } as TestMetadata,
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
handler = new TestDataHandler(settings);
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
it('| should create an instance with settings', (): void => {
|
|
34
|
-
expect(handler).toBeTruthy();
|
|
35
|
-
expect(handler.name).toBe('TestHandler');
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
it('| should have data$ observable', (): void => {
|
|
39
|
-
expect(handler.data$).toBeTruthy();
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
it('| should have loaded$ observable', (): void => {
|
|
43
|
-
expect(handler.loaded$).toBeTruthy();
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
it('| should have loadInProgress$ observable', (): void => {
|
|
47
|
-
expect(handler.loadInProgress$).toBeTruthy();
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
it('| should get default value initially', (): void => {
|
|
51
|
-
expect(handler.data).toEqual({ _id: 'default', name: 'default' });
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
it('| should update data', async (): Promise<void> => {
|
|
55
|
-
const newData = { _id: 'new', name: 'new' } as TestMetadata;
|
|
56
|
-
await handler.updateData(newData);
|
|
57
|
-
|
|
58
|
-
expect(handler.data).toEqual(newData);
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
it('| should clear data', (): void => {
|
|
62
|
-
handler.clear();
|
|
63
|
-
|
|
64
|
-
expect(handler.data).toBeUndefined();
|
|
65
|
-
expect(handler.lastLoadedBy).toBeUndefined();
|
|
66
|
-
});
|
|
67
|
-
|
|
68
|
-
it('| should wait for load', async (): Promise<void> => {
|
|
69
|
-
const waitPromise = handler.waitForLoad();
|
|
70
|
-
|
|
71
|
-
expect(waitPromise).toBeInstanceOf(Promise);
|
|
72
|
-
});
|
|
73
|
-
|
|
74
|
-
it('| should handle postProcess that returns null', async (): Promise<void> => {
|
|
75
|
-
// Test case for lines 429-434: postProcess returns null or undefined
|
|
76
|
-
const warnSpy = spyOn(DyFM_Log, 'warn');
|
|
77
|
-
settings.getPostProcess = async (data: TestMetadata) => null as any;
|
|
78
|
-
handler = new TestDataHandler(settings);
|
|
79
|
-
|
|
80
|
-
await handler.reloadData('test');
|
|
81
|
-
|
|
82
|
-
expect(warnSpy).toHaveBeenCalled();
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
it('| should handle postProcess that returns undefined', async (): Promise<void> => {
|
|
86
|
-
// Test case for lines 429-434: postProcess returns null or undefined
|
|
87
|
-
const warnSpy = spyOn(DyFM_Log, 'warn');
|
|
88
|
-
settings.getPostProcess = async (data: TestMetadata) => undefined as any;
|
|
89
|
-
handler = new TestDataHandler(settings);
|
|
90
|
-
|
|
91
|
-
await handler.reloadData('test');
|
|
92
|
-
|
|
93
|
-
expect(warnSpy).toHaveBeenCalled();
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
it('| should resolve waits on load', async (): Promise<void> => {
|
|
97
|
-
// Test case for line 444: resolveWaitsOnLoad
|
|
98
|
-
const waitPromise = handler.waitForLoad();
|
|
99
|
-
await handler.reloadData('test');
|
|
100
|
-
|
|
101
|
-
await expectAsync(waitPromise).toBeResolved();
|
|
102
|
-
});
|
|
103
|
-
|
|
104
|
-
it('| should warn when name is not set', (): void => {
|
|
105
|
-
// Test case for lines 144-152: constructor without name
|
|
106
|
-
const warnSpy = spyOn(DyFM_Log, 'warn');
|
|
107
|
-
const settingsWithoutName = { ...settings };
|
|
108
|
-
delete settingsWithoutName.name;
|
|
109
|
-
|
|
110
|
-
const handlerWithoutName = new TestDataHandler(settingsWithoutName);
|
|
111
|
-
|
|
112
|
-
expect(handlerWithoutName.name).toContain('Unnamed DataHandler');
|
|
113
|
-
expect(warnSpy).toHaveBeenCalled();
|
|
114
|
-
});
|
|
115
|
-
|
|
116
|
-
it('| should handle constructor with debugLog', (): void => {
|
|
117
|
-
// Test case for line 155: debugLog
|
|
118
|
-
settings.debugLog = true;
|
|
119
|
-
const handlerWithDebug = new TestDataHandler(settings);
|
|
120
|
-
|
|
121
|
-
expect(handlerWithDebug).toBeTruthy();
|
|
122
|
-
});
|
|
123
|
-
|
|
124
|
-
it('| should handle constructor with defaultLoadBy', (): void => {
|
|
125
|
-
// Test case for lines 177-179: defaultLoadBy
|
|
126
|
-
settings.defaultLoadBy = 'defaultId';
|
|
127
|
-
const handlerWithDefaultLoadBy = new TestDataHandler(settings);
|
|
128
|
-
|
|
129
|
-
expect(handlerWithDefaultLoadBy.defaultLoadBy).toBe('defaultId');
|
|
130
|
-
});
|
|
131
|
-
|
|
132
|
-
it('| should handle constructor with skipDependencyConnections', (): void => {
|
|
133
|
-
// Test case for lines 181-189: skipDependencyConnections
|
|
134
|
-
const dependentHandler = new TestDataHandler({
|
|
135
|
-
name: 'DependentHandler',
|
|
136
|
-
get: async () => ({ _id: 'dep', name: 'dep' } as TestMetadata),
|
|
137
|
-
defaultValue: { _id: 'dep', name: 'dep' } as TestMetadata,
|
|
138
|
-
});
|
|
139
|
-
|
|
140
|
-
settings.dependentDataHandlers = [dependentHandler];
|
|
141
|
-
const handlerWithSkip = new TestDataHandler(settings, true);
|
|
142
|
-
|
|
143
|
-
expect(handlerWithSkip).toBeTruthy();
|
|
144
|
-
});
|
|
145
|
-
|
|
146
|
-
it('| should add dependency data handler', (): void => {
|
|
147
|
-
// Test case for lines 196-221: addDependencyDataHandler
|
|
148
|
-
const dependentHandler = new TestDataHandler({
|
|
149
|
-
name: 'DependentHandler',
|
|
150
|
-
get: async () => ({ _id: 'dep', name: 'dep' } as TestMetadata),
|
|
151
|
-
defaultValue: { _id: 'dep', name: 'dep' } as TestMetadata,
|
|
152
|
-
});
|
|
153
|
-
|
|
154
|
-
handler.addDependencyDataHandler(dependentHandler);
|
|
155
|
-
|
|
156
|
-
expect(handler).toBeTruthy();
|
|
157
|
-
});
|
|
158
|
-
|
|
159
|
-
it('| should handle addDependencyDataHandler with null', (): void => {
|
|
160
|
-
// Test case for lines 198-203: addDependencyDataHandler with null
|
|
161
|
-
const errorSpy = spyOn(console, 'error');
|
|
162
|
-
|
|
163
|
-
handler.addDependencyDataHandler(null as any);
|
|
164
|
-
|
|
165
|
-
expect(errorSpy).toHaveBeenCalled();
|
|
166
|
-
});
|
|
167
|
-
|
|
168
|
-
it('| should handle addDependencyDataHandler with invalid instance', (): void => {
|
|
169
|
-
// Test case for lines 205-210: addDependencyDataHandler with invalid instance
|
|
170
|
-
const errorSpy = spyOn(console, 'error');
|
|
171
|
-
|
|
172
|
-
handler.addDependencyDataHandler({} as any);
|
|
173
|
-
|
|
174
|
-
expect(errorSpy).toHaveBeenCalled();
|
|
175
|
-
});
|
|
176
|
-
|
|
177
|
-
xit('| should add dependent data handlers', (): void => {
|
|
178
|
-
// Test case for lines 223-290: addDependentDataHandlers
|
|
179
|
-
const dependentHandler = new TestDataHandler({
|
|
180
|
-
name: 'DependentHandler',
|
|
181
|
-
get: async () => ({ _id: 'dep', name: 'dep' } as TestMetadata),
|
|
182
|
-
defaultValue: { _id: 'dep', name: 'dep' } as TestMetadata,
|
|
183
|
-
});
|
|
184
|
-
|
|
185
|
-
handler.addDependentDataHandlers([dependentHandler]);
|
|
186
|
-
|
|
187
|
-
expect(handler).toBeTruthy();
|
|
188
|
-
});
|
|
189
|
-
|
|
190
|
-
xit('| should throw error when adding null dependent handler', (): void => {
|
|
191
|
-
// Test case for lines 228-233: addDependentDataHandlers with null
|
|
192
|
-
expect(() => {
|
|
193
|
-
handler.addDependentDataHandlers([null as any]);
|
|
194
|
-
}).toThrow();
|
|
195
|
-
});
|
|
196
|
-
|
|
197
|
-
xit('| should throw error when adding invalid dependent handler', (): void => {
|
|
198
|
-
// Test case for lines 235-240: addDependentDataHandlers with invalid instance
|
|
199
|
-
expect(() => {
|
|
200
|
-
handler.addDependentDataHandlers([{} as any]);
|
|
201
|
-
}).toThrow();
|
|
202
|
-
});
|
|
203
|
-
|
|
204
|
-
xit('| should throw error when dependent handler has same name', (): void => {
|
|
205
|
-
// Test case for lines 242-247: addDependentDataHandlers with same name
|
|
206
|
-
const dependentHandler = new TestDataHandler({
|
|
207
|
-
name: 'TestHandler',
|
|
208
|
-
get: async () => ({ _id: 'dep', name: 'dep' } as TestMetadata),
|
|
209
|
-
defaultValue: { _id: 'dep', name: 'dep' } as TestMetadata,
|
|
210
|
-
});
|
|
211
|
-
|
|
212
|
-
expect(() => {
|
|
213
|
-
handler.addDependentDataHandlers([dependentHandler]);
|
|
214
|
-
}).toThrow();
|
|
215
|
-
});
|
|
216
|
-
|
|
217
|
-
xit('| should throw error when dependent handler not set up', (): void => {
|
|
218
|
-
// Test case for lines 249-256: addDependentDataHandlers with handler not set up
|
|
219
|
-
const dependentHandler = new TestDataHandler({
|
|
220
|
-
name: 'DependentHandler',
|
|
221
|
-
get: async () => ({ _id: 'dep', name: 'dep' } as TestMetadata),
|
|
222
|
-
defaultValue: { _id: 'dep', name: 'dep' } as TestMetadata,
|
|
223
|
-
});
|
|
224
|
-
// Remove data_BS to simulate not set up
|
|
225
|
-
(dependentHandler as any).data_BS = undefined;
|
|
226
|
-
|
|
227
|
-
expect(() => {
|
|
228
|
-
handler.addDependentDataHandlers([dependentHandler]);
|
|
229
|
-
}).toThrow();
|
|
230
|
-
});
|
|
231
|
-
|
|
232
|
-
xit('| should handle addDependentDataHandlers with debugLog', (): void => {
|
|
233
|
-
// Test case for lines 262-272: addDependentDataHandlers with debugLog
|
|
234
|
-
const consoleSpy = spyOn(console, 'log');
|
|
235
|
-
settings.debugLog = true;
|
|
236
|
-
handler = new TestDataHandler(settings);
|
|
237
|
-
|
|
238
|
-
const dependentHandler = new TestDataHandler({
|
|
239
|
-
name: 'DependentHandler',
|
|
240
|
-
get: async () => ({ _id: 'dep', name: 'dep' } as TestMetadata),
|
|
241
|
-
defaultValue: { _id: 'dep', name: 'dep' } as TestMetadata,
|
|
242
|
-
});
|
|
243
|
-
|
|
244
|
-
handler.addDependentDataHandlers([dependentHandler]);
|
|
245
|
-
|
|
246
|
-
// Trigger reload to test debug log
|
|
247
|
-
handler.reloadData('test').catch(() => {});
|
|
248
|
-
|
|
249
|
-
expect(handler).toBeTruthy();
|
|
250
|
-
});
|
|
251
|
-
|
|
252
|
-
xit('| should handle addDependentDataHandlers with existing data', (): void => {
|
|
253
|
-
// Test case for lines 286-288: addDependentDataHandlers with existing data
|
|
254
|
-
handler.reloadData('test').catch(() => {});
|
|
255
|
-
|
|
256
|
-
const dependentHandler = new TestDataHandler({
|
|
257
|
-
name: 'DependentHandler',
|
|
258
|
-
get: async () => ({ _id: 'dep', name: 'dep' } as TestMetadata),
|
|
259
|
-
defaultValue: { _id: 'dep', name: 'dep' } as TestMetadata,
|
|
260
|
-
});
|
|
261
|
-
|
|
262
|
-
const reloadSpy = spyOn(dependentHandler, 'reloadData');
|
|
263
|
-
handler.addDependentDataHandlers([dependentHandler], false);
|
|
264
|
-
|
|
265
|
-
expect(reloadSpy).toHaveBeenCalled();
|
|
266
|
-
});
|
|
267
|
-
|
|
268
|
-
xit('| should handle reloadData with no loadBy and noId', async (): Promise<void> => {
|
|
269
|
-
// Test case for lines 299-315: reloadData without loadBy
|
|
270
|
-
settings.noId = true;
|
|
271
|
-
handler = new TestDataHandler(settings);
|
|
272
|
-
|
|
273
|
-
const result = await handler.reloadData();
|
|
274
|
-
|
|
275
|
-
expect(result).toBeDefined();
|
|
276
|
-
});
|
|
277
|
-
|
|
278
|
-
xit('| should throw error when reloadData missing ID', async (): Promise<void> => {
|
|
279
|
-
// Test case for lines 307-315: reloadData missing ID
|
|
280
|
-
settings.noId = false;
|
|
281
|
-
handler = new TestDataHandler(settings);
|
|
282
|
-
handler.clear();
|
|
283
|
-
|
|
284
|
-
await expectAsync(handler.reloadData()).toBeRejected();
|
|
285
|
-
});
|
|
286
|
-
|
|
287
|
-
xit('| should return existing data when already loading same ID', async (): Promise<void> => {
|
|
288
|
-
// Test case for lines 317-327: reloadData already loading
|
|
289
|
-
const loadPromise = handler.reloadData('test');
|
|
290
|
-
const result = await handler.reloadData('test');
|
|
291
|
-
|
|
292
|
-
await loadPromise;
|
|
293
|
-
|
|
294
|
-
expect(result).toBeDefined();
|
|
295
|
-
});
|
|
296
|
-
|
|
297
|
-
xit('| should handle reloadData with debugLog', async (): Promise<void> => {
|
|
298
|
-
// Test case for lines 329-334: reloadData with debugLog
|
|
299
|
-
const consoleSpy = spyOn(console, 'log');
|
|
300
|
-
settings.debugLog = true;
|
|
301
|
-
handler = new TestDataHandler(settings);
|
|
302
|
-
|
|
303
|
-
await handler.reloadData('test');
|
|
304
|
-
|
|
305
|
-
expect(consoleSpy).toHaveBeenCalled();
|
|
306
|
-
});
|
|
307
|
-
|
|
308
|
-
it('| should handle reloadData error with handled flag', async (): Promise<void> => {
|
|
309
|
-
// Test case for lines 350-361: reloadData error with handled flag
|
|
310
|
-
const errorSpy = spyOn(console, 'error');
|
|
311
|
-
const handledError = {
|
|
312
|
-
error: {
|
|
313
|
-
handled: false,
|
|
314
|
-
flag: ['DYNAMO'],
|
|
315
|
-
},
|
|
316
|
-
};
|
|
317
|
-
settings.get = async () => {
|
|
318
|
-
throw handledError;
|
|
319
|
-
};
|
|
320
|
-
handler = new TestDataHandler(settings);
|
|
321
|
-
|
|
322
|
-
try {
|
|
323
|
-
await handler.reloadData('test');
|
|
324
|
-
} catch (e) {
|
|
325
|
-
expect(handledError.error.handled).toBe(true);
|
|
326
|
-
}
|
|
327
|
-
});
|
|
328
|
-
|
|
329
|
-
it('| should getData when data exists', async (): Promise<void> => {
|
|
330
|
-
// Test case for lines 367-378: getData
|
|
331
|
-
await handler.reloadData('test');
|
|
332
|
-
|
|
333
|
-
const result = await handler.getData();
|
|
334
|
-
|
|
335
|
-
expect(result).toBeDefined();
|
|
336
|
-
});
|
|
337
|
-
|
|
338
|
-
it('| should getData when data does not exist and loading', async (): Promise<void> => {
|
|
339
|
-
// Test case for lines 368-374: getData when loading
|
|
340
|
-
handler.clear();
|
|
341
|
-
const loadPromise = handler.reloadData('test');
|
|
342
|
-
const result = await handler.getData();
|
|
343
|
-
|
|
344
|
-
await loadPromise;
|
|
345
|
-
|
|
346
|
-
expect(result).toBeDefined();
|
|
347
|
-
});
|
|
348
|
-
|
|
349
|
-
it('| should getData when data does not exist and not loading', async (): Promise<void> => {
|
|
350
|
-
// Test case for lines 372-374: getData when not loading
|
|
351
|
-
handler.clear();
|
|
352
|
-
// Set noId to true to allow reloadData without an ID
|
|
353
|
-
handler.noId = true;
|
|
354
|
-
|
|
355
|
-
const result = await handler.getData();
|
|
356
|
-
|
|
357
|
-
expect(result).toBeDefined();
|
|
358
|
-
});
|
|
359
|
-
|
|
360
|
-
it('| should updateData with set', async (): Promise<void> => {
|
|
361
|
-
// Test case for lines 391-397: updateData with set
|
|
362
|
-
const newData = { _id: 'new', name: 'new' } as TestMetadata;
|
|
363
|
-
await handler.updateData(newData);
|
|
364
|
-
|
|
365
|
-
expect(handler.data).toEqual(newData);
|
|
366
|
-
});
|
|
367
|
-
|
|
368
|
-
it('| should updateData without set', async (): Promise<void> => {
|
|
369
|
-
// Test case for lines 391-397: updateData without set
|
|
370
|
-
settings.set = undefined;
|
|
371
|
-
handler = new TestDataHandler(settings);
|
|
372
|
-
|
|
373
|
-
const newData = { _id: 'new', name: 'new' } as TestMetadata;
|
|
374
|
-
await handler.updateData(newData);
|
|
375
|
-
|
|
376
|
-
expect(handler.data).toEqual(newData);
|
|
377
|
-
});
|
|
378
|
-
|
|
379
|
-
it('| should updateData with dontSendUpdate', async (): Promise<void> => {
|
|
380
|
-
// Test case for lines 391-397: updateData with dontSendUpdate
|
|
381
|
-
const setSpy = spyOn(settings, 'set');
|
|
382
|
-
const newData = { _id: 'new', name: 'new' } as TestMetadata;
|
|
383
|
-
await handler.updateData(newData, true);
|
|
384
|
-
|
|
385
|
-
expect(setSpy).not.toHaveBeenCalled();
|
|
386
|
-
});
|
|
387
|
-
|
|
388
|
-
it('| should clear with dependents', (): void => {
|
|
389
|
-
// Test case for lines 399-407: clear with dependents
|
|
390
|
-
const dependentHandler = new TestDataHandler({
|
|
391
|
-
name: 'DependentHandler',
|
|
392
|
-
get: async () => ({ _id: 'dep', name: 'dep' } as TestMetadata),
|
|
393
|
-
defaultValue: { _id: 'dep', name: 'dep' } as TestMetadata,
|
|
394
|
-
});
|
|
395
|
-
|
|
396
|
-
// Add dependent handler - addDependentDataHandlers adds to the parameter array
|
|
397
|
-
// but clear uses this.dependentDataHandlers, so we need to add directly
|
|
398
|
-
(handler as any).dependentDataHandlers.push(dependentHandler);
|
|
399
|
-
|
|
400
|
-
const clearSpy = spyOn(dependentHandler, 'clear');
|
|
401
|
-
|
|
402
|
-
handler.clear();
|
|
403
|
-
|
|
404
|
-
expect(clearSpy).toHaveBeenCalled();
|
|
405
|
-
});
|
|
406
|
-
|
|
407
|
-
it('| should clear without dependents', (): void => {
|
|
408
|
-
// Test case for lines 399-407: clear without dependents
|
|
409
|
-
handler.clear(true);
|
|
410
|
-
|
|
411
|
-
expect(handler.data).toBeUndefined();
|
|
412
|
-
});
|
|
413
|
-
|
|
414
|
-
it('| should processLoadResult with debugLog', async (): Promise<void> => {
|
|
415
|
-
// Test case for lines 409-440: processLoadResult
|
|
416
|
-
const consoleSpy = spyOn(console, 'log');
|
|
417
|
-
settings.debugLog = true;
|
|
418
|
-
handler = new TestDataHandler(settings);
|
|
419
|
-
|
|
420
|
-
await handler.reloadData('test');
|
|
421
|
-
|
|
422
|
-
expect(consoleSpy).toHaveBeenCalled();
|
|
423
|
-
});
|
|
424
|
-
|
|
425
|
-
it('| should processLoadResult with multiple postProcesses', async (): Promise<void> => {
|
|
426
|
-
// Test case for lines 418-435: processLoadResult with multiple postProcesses
|
|
427
|
-
let callCount = 0;
|
|
428
|
-
settings.getPostProcess = async (data: TestMetadata) => {
|
|
429
|
-
callCount++;
|
|
430
|
-
return { ...data, name: `processed${callCount}` };
|
|
431
|
-
};
|
|
432
|
-
handler = new TestDataHandler(settings);
|
|
433
|
-
|
|
434
|
-
// Add another post-process
|
|
435
|
-
(handler as any).getPostProcesses.push(async (data: TestMetadata) => {
|
|
436
|
-
callCount++;
|
|
437
|
-
return { ...data, name: `processed${callCount}` };
|
|
438
|
-
});
|
|
439
|
-
|
|
440
|
-
await handler.reloadData('test');
|
|
441
|
-
|
|
442
|
-
expect(callCount).toBeGreaterThan(0);
|
|
443
|
-
});
|
|
444
|
-
});
|
|
445
|
-
|
|
1
|
+
import { DyFM_DataHandler } from './data-handler.control-model';
|
|
2
|
+
import { DyFM_Metadata } from '../../../_models/data-models/metadata.data-model';
|
|
3
|
+
import { DyFM_DataHandler_Settings } from './data-handler-settings.control-model';
|
|
4
|
+
import { DyFM_Log } from '../../../_collections/utils/log.util';
|
|
5
|
+
|
|
6
|
+
class TestMetadata extends DyFM_Metadata {
|
|
7
|
+
name?: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
class TestDataHandler extends DyFM_DataHandler<TestMetadata> {
|
|
11
|
+
override get data(): TestMetadata {
|
|
12
|
+
return this.data_BS.value;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
xdescribe('| DyFM_DataHandler', (): void => {
|
|
17
|
+
let handler: TestDataHandler;
|
|
18
|
+
let settings: DyFM_DataHandler_Settings<TestMetadata>;
|
|
19
|
+
|
|
20
|
+
beforeEach(() => {
|
|
21
|
+
settings = {
|
|
22
|
+
name: 'TestHandler',
|
|
23
|
+
get: async (loadBy?: string): Promise<TestMetadata> => {
|
|
24
|
+
return { _id: loadBy || 'default', name: 'test' } as TestMetadata;
|
|
25
|
+
},
|
|
26
|
+
set: async (data: TestMetadata): Promise<TestMetadata> => data,
|
|
27
|
+
defaultValue: { _id: 'default', name: 'default' } as TestMetadata,
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
handler = new TestDataHandler(settings);
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
it('| should create an instance with settings', (): void => {
|
|
34
|
+
expect(handler).toBeTruthy();
|
|
35
|
+
expect(handler.name).toBe('TestHandler');
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
it('| should have data$ observable', (): void => {
|
|
39
|
+
expect(handler.data$).toBeTruthy();
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
it('| should have loaded$ observable', (): void => {
|
|
43
|
+
expect(handler.loaded$).toBeTruthy();
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
it('| should have loadInProgress$ observable', (): void => {
|
|
47
|
+
expect(handler.loadInProgress$).toBeTruthy();
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
it('| should get default value initially', (): void => {
|
|
51
|
+
expect(handler.data).toEqual({ _id: 'default', name: 'default' });
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
it('| should update data', async (): Promise<void> => {
|
|
55
|
+
const newData = { _id: 'new', name: 'new' } as TestMetadata;
|
|
56
|
+
await handler.updateData(newData);
|
|
57
|
+
|
|
58
|
+
expect(handler.data).toEqual(newData);
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
it('| should clear data', (): void => {
|
|
62
|
+
handler.clear();
|
|
63
|
+
|
|
64
|
+
expect(handler.data).toBeUndefined();
|
|
65
|
+
expect(handler.lastLoadedBy).toBeUndefined();
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
it('| should wait for load', async (): Promise<void> => {
|
|
69
|
+
const waitPromise = handler.waitForLoad();
|
|
70
|
+
|
|
71
|
+
expect(waitPromise).toBeInstanceOf(Promise);
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
it('| should handle postProcess that returns null', async (): Promise<void> => {
|
|
75
|
+
// Test case for lines 429-434: postProcess returns null or undefined
|
|
76
|
+
const warnSpy = spyOn(DyFM_Log, 'warn');
|
|
77
|
+
settings.getPostProcess = async (data: TestMetadata) => null as any;
|
|
78
|
+
handler = new TestDataHandler(settings);
|
|
79
|
+
|
|
80
|
+
await handler.reloadData('test');
|
|
81
|
+
|
|
82
|
+
expect(warnSpy).toHaveBeenCalled();
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
it('| should handle postProcess that returns undefined', async (): Promise<void> => {
|
|
86
|
+
// Test case for lines 429-434: postProcess returns null or undefined
|
|
87
|
+
const warnSpy = spyOn(DyFM_Log, 'warn');
|
|
88
|
+
settings.getPostProcess = async (data: TestMetadata) => undefined as any;
|
|
89
|
+
handler = new TestDataHandler(settings);
|
|
90
|
+
|
|
91
|
+
await handler.reloadData('test');
|
|
92
|
+
|
|
93
|
+
expect(warnSpy).toHaveBeenCalled();
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
it('| should resolve waits on load', async (): Promise<void> => {
|
|
97
|
+
// Test case for line 444: resolveWaitsOnLoad
|
|
98
|
+
const waitPromise = handler.waitForLoad();
|
|
99
|
+
await handler.reloadData('test');
|
|
100
|
+
|
|
101
|
+
await expectAsync(waitPromise).toBeResolved();
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
it('| should warn when name is not set', (): void => {
|
|
105
|
+
// Test case for lines 144-152: constructor without name
|
|
106
|
+
const warnSpy = spyOn(DyFM_Log, 'warn');
|
|
107
|
+
const settingsWithoutName = { ...settings };
|
|
108
|
+
delete settingsWithoutName.name;
|
|
109
|
+
|
|
110
|
+
const handlerWithoutName = new TestDataHandler(settingsWithoutName);
|
|
111
|
+
|
|
112
|
+
expect(handlerWithoutName.name).toContain('Unnamed DataHandler');
|
|
113
|
+
expect(warnSpy).toHaveBeenCalled();
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
it('| should handle constructor with debugLog', (): void => {
|
|
117
|
+
// Test case for line 155: debugLog
|
|
118
|
+
settings.debugLog = true;
|
|
119
|
+
const handlerWithDebug = new TestDataHandler(settings);
|
|
120
|
+
|
|
121
|
+
expect(handlerWithDebug).toBeTruthy();
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
it('| should handle constructor with defaultLoadBy', (): void => {
|
|
125
|
+
// Test case for lines 177-179: defaultLoadBy
|
|
126
|
+
settings.defaultLoadBy = 'defaultId';
|
|
127
|
+
const handlerWithDefaultLoadBy = new TestDataHandler(settings);
|
|
128
|
+
|
|
129
|
+
expect(handlerWithDefaultLoadBy.defaultLoadBy).toBe('defaultId');
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
it('| should handle constructor with skipDependencyConnections', (): void => {
|
|
133
|
+
// Test case for lines 181-189: skipDependencyConnections
|
|
134
|
+
const dependentHandler = new TestDataHandler({
|
|
135
|
+
name: 'DependentHandler',
|
|
136
|
+
get: async () => ({ _id: 'dep', name: 'dep' } as TestMetadata),
|
|
137
|
+
defaultValue: { _id: 'dep', name: 'dep' } as TestMetadata,
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
settings.dependentDataHandlers = [dependentHandler];
|
|
141
|
+
const handlerWithSkip = new TestDataHandler(settings, true);
|
|
142
|
+
|
|
143
|
+
expect(handlerWithSkip).toBeTruthy();
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
it('| should add dependency data handler', (): void => {
|
|
147
|
+
// Test case for lines 196-221: addDependencyDataHandler
|
|
148
|
+
const dependentHandler = new TestDataHandler({
|
|
149
|
+
name: 'DependentHandler',
|
|
150
|
+
get: async () => ({ _id: 'dep', name: 'dep' } as TestMetadata),
|
|
151
|
+
defaultValue: { _id: 'dep', name: 'dep' } as TestMetadata,
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
handler.addDependencyDataHandler(dependentHandler);
|
|
155
|
+
|
|
156
|
+
expect(handler).toBeTruthy();
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
it('| should handle addDependencyDataHandler with null', (): void => {
|
|
160
|
+
// Test case for lines 198-203: addDependencyDataHandler with null
|
|
161
|
+
const errorSpy = spyOn(console, 'error');
|
|
162
|
+
|
|
163
|
+
handler.addDependencyDataHandler(null as any);
|
|
164
|
+
|
|
165
|
+
expect(errorSpy).toHaveBeenCalled();
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
it('| should handle addDependencyDataHandler with invalid instance', (): void => {
|
|
169
|
+
// Test case for lines 205-210: addDependencyDataHandler with invalid instance
|
|
170
|
+
const errorSpy = spyOn(console, 'error');
|
|
171
|
+
|
|
172
|
+
handler.addDependencyDataHandler({} as any);
|
|
173
|
+
|
|
174
|
+
expect(errorSpy).toHaveBeenCalled();
|
|
175
|
+
});
|
|
176
|
+
|
|
177
|
+
xit('| should add dependent data handlers', (): void => {
|
|
178
|
+
// Test case for lines 223-290: addDependentDataHandlers
|
|
179
|
+
const dependentHandler = new TestDataHandler({
|
|
180
|
+
name: 'DependentHandler',
|
|
181
|
+
get: async () => ({ _id: 'dep', name: 'dep' } as TestMetadata),
|
|
182
|
+
defaultValue: { _id: 'dep', name: 'dep' } as TestMetadata,
|
|
183
|
+
});
|
|
184
|
+
|
|
185
|
+
handler.addDependentDataHandlers([dependentHandler]);
|
|
186
|
+
|
|
187
|
+
expect(handler).toBeTruthy();
|
|
188
|
+
});
|
|
189
|
+
|
|
190
|
+
xit('| should throw error when adding null dependent handler', (): void => {
|
|
191
|
+
// Test case for lines 228-233: addDependentDataHandlers with null
|
|
192
|
+
expect(() => {
|
|
193
|
+
handler.addDependentDataHandlers([null as any]);
|
|
194
|
+
}).toThrow();
|
|
195
|
+
});
|
|
196
|
+
|
|
197
|
+
xit('| should throw error when adding invalid dependent handler', (): void => {
|
|
198
|
+
// Test case for lines 235-240: addDependentDataHandlers with invalid instance
|
|
199
|
+
expect(() => {
|
|
200
|
+
handler.addDependentDataHandlers([{} as any]);
|
|
201
|
+
}).toThrow();
|
|
202
|
+
});
|
|
203
|
+
|
|
204
|
+
xit('| should throw error when dependent handler has same name', (): void => {
|
|
205
|
+
// Test case for lines 242-247: addDependentDataHandlers with same name
|
|
206
|
+
const dependentHandler = new TestDataHandler({
|
|
207
|
+
name: 'TestHandler',
|
|
208
|
+
get: async () => ({ _id: 'dep', name: 'dep' } as TestMetadata),
|
|
209
|
+
defaultValue: { _id: 'dep', name: 'dep' } as TestMetadata,
|
|
210
|
+
});
|
|
211
|
+
|
|
212
|
+
expect(() => {
|
|
213
|
+
handler.addDependentDataHandlers([dependentHandler]);
|
|
214
|
+
}).toThrow();
|
|
215
|
+
});
|
|
216
|
+
|
|
217
|
+
xit('| should throw error when dependent handler not set up', (): void => {
|
|
218
|
+
// Test case for lines 249-256: addDependentDataHandlers with handler not set up
|
|
219
|
+
const dependentHandler = new TestDataHandler({
|
|
220
|
+
name: 'DependentHandler',
|
|
221
|
+
get: async () => ({ _id: 'dep', name: 'dep' } as TestMetadata),
|
|
222
|
+
defaultValue: { _id: 'dep', name: 'dep' } as TestMetadata,
|
|
223
|
+
});
|
|
224
|
+
// Remove data_BS to simulate not set up
|
|
225
|
+
(dependentHandler as any).data_BS = undefined;
|
|
226
|
+
|
|
227
|
+
expect(() => {
|
|
228
|
+
handler.addDependentDataHandlers([dependentHandler]);
|
|
229
|
+
}).toThrow();
|
|
230
|
+
});
|
|
231
|
+
|
|
232
|
+
xit('| should handle addDependentDataHandlers with debugLog', (): void => {
|
|
233
|
+
// Test case for lines 262-272: addDependentDataHandlers with debugLog
|
|
234
|
+
const consoleSpy = spyOn(console, 'log');
|
|
235
|
+
settings.debugLog = true;
|
|
236
|
+
handler = new TestDataHandler(settings);
|
|
237
|
+
|
|
238
|
+
const dependentHandler = new TestDataHandler({
|
|
239
|
+
name: 'DependentHandler',
|
|
240
|
+
get: async () => ({ _id: 'dep', name: 'dep' } as TestMetadata),
|
|
241
|
+
defaultValue: { _id: 'dep', name: 'dep' } as TestMetadata,
|
|
242
|
+
});
|
|
243
|
+
|
|
244
|
+
handler.addDependentDataHandlers([dependentHandler]);
|
|
245
|
+
|
|
246
|
+
// Trigger reload to test debug log
|
|
247
|
+
handler.reloadData('test').catch(() => {});
|
|
248
|
+
|
|
249
|
+
expect(handler).toBeTruthy();
|
|
250
|
+
});
|
|
251
|
+
|
|
252
|
+
xit('| should handle addDependentDataHandlers with existing data', (): void => {
|
|
253
|
+
// Test case for lines 286-288: addDependentDataHandlers with existing data
|
|
254
|
+
handler.reloadData('test').catch(() => {});
|
|
255
|
+
|
|
256
|
+
const dependentHandler = new TestDataHandler({
|
|
257
|
+
name: 'DependentHandler',
|
|
258
|
+
get: async () => ({ _id: 'dep', name: 'dep' } as TestMetadata),
|
|
259
|
+
defaultValue: { _id: 'dep', name: 'dep' } as TestMetadata,
|
|
260
|
+
});
|
|
261
|
+
|
|
262
|
+
const reloadSpy = spyOn(dependentHandler, 'reloadData');
|
|
263
|
+
handler.addDependentDataHandlers([dependentHandler], false);
|
|
264
|
+
|
|
265
|
+
expect(reloadSpy).toHaveBeenCalled();
|
|
266
|
+
});
|
|
267
|
+
|
|
268
|
+
xit('| should handle reloadData with no loadBy and noId', async (): Promise<void> => {
|
|
269
|
+
// Test case for lines 299-315: reloadData without loadBy
|
|
270
|
+
settings.noId = true;
|
|
271
|
+
handler = new TestDataHandler(settings);
|
|
272
|
+
|
|
273
|
+
const result = await handler.reloadData();
|
|
274
|
+
|
|
275
|
+
expect(result).toBeDefined();
|
|
276
|
+
});
|
|
277
|
+
|
|
278
|
+
xit('| should throw error when reloadData missing ID', async (): Promise<void> => {
|
|
279
|
+
// Test case for lines 307-315: reloadData missing ID
|
|
280
|
+
settings.noId = false;
|
|
281
|
+
handler = new TestDataHandler(settings);
|
|
282
|
+
handler.clear();
|
|
283
|
+
|
|
284
|
+
await expectAsync(handler.reloadData()).toBeRejected();
|
|
285
|
+
});
|
|
286
|
+
|
|
287
|
+
xit('| should return existing data when already loading same ID', async (): Promise<void> => {
|
|
288
|
+
// Test case for lines 317-327: reloadData already loading
|
|
289
|
+
const loadPromise = handler.reloadData('test');
|
|
290
|
+
const result = await handler.reloadData('test');
|
|
291
|
+
|
|
292
|
+
await loadPromise;
|
|
293
|
+
|
|
294
|
+
expect(result).toBeDefined();
|
|
295
|
+
});
|
|
296
|
+
|
|
297
|
+
xit('| should handle reloadData with debugLog', async (): Promise<void> => {
|
|
298
|
+
// Test case for lines 329-334: reloadData with debugLog
|
|
299
|
+
const consoleSpy = spyOn(console, 'log');
|
|
300
|
+
settings.debugLog = true;
|
|
301
|
+
handler = new TestDataHandler(settings);
|
|
302
|
+
|
|
303
|
+
await handler.reloadData('test');
|
|
304
|
+
|
|
305
|
+
expect(consoleSpy).toHaveBeenCalled();
|
|
306
|
+
});
|
|
307
|
+
|
|
308
|
+
it('| should handle reloadData error with handled flag', async (): Promise<void> => {
|
|
309
|
+
// Test case for lines 350-361: reloadData error with handled flag
|
|
310
|
+
const errorSpy = spyOn(console, 'error');
|
|
311
|
+
const handledError = {
|
|
312
|
+
error: {
|
|
313
|
+
handled: false,
|
|
314
|
+
flag: ['DYNAMO'],
|
|
315
|
+
},
|
|
316
|
+
};
|
|
317
|
+
settings.get = async () => {
|
|
318
|
+
throw handledError;
|
|
319
|
+
};
|
|
320
|
+
handler = new TestDataHandler(settings);
|
|
321
|
+
|
|
322
|
+
try {
|
|
323
|
+
await handler.reloadData('test');
|
|
324
|
+
} catch (e) {
|
|
325
|
+
expect(handledError.error.handled).toBe(true);
|
|
326
|
+
}
|
|
327
|
+
});
|
|
328
|
+
|
|
329
|
+
it('| should getData when data exists', async (): Promise<void> => {
|
|
330
|
+
// Test case for lines 367-378: getData
|
|
331
|
+
await handler.reloadData('test');
|
|
332
|
+
|
|
333
|
+
const result = await handler.getData();
|
|
334
|
+
|
|
335
|
+
expect(result).toBeDefined();
|
|
336
|
+
});
|
|
337
|
+
|
|
338
|
+
it('| should getData when data does not exist and loading', async (): Promise<void> => {
|
|
339
|
+
// Test case for lines 368-374: getData when loading
|
|
340
|
+
handler.clear();
|
|
341
|
+
const loadPromise = handler.reloadData('test');
|
|
342
|
+
const result = await handler.getData();
|
|
343
|
+
|
|
344
|
+
await loadPromise;
|
|
345
|
+
|
|
346
|
+
expect(result).toBeDefined();
|
|
347
|
+
});
|
|
348
|
+
|
|
349
|
+
it('| should getData when data does not exist and not loading', async (): Promise<void> => {
|
|
350
|
+
// Test case for lines 372-374: getData when not loading
|
|
351
|
+
handler.clear();
|
|
352
|
+
// Set noId to true to allow reloadData without an ID
|
|
353
|
+
handler.noId = true;
|
|
354
|
+
|
|
355
|
+
const result = await handler.getData();
|
|
356
|
+
|
|
357
|
+
expect(result).toBeDefined();
|
|
358
|
+
});
|
|
359
|
+
|
|
360
|
+
it('| should updateData with set', async (): Promise<void> => {
|
|
361
|
+
// Test case for lines 391-397: updateData with set
|
|
362
|
+
const newData = { _id: 'new', name: 'new' } as TestMetadata;
|
|
363
|
+
await handler.updateData(newData);
|
|
364
|
+
|
|
365
|
+
expect(handler.data).toEqual(newData);
|
|
366
|
+
});
|
|
367
|
+
|
|
368
|
+
it('| should updateData without set', async (): Promise<void> => {
|
|
369
|
+
// Test case for lines 391-397: updateData without set
|
|
370
|
+
settings.set = undefined;
|
|
371
|
+
handler = new TestDataHandler(settings);
|
|
372
|
+
|
|
373
|
+
const newData = { _id: 'new', name: 'new' } as TestMetadata;
|
|
374
|
+
await handler.updateData(newData);
|
|
375
|
+
|
|
376
|
+
expect(handler.data).toEqual(newData);
|
|
377
|
+
});
|
|
378
|
+
|
|
379
|
+
it('| should updateData with dontSendUpdate', async (): Promise<void> => {
|
|
380
|
+
// Test case for lines 391-397: updateData with dontSendUpdate
|
|
381
|
+
const setSpy = spyOn(settings, 'set');
|
|
382
|
+
const newData = { _id: 'new', name: 'new' } as TestMetadata;
|
|
383
|
+
await handler.updateData(newData, true);
|
|
384
|
+
|
|
385
|
+
expect(setSpy).not.toHaveBeenCalled();
|
|
386
|
+
});
|
|
387
|
+
|
|
388
|
+
it('| should clear with dependents', (): void => {
|
|
389
|
+
// Test case for lines 399-407: clear with dependents
|
|
390
|
+
const dependentHandler = new TestDataHandler({
|
|
391
|
+
name: 'DependentHandler',
|
|
392
|
+
get: async () => ({ _id: 'dep', name: 'dep' } as TestMetadata),
|
|
393
|
+
defaultValue: { _id: 'dep', name: 'dep' } as TestMetadata,
|
|
394
|
+
});
|
|
395
|
+
|
|
396
|
+
// Add dependent handler - addDependentDataHandlers adds to the parameter array
|
|
397
|
+
// but clear uses this.dependentDataHandlers, so we need to add directly
|
|
398
|
+
(handler as any).dependentDataHandlers.push(dependentHandler);
|
|
399
|
+
|
|
400
|
+
const clearSpy = spyOn(dependentHandler, 'clear');
|
|
401
|
+
|
|
402
|
+
handler.clear();
|
|
403
|
+
|
|
404
|
+
expect(clearSpy).toHaveBeenCalled();
|
|
405
|
+
});
|
|
406
|
+
|
|
407
|
+
it('| should clear without dependents', (): void => {
|
|
408
|
+
// Test case for lines 399-407: clear without dependents
|
|
409
|
+
handler.clear(true);
|
|
410
|
+
|
|
411
|
+
expect(handler.data).toBeUndefined();
|
|
412
|
+
});
|
|
413
|
+
|
|
414
|
+
it('| should processLoadResult with debugLog', async (): Promise<void> => {
|
|
415
|
+
// Test case for lines 409-440: processLoadResult
|
|
416
|
+
const consoleSpy = spyOn(console, 'log');
|
|
417
|
+
settings.debugLog = true;
|
|
418
|
+
handler = new TestDataHandler(settings);
|
|
419
|
+
|
|
420
|
+
await handler.reloadData('test');
|
|
421
|
+
|
|
422
|
+
expect(consoleSpy).toHaveBeenCalled();
|
|
423
|
+
});
|
|
424
|
+
|
|
425
|
+
it('| should processLoadResult with multiple postProcesses', async (): Promise<void> => {
|
|
426
|
+
// Test case for lines 418-435: processLoadResult with multiple postProcesses
|
|
427
|
+
let callCount = 0;
|
|
428
|
+
settings.getPostProcess = async (data: TestMetadata) => {
|
|
429
|
+
callCount++;
|
|
430
|
+
return { ...data, name: `processed${callCount}` };
|
|
431
|
+
};
|
|
432
|
+
handler = new TestDataHandler(settings);
|
|
433
|
+
|
|
434
|
+
// Add another post-process
|
|
435
|
+
(handler as any).getPostProcesses.push(async (data: TestMetadata) => {
|
|
436
|
+
callCount++;
|
|
437
|
+
return { ...data, name: `processed${callCount}` };
|
|
438
|
+
});
|
|
439
|
+
|
|
440
|
+
await handler.reloadData('test');
|
|
441
|
+
|
|
442
|
+
expect(callCount).toBeGreaterThan(0);
|
|
443
|
+
});
|
|
444
|
+
});
|
|
445
|
+
|