@futdevpro/fsm-dynamo 1.20.88 → 1.20.93
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/build/_models/control-models/data-model-params.control-model.d.ts +0 -1
- package/build/_models/control-models/data-model-params.control-model.d.ts.map +1 -1
- package/build/_models/control-models/data-model-params.control-model.js +1 -4
- package/build/_models/control-models/data-model-params.control-model.js.map +1 -1
- package/build/_models/control-models/data-property-params.control-model.d.ts +0 -1
- package/build/_models/control-models/data-property-params.control-model.d.ts.map +1 -1
- package/build/_models/control-models/data-property-params.control-model.js +1 -4
- package/build/_models/control-models/data-property-params.control-model.js.map +1 -1
- package/build/_models/control-models/service-endpoint-settings-base.control-model.d.ts +0 -1
- package/build/_models/control-models/service-endpoint-settings-base.control-model.d.ts.map +1 -1
- package/build/_models/control-models/service-endpoint-settings-base.control-model.js +4 -4
- package/build/_models/control-models/service-endpoint-settings-base.control-model.js.map +1 -1
- package/build/_modules/data-handler/_models/data-handler-settings.control-model.d.ts +0 -3
- package/build/_modules/data-handler/_models/data-handler-settings.control-model.d.ts.map +1 -1
- package/build/_modules/data-handler/_models/data-handler-settings.control-model.js +4 -10
- package/build/_modules/data-handler/_models/data-handler-settings.control-model.js.map +1 -1
- package/build/_modules/data-handler/_models/data-handler.control-model.d.ts.map +1 -1
- package/build/_modules/data-handler/_models/data-handler.control-model.js +10 -4
- package/build/_modules/data-handler/_models/data-handler.control-model.js.map +1 -1
- package/build/_modules/data-handler/_models/data-list-handler.control-model.d.ts +1 -1
- package/build/_modules/data-handler/_models/data-list-handler.control-model.d.ts.map +1 -1
- package/build/_modules/data-handler/_models/data-search-handler.control-model.d.ts +1 -1
- package/build/_modules/data-handler/_models/data-search-handler.control-model.d.ts.map +1 -1
- package/build/_modules/data-handler/_models/list-collector-data-handler.control-model.d.ts +1 -1
- package/build/_modules/data-handler/_models/list-collector-data-handler.control-model.d.ts.map +1 -1
- package/build/_modules/data-handler/index.d.ts +3 -0
- package/build/_modules/data-handler/index.d.ts.map +1 -1
- package/build/_modules/data-handler/index.js +3 -0
- package/build/_modules/data-handler/index.js.map +1 -1
- package/build/_modules/game/_models/flying-effect.control-model.d.ts +34 -0
- package/build/_modules/game/_models/flying-effect.control-model.d.ts.map +1 -0
- package/build/_modules/game/_models/flying-effect.control-model.js +217 -0
- package/build/_modules/game/_models/flying-effect.control-model.js.map +1 -0
- package/build/_modules/game/_models/flying-effect.interface.d.ts +53 -0
- package/build/_modules/game/_models/flying-effect.interface.d.ts.map +1 -0
- package/build/_modules/game/_models/flying-effect.interface.js +3 -0
- package/build/_modules/game/_models/flying-effect.interface.js.map +1 -0
- package/build/_modules/game/index.d.ts +2 -0
- package/build/_modules/game/index.d.ts.map +1 -1
- package/build/_modules/game/index.js +2 -0
- package/build/_modules/game/index.js.map +1 -1
- package/build/_modules/ngx-models/_models/control-models/data-handler-settings.control-model.d.ts +0 -3
- package/build/_modules/ngx-models/_models/control-models/data-handler-settings.control-model.d.ts.map +1 -1
- package/build/_modules/ngx-models/_models/control-models/data-handler-settings.control-model.js +4 -10
- package/build/_modules/ngx-models/_models/control-models/data-handler-settings.control-model.js.map +1 -1
- package/build/_modules/ngx-models/_models/control-models/data-handler.control-model.d.ts.map +1 -1
- package/build/_modules/ngx-models/_models/control-models/data-handler.control-model.js +10 -4
- package/build/_modules/ngx-models/_models/control-models/data-handler.control-model.js.map +1 -1
- package/build/_modules/ngx-models/index.d.ts +3 -0
- package/build/_modules/ngx-models/index.d.ts.map +1 -1
- package/build/_modules/ngx-models/index.js +3 -0
- package/build/_modules/ngx-models/index.js.map +1 -1
- package/build/_modules/sandbox-runtime/_collections/zero-egress-receipt.util.d.ts.map +1 -1
- package/build/_modules/sandbox-runtime/_collections/zero-egress-receipt.util.js +2 -0
- package/build/_modules/sandbox-runtime/_collections/zero-egress-receipt.util.js.map +1 -1
- package/build/_modules/sandbox-runtime/_collections/zero-egress-result-code.const.d.ts +2 -0
- package/build/_modules/sandbox-runtime/_collections/zero-egress-result-code.const.d.ts.map +1 -1
- package/build/_modules/sandbox-runtime/_collections/zero-egress-result-code.const.js +2 -0
- package/build/_modules/sandbox-runtime/_collections/zero-egress-result-code.const.js.map +1 -1
- package/build/index.d.ts +3 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js +3 -0
- package/build/index.js.map +1 -1
- package/build-esm/_collections/constants/data-sizes.const.js +37 -0
- package/build-esm/_collections/constants/error-defaults.const.js +17 -0
- package/build-esm/_collections/constants/global-settings.const.js +17 -0
- package/build-esm/_collections/constants/numbers.const.js +36 -0
- package/build-esm/_collections/constants/times.const.js +38 -0
- package/build-esm/_collections/utils/array.util.js +632 -0
- package/build-esm/_collections/utils/async.util.js +183 -0
- package/build-esm/_collections/utils/data.util.js +203 -0
- package/build-esm/_collections/utils/extract-error-message.util.js +183 -0
- package/build-esm/_collections/utils/json-error-helper.util.js +251 -0
- package/build-esm/_collections/utils/log.util.js +555 -0
- package/build-esm/_collections/utils/math/box-bounds.util.js +159 -0
- package/build-esm/_collections/utils/math/math.util.js +183 -0
- package/build-esm/_collections/utils/math/random.util.js +117 -0
- package/build-esm/_collections/utils/math/trigonometry.util.js +89 -0
- package/build-esm/_collections/utils/math/vector2.util.js +587 -0
- package/build-esm/_collections/utils/object.util.js +591 -0
- package/build-esm/_collections/utils/operation-authz.util.js +136 -0
- package/build-esm/_collections/utils/operation-guardrails.util.js +220 -0
- package/build-esm/_collections/utils/operation-run.util.js +81 -0
- package/build-esm/_collections/utils/operation-schema.util.js +159 -0
- package/build-esm/_collections/utils/regex/password-regex.util.js +56 -0
- package/build-esm/_collections/utils/regex/regex.util.js +1 -0
- package/build-esm/_collections/utils/regex/username-regex.util.js +28 -0
- package/build-esm/_collections/utils/require-env.util.js +90 -0
- package/build-esm/_collections/utils/round-list.util.js +108 -0
- package/build-esm/_collections/utils/secret-mask.util.js +219 -0
- package/build-esm/_collections/utils/stack.util.js +126 -0
- package/build-esm/_collections/utils/string-case.util.js +332 -0
- package/build-esm/_collections/utils/string.util.js +366 -0
- package/build-esm/_collections/utils/time.util.js +431 -0
- package/build-esm/_collections/utils/type-cloning-facility.util.js +122 -0
- package/build-esm/_collections/utils/utilities.util.js +61 -0
- package/build-esm/_collections/utils/uuid.util.js +33 -0
- package/build-esm/_enums/basic-property-type.enum.js +18 -0
- package/build-esm/_enums/data-model-type.enum.js +24 -0
- package/build-esm/_enums/environment-flag.enum.js +26 -0
- package/build-esm/_enums/error-level.enum.js +35 -0
- package/build-esm/_enums/error-status.enum.js +28 -0
- package/build-esm/_enums/http/http-call-type.enum.js +42 -0
- package/build-esm/_enums/http/http-event-type.enum.js +39 -0
- package/build-esm/_enums/http/http-response-type.enum.js +18 -0
- package/build-esm/_enums/log-style.enum.js +38 -0
- package/build-esm/_enums/operation-auth.type-enum.js +19 -0
- package/build-esm/_enums/operation-if-match.type-enum.js +17 -0
- package/build-esm/_enums/operation-patch-field.type-enum.js +40 -0
- package/build-esm/_enums/server-connection-status.enum.js +5 -0
- package/build-esm/_enums/time/day-of-week.enum.js +47 -0
- package/build-esm/_enums/time/month.enum.js +23 -0
- package/build-esm/_enums/time/relative-date.enum.js +19 -0
- package/build-esm/_models/control-models/data-model-params.control-model.js +259 -0
- package/build-esm/_models/control-models/data-model-settings.control-model.js +63 -0
- package/build-esm/_models/control-models/data-property-params.control-model.js +101 -0
- package/build-esm/_models/control-models/data-property-settings.control-model.js +61 -0
- package/build-esm/_models/control-models/error.control-model.js +787 -0
- package/build-esm/_models/control-models/http/http-error-response.control-model.js +48 -0
- package/build-esm/_models/control-models/http/http-headers.control-model.js +43 -0
- package/build-esm/_models/control-models/http/http-response.model-base.js +62 -0
- package/build-esm/_models/control-models/operation-context.control-model.js +110 -0
- package/build-esm/_models/control-models/operation-settings.control-model.js +184 -0
- package/build-esm/_models/control-models/poll.control-model.js +202 -0
- package/build-esm/_models/control-models/range-value.control-model.js +247 -0
- package/build-esm/_models/control-models/server-route-settings-base.control-model.js +19 -0
- package/build-esm/_models/control-models/server-status.control-model.js +73 -0
- package/build-esm/_models/control-models/service-endpoint-settings-base.control-model.js +110 -0
- package/build-esm/_models/data-models/errors.data-model.js +156 -0
- package/build-esm/_models/data-models/metadata.data-model.js +120 -0
- package/build-esm/_models/interfaces/box-bounds.interface.js +1 -0
- package/build-esm/_models/interfaces/environment/global-log-settings.interface.js +1 -0
- package/build-esm/_models/interfaces/environment/global-settings.interface.js +1 -0
- package/build-esm/_models/interfaces/error-defaults.interface.js +1 -0
- package/build-esm/_models/interfaces/operation-authz-result.interface.js +1 -0
- package/build-esm/_models/interfaces/operation-authz.interface.js +1 -0
- package/build-esm/_models/interfaces/operation-exposure.interface.js +1 -0
- package/build-esm/_models/interfaces/operation-guardrails.interface.js +1 -0
- package/build-esm/_models/interfaces/operation-input-settings.interface.js +1 -0
- package/build-esm/_models/interfaces/operation-json-schema.interface.js +1 -0
- package/build-esm/_models/interfaces/operation-patch-field.interface.js +1 -0
- package/build-esm/_models/interfaces/operation-patch-result.interface.js +1 -0
- package/build-esm/_models/interfaces/operation-patch-violation.interface.js +1 -0
- package/build-esm/_models/interfaces/operation-run-result.interface.js +1 -0
- package/build-esm/_models/interfaces/paged.interface.js +1 -0
- package/build-esm/_models/interfaces/poll-handle.interface.js +1 -0
- package/build-esm/_models/interfaces/random-weight.interface.js +1 -0
- package/build-esm/_models/interfaces/route-settings.interface.js +1 -0
- package/build-esm/_models/interfaces/search-query.interface.js +1 -0
- package/build-esm/_models/interfaces/search-result.interface.js +1 -0
- package/build-esm/_models/interfaces/server-error-statistics.interface.js +1 -0
- package/build-esm/_models/interfaces/vector2.interface.js +1 -0
- package/build-esm/_models/types/db-filter.type.js +1 -0
- package/build-esm/_models/types/db-sort.type.js +1 -0
- package/build-esm/_models/types/deprecated-boolean-alias.type.js +1 -0
- package/build-esm/_models/types/ds-filter.type.js +15 -0
- package/build-esm/_models/types/ds-sort.type.js +1 -0
- package/build-esm/_modules/ai/_collections/ai-media-provenance.util.js +24 -0
- package/build-esm/_modules/ai/_collections/ai-model-ref.util.js +70 -0
- package/build-esm/_modules/ai/_collections/ai-model-registry.util.js +37 -0
- package/build-esm/_modules/ai/_enums/ai-message-role.enum.js +8 -0
- package/build-esm/_modules/ai/_enums/ai-model-type.enum.js +8 -0
- package/build-esm/_modules/ai/_enums/ai-provider.enum.js +8 -0
- package/build-esm/_modules/ai/_models/ai-call-settings.interface.js +88 -0
- package/build-esm/_modules/ai/_models/ai-config.interface.js +1 -0
- package/build-esm/_modules/ai/_models/ai-embedding-request.interface.js +1 -0
- package/build-esm/_modules/ai/_models/ai-embedding-response.interface.js +1 -0
- package/build-esm/_modules/ai/_models/ai-image-request.interface.js +1 -0
- package/build-esm/_modules/ai/_models/ai-image-response.interface.js +1 -0
- package/build-esm/_modules/ai/_models/ai-llm-request.interface.js +1 -0
- package/build-esm/_modules/ai/_models/ai-llm-response.interface.js +1 -0
- package/build-esm/_modules/ai/_models/ai-media-file.interface.js +1 -0
- package/build-esm/_modules/ai/_models/ai-media-provenance.interface.js +1 -0
- package/build-esm/_modules/ai/_models/ai-message.interface.js +1 -0
- package/build-esm/_modules/ai/_models/ai-model-capabilities.interface.js +1 -0
- package/build-esm/_modules/ai/_models/ai-model-info.interface.js +1 -0
- package/build-esm/_modules/ai/_models/ai-model-settings-schema.interface.js +1 -0
- package/build-esm/_modules/ai/_models/ai-model3d-request.interface.js +1 -0
- package/build-esm/_modules/ai/_models/ai-model3d-response.interface.js +1 -0
- package/build-esm/_modules/ai/_models/ai-provider-capabilities.interface.js +1 -0
- package/build-esm/_modules/ai/_models/ai-settings.interface.js +10 -0
- package/build-esm/_modules/ai/_models/ai-speech-request.interface.js +1 -0
- package/build-esm/_modules/ai/_models/ai-speech-response.interface.js +1 -0
- package/build-esm/_modules/ai/_models/ai-tool-call.interface.js +1 -0
- package/build-esm/_modules/ai/_models/ai-tool-handler.type.js +1 -0
- package/build-esm/_modules/ai/_models/ai-tool-result.interface.js +1 -0
- package/build-esm/_modules/ai/_models/ai-tool.interface.js +1 -0
- package/build-esm/_modules/ai/_models/ai-user-provider-config.control-model.js +31 -0
- package/build-esm/_modules/ai/_modules/anthropic/_collections/aai-models.const.js +130 -0
- package/build-esm/_modules/ai/_modules/anthropic/_enums/aai-model.enum.js +17 -0
- package/build-esm/_modules/ai/_modules/anthropic/_models/aai-call-settings.control-model.js +23 -0
- package/build-esm/_modules/ai/_modules/anthropic/_models/aai-client-options.interface.js +1 -0
- package/build-esm/_modules/ai/_modules/anthropic/_models/aai-settings.control-model.js +25 -0
- package/build-esm/_modules/ai/_modules/anthropic/_models/aai-user-provider-config.control-model.js +22 -0
- package/build-esm/_modules/ai/_modules/anthropic/index.js +9 -0
- package/build-esm/_modules/ai/_modules/document-ai/_models/dai-embedding-info.interface.js +1 -0
- package/build-esm/_modules/ai/_modules/document-ai/_models/dai-vector-search-params.interface.js +1 -0
- package/build-esm/_modules/ai/_modules/document-ai/index.js +3 -0
- package/build-esm/_modules/ai/_modules/fdp-ai/_collections/fdpai-models.const.js +38 -0
- package/build-esm/_modules/ai/_modules/fdp-ai/_enums/fdpai-model.enum.js +7 -0
- package/build-esm/_modules/ai/_modules/fdp-ai/_models/fdpai-call-settings.control-model.js +21 -0
- package/build-esm/_modules/ai/_modules/fdp-ai/_models/fdpai-client-options.interface.js +1 -0
- package/build-esm/_modules/ai/_modules/fdp-ai/_models/fdpai-settings.control-model.js +24 -0
- package/build-esm/_modules/ai/_modules/fdp-ai/_models/fdpai-user-provider-config.control-model.js +22 -0
- package/build-esm/_modules/ai/_modules/fdp-ai/index.js +9 -0
- package/build-esm/_modules/ai/_modules/google-ai/_collections/gai-models.const.js +155 -0
- package/build-esm/_modules/ai/_modules/google-ai/_enums/gai-model.enum.js +14 -0
- package/build-esm/_modules/ai/_modules/google-ai/_models/gai-call-settings.control-model.js +23 -0
- package/build-esm/_modules/ai/_modules/google-ai/_models/gai-client-options.interface.js +1 -0
- package/build-esm/_modules/ai/_modules/google-ai/_models/gai-settings.control-model.js +25 -0
- package/build-esm/_modules/ai/_modules/google-ai/_models/gai-user-provider-config.control-model.js +22 -0
- package/build-esm/_modules/ai/_modules/google-ai/index.js +9 -0
- package/build-esm/_modules/ai/_modules/local-ai/_collections/lai-models.const.js +57 -0
- package/build-esm/_modules/ai/_modules/local-ai/_enums/lai-model.enum.js +5 -0
- package/build-esm/_modules/ai/_modules/local-ai/_models/lai-call-settings.control-model.js +19 -0
- package/build-esm/_modules/ai/_modules/local-ai/_models/lai-client-options.interface.js +1 -0
- package/build-esm/_modules/ai/_modules/local-ai/_models/lai-settings.control-model.js +22 -0
- package/build-esm/_modules/ai/_modules/local-ai/index.js +8 -0
- package/build-esm/_modules/ai/_modules/open-ai/_collections/oai-embedding-model-dimensions.const.js +6 -0
- package/build-esm/_modules/ai/_modules/open-ai/_collections/oai-models.const.js +455 -0
- package/build-esm/_modules/ai/_modules/open-ai/_enums/oai-model.enum.js +146 -0
- package/build-esm/_modules/ai/_modules/open-ai/_models/oai-call-settings.control-model.js +23 -0
- package/build-esm/_modules/ai/_modules/open-ai/_models/oai-client-options.interface.js +1 -0
- package/build-esm/_modules/ai/_modules/open-ai/_models/oai-embedding-info.interface.js +1 -0
- package/build-esm/_modules/ai/_modules/open-ai/_models/oai-settings.control-model.js +25 -0
- package/build-esm/_modules/ai/_modules/open-ai/_models/oai-user-provider-config.control-model.js +23 -0
- package/build-esm/_modules/ai/_modules/open-ai/index.js +19 -0
- package/build-esm/_modules/ai/index.js +34 -0
- package/build-esm/_modules/application-alert/_collections/application-alert-envelope.util.js +267 -0
- package/build-esm/_modules/application-alert/_enums/application-alert-evaluation-state.type-enum.js +6 -0
- package/build-esm/_modules/application-alert/_enums/application-alert-severity.type-enum.js +8 -0
- package/build-esm/_modules/application-alert/_models/application-alert.interface.js +1 -0
- package/build-esm/_modules/application-alert/index.js +4 -0
- package/build-esm/_modules/ci-tools/_enums/cit-ci-result-code.enum.js +9 -0
- package/build-esm/_modules/ci-tools/_enums/cit-ci-step-result-code.enum.js +9 -0
- package/build-esm/_modules/ci-tools/_models/cit-ci-result-info.data-models.js +63 -0
- package/build-esm/_modules/ci-tools/_models/cit-ci-step-result.interface.js +1 -0
- package/build-esm/_modules/ci-tools/index.js +6 -0
- package/build-esm/_modules/crypto/_collections/crypto-v1.util.js +199 -0
- package/build-esm/_modules/crypto/_collections/crypto-v2.util.js +273 -0
- package/build-esm/_modules/crypto/_collections/crypto-v4.util.js +605 -0
- package/build-esm/_modules/crypto/_collections/crypto.util.js +651 -0
- package/build-esm/_modules/crypto/_models/artifact-signature.interface.js +1 -0
- package/build-esm/_modules/crypto/_services/artifact-signature.control-service.js +276 -0
- package/build-esm/_modules/crypto/index.js +11 -0
- package/build-esm/_modules/custom-data/_collections/cud-module-settings.const.js +18 -0
- package/build-esm/_modules/custom-data/_models/cud.data-model.js +30 -0
- package/build-esm/_modules/custom-data/index.js +4 -0
- package/build-esm/_modules/data-handler/_models/data-handler-settings.control-model.js +78 -0
- package/build-esm/_modules/data-handler/_models/data-handler.control-model.js +386 -0
- package/build-esm/_modules/data-handler/_models/data-list-handler-settings.control-model.js +11 -0
- package/build-esm/_modules/data-handler/_models/data-list-handler.control-model.js +222 -0
- package/build-esm/_modules/data-handler/_models/data-search-handler-settings.control-model.js +25 -0
- package/build-esm/_modules/data-handler/_models/data-search-handler.control-model.js +334 -0
- package/build-esm/_modules/data-handler/_models/list-collector-data-handler-settings.control-model.js +12 -0
- package/build-esm/_modules/data-handler/_models/list-collector-data-handler.control-model.js +243 -0
- package/build-esm/_modules/data-handler/index.js +9 -0
- package/build-esm/_modules/deployment/_collections/atomic-rollback-manifest.util.js +348 -0
- package/build-esm/_modules/deployment/_models/atomic-rollback-manifest.interface.js +1 -0
- package/build-esm/_modules/deployment/index.js +2 -0
- package/build-esm/_modules/game/_collections/audio-mixer.util.js +109 -0
- package/build-esm/_modules/game/_collections/audio-scale.util.js +100 -0
- package/build-esm/_modules/game/_enums/audio-channel.enum.js +21 -0
- package/build-esm/_modules/game/_models/audio-mixer-config.interface.js +1 -0
- package/build-esm/_modules/game/_models/audio-mixer-settings.interface.js +1 -0
- package/build-esm/_modules/game/_models/audio-mixer-state.interface.js +1 -0
- package/build-esm/_modules/game/_models/audio-mixer.control-model.js +337 -0
- package/build-esm/_modules/game/_models/audio-scale.interface.js +1 -0
- package/build-esm/_modules/game/_models/flying-effect.control-model.js +212 -0
- package/build-esm/_modules/game/_models/flying-effect.interface.js +1 -0
- package/build-esm/_modules/game/_models/seeded-random-registry.control-model.js +124 -0
- package/build-esm/_modules/game/_models/seeded-random-registry.interface.js +1 -0
- package/build-esm/_modules/game/_models/seeded-random-state.interface.js +1 -0
- package/build-esm/_modules/game/_models/seeded-random.control-model.js +261 -0
- package/build-esm/_modules/game/index.js +17 -0
- package/build-esm/_modules/location/_collections/assets/country-codes-ISO-3166.json +3239 -0
- package/build-esm/_modules/location/_collections/assets/country-divisions-ISO-3166-all-list.json +19036 -0
- package/build-esm/_modules/location/_collections/assets/country-phone-codes.json +1202 -0
- package/build-esm/_modules/location/_collections/loc-country-divisions.const.js +3 -0
- package/build-esm/_modules/location/_collections/loc-country-isos.const.js +2 -0
- package/build-esm/_modules/location/_collections/loc-regions.util.js +107 -0
- package/build-esm/_modules/location/_collections/loc.util.js +56 -0
- package/build-esm/_modules/location/_enums/loc-region.enum.js +11 -0
- package/build-esm/_modules/location/_enums/loc-sub-region.enum.js +23 -0
- package/build-esm/_modules/location/_enums/loc-subdivision-region-type.enum.js +45 -0
- package/build-esm/_modules/location/_models/loc-coordinates.interface.js +1 -0
- package/build-esm/_modules/location/_models/loc-country-division.interface.js +1 -0
- package/build-esm/_modules/location/_models/loc-country-iso.interface.js +1 -0
- package/build-esm/_modules/location/_models/loc-country-phone-code.interface.js +1 -0
- package/build-esm/_modules/location/_models/loc-division-collection.interface.js +1 -0
- package/build-esm/_modules/location/_models/loc-division-region-data.interface.js +1 -0
- package/build-esm/_modules/location/_models/loc-geo-ip-location.interface.js +1 -0
- package/build-esm/_modules/location/index.js +17 -0
- package/build-esm/_modules/messaging/_collections/msg-module-settings.const.js +44 -0
- package/build-esm/_modules/messaging/_enums/msg-attachment-type.enum.js +21 -0
- package/build-esm/_modules/messaging/_enums/msg-conversation-type.enum.js +17 -0
- package/build-esm/_modules/messaging/_enums/msg-delivery-status.enum.js +15 -0
- package/build-esm/_modules/messaging/_enums/msg-event-key.enum.js +28 -0
- package/build-esm/_modules/messaging/_enums/msg-participant-role.enum.js +17 -0
- package/build-esm/_modules/messaging/_enums/msg-provider-type.enum.js +8 -0
- package/build-esm/_modules/messaging/_enums/msg-status.enum.js +21 -0
- package/build-esm/_modules/messaging/_enums/msg-type.enum.js +19 -0
- package/build-esm/_modules/messaging/_models/msg-attachment.interface.js +1 -0
- package/build-esm/_modules/messaging/_models/msg-conversation.data-model.js +80 -0
- package/build-esm/_modules/messaging/_models/msg-mention.interface.js +1 -0
- package/build-esm/_modules/messaging/_models/msg-message.data-model.js +102 -0
- package/build-esm/_modules/messaging/_models/msg-participant.interface.js +1 -0
- package/build-esm/_modules/messaging/_models/msg-reaction.interface.js +1 -0
- package/build-esm/_modules/messaging/_models/msg-thread-info.interface.js +1 -0
- package/build-esm/_modules/messaging/_modules/agent/_enums/agt-process-step-type.enum.js +27 -0
- package/build-esm/_modules/messaging/_modules/agent/_enums/agt-tool-status.enum.js +19 -0
- package/build-esm/_modules/messaging/_modules/agent/_models/agt-process-step.interface.js +1 -0
- package/build-esm/_modules/messaging/_modules/agent/_models/agt-reasoning-info.interface.js +1 -0
- package/build-esm/_modules/messaging/_modules/agent/_models/agt-tool-usage.interface.js +1 -0
- package/build-esm/_modules/messaging/_modules/agent/index.js +7 -0
- package/build-esm/_modules/messaging/index.js +25 -0
- package/build-esm/_modules/ngx-models/_collections/angular-placeholders.js +1 -0
- package/build-esm/_modules/ngx-models/_collections/button-new-style-settings-presets.const.js +170 -0
- package/build-esm/_modules/ngx-models/_collections/dynamo-global.settings.js +88 -0
- package/build-esm/_modules/ngx-models/_enums/button-new/button-new-border-radius.enum.js +14 -0
- package/build-esm/_modules/ngx-models/_enums/button-new/button-new-icon-style-type.enum.js +12 -0
- package/build-esm/_modules/ngx-models/_enums/button-new/button-new-size.enum.js +15 -0
- package/build-esm/_modules/ngx-models/_enums/button-new/button-new-style-type.enum.js +17 -0
- package/build-esm/_modules/ngx-models/_enums/button-type.enum.js +35 -0
- package/build-esm/_modules/ngx-models/_enums/checkbox-label-position.enum.js +8 -0
- package/build-esm/_modules/ngx-models/_enums/container-type.enum.js +11 -0
- package/build-esm/_modules/ngx-models/_enums/errors/error-level.enum.js +14 -0
- package/build-esm/_modules/ngx-models/_enums/errors/error-notification-color.enum.js +14 -0
- package/build-esm/_modules/ngx-models/_enums/errors/error-ui-mode.enum.js +14 -0
- package/build-esm/_modules/ngx-models/_enums/field-appearance.enum.js +13 -0
- package/build-esm/_modules/ngx-models/_enums/field-type.enum.js +49 -0
- package/build-esm/_modules/ngx-models/_enums/file-type.enum.js +12 -0
- package/build-esm/_modules/ngx-models/_enums/flex/flex-layout-align.enum.js +21 -0
- package/build-esm/_modules/ngx-models/_enums/flex/flex-layout.enum.js +6 -0
- package/build-esm/_modules/ngx-models/_enums/form-access.enum.js +9 -0
- package/build-esm/_modules/ngx-models/_enums/form-reset-data.enum.js +12 -0
- package/build-esm/_modules/ngx-models/_enums/form-store-on.enum.js +8 -0
- package/build-esm/_modules/ngx-models/_enums/forms-new/field-new-validator-type.enum.js +21 -0
- package/build-esm/_modules/ngx-models/_enums/frames/header-item-type.enum.js +16 -0
- package/build-esm/_modules/ngx-models/_enums/frames/header-position.enum.js +11 -0
- package/build-esm/_modules/ngx-models/_enums/frames/side-nav-badge-color.enum.js +14 -0
- package/build-esm/_modules/ngx-models/_enums/html/input-types.enum.js +26 -0
- package/build-esm/_modules/ngx-models/_enums/material-color.enum.js +14 -0
- package/build-esm/_modules/ngx-models/_enums/material-tooltip-position.enum.js +13 -0
- package/build-esm/_modules/ngx-models/_enums/preconfigured-field-type.enum.js +8 -0
- package/build-esm/_modules/ngx-models/_enums/storage-type.enum.js +13 -0
- package/build-esm/_modules/ngx-models/_enums/validator-type.enum.js +7 -0
- package/build-esm/_modules/ngx-models/_enums/voice/audio-mime-type.enum.js +15 -0
- package/build-esm/_modules/ngx-models/_enums/voice/voice-provider-type.enum.js +32 -0
- package/build-esm/_modules/ngx-models/_enums/voice/voice-recorder-state.enum.js +21 -0
- package/build-esm/_modules/ngx-models/_models/control-models/button-new-style-settings.control-model.js +44 -0
- package/build-esm/_modules/ngx-models/_models/control-models/button-params.control-model.js +304 -0
- package/build-esm/_modules/ngx-models/_models/control-models/chat/chat-column-layout-settings.control-model.js +59 -0
- package/build-esm/_modules/ngx-models/_models/control-models/data-handler-settings.control-model.js +94 -0
- package/build-esm/_modules/ngx-models/_models/control-models/data-handler.control-model.js +407 -0
- package/build-esm/_modules/ngx-models/_models/control-models/errors/error-notification.control-model.js +43 -0
- package/build-esm/_modules/ngx-models/_models/control-models/errors/error-settings.control-model.js +64 -0
- package/build-esm/_modules/ngx-models/_models/control-models/errors/errors-settings.control-model.js +52 -0
- package/build-esm/_modules/ngx-models/_models/control-models/field-settings.control-model.js +207 -0
- package/build-esm/_modules/ngx-models/_models/control-models/form-settings.control-model.js +275 -0
- package/build-esm/_modules/ngx-models/_models/control-models/forms-new/checkbox-field-new-settings.control-model.js +29 -0
- package/build-esm/_modules/ngx-models/_models/control-models/forms-new/color-picker-field-new-settings.control-model.js +36 -0
- package/build-esm/_modules/ngx-models/_models/control-models/forms-new/date-field-new-settings.control-model.js +31 -0
- package/build-esm/_modules/ngx-models/_models/control-models/forms-new/date-range-field-new-settings.control-model.js +46 -0
- package/build-esm/_modules/ngx-models/_models/control-models/forms-new/datetime-field-new-settings.control-model.js +38 -0
- package/build-esm/_modules/ngx-models/_models/control-models/forms-new/datetime-range-field-new-settings.control-model.js +48 -0
- package/build-esm/_modules/ngx-models/_models/control-models/forms-new/emoji-picker-field-new-settings.control-model.js +21 -0
- package/build-esm/_modules/ngx-models/_models/control-models/forms-new/field-new-settings.control-model.js +91 -0
- package/build-esm/_modules/ngx-models/_models/control-models/forms-new/field-new-types.js +1 -0
- package/build-esm/_modules/ngx-models/_models/control-models/forms-new/form-new-settings.control-model.js +39 -0
- package/build-esm/_modules/ngx-models/_models/control-models/forms-new/icon-picker-field-new-settings.control-model.js +39 -0
- package/build-esm/_modules/ngx-models/_models/control-models/forms-new/index.js +23 -0
- package/build-esm/_modules/ngx-models/_models/control-models/forms-new/multiselect-field-new-settings.control-model.js +31 -0
- package/build-esm/_modules/ngx-models/_models/control-models/forms-new/number-field-new-settings.control-model.js +29 -0
- package/build-esm/_modules/ngx-models/_models/control-models/forms-new/password-field-new-settings.control-model.js +51 -0
- package/build-esm/_modules/ngx-models/_models/control-models/forms-new/picker-field-new-option.interface.js +1 -0
- package/build-esm/_modules/ngx-models/_models/control-models/forms-new/radio-select-field-new-settings.control-model.js +38 -0
- package/build-esm/_modules/ngx-models/_models/control-models/forms-new/select-field-new-settings.control-model.js +35 -0
- package/build-esm/_modules/ngx-models/_models/control-models/forms-new/slider-field-new-settings.control-model.js +50 -0
- package/build-esm/_modules/ngx-models/_models/control-models/forms-new/slider-range-field-new-settings.control-model.js +47 -0
- package/build-esm/_modules/ngx-models/_models/control-models/forms-new/text-field-new-settings.control-model.js +35 -0
- package/build-esm/_modules/ngx-models/_models/control-models/forms-new/textarea-field-new-settings.control-model.js +27 -0
- package/build-esm/_modules/ngx-models/_models/control-models/frames/header-item-settings.control-model.js +44 -0
- package/build-esm/_modules/ngx-models/_models/control-models/frames/main-frame-settings.control-model.js +56 -0
- package/build-esm/_modules/ngx-models/_models/control-models/frames/side-nav-item-settings.control-model.js +58 -0
- package/build-esm/_modules/ngx-models/_models/control-models/frames/side-nav-settings.control-model.js +38 -0
- package/build-esm/_modules/ngx-models/_models/control-models/select.control-model.js +27 -0
- package/build-esm/_modules/ngx-models/_models/control-models/signal-data-list-handler-settings.control-model.js +23 -0
- package/build-esm/_modules/ngx-models/_models/control-models/signal-data-search-handler-settings.control-model.js +25 -0
- package/build-esm/_modules/ngx-models/_models/control-models/signal-list-collector-data-handler-settings.control-model.js +12 -0
- package/build-esm/_modules/ngx-models/_models/control-models/voice/voice-providers-settings.control-model.js +22 -0
- package/build-esm/_modules/ngx-models/_models/control-models/voice/voice-record-button-settings.control-model.js +91 -0
- package/build-esm/_modules/ngx-models/_models/control-models/voice/voice-recorder-settings.control-model.js +42 -0
- package/build-esm/_modules/ngx-models/_models/interfaces/button-new-settings.interface.js +1 -0
- package/build-esm/_modules/ngx-models/_models/interfaces/confirm-settings.interface.js +1 -0
- package/build-esm/_modules/ngx-models/_models/interfaces/global-settings.interface.js +1 -0
- package/build-esm/_modules/ngx-models/_models/interfaces/select-options-custom-constructor.interface.js +1 -0
- package/build-esm/_modules/ngx-models/_models/interfaces/storage.service.js +40 -0
- package/build-esm/_modules/ngx-models/_models/interfaces/voice/speak-options.interface.js +1 -0
- package/build-esm/_modules/ngx-models/_models/interfaces/voice/speak-result.interface.js +1 -0
- package/build-esm/_modules/ngx-models/_models/interfaces/voice/transcribe-options.interface.js +1 -0
- package/build-esm/_modules/ngx-models/_models/interfaces/voice/transcribe-result.interface.js +1 -0
- package/build-esm/_modules/ngx-models/_models/interfaces/voice/voice-profile.interface.js +1 -0
- package/build-esm/_modules/ngx-models/_models/interfaces/voice/voice-provider-init.interface.js +1 -0
- package/build-esm/_modules/ngx-models/_utils/shared.service.js +407 -0
- package/build-esm/_modules/ngx-models/index.js +89 -0
- package/build-esm/_modules/operation-control/_collections/operation-lease.util.js +323 -0
- package/build-esm/_modules/operation-control/_enums/operation-decision-code.type-enum.js +22 -0
- package/build-esm/_modules/operation-control/_enums/operation-state.type-enum.js +9 -0
- package/build-esm/_modules/operation-control/_models/operation-lease.interface.js +1 -0
- package/build-esm/_modules/operation-control/index.js +4 -0
- package/build-esm/_modules/pipe/_collections/pip-transforms.const.js +32 -0
- package/build-esm/_modules/pipe/_collections/utils/pip-country-pipe.util.js +29 -0
- package/build-esm/_modules/pipe/_collections/utils/pip-custom-pipe.util.js +22 -0
- package/build-esm/_modules/pipe/_collections/utils/pip-division-pipe.util.js +21 -0
- package/build-esm/_modules/pipe/_collections/utils/pip-json-pipe.util.js +18 -0
- package/build-esm/_modules/pipe/_collections/utils/pip-list-pipe.util.js +19 -0
- package/build-esm/_modules/pipe/_collections/utils/pip-multi-pipe-pipe.util.js +164 -0
- package/build-esm/_modules/pipe/_collections/utils/pip-obj-key-pipe.util.js +16 -0
- package/build-esm/_modules/pipe/_collections/utils/pip-range-pipe.util.js +64 -0
- package/build-esm/_modules/pipe/_collections/utils/pip-region-pipe.util.js +22 -0
- package/build-esm/_modules/pipe/_collections/utils/pip-replace-pipe.util.js +15 -0
- package/build-esm/_modules/pipe/_collections/utils/pip-slider-pipe.util.js +26 -0
- package/build-esm/_modules/pipe/_collections/utils/pip-smart-replace-pipe.util.js +40 -0
- package/build-esm/_modules/pipe/_enums/pip-range-pipe-setting.enum.js +14 -0
- package/build-esm/_modules/pipe/_enums/pip.enum.js +48 -0
- package/build-esm/_modules/pipe/_models/pip-multi-pipe-settings.type.js +1 -0
- package/build-esm/_modules/pipe/_models/pip-transforms.interface.js +1 -0
- package/build-esm/_modules/pipe/index.js +22 -0
- package/build-esm/_modules/request-safety/_collections/request-safety-inspector.util.js +317 -0
- package/build-esm/_modules/request-safety/_enums/request-safety-finding.type-enum.js +39 -0
- package/build-esm/_modules/request-safety/_models/request-safety.interface.js +1 -0
- package/build-esm/_modules/request-safety/index.js +3 -0
- package/build-esm/_modules/sandbox-runtime/_collections/zero-egress-receipt.util.js +154 -0
- package/build-esm/_modules/sandbox-runtime/_collections/zero-egress-result-code.const.js +36 -0
- package/build-esm/_modules/sandbox-runtime/_enums/zero-egress-outcome.type-enum.js +11 -0
- package/build-esm/_modules/sandbox-runtime/_models/zero-egress-receipt.interface.js +1 -0
- package/build-esm/_modules/sandbox-runtime/index.js +4 -0
- package/build-esm/_modules/security/_collections/stored-secret.util.js +68 -0
- package/build-esm/_modules/security/_models/stored-secret.control-model.js +52 -0
- package/build-esm/_modules/security/index.js +7 -0
- package/build-esm/_modules/socket/_enums/sck-event-key.enum.js +18 -0
- package/build-esm/_modules/socket/_models/sck-client-params.control-model.js +47 -0
- package/build-esm/_modules/socket/_models/sck-socket-event.control-model.js +133 -0
- package/build-esm/_modules/socket/_services/sck-client.service-base.js +314 -0
- package/build-esm/_modules/socket/index.js +7 -0
- package/build-esm/_modules/state-machine/_models/state-machine-config.interface.js +1 -0
- package/build-esm/_modules/state-machine/_models/state-machine-event.interface.js +1 -0
- package/build-esm/_modules/state-machine/_models/state-machine.control-model.js +262 -0
- package/build-esm/_modules/state-machine/_models/state-transition-result.interface.js +1 -0
- package/build-esm/_modules/state-machine/_models/state-transition.interface.js +1 -0
- package/build-esm/_modules/state-machine/index.js +6 -0
- package/build-esm/_modules/test/_collections/tst-module-settings.const.js +38 -0
- package/build-esm/_modules/test/index.js +2 -0
- package/build-esm/_modules/usage/_collections/usg-module-settings.const.js +16 -0
- package/build-esm/_modules/usage/_models/usg-action.control-model.js +25 -0
- package/build-esm/_modules/usage/_models/usg-daily-usage-data.control-model.js +30 -0
- package/build-esm/_modules/usage/_models/usg-data.control-model.js +30 -0
- package/build-esm/_modules/usage/_models/usg-session.data-model.js +60 -0
- package/build-esm/_modules/usage/index.js +7 -0
- package/build-esm/index.js +108 -0
- package/package.json +86 -85
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { second, hour, minute, week, day } from '../constants/times.const';
|
|
2
|
+
import { DyFM_Log } from './log.util';
|
|
3
|
+
import { DyFM_Time } from './time.util';
|
|
4
|
+
export class DyFM_Async {
|
|
5
|
+
/**
|
|
6
|
+
* delays the execution of a function
|
|
7
|
+
* @param ms
|
|
8
|
+
* @returns
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* await DyFM_Async.wait(1000);
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
static wait(ms) {
|
|
16
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
17
|
+
}
|
|
18
|
+
static sleep = this.wait;
|
|
19
|
+
static delay = this.wait;
|
|
20
|
+
/**
|
|
21
|
+
* WARNING: This function is recommended to use ONLY for limited instances,
|
|
22
|
+
* because it can cause performance issues.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```ts
|
|
26
|
+
* await DyFM_Async.waitUntil(() => check(), 100, 10000);
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
static waitUntil(check, interval = 100, timeout = 10_000) {
|
|
30
|
+
const timeoutError = new Error('waitUntil timeout');
|
|
31
|
+
return new Promise((resolve, reject) => {
|
|
32
|
+
const startTime = Date.now();
|
|
33
|
+
const intervalId = setInterval(() => {
|
|
34
|
+
if (check()) {
|
|
35
|
+
clearInterval(intervalId);
|
|
36
|
+
resolve();
|
|
37
|
+
}
|
|
38
|
+
else if (Date.now() - startTime > timeout) {
|
|
39
|
+
clearInterval(intervalId);
|
|
40
|
+
reject(timeoutError);
|
|
41
|
+
}
|
|
42
|
+
}, interval);
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* WARNING: This function is recommended to use ONLY for limited instances,
|
|
47
|
+
* because it can cause performance issues.
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* const result = await DyFM_Async.waitUntilAsync(
|
|
51
|
+
* () => check(),
|
|
52
|
+
* 30 * second,
|
|
53
|
+
* 5 * minute,
|
|
54
|
+
* );
|
|
55
|
+
*/
|
|
56
|
+
static waitUntilAsync(check, interval = 100, timeout = 10000) {
|
|
57
|
+
const timeoutError = new Error('waitUntilAsync timeout');
|
|
58
|
+
return new Promise((resolve, reject) => {
|
|
59
|
+
const startTime = Date.now();
|
|
60
|
+
const intervalId = setInterval(async () => {
|
|
61
|
+
if (await check()) {
|
|
62
|
+
clearInterval(intervalId);
|
|
63
|
+
resolve();
|
|
64
|
+
}
|
|
65
|
+
else if (Date.now() - startTime > timeout) {
|
|
66
|
+
clearInterval(intervalId);
|
|
67
|
+
reject(timeoutError);
|
|
68
|
+
}
|
|
69
|
+
}, interval);
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Creates a promise that resolves when the observable emits a value that passes the check function
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* ```ts
|
|
77
|
+
* const observable = new Observable<number>(observer => {
|
|
78
|
+
* setInterval(() => observer.next(Math.random()), 100);
|
|
79
|
+
* });
|
|
80
|
+
* const result = await DyFM_Async.takeUntil(observable, (value?: number) => value && value > 0.5);
|
|
81
|
+
* ```
|
|
82
|
+
*/
|
|
83
|
+
static takeUntil(observable, check) {
|
|
84
|
+
return new Promise((resolve) => {
|
|
85
|
+
// BFR-FDPTOKENSERVICE-024: szinkron emissziónál (BehaviorSubject / of) a callback még a
|
|
86
|
+
// subscribe visszatérte ELŐTT fut — `const sub` ekkor TDZ-ben lenne (ReferenceError, és a
|
|
87
|
+
// Promise sosem oldana fel). `let` + resolved-jelző; a leiratkozás ilyenkor utólag történik.
|
|
88
|
+
let resolved = false;
|
|
89
|
+
let sub;
|
|
90
|
+
sub = observable.subscribe((value) => {
|
|
91
|
+
if (!resolved && check(value)) {
|
|
92
|
+
resolved = true;
|
|
93
|
+
sub?.unsubscribe();
|
|
94
|
+
resolve(value);
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
if (resolved) {
|
|
98
|
+
sub.unsubscribe();
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Waits for a given amount of time and logs the remaining time.
|
|
104
|
+
* @param totalWaitTimeMs - The total amount of time to wait.
|
|
105
|
+
* @param context - The context of the countdown.
|
|
106
|
+
* @returns A promise that resolves when the countdown is complete.
|
|
107
|
+
*
|
|
108
|
+
* @example
|
|
109
|
+
* ```ts
|
|
110
|
+
* await DyFM_Async.waitWithCountdownLogging(1000, 'Countdown');
|
|
111
|
+
* ```
|
|
112
|
+
*/
|
|
113
|
+
static async waitWithCountdownLogging(totalWaitTimeMs, context = 'Countdown') {
|
|
114
|
+
const startTime = Date.now();
|
|
115
|
+
const endTime = startTime + totalWaitTimeMs;
|
|
116
|
+
// Define logging intervals based on total duration
|
|
117
|
+
/**
|
|
118
|
+
* Gets the logging interval based on the total duration.
|
|
119
|
+
* @param totalMs - The total duration in milliseconds.
|
|
120
|
+
* @returns The logging interval in milliseconds.
|
|
121
|
+
*
|
|
122
|
+
* @example
|
|
123
|
+
* ```ts
|
|
124
|
+
* const logInterval = getLogInterval(1000);
|
|
125
|
+
* console.log(logInterval); // 1000
|
|
126
|
+
* ```
|
|
127
|
+
*/
|
|
128
|
+
const getLogInterval = (totalMs) => {
|
|
129
|
+
const totalSeconds = totalMs / second;
|
|
130
|
+
const totalMinutes = totalSeconds / 60;
|
|
131
|
+
const totalHours = totalMinutes / 60;
|
|
132
|
+
const totalDays = totalHours / 24;
|
|
133
|
+
const totalWeeks = totalDays / 7;
|
|
134
|
+
if (totalWeeks >= 4)
|
|
135
|
+
return week; // Every week
|
|
136
|
+
if (totalDays >= 7)
|
|
137
|
+
return day; // Every day
|
|
138
|
+
if (totalDays >= 3)
|
|
139
|
+
return 12 * hour; // Every 12 hours
|
|
140
|
+
if (totalDays >= 1)
|
|
141
|
+
return 6 * hour; // Every 6 hours
|
|
142
|
+
if (totalHours >= 12)
|
|
143
|
+
return 3 * hour; // Every 3 hours
|
|
144
|
+
if (totalHours >= 6)
|
|
145
|
+
return hour; // Every hour
|
|
146
|
+
if (totalHours >= 3)
|
|
147
|
+
return 30 * minute; // Every 30 minutes
|
|
148
|
+
if (totalHours >= 1)
|
|
149
|
+
return 10 * minute; // Every 10 minutes
|
|
150
|
+
if (totalMinutes >= 30)
|
|
151
|
+
return 5 * minute; // Every 5 minutes
|
|
152
|
+
if (totalMinutes >= 10)
|
|
153
|
+
return minute; // Every minute
|
|
154
|
+
if (totalMinutes >= 5)
|
|
155
|
+
return 30 * second; // Every 30 seconds
|
|
156
|
+
if (totalMinutes >= 1)
|
|
157
|
+
return 10 * second; // Every 10 seconds
|
|
158
|
+
if (totalSeconds >= 30)
|
|
159
|
+
return 5 * second; // Every 5 seconds
|
|
160
|
+
return second; // Every second
|
|
161
|
+
};
|
|
162
|
+
const logInterval = getLogInterval(totalWaitTimeMs);
|
|
163
|
+
let lastLogTime = startTime;
|
|
164
|
+
// Format remaining time for display using DyFM_Time utility
|
|
165
|
+
const formatRemainingTime = (remainingMs) => DyFM_Time.getTimeInShortestString(remainingMs);
|
|
166
|
+
// Log initial countdown start
|
|
167
|
+
DyFM_Log.info(`⏳ ${context} started - Total duration: ${formatRemainingTime(totalWaitTimeMs)}`);
|
|
168
|
+
while (Date.now() < endTime) {
|
|
169
|
+
const now = Date.now();
|
|
170
|
+
const remainingMs = endTime - now;
|
|
171
|
+
// Check if it's time to log
|
|
172
|
+
if (now - lastLogTime >= logInterval) {
|
|
173
|
+
const remainingTime = formatRemainingTime(remainingMs);
|
|
174
|
+
DyFM_Log.info(`⏳ ${context} - ${remainingTime} remaining`);
|
|
175
|
+
lastLogTime = now;
|
|
176
|
+
}
|
|
177
|
+
// Wait for a short interval before checking again
|
|
178
|
+
await DyFM_Async.wait(Math.min(DyFM_Time.second, remainingMs));
|
|
179
|
+
}
|
|
180
|
+
// Log completion
|
|
181
|
+
DyFM_Log.success(`✅ ${context} completed`);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import { kilobyte, megabyte, gigabyte, terabyte, petabyte, exabyte, zettabyte, yottabyte } from '../constants/data-sizes.const';
|
|
2
|
+
import { DyFM_Math } from './math/math.util';
|
|
3
|
+
/**
|
|
4
|
+
* Data utility class
|
|
5
|
+
*
|
|
6
|
+
* Hungarian documentation (Hunglish):
|
|
7
|
+
* - Ez a utility data-size konverziókra fókuszál, ember-barát string formátummal
|
|
8
|
+
* - A számítás 1024-es alapot használ (KB/MB/GB/TB)
|
|
9
|
+
* - A `getSizeString` adja vissza a rövidített formátumot, pl.: `1.5KB`, `12MB`, `1GB 256MB`
|
|
10
|
+
*/
|
|
11
|
+
export class DyFM_Data {
|
|
12
|
+
/**
|
|
13
|
+
* A kilobyte (1024 B) egység
|
|
14
|
+
*/
|
|
15
|
+
static kilobyte = kilobyte;
|
|
16
|
+
/**
|
|
17
|
+
* A megabyte (1024 KB) egység
|
|
18
|
+
*/
|
|
19
|
+
static megabyte = megabyte;
|
|
20
|
+
/**
|
|
21
|
+
* A gigabyte (1024 MB) egység
|
|
22
|
+
*/
|
|
23
|
+
static gigabyte = gigabyte;
|
|
24
|
+
/**
|
|
25
|
+
* A terabyte (1024 GB) egység
|
|
26
|
+
*/
|
|
27
|
+
static terabyte = terabyte;
|
|
28
|
+
/**
|
|
29
|
+
* A petabyte (1024 TB) egység
|
|
30
|
+
*/
|
|
31
|
+
static petabyte = petabyte;
|
|
32
|
+
/**
|
|
33
|
+
* A exabyte (1024 PB) egység
|
|
34
|
+
*/
|
|
35
|
+
static exabyte = exabyte;
|
|
36
|
+
/**
|
|
37
|
+
* A zettabyte (1024 EB) egység
|
|
38
|
+
*/
|
|
39
|
+
static zettabyte = zettabyte;
|
|
40
|
+
/**
|
|
41
|
+
* A yottabyte (1024 ZB) egység
|
|
42
|
+
*/
|
|
43
|
+
static yottabyte = yottabyte;
|
|
44
|
+
/**
|
|
45
|
+
* Size-et ad vissza ember-barát string-ként.
|
|
46
|
+
* - 1024-es váltószámot használunk (KB/MB/GB/TB)
|
|
47
|
+
* - Negatív értékeknél `-` jel kerül az elejére (abszolút értékkel számolunk)
|
|
48
|
+
* - `full=true` esetén a következő kisebb egység maradéka is megjelenik (pl. `1GB 256MB`)
|
|
49
|
+
*
|
|
50
|
+
* Példák:
|
|
51
|
+
* ```ts
|
|
52
|
+
* DyFM_Data.getSizeString(0); // '0B'
|
|
53
|
+
* DyFM_Data.getSizeString(1536); // '1.5KB'
|
|
54
|
+
* DyFM_Data.getSizeString(1536, 0, true); // '2KB 0B'
|
|
55
|
+
* DyFM_Data.getSizeString(1_234_567); // '1.18MB'
|
|
56
|
+
* DyFM_Data.getSizeString(1_234_567, 0); // '1MB'
|
|
57
|
+
* DyFM_Data.getSizeString(1_500_000_000); // '1.4GB'
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
static getSizeString(size, decimals, full) {
|
|
61
|
+
// Edge case: 0 → rögtön visszaadjuk
|
|
62
|
+
if (size === 0) {
|
|
63
|
+
return '0B';
|
|
64
|
+
}
|
|
65
|
+
if (!size) {
|
|
66
|
+
return 'N/A';
|
|
67
|
+
}
|
|
68
|
+
// Negatív jel kezelése, számítás abszolút értékkel
|
|
69
|
+
const isNegative = size < 0;
|
|
70
|
+
let remaining = Math.abs(size);
|
|
71
|
+
// < 1KB → B (decimals nélkül)
|
|
72
|
+
if (remaining < this.kilobyte) {
|
|
73
|
+
const sign = isNegative ? '-' : '';
|
|
74
|
+
return `${sign}${Math.floor(remaining)}B`;
|
|
75
|
+
}
|
|
76
|
+
// KB
|
|
77
|
+
if (remaining < this.megabyte) {
|
|
78
|
+
const kb = remaining / this.kilobyte;
|
|
79
|
+
if (full) {
|
|
80
|
+
const kbWhole = Math.floor(kb);
|
|
81
|
+
const remainderAfterKb = remaining - (kbWhole * this.kilobyte);
|
|
82
|
+
const bRemainder = Math.floor(remainderAfterKb);
|
|
83
|
+
const sign = isNegative ? '-' : '';
|
|
84
|
+
if (bRemainder > 0) {
|
|
85
|
+
return `${sign}${kbWhole}KB ${bRemainder}B`;
|
|
86
|
+
}
|
|
87
|
+
return `${sign}${kbWhole}KB`;
|
|
88
|
+
}
|
|
89
|
+
const str = `${DyFM_Math.round(kb, decimals ?? (Number.isInteger(kb) ? 0 : 2))}KB`;
|
|
90
|
+
return isNegative ? `-${str}` : str;
|
|
91
|
+
}
|
|
92
|
+
// MB
|
|
93
|
+
if (remaining < this.gigabyte) {
|
|
94
|
+
const mb = remaining / this.megabyte;
|
|
95
|
+
if (full) {
|
|
96
|
+
const mbWhole = Math.floor(mb);
|
|
97
|
+
const remainderAfterMb = remaining - (mbWhole * this.megabyte);
|
|
98
|
+
const kbRemainder = Math.floor(remainderAfterMb / this.kilobyte);
|
|
99
|
+
const sign = isNegative ? '-' : '';
|
|
100
|
+
if (kbRemainder > 0) {
|
|
101
|
+
return `${sign}${mbWhole}MB ${kbRemainder}KB`;
|
|
102
|
+
}
|
|
103
|
+
return `${sign}${mbWhole}MB`;
|
|
104
|
+
}
|
|
105
|
+
const str = `${DyFM_Math.round(mb, decimals ?? (Number.isInteger(mb) ? 0 : 2))}MB`;
|
|
106
|
+
return isNegative ? `-${str}` : str;
|
|
107
|
+
}
|
|
108
|
+
// GB
|
|
109
|
+
if (remaining < this.terabyte) {
|
|
110
|
+
const gb = remaining / this.gigabyte;
|
|
111
|
+
if (full) {
|
|
112
|
+
const gbWhole = Math.floor(gb);
|
|
113
|
+
const remainderAfterGb = remaining - (gbWhole * this.gigabyte);
|
|
114
|
+
const mbRemainder = Math.floor(remainderAfterGb / this.megabyte);
|
|
115
|
+
const sign = isNegative ? '-' : '';
|
|
116
|
+
if (mbRemainder > 0) {
|
|
117
|
+
return `${sign}${gbWhole}GB ${mbRemainder}MB`;
|
|
118
|
+
}
|
|
119
|
+
return `${sign}${gbWhole}GB`;
|
|
120
|
+
}
|
|
121
|
+
const str = `${DyFM_Math.round(gb, decimals ?? (Number.isInteger(gb) ? 0 : 2))}GB`;
|
|
122
|
+
return isNegative ? `-${str}` : str;
|
|
123
|
+
}
|
|
124
|
+
// TB
|
|
125
|
+
if (remaining < this.petabyte) {
|
|
126
|
+
const tb = remaining / this.terabyte;
|
|
127
|
+
if (full) {
|
|
128
|
+
const tbWhole = Math.floor(tb);
|
|
129
|
+
const remainderAfterTb = remaining - (tbWhole * this.terabyte);
|
|
130
|
+
const gbRemainder = Math.floor(remainderAfterTb / this.gigabyte);
|
|
131
|
+
const sign = isNegative ? '-' : '';
|
|
132
|
+
if (gbRemainder > 0) {
|
|
133
|
+
return `${sign}${tbWhole}TB ${gbRemainder}GB`;
|
|
134
|
+
}
|
|
135
|
+
return `${sign}${tbWhole}TB`;
|
|
136
|
+
}
|
|
137
|
+
const str = `${DyFM_Math.round(tb, decimals ?? (Number.isInteger(tb) ? 0 : 2))}TB`;
|
|
138
|
+
return isNegative ? `-${str}` : str;
|
|
139
|
+
}
|
|
140
|
+
// PB
|
|
141
|
+
if (remaining < this.exabyte) {
|
|
142
|
+
const pb = remaining / this.petabyte;
|
|
143
|
+
if (full) {
|
|
144
|
+
const pbWhole = Math.floor(pb);
|
|
145
|
+
const remainderAfterPb = remaining - (pbWhole * this.petabyte);
|
|
146
|
+
const tbRemainder = Math.floor(remainderAfterPb / this.terabyte);
|
|
147
|
+
const sign = isNegative ? '-' : '';
|
|
148
|
+
if (tbRemainder > 0) {
|
|
149
|
+
return `${sign}${pbWhole}PB ${tbRemainder}TB`;
|
|
150
|
+
}
|
|
151
|
+
return `${sign}${pbWhole}PB`;
|
|
152
|
+
}
|
|
153
|
+
const str = `${DyFM_Math.round(pb, decimals ?? (Number.isInteger(pb) ? 0 : 2))}PB`;
|
|
154
|
+
return isNegative ? `-${str}` : str;
|
|
155
|
+
}
|
|
156
|
+
// EB
|
|
157
|
+
if (remaining < this.zettabyte) {
|
|
158
|
+
const eb = remaining / this.exabyte;
|
|
159
|
+
if (full) {
|
|
160
|
+
const ebWhole = Math.floor(eb);
|
|
161
|
+
const remainderAfterEb = remaining - (ebWhole * this.exabyte);
|
|
162
|
+
const pbRemainder = Math.floor(remainderAfterEb / this.petabyte);
|
|
163
|
+
const sign = isNegative ? '-' : '';
|
|
164
|
+
if (pbRemainder > 0) {
|
|
165
|
+
return `${sign}${ebWhole}EB ${pbRemainder}PB`;
|
|
166
|
+
}
|
|
167
|
+
return `${sign}${ebWhole}EB`;
|
|
168
|
+
}
|
|
169
|
+
const str = `${DyFM_Math.round(eb, decimals ?? (Number.isInteger(eb) ? 0 : 2))}EB`;
|
|
170
|
+
return isNegative ? `-${str}` : str;
|
|
171
|
+
}
|
|
172
|
+
// ZB
|
|
173
|
+
if (remaining < this.yottabyte) {
|
|
174
|
+
const zb = remaining / this.zettabyte;
|
|
175
|
+
if (full) {
|
|
176
|
+
const zbWhole = Math.floor(zb);
|
|
177
|
+
const remainderAfterZb = remaining - (zbWhole * this.zettabyte);
|
|
178
|
+
const ebRemainder = Math.floor(remainderAfterZb / this.exabyte);
|
|
179
|
+
const sign = isNegative ? '-' : '';
|
|
180
|
+
if (ebRemainder > 0) {
|
|
181
|
+
return `${sign}${zbWhole}ZB ${ebRemainder}EB`;
|
|
182
|
+
}
|
|
183
|
+
return `${sign}${zbWhole}ZB`;
|
|
184
|
+
}
|
|
185
|
+
const str = `${DyFM_Math.round(zb, decimals ?? (Number.isInteger(zb) ? 0 : 2))}ZB`;
|
|
186
|
+
return isNegative ? `-${str}` : str;
|
|
187
|
+
}
|
|
188
|
+
// YB
|
|
189
|
+
const yb = remaining / this.yottabyte;
|
|
190
|
+
if (full) {
|
|
191
|
+
const ybWhole = Math.floor(yb);
|
|
192
|
+
const remainderAfterYb = remaining - (ybWhole * this.yottabyte);
|
|
193
|
+
const zbRemainder = Math.floor(remainderAfterYb / this.zettabyte);
|
|
194
|
+
const sign = isNegative ? '-' : '';
|
|
195
|
+
if (zbRemainder > 0) {
|
|
196
|
+
return `${sign}${ybWhole}YB ${zbRemainder}ZB`;
|
|
197
|
+
}
|
|
198
|
+
return `${sign}${ybWhole}YB`;
|
|
199
|
+
}
|
|
200
|
+
const str = `${DyFM_Math.round(yb, decimals ?? (Number.isInteger(yb) ? 0 : 2))}YB`;
|
|
201
|
+
return isNegative ? `-${str}` : str;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Universal error → human-readable string extractor. **Never** returns the
|
|
3
|
+
* literal string `'undefined'` (or `'undefined undefined'`), `'[object Object]'`,
|
|
4
|
+
* or any other JS-rendering artifact. Walks the full DyFM_Error pipeline plus
|
|
5
|
+
* common Angular HttpErrorResponse + plain Error shapes, falling back to a
|
|
6
|
+
* meaningful diagnostic string when the input is malformed.
|
|
7
|
+
*
|
|
8
|
+
* Order of attempts (first non-empty wins) — USER-FACING fields only by default:
|
|
9
|
+
* 0. If `err` itself is a string, use as-is (the caller meant it as the text)
|
|
10
|
+
* 1. `err.__userMessage` (DyFM_Error user message)
|
|
11
|
+
* 2. `err.userMessage` (deprecated DyFM_Error_Settings field, still seen on some payloads)
|
|
12
|
+
* 3. `err.error.__userMessage` (HttpErrorResponse wrapping a DyFM_Error in its body — beats the outer technical
|
|
13
|
+
* `message`)
|
|
14
|
+
* 4. `err.error.userMessage`
|
|
15
|
+
* 5. ONLY with `includeTechnicalMessage: true`: `err._message` · `err.message` · `err.error._message` ·
|
|
16
|
+
* `err.error.message` (debug / transport texts — never a user message by default)
|
|
17
|
+
* 6. ONLY with `includeRawPayload: true`: the JSON-stringified payload (circular-safe; first 200 chars),
|
|
18
|
+
* prefixed with 'Malformed error: ' (default: skipped — raw JSON is not a user message)
|
|
19
|
+
* 7. `options.fallback` (or its default)
|
|
20
|
+
*
|
|
21
|
+
* Only when `includeHttpStatus: true` (opt-in, default `false`) and the input
|
|
22
|
+
* looks like a HttpErrorResponse, the status + statusText are appended in
|
|
23
|
+
* parens: e.g. `'Bad credentials (HTTP 401 Unauthorized)'`.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```ts
|
|
27
|
+
* try {
|
|
28
|
+
* await auth_CS.login(account);
|
|
29
|
+
* } catch (err) {
|
|
30
|
+
* this.formError = DyFM_extractErrorMessage(err, { prefix: 'Login' });
|
|
31
|
+
* // → 'Login: Bad credentials' (the raw `err` keeps the status for the log / copy chain)
|
|
32
|
+
* // OR
|
|
33
|
+
* // → 'Login: Network unreachable — check connection. Server logs may have detail.'
|
|
34
|
+
* // never 'Login: undefined undefined'
|
|
35
|
+
* }
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export function DyFM_extractErrorMessage(err, options) {
|
|
39
|
+
const includeHttpStatus = options?.includeHttpStatus === true;
|
|
40
|
+
const fallback = options?.fallback
|
|
41
|
+
?? 'Unexpected error (no detail in payload — check server logs).';
|
|
42
|
+
const prefix = options?.prefix ? `${options.prefix}: ` : '';
|
|
43
|
+
// Null/undefined/empty
|
|
44
|
+
if (err === null || err === undefined) {
|
|
45
|
+
return `${prefix}${fallback}`;
|
|
46
|
+
}
|
|
47
|
+
// String → use as-is
|
|
48
|
+
if (typeof err === 'string') {
|
|
49
|
+
return `${prefix}${err}`;
|
|
50
|
+
}
|
|
51
|
+
// Walk the candidate fields in order. Cast to any to access optional
|
|
52
|
+
// properties without forcing each branch into a separate type guard.
|
|
53
|
+
const e = err;
|
|
54
|
+
const innerError = e?.error;
|
|
55
|
+
// user-facing fields first (outer, then the body of a wrapping HttpErrorResponse)
|
|
56
|
+
const userCandidate = _nonEmptyString(e?.__userMessage)
|
|
57
|
+
?? _nonEmptyString(e?.userMessage)
|
|
58
|
+
?? _nonEmptyString(innerError?.__userMessage)
|
|
59
|
+
?? _nonEmptyString(innerError?.userMessage);
|
|
60
|
+
// technical fields (debug / transport) only on opt-in — see `includeTechnicalMessage`
|
|
61
|
+
const candidate = userCandidate ?? (options?.includeTechnicalMessage === true
|
|
62
|
+
? _nonEmptyString(e?._message)
|
|
63
|
+
?? _nonEmptyString(e?.message)
|
|
64
|
+
?? _nonEmptyString(innerError?._message)
|
|
65
|
+
?? _nonEmptyString(innerError?.message)
|
|
66
|
+
: undefined);
|
|
67
|
+
// HTTP status suffix (always-on by default)
|
|
68
|
+
const status = e?.___status
|
|
69
|
+
?? e?.status
|
|
70
|
+
?? innerError?.___status
|
|
71
|
+
?? innerError?.status;
|
|
72
|
+
const statusText = _nonEmptyString(e?.statusText)
|
|
73
|
+
?? _nonEmptyString(innerError?.statusText);
|
|
74
|
+
const httpSuffix = (includeHttpStatus && (status !== undefined || statusText !== undefined))
|
|
75
|
+
? ` (HTTP ${status ?? '?'}${statusText ? ' ' + statusText : ''})`
|
|
76
|
+
: '';
|
|
77
|
+
if (candidate !== undefined) {
|
|
78
|
+
return `${prefix}${candidate}${httpSuffix}`;
|
|
79
|
+
}
|
|
80
|
+
// No usable text field. The raw payload only on opt-in (diagnostic) — the user gets the fallback.
|
|
81
|
+
const jsonAttempt = options?.includeRawPayload === true ? _safeJsonStringify(err) : undefined;
|
|
82
|
+
if (jsonAttempt !== undefined && jsonAttempt !== '{}' && jsonAttempt !== '[]') {
|
|
83
|
+
const trimmed = jsonAttempt.length > 200
|
|
84
|
+
? jsonAttempt.slice(0, 200) + '…'
|
|
85
|
+
: jsonAttempt;
|
|
86
|
+
return `${prefix}Malformed error: ${trimmed}${httpSuffix}`;
|
|
87
|
+
}
|
|
88
|
+
// Total fallback.
|
|
89
|
+
return `${prefix}${fallback}${httpSuffix}`;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Returns the value if it's a non-empty string, else undefined.
|
|
93
|
+
* Trims and treats whitespace-only as empty. Internal helper.
|
|
94
|
+
*/
|
|
95
|
+
function _nonEmptyString(v) {
|
|
96
|
+
if (typeof v !== 'string') {
|
|
97
|
+
return undefined;
|
|
98
|
+
}
|
|
99
|
+
const trimmed = v.trim();
|
|
100
|
+
return trimmed.length > 0 ? trimmed : undefined;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* JSON.stringify wrapper that survives circular references + non-serializable
|
|
104
|
+
* values. Returns undefined if even the safe fallback fails (e.g. a Proxy
|
|
105
|
+
* whose getter throws).
|
|
106
|
+
*/
|
|
107
|
+
function _safeJsonStringify(v) {
|
|
108
|
+
try {
|
|
109
|
+
const seen = new WeakSet();
|
|
110
|
+
return JSON.stringify(v, (_key, value) => {
|
|
111
|
+
if (typeof value === 'object' && value !== null) {
|
|
112
|
+
if (seen.has(value)) {
|
|
113
|
+
return '[Circular]';
|
|
114
|
+
}
|
|
115
|
+
seen.add(value);
|
|
116
|
+
}
|
|
117
|
+
if (typeof value === 'function') {
|
|
118
|
+
return '[Function]';
|
|
119
|
+
}
|
|
120
|
+
if (typeof value === 'undefined') {
|
|
121
|
+
return '[undefined]';
|
|
122
|
+
}
|
|
123
|
+
return value;
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
try {
|
|
128
|
+
return String(v);
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
return undefined;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Convenience: same as DyFM_extractErrorMessage but always includes a default
|
|
137
|
+
* prefix derived from the calling context, useful for adding diagnostic
|
|
138
|
+
* breadcrumbs without per-call boilerplate. Diagnostic ⇒ it keeps the HTTP
|
|
139
|
+
* status, the technical message and the raw payload (`includeHttpStatus` + `includeTechnicalMessage` +
|
|
140
|
+
* `includeRawPayload`) — do not show its result to users.
|
|
141
|
+
*/
|
|
142
|
+
export function DyFM_formatError(err, prefix) {
|
|
143
|
+
return DyFM_extractErrorMessage(err, {
|
|
144
|
+
prefix: prefix, includeHttpStatus: true, includeTechnicalMessage: true, includeRawPayload: true,
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Reports a raw error payload via the universal client-error capture system
|
|
149
|
+
* (FR-029-style). Implementation is delegated to a consumer-registered
|
|
150
|
+
* handler so dynamo-fsm stays Angular-agnostic; if no handler is registered
|
|
151
|
+
* the error is logged via `DyFM_Log.error` (which is the default no-op-safe
|
|
152
|
+
* sink). Consumers (e.g. A_ErrorHandler_ControlService) call
|
|
153
|
+
* `DyFM_registerMalformedErrorSink(fn)` once at bootstrap.
|
|
154
|
+
*
|
|
155
|
+
* The intent: when DyFM_extractErrorMessage falls back to 'Malformed error:'
|
|
156
|
+
* or the generic fallback, the raw payload should also be captured for
|
|
157
|
+
* post-mortem analysis (server error-log via FR-029 pipeline).
|
|
158
|
+
*/
|
|
159
|
+
let _malformedErrorSink;
|
|
160
|
+
export function DyFM_registerMalformedErrorSink(fn) {
|
|
161
|
+
_malformedErrorSink = fn;
|
|
162
|
+
}
|
|
163
|
+
export function DyFM_reportMalformedError(err, context) {
|
|
164
|
+
if (_malformedErrorSink !== undefined) {
|
|
165
|
+
try {
|
|
166
|
+
_malformedErrorSink(err, context);
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
catch {
|
|
170
|
+
/* sink threw — fall through to default */
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
// Default: best-effort console.error wrapped in DyFM_Error for stack capture.
|
|
174
|
+
try {
|
|
175
|
+
// Lazy require to avoid a hard cycle through error.control-model -> log.util.
|
|
176
|
+
const { DyFM_Log } = require('./log.util');
|
|
177
|
+
DyFM_Log.error(`[DyFM_reportMalformedError] ${context ?? 'unknown context'}`, err);
|
|
178
|
+
}
|
|
179
|
+
catch {
|
|
180
|
+
// Last-ditch — should never happen since log.util has no further deps.
|
|
181
|
+
/* swallow */
|
|
182
|
+
}
|
|
183
|
+
}
|