@futdevpro/fsm-dynamo 1.20.92 → 1.20.94
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-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/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/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/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 +114 -85
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export const DyFM_usernameRegex = new RegExp('^[a-zA-Z0-9-_#$%&^|*]{6,}$');
|
|
2
|
+
/* export const FDP_usernameRegexUserMessage: string =
|
|
3
|
+
'Username must be at least 6 characters long and can only contain letters, ' +
|
|
4
|
+
'numbers, and the following special characters: -_#$%&^|*'; */
|
|
5
|
+
/* export function getUsernameErrors(username: string): string[] {
|
|
6
|
+
const errors: string[] = [];
|
|
7
|
+
|
|
8
|
+
usernameErrorsOneByOne.forEach((error) => {
|
|
9
|
+
if (!error.regex.test(username)) {
|
|
10
|
+
errors.push(error.message);
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
return errors;
|
|
15
|
+
} */
|
|
16
|
+
const DyFM_usernameErrorsOneByOne = [
|
|
17
|
+
{
|
|
18
|
+
regex: new RegExp('^(?=.{6,})'),
|
|
19
|
+
code: 'usernameErrorLength',
|
|
20
|
+
/* message: 'Username must be at least 6 characters long.' */
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
regex: new RegExp('^(?=.*[a-zA-Z0-9-_#$%&^|*])'),
|
|
24
|
+
code: 'usernameErrorSpecialChar',
|
|
25
|
+
/* message:
|
|
26
|
+
'Username can only contain letters, numbers, and the following special characters: -_#$%&^|*' */
|
|
27
|
+
},
|
|
28
|
+
];
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { DyFM_Error } from '../../_models/control-models/error.control-model';
|
|
2
|
+
import { DyFM_global_settings } from '../constants/global-settings.const';
|
|
3
|
+
/**
|
|
4
|
+
* FR-015 Phase 2 — isomorphic env-var requirement helper.
|
|
5
|
+
*
|
|
6
|
+
* Universal source of truth for "read this configuration key from an env-var
|
|
7
|
+
* across Node and browser". Replaces per-package `requireEnv` helpers (the
|
|
8
|
+
* Phase 1 local implementation in fdp-templates-nts is being refactored to
|
|
9
|
+
* delegate here).
|
|
10
|
+
*
|
|
11
|
+
* Lookup order:
|
|
12
|
+
* 1. `process.env[envVarName]` — Node-side (server const files at module load).
|
|
13
|
+
* 2. `DyFM_global_settings.envOverrides[envVarName]` — browser-side, populated
|
|
14
|
+
* by the consumer at app bootstrap from its `environment.ts`. See
|
|
15
|
+
* DyFM_Global_Settings.envOverrides docs for the pattern.
|
|
16
|
+
* 3. `options.fallback` if provided — used during migration's additive phase.
|
|
17
|
+
* 4. throw a structured DyFM_Error with the full deploy-target checklist.
|
|
18
|
+
*
|
|
19
|
+
* The throw shape is rich on purpose (per the rich-error rule):
|
|
20
|
+
* - `___status` = 500 (configuration error)
|
|
21
|
+
* - `_errorCode` = caller-supplied stable code
|
|
22
|
+
* - `_message` = debug-level description with the env-var name + deploy-target
|
|
23
|
+
* checklist (host .env, docker-compose env-block, Overseer secrets-store,
|
|
24
|
+
* client environment.ts → bootstrap envOverrides)
|
|
25
|
+
* - `__userMessage` = admin-actionable message
|
|
26
|
+
* - `___issuerService` = caller-supplied package short-code
|
|
27
|
+
*
|
|
28
|
+
* @example Node server const file (module load):
|
|
29
|
+
* ```ts
|
|
30
|
+
* import { DyFM_requireEnv } from '@futdevpro/fsm-dynamo';
|
|
31
|
+
*
|
|
32
|
+
* export const FDP_keysEnv_settingsBase = {
|
|
33
|
+
* authKey: DyFM_requireEnv('FDP_CORE_FE_AUTH_KEY', {
|
|
34
|
+
* errorCode: 'FDP-ENV-MISSING-CORE-FE-AUTH-KEY',
|
|
35
|
+
* issuerService: 'fdp-templates',
|
|
36
|
+
* fallback: '<inherit literal>', // remove for Wave 3
|
|
37
|
+
* }),
|
|
38
|
+
* };
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
41
|
+
* @example Browser-side lazy getter (deferred to first access, after consumer
|
|
42
|
+
* bootstrap has populated DyFM_global_settings.envOverrides):
|
|
43
|
+
* ```ts
|
|
44
|
+
* let _cached: string | undefined;
|
|
45
|
+
* function _resolveKey(): string {
|
|
46
|
+
* if (_cached !== undefined) return _cached;
|
|
47
|
+
* _cached = DyFM_requireEnv('DyNM_STORAGE_ENCRYPTION_KEY', { ... });
|
|
48
|
+
* return _cached;
|
|
49
|
+
* }
|
|
50
|
+
* export const DyNM_global_settings = {
|
|
51
|
+
* get storageEncryptionKey(): string { return _resolveKey(); },
|
|
52
|
+
* };
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
export function DyFM_requireEnv(envVarName, options) {
|
|
56
|
+
// Node path: process.env at module-load time. Guarded for browser bundles
|
|
57
|
+
// where `process` may be undefined or shimmed without runtime values.
|
|
58
|
+
if (typeof process !== 'undefined' && process.env && process.env[envVarName]) {
|
|
59
|
+
return process.env[envVarName];
|
|
60
|
+
}
|
|
61
|
+
// Browser path: consumer-populated envOverrides map. Populated at app
|
|
62
|
+
// bootstrap from environment.ts — see DyFM_Global_Settings.envOverrides.
|
|
63
|
+
const override = DyFM_global_settings.envOverrides?.[envVarName];
|
|
64
|
+
if (override) {
|
|
65
|
+
return override;
|
|
66
|
+
}
|
|
67
|
+
// Transition fallback (Wave 1 of an FR-015-style migration).
|
|
68
|
+
if (options.fallback !== undefined) {
|
|
69
|
+
return options.fallback;
|
|
70
|
+
}
|
|
71
|
+
// Missing — fail fast with a rich, debug-friendly DyFM_Error.
|
|
72
|
+
throw new DyFM_Error({
|
|
73
|
+
status: 500,
|
|
74
|
+
errorCode: options.errorCode,
|
|
75
|
+
message: `Environment variable '${envVarName}' is required but was not found. ` +
|
|
76
|
+
`Checked: process.env.${envVarName} (Node) and ` +
|
|
77
|
+
`DyFM_global_settings.envOverrides['${envVarName}'] (browser). ` +
|
|
78
|
+
`Both unset, and no transition fallback configured. ` +
|
|
79
|
+
`Set '${envVarName}' on every deploy target before deploying this ` +
|
|
80
|
+
`package version: (1) host .env on every host running a backend, ` +
|
|
81
|
+
`(2) docker-compose env-block on every consumer service, ` +
|
|
82
|
+
`(3) Overseer secrets-store entry for CI builds, ` +
|
|
83
|
+
`(4) client environment.ts plus app-bootstrap copy into ` +
|
|
84
|
+
`DyFM_global_settings.envOverrides for any browser consumer.`,
|
|
85
|
+
userMessage: options.userMessage
|
|
86
|
+
?? `Configuration error — environment variable '${envVarName}' is missing. `
|
|
87
|
+
+ `Contact the responsible operator to set it on this deploy target.`,
|
|
88
|
+
issuerService: options.issuerService,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This class is a collection of static methods for round list operations
|
|
3
|
+
* A round list is a list that is circular
|
|
4
|
+
* - after the last element, the first comes next
|
|
5
|
+
*/
|
|
6
|
+
export class DyFM_RoundList {
|
|
7
|
+
/**
|
|
8
|
+
* returns the outbound index of the list
|
|
9
|
+
* @param listLength
|
|
10
|
+
* @param outboundIndex
|
|
11
|
+
* @returns
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* const listLength = 10;
|
|
16
|
+
* const outboundIndex = 15;
|
|
17
|
+
* const result = DyFM_RoundList.getOutboundedIndex(listLength, outboundIndex);
|
|
18
|
+
* console.log(result); // 5
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
static getOutboundedIndex(listLength, outboundIndex) {
|
|
22
|
+
if (!listLength) {
|
|
23
|
+
throw new Error('roundListPlusIndex failed. list is empty!');
|
|
24
|
+
}
|
|
25
|
+
if (outboundIndex < 0) {
|
|
26
|
+
outboundIndex = outboundIndex % listLength;
|
|
27
|
+
outboundIndex = listLength + outboundIndex;
|
|
28
|
+
}
|
|
29
|
+
if (listLength <= outboundIndex) {
|
|
30
|
+
outboundIndex = outboundIndex % listLength;
|
|
31
|
+
}
|
|
32
|
+
return outboundIndex;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* returns the index of the opposite element of the list
|
|
36
|
+
* - as they are circular, the opposite is at the half of the list
|
|
37
|
+
* - as it is circular, for the second half, the opposite is at the first half
|
|
38
|
+
* @param length
|
|
39
|
+
* @param oppositeOf
|
|
40
|
+
* @returns
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```ts
|
|
44
|
+
* const length = 10;
|
|
45
|
+
* const oppositeOf = 5;
|
|
46
|
+
* const result = DyFM_RoundList.getIndexOpposite(length, oppositeOf);
|
|
47
|
+
* console.log(result); // 0
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
static getIndexOpposite(length, oppositeOf) {
|
|
51
|
+
const plusIndex = oppositeOf + Math.round(length / 2);
|
|
52
|
+
const res = this.getOutboundedIndex(length, plusIndex);
|
|
53
|
+
return res;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* returns the element at the outbound index of the list
|
|
57
|
+
* @param list
|
|
58
|
+
* @param outboundIndex
|
|
59
|
+
* @returns
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```ts
|
|
63
|
+
* const list = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ];
|
|
64
|
+
* const outboundIndex = 15;
|
|
65
|
+
* const result = DyFM_RoundList.getListIndex(list, outboundIndex);
|
|
66
|
+
* console.log(result); // 5
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
static getListIndex(list, outboundIndex) {
|
|
70
|
+
return list[this.getOutboundedIndex(list.length, outboundIndex)];
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* returns the element at the opposite index of the list
|
|
74
|
+
* @param list
|
|
75
|
+
* @param oppositeOf
|
|
76
|
+
* @returns
|
|
77
|
+
*
|
|
78
|
+
* @example
|
|
79
|
+
* ```ts
|
|
80
|
+
* const list = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ];
|
|
81
|
+
* const oppositeOf = 5;
|
|
82
|
+
* const result = DyFM_RoundList.getListOpposite(list, oppositeOf);
|
|
83
|
+
* console.log(result); // 0
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
static getListOpposite(list, oppositeOf) {
|
|
87
|
+
return list[this.getIndexOpposite(list.length, list.indexOf(oppositeOf))];
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* returns the last element of the list
|
|
91
|
+
* returns null if the list is empty
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* ```ts
|
|
95
|
+
* const list = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ];
|
|
96
|
+
* const result = DyFM_RoundList.getLast(list);
|
|
97
|
+
* console.log(result); // 10
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
static getLast(list) {
|
|
101
|
+
if (0 < list.length) {
|
|
102
|
+
return list[list.length - 1];
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
// publish-check-allow-file — EZ a titok-maszkolo detektor-definicioja: a mintak es a
|
|
2
|
+
// magyarazo peldak (`mongodb://user:pass@host`) a funkcio reszei, nem beegetett titkok.
|
|
3
|
+
/**
|
|
4
|
+
* FR-093 (2026-06-09) — Universal secret/key masking utility (bedrock level).
|
|
5
|
+
*
|
|
6
|
+
* Lehetove teszi az ALL-FDP-systems-szintu secret-szivargas-detection +
|
|
7
|
+
* maszkolas-t egy bedrock-szinten. A korabban Overseer / runner-worker
|
|
8
|
+
* helyi util-jai (FR-092) most ezt importaljak — egy SOR konfiguracio +
|
|
9
|
+
* find-and-replace.
|
|
10
|
+
*
|
|
11
|
+
* User feedback ('az osszes rendszerunknek a lenyege az univerzalizalt,
|
|
12
|
+
* mindenhol hasznalhato, egysegesített megoldások'): every secret-pattern
|
|
13
|
+
* ennek a egyetlen DyFM_SecretMask_Util-nak a felelossege.
|
|
14
|
+
*
|
|
15
|
+
* Strategy — KETTOS:
|
|
16
|
+
* 1. **PATTERN-based**: ismert secret-formatumokra automatikus felismeres.
|
|
17
|
+
* 2. **VALUE-based**: a process.env-jenek secret-erteket overlay-eli minden szovegben.
|
|
18
|
+
*
|
|
19
|
+
* Identifiability config (`DyFM_SecretMask_Settings.partialReveal`):
|
|
20
|
+
* - DEFAULT: `{ prefix: 4, suffix: 4 }` — a kulcsok elso 4 + utolso 4 char-ja
|
|
21
|
+
* megorzodik, kozeppe `[redacted-<KIND>]` keruln, pl.:
|
|
22
|
+
* `ghp_abcdefghij1234567890abcdefghij12345678` → `ghp_abcd...5678 [redacted-github-pat]`
|
|
23
|
+
* - User-extensible: csokkentett vagy 0-os reveal a tobb-biztonsagos
|
|
24
|
+
* deploymentekhez (`{ prefix: 0, suffix: 0 }` → tisztan opaque).
|
|
25
|
+
*
|
|
26
|
+
* Per memory `[[feedback_rich_error_handling]]`: a maszkolt token jelzes ne
|
|
27
|
+
* legyen `***` opaque; legyen `[redacted-<KIND>]` hogy ranezessel lassuk MILYEN
|
|
28
|
+
* tipusu szivargast szuntunk meg.
|
|
29
|
+
*
|
|
30
|
+
* Pattern-mapping per memory `[[feedback_individual_plans]]` — single source of
|
|
31
|
+
* truth: minden uj secret-format hozzaadando a `DyFM_SECRET_PATTERNS` array-hez;
|
|
32
|
+
* a tobbi rendszerben (Overseer/runner/bedrock packages) automatikusan
|
|
33
|
+
* megjelenik a fsm-bump utan.
|
|
34
|
+
*/
|
|
35
|
+
export const DyFM_DEFAULT_SECRET_MASK_SETTINGS = {
|
|
36
|
+
partialReveal: {
|
|
37
|
+
prefix: 4,
|
|
38
|
+
suffix: 4,
|
|
39
|
+
},
|
|
40
|
+
minEnvValueLength: 8,
|
|
41
|
+
envNameSecretRx: /(?:TOKEN|SECRET|KEY|PASSWORD|PASSWD|PAT|HMAC|AUTH|PRIVATE|CREDENTIAL|API_KEY|WEBHOOK)/i,
|
|
42
|
+
};
|
|
43
|
+
const defaultRevealReplacement = (matched, kind, settings) => {
|
|
44
|
+
const p = Math.max(0, settings.partialReveal.prefix);
|
|
45
|
+
const s = Math.max(0, settings.partialReveal.suffix);
|
|
46
|
+
// Ha a kulcs tul rovid az osszes reveal-osszeghez kepest, ne reveal-juk
|
|
47
|
+
// (kulonben az egesz secret elerhetonek osszetapadna).
|
|
48
|
+
if (matched.length <= p + s + 4) {
|
|
49
|
+
return `[redacted-${kind}]`;
|
|
50
|
+
}
|
|
51
|
+
if (p === 0 && s === 0) {
|
|
52
|
+
return `[redacted-${kind}]`;
|
|
53
|
+
}
|
|
54
|
+
const head = matched.slice(0, p);
|
|
55
|
+
const tail = matched.slice(matched.length - s);
|
|
56
|
+
return `${head}...${tail} [redacted-${kind}]`;
|
|
57
|
+
};
|
|
58
|
+
export const DyFM_SECRET_PATTERNS = [
|
|
59
|
+
// URL-embedded basic auth — BARMELY scheme (`http(s)`, `mongodb`, `postgres`, `redis`,
|
|
60
|
+
// `amqp`, `mysql` stb.), nem csak http: a `mongodb://user:pass@host` connection-string a
|
|
61
|
+
// leggyakoribb DB-secret-leak vektor a CI-logokban. A `user:pass@` szerkezet kotelezo →
|
|
62
|
+
// nincs false-positive a sima URL-ekre (port `host:8080/` sem, mert nincs utana `@`).
|
|
63
|
+
// A sajat replace-pattern megorzi a scheme-et ($1) + host-ot.
|
|
64
|
+
{
|
|
65
|
+
kind: 'url-cred',
|
|
66
|
+
regex: /\b([a-z][a-z0-9+.-]*:\/\/)([^/\s:@]*):([^\s@]+)@/gi,
|
|
67
|
+
redactWith: (_m) => '$1[redacted-url-cred]@',
|
|
68
|
+
},
|
|
69
|
+
// GitHub PATs
|
|
70
|
+
{ kind: 'github-pat', regex: /\bgh[ps]_[A-Za-z0-9]{36,}\b/g },
|
|
71
|
+
{ kind: 'github-pat-fine', regex: /\bgithub_pat_[A-Za-z0-9_]{82,}\b/g },
|
|
72
|
+
{ kind: 'github-oauth', regex: /\bgho_[A-Za-z0-9]{36,}\b/g },
|
|
73
|
+
{ kind: 'github-refresh', regex: /\bghr_[A-Za-z0-9]{36,}\b/g },
|
|
74
|
+
// NPM token
|
|
75
|
+
{ kind: 'npm-token', regex: /\bnpm_[A-Za-z0-9]{36,}\b/g },
|
|
76
|
+
// Docker Hub PAT
|
|
77
|
+
{ kind: 'docker-pat', regex: /\bdckr_pat_[A-Za-z0-9_\-]{20,}\b/g },
|
|
78
|
+
// Slack token
|
|
79
|
+
{ kind: 'slack-token', regex: /\bxox[abprs]-[A-Za-z0-9-]{10,}\b/g },
|
|
80
|
+
// Anthropic key (BEFORE OpenAI — `sk-ant-*` more specific than `sk-*`)
|
|
81
|
+
{ kind: 'anthropic-key', regex: /\bsk-ant-[A-Za-z0-9\-_]{32,}\b/g },
|
|
82
|
+
// OpenAI / generic `sk-*` key
|
|
83
|
+
{ kind: 'openai-key', regex: /\bsk-[A-Za-z0-9]{32,}\b/g },
|
|
84
|
+
// Google API key
|
|
85
|
+
{ kind: 'google-api-key', regex: /\bAIza[0-9A-Za-z\-_]{35}\b/g },
|
|
86
|
+
// Discord webhook URL (id + token in URL)
|
|
87
|
+
{
|
|
88
|
+
kind: 'discord-webhook',
|
|
89
|
+
regex: /\bhttps?:\/\/(?:discord(?:app)?\.com|discordapp\.com)\/api\/webhooks\/\d+\/[A-Za-z0-9_\-]+/g,
|
|
90
|
+
redactWith: (_m) => '[redacted-discord-webhook]',
|
|
91
|
+
},
|
|
92
|
+
// Bearer token in HTTP header style — megorizzuk a 'Bearer ' prefixet (literally), a token-t pedig reveal-eljuk.
|
|
93
|
+
{
|
|
94
|
+
kind: 'bearer-token',
|
|
95
|
+
regex: /\b(Bearer)\s+([A-Za-z0-9\-._~+/=]{20,})/gi,
|
|
96
|
+
redactWith: (matched, settings) => {
|
|
97
|
+
const tokenStart = matched.search(/\s+/);
|
|
98
|
+
const prefix = matched.slice(0, tokenStart + 1); // 'Bearer '
|
|
99
|
+
const token = matched.slice(tokenStart + 1);
|
|
100
|
+
return prefix + defaultRevealReplacement(token, 'token', settings);
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
// JWT (eyJ + .* + .*)
|
|
104
|
+
{ kind: 'jwt', regex: /\beyJ[A-Za-z0-9_\-]{10,}\.[A-Za-z0-9_\-]{10,}\.[A-Za-z0-9_\-]{10,}\b/g },
|
|
105
|
+
// AWS Access Key
|
|
106
|
+
{ kind: 'aws-access-key', regex: /\bAKIA[0-9A-Z]{16}\b/g },
|
|
107
|
+
// Env-style secret-name = value
|
|
108
|
+
{
|
|
109
|
+
kind: 'env-style-secret',
|
|
110
|
+
regex: /\b([A-Z][A-Z0-9_]*(?:TOKEN|SECRET|KEY|PASSWORD|PASSWD|PAT|HMAC|AUTH|PRIVATE)[A-Z0-9_]*)\s*[:=]\s*['"]?([^\s'"]+)['"]?/g,
|
|
111
|
+
redactWith: (matched, settings) => {
|
|
112
|
+
// Pull out the key name + value via re-match (avoids capturing groups in redactWith signature)
|
|
113
|
+
const m = matched.match(/\b([A-Z][A-Z0-9_]*(?:TOKEN|SECRET|KEY|PASSWORD|PASSWD|PAT|HMAC|AUTH|PRIVATE)[A-Z0-9_]*)\s*[:=]\s*['"]?([^\s'"]+)/);
|
|
114
|
+
if (!m) {
|
|
115
|
+
return matched;
|
|
116
|
+
}
|
|
117
|
+
const keyName = m[1];
|
|
118
|
+
const value = m[2];
|
|
119
|
+
const sep = matched.includes(': ') ? '=' : '=';
|
|
120
|
+
const revealed = defaultRevealReplacement(value, 'env-value', settings);
|
|
121
|
+
return `${keyName}${sep}${revealed}`;
|
|
122
|
+
},
|
|
123
|
+
},
|
|
124
|
+
];
|
|
125
|
+
/**
|
|
126
|
+
* `process.env`-bol kigyujti azokat a kulcsokat ahol a NEV titkos-jellegu
|
|
127
|
+
* ÉS a value >= minEnvValueLength. Visszaad egy listat — ezeket szovegben
|
|
128
|
+
* minden elofordulasban partial-reveal-el felulrak-juk.
|
|
129
|
+
*/
|
|
130
|
+
const collectEnvSecretValues = (settings) => {
|
|
131
|
+
const out = [];
|
|
132
|
+
for (const [key, raw] of Object.entries(process.env)) {
|
|
133
|
+
if (!raw || raw.length < settings.minEnvValueLength) {
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
if (!settings.envNameSecretRx.test(key)) {
|
|
137
|
+
continue;
|
|
138
|
+
}
|
|
139
|
+
if (/^(true|false|0|1)$/i.test(raw)) {
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
out.push({ value: raw, key: key });
|
|
143
|
+
}
|
|
144
|
+
// Sort by value length DESC — hosszabb ertekekkel kezdjuk, igy egy rovid
|
|
145
|
+
// prefix nem sealeze el a hosszabb kornyezetet.
|
|
146
|
+
out.sort((a, b) => b.value.length - a.value.length);
|
|
147
|
+
return out;
|
|
148
|
+
};
|
|
149
|
+
/**
|
|
150
|
+
* `DyFM_maskSecrets` — universal pre-Discord-send + pre-log-persist masking.
|
|
151
|
+
*
|
|
152
|
+
* @param text bemenet (ha nem string, JSON-szerializalaskor maskoljuk)
|
|
153
|
+
* @param settings konfiguracio (default a DyFM_DEFAULT_SECRET_MASK_SETTINGS)
|
|
154
|
+
* @returns maszkolt szoveg
|
|
155
|
+
*/
|
|
156
|
+
export function DyFM_maskSecrets(text, settings = DyFM_DEFAULT_SECRET_MASK_SETTINGS) {
|
|
157
|
+
if (text === null || text === undefined) {
|
|
158
|
+
return '';
|
|
159
|
+
}
|
|
160
|
+
let str;
|
|
161
|
+
if (typeof text === 'string') {
|
|
162
|
+
str = text;
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
try {
|
|
166
|
+
str = JSON.stringify(text);
|
|
167
|
+
}
|
|
168
|
+
catch {
|
|
169
|
+
str = String(text);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
// 1. PATTERN-based maszkolas
|
|
173
|
+
for (const p of DyFM_SECRET_PATTERNS) {
|
|
174
|
+
str = str.replace(p.regex, (matched, ...groups) => {
|
|
175
|
+
// Drop the `offset` + `wholeString` args at the end of `groups`
|
|
176
|
+
if (p.redactWith) {
|
|
177
|
+
return p.redactWith(matched, settings)
|
|
178
|
+
.replace(/\$1/g, groups[0] ?? '')
|
|
179
|
+
.replace(/\$2/g, groups[1] ?? '');
|
|
180
|
+
}
|
|
181
|
+
// Default: partial-reveal with kind
|
|
182
|
+
return defaultRevealReplacement(matched, p.kind, settings);
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
// 2. ENV-secret value-alapu overlay
|
|
186
|
+
const envSecrets = collectEnvSecretValues(settings);
|
|
187
|
+
for (const { value, key } of envSecrets) {
|
|
188
|
+
if (!str.includes(value)) {
|
|
189
|
+
continue;
|
|
190
|
+
}
|
|
191
|
+
const revealed = defaultRevealReplacement(value, `env-${key}`, settings);
|
|
192
|
+
str = str.split(value).join(revealed);
|
|
193
|
+
}
|
|
194
|
+
return str;
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Recursive object-masker — JSON-szeru struktura minden string-ertekeben alkalmazza
|
|
198
|
+
* a DyFM_maskSecrets-t. Pl. errors-table additionalContent / logTail tomb / cdpReport
|
|
199
|
+
* objektum elotti masking-hez.
|
|
200
|
+
*/
|
|
201
|
+
export function DyFM_maskSecretsDeep(input, settings = DyFM_DEFAULT_SECRET_MASK_SETTINGS) {
|
|
202
|
+
if (input === null || input === undefined) {
|
|
203
|
+
return input;
|
|
204
|
+
}
|
|
205
|
+
if (typeof input === 'string') {
|
|
206
|
+
return DyFM_maskSecrets(input, settings);
|
|
207
|
+
}
|
|
208
|
+
if (typeof input !== 'object') {
|
|
209
|
+
return input;
|
|
210
|
+
}
|
|
211
|
+
if (Array.isArray(input)) {
|
|
212
|
+
return input.map((it) => DyFM_maskSecretsDeep(it, settings));
|
|
213
|
+
}
|
|
214
|
+
const out = {};
|
|
215
|
+
for (const [k, v] of Object.entries(input)) {
|
|
216
|
+
out[k] = DyFM_maskSecretsDeep(v, settings);
|
|
217
|
+
}
|
|
218
|
+
return out;
|
|
219
|
+
}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { DyFM_Log } from './log.util';
|
|
2
|
+
/**
|
|
3
|
+
* Get the stack location of the constructor call
|
|
4
|
+
* use it in the constructor of a class to get the stack location of the constructor call
|
|
5
|
+
* @param level - The level of the stack to get the location of
|
|
6
|
+
* @returns The stack location of the constructor call
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* const stackLocation = DyFM_getConstructionStackLocation();
|
|
11
|
+
* console.log(stackLocation); // The stack location of the constructor call
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
export function DyFM_getConstructionStackLocation(level = 0) {
|
|
15
|
+
const stack = new Error().stack;
|
|
16
|
+
// Split the stack into lines and remove the first line (Error:)
|
|
17
|
+
let stackLines = stack?.split('\n')?.slice(2);
|
|
18
|
+
// Find the line that contains the constructor call
|
|
19
|
+
// It will be the FIRST line that doesn't contain 'getStackLocation'
|
|
20
|
+
let constructorLine = stackLines?.find(line => line &&
|
|
21
|
+
!line.includes('getStackLocation') &&
|
|
22
|
+
!line.includes('new') &&
|
|
23
|
+
!line.includes('node_modules') &&
|
|
24
|
+
!line.includes('node:'));
|
|
25
|
+
if (isNaN(level)) {
|
|
26
|
+
throw new Error('level must be a number');
|
|
27
|
+
}
|
|
28
|
+
if (level) {
|
|
29
|
+
while (level) {
|
|
30
|
+
stackLines = stackLines?.filter(line => line !== constructorLine);
|
|
31
|
+
level--;
|
|
32
|
+
constructorLine = stackLines?.find(line => line &&
|
|
33
|
+
!line.includes('getConstructionStackLocation') &&
|
|
34
|
+
!line.includes('new') &&
|
|
35
|
+
!line.includes('node_modules') &&
|
|
36
|
+
!line.includes('node:'));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
if (!constructorLine) {
|
|
40
|
+
constructorLine = stack?.split(' at ')?.find(line => line &&
|
|
41
|
+
!line.includes('getConstructionStackLocation') &&
|
|
42
|
+
!line.includes('new') &&
|
|
43
|
+
!line.includes('node_modules') &&
|
|
44
|
+
!line.includes('node:'));
|
|
45
|
+
if (!constructorLine) {
|
|
46
|
+
DyFM_Log.warn(`No constructor line found (0)\n${typeof stack}\n${stack?.slice(0, 300)?.split('\n') + '...'}`, {
|
|
47
|
+
stack,
|
|
48
|
+
});
|
|
49
|
+
return '';
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
// Remove the 'constructorLine at ... (' and the ')'
|
|
53
|
+
if (constructorLine?.includes('(')) {
|
|
54
|
+
constructorLine = constructorLine?.split('(')[1];
|
|
55
|
+
}
|
|
56
|
+
if (constructorLine?.includes(')')) {
|
|
57
|
+
constructorLine = constructorLine?.split(')')[0];
|
|
58
|
+
}
|
|
59
|
+
if (!constructorLine) {
|
|
60
|
+
DyFM_Log.warn(`No constructor line found (1)\n${typeof stack}\n${stack?.slice(0, 300)?.split('\n') + '...'}`, {
|
|
61
|
+
stack,
|
|
62
|
+
});
|
|
63
|
+
return '';
|
|
64
|
+
}
|
|
65
|
+
return constructorLine;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Get the stack location of the local call
|
|
69
|
+
* use it in the local function to get the stack location of the local call
|
|
70
|
+
* @param level - The level of the stack to get the location of
|
|
71
|
+
* @returns The stack location of the local call
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```ts
|
|
75
|
+
* const stackLocation = DyFM_getLocalStackLocation(1);
|
|
76
|
+
* console.log(stackLocation); // The stack location of the local call
|
|
77
|
+
* ```
|
|
78
|
+
*/
|
|
79
|
+
export function DyFM_getLocalStackLocation(level = 0) {
|
|
80
|
+
let stack = new Error().stack;
|
|
81
|
+
// Split the stack into lines and remove the first line (Error:) and the second line (DyFM_getLocalStackLocation)
|
|
82
|
+
let stackLines = stack?.split('\n')?.slice(2);
|
|
83
|
+
// Find the line that contains the location
|
|
84
|
+
// It will be the FIRST line that doesn't contain 'node_modules' or 'node:'
|
|
85
|
+
let locationLine = stackLines?.find(line => line &&
|
|
86
|
+
!line.includes('node_modules') &&
|
|
87
|
+
!line.includes('node:'));
|
|
88
|
+
if (isNaN(level)) {
|
|
89
|
+
throw new Error('level must be a number');
|
|
90
|
+
}
|
|
91
|
+
if (level) {
|
|
92
|
+
while (level) {
|
|
93
|
+
stackLines = stackLines?.filter(line => line !== locationLine);
|
|
94
|
+
level--;
|
|
95
|
+
locationLine = stackLines?.find(line => line &&
|
|
96
|
+
!line.includes('node_modules') &&
|
|
97
|
+
!line.includes('node:'));
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
if (!locationLine) {
|
|
101
|
+
locationLine = stack?.split(' at ')?.find(line => line &&
|
|
102
|
+
!line.includes('node_modules') &&
|
|
103
|
+
!line.includes('node:'));
|
|
104
|
+
if (!locationLine) {
|
|
105
|
+
DyFM_Log.warn(`No location line found outside of node_modules or node: (0)` +
|
|
106
|
+
`\n${typeof stack}\n${stack?.slice(0, 300)?.split('\n') + '...'}`, {
|
|
107
|
+
stack,
|
|
108
|
+
});
|
|
109
|
+
return '';
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
// Remove the 'constructorLine at ... (' and the ')'
|
|
113
|
+
if (locationLine?.includes('(')) {
|
|
114
|
+
locationLine = locationLine?.split('(')[1];
|
|
115
|
+
}
|
|
116
|
+
if (locationLine?.includes(')')) {
|
|
117
|
+
locationLine = locationLine?.split(')')[0];
|
|
118
|
+
}
|
|
119
|
+
if (!locationLine) {
|
|
120
|
+
DyFM_Log.warn(`No location line found (1)\n${typeof stack}\n${stack?.slice(0, 300)?.split('\n') + '...'}`, {
|
|
121
|
+
stack,
|
|
122
|
+
});
|
|
123
|
+
return '';
|
|
124
|
+
}
|
|
125
|
+
return locationLine;
|
|
126
|
+
}
|