@wildo-ai/saas-frontend-lib 1.1.5 → 1.1.6
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/dist/esm/components/actions/action-bar.d.ts +15 -0
- package/dist/esm/components/actions/action-bar.d.ts.map +1 -1
- package/dist/esm/components/actions/action-bar.js +15 -0
- package/dist/esm/components/actions/action-bar.js.map +1 -1
- package/dist/esm/components/ai-elements/decision/approval.d.ts +97 -7
- package/dist/esm/components/ai-elements/decision/approval.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/decision/approval.js.map +1 -1
- package/dist/esm/components/app/AppLayout_AuthenticatedRoute.d.ts.map +1 -1
- package/dist/esm/components/app/AppLayout_AuthenticatedRoute.js +8 -3
- package/dist/esm/components/app/AppLayout_AuthenticatedRoute.js.map +1 -1
- package/dist/esm/components/auth/Auth_EnrollmentRequired.d.ts.map +1 -1
- package/dist/esm/components/auth/Auth_EnrollmentRequired.js +5 -1
- package/dist/esm/components/auth/Auth_EnrollmentRequired.js.map +1 -1
- package/dist/esm/components/auth/Auth_Main.d.ts.map +1 -1
- package/dist/esm/components/auth/Auth_Main.js +1 -4
- package/dist/esm/components/auth/Auth_Main.js.map +1 -1
- package/dist/esm/components/auth/Auth_Register.d.ts.map +1 -1
- package/dist/esm/components/auth/Auth_Register.js +1 -3
- package/dist/esm/components/auth/Auth_Register.js.map +1 -1
- package/dist/esm/components/auth/StepUpAuthDialog.d.ts +7 -0
- package/dist/esm/components/auth/StepUpAuthDialog.d.ts.map +1 -1
- package/dist/esm/components/auth/StepUpAuthDialog.js +13 -7
- package/dist/esm/components/auth/StepUpAuthDialog.js.map +1 -1
- package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.d.ts.map +1 -1
- package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.js +32 -33
- package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.js.map +1 -1
- package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.labels.d.ts.map +1 -1
- package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.labels.js +18 -20
- package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.labels.js.map +1 -1
- package/dist/esm/components/auth/methods/ExternalOAuth2AuthMethod.d.ts.map +1 -1
- package/dist/esm/components/auth/methods/ExternalOAuth2AuthMethod.js +2 -3
- package/dist/esm/components/auth/methods/ExternalOAuth2AuthMethod.js.map +1 -1
- package/dist/esm/components/auth/utils/oauth-provider-display-label.frontend.utils.d.ts +13 -16
- package/dist/esm/components/auth/utils/oauth-provider-display-label.frontend.utils.d.ts.map +1 -1
- package/dist/esm/components/auth/utils/oauth-provider-display-label.frontend.utils.js +18 -15
- package/dist/esm/components/auth/utils/oauth-provider-display-label.frontend.utils.js.map +1 -1
- package/dist/esm/components/billing/billing-invoice-history.js +2 -2
- package/dist/esm/components/billing/billing-invoice-history.js.map +1 -1
- package/dist/esm/components/billing/billing-portal-link.js +2 -2
- package/dist/esm/components/billing/billing-portal-link.js.map +1 -1
- package/dist/esm/components/billing/billing-pricing-table.d.ts +33 -1
- package/dist/esm/components/billing/billing-pricing-table.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-pricing-table.js +34 -5
- package/dist/esm/components/billing/billing-pricing-table.js.map +1 -1
- package/dist/esm/components/billing/billing-subscription-status.js +2 -2
- package/dist/esm/components/billing/billing-subscription-status.js.map +1 -1
- package/dist/esm/components/billing/billing-usage-dashboard.d.ts +2 -0
- package/dist/esm/components/billing/billing-usage-dashboard.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-usage-dashboard.js +1 -0
- package/dist/esm/components/billing/billing-usage-dashboard.js.map +1 -1
- package/dist/esm/components/data-display/DisplayField.d.ts.map +1 -1
- package/dist/esm/components/data-display/DisplayField.js +15 -1
- package/dist/esm/components/data-display/DisplayField.js.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldArray.d.ts.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldArray.js +11 -0
- package/dist/esm/components/data-display/DisplayFieldArray.js.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldEditable.d.ts.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldEditable.js +2 -2
- package/dist/esm/components/data-display/DisplayFieldEditable.js.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldEditableArray.d.ts +12 -2
- package/dist/esm/components/data-display/DisplayFieldEditableArray.d.ts.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldEditableArray.js +3 -2
- package/dist/esm/components/data-display/DisplayFieldEditableArray.js.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldReadOnly.d.ts.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldReadOnly.js +2 -2
- package/dist/esm/components/data-display/DisplayFieldReadOnly.js.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldReadOnlyArraySection.d.ts.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldReadOnlyArraySection.js +8 -2
- package/dist/esm/components/data-display/DisplayFieldReadOnlyArraySection.js.map +1 -1
- package/dist/esm/components/data-display/DisplayValueDispatcher.d.ts.map +1 -1
- package/dist/esm/components/data-display/DisplayValueDispatcher.js +18 -4
- package/dist/esm/components/data-display/DisplayValueDispatcher.js.map +1 -1
- package/dist/esm/components/data-display/ResourceAutomaticDisplayer.d.ts.map +1 -1
- package/dist/esm/components/data-display/ResourceAutomaticDisplayer.js +61 -3
- package/dist/esm/components/data-display/ResourceAutomaticDisplayer.js.map +1 -1
- package/dist/esm/components/data-display/ResourceSummaryDisplayer.d.ts +7 -5
- package/dist/esm/components/data-display/ResourceSummaryDisplayer.d.ts.map +1 -1
- package/dist/esm/components/data-display/ResourceSummaryDisplayer.js.map +1 -1
- package/dist/esm/components/data-display/chromes/DisplayFieldChrome.d.ts +11 -1
- package/dist/esm/components/data-display/chromes/DisplayFieldChrome.d.ts.map +1 -1
- package/dist/esm/components/data-display/chromes/DisplayFieldChrome.js +36 -11
- package/dist/esm/components/data-display/chromes/DisplayFieldChrome.js.map +1 -1
- package/dist/esm/components/data-display/display-field-resolved-props.d.ts +6 -0
- package/dist/esm/components/data-display/display-field-resolved-props.d.ts.map +1 -1
- package/dist/esm/components/data-display/display-field-resolved-props.js.map +1 -1
- package/dist/esm/components/data-display/external-data-provenance/DisplayFieldProvenanceNote.d.ts +23 -0
- package/dist/esm/components/data-display/external-data-provenance/DisplayFieldProvenanceNote.d.ts.map +1 -0
- package/dist/esm/components/data-display/external-data-provenance/DisplayFieldProvenanceNote.js +35 -0
- package/dist/esm/components/data-display/external-data-provenance/DisplayFieldProvenanceNote.js.map +1 -0
- package/dist/esm/components/data-display/external-data-provenance/external-data-provenance.frontend.d.ts +47 -0
- package/dist/esm/components/data-display/external-data-provenance/external-data-provenance.frontend.d.ts.map +1 -0
- package/dist/esm/components/data-display/external-data-provenance/external-data-provenance.frontend.js +124 -0
- package/dist/esm/components/data-display/external-data-provenance/external-data-provenance.frontend.js.map +1 -0
- package/dist/esm/components/data-display/external-data-provenance/useExternalDataFieldProvenance.d.ts +8 -0
- package/dist/esm/components/data-display/external-data-provenance/useExternalDataFieldProvenance.d.ts.map +1 -0
- package/dist/esm/components/data-display/external-data-provenance/useExternalDataFieldProvenance.js +46 -0
- package/dist/esm/components/data-display/external-data-provenance/useExternalDataFieldProvenance.js.map +1 -0
- package/dist/esm/components/feedback/resource-empty-state.d.ts +21 -8
- package/dist/esm/components/feedback/resource-empty-state.d.ts.map +1 -1
- package/dist/esm/components/feedback/resource-empty-state.js +56 -26
- package/dist/esm/components/feedback/resource-empty-state.js.map +1 -1
- package/dist/esm/components/flows-actors/approval.d.ts +29 -7
- package/dist/esm/components/flows-actors/approval.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/approval.js +231 -101
- package/dist/esm/components/flows-actors/approval.js.map +1 -1
- package/dist/esm/components/flows-actors/approval.labels.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/approval.labels.js +57 -0
- package/dist/esm/components/flows-actors/approval.labels.js.map +1 -1
- package/dist/esm/components/flows-actors/system-catalog.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/system-catalog.js +4 -4
- package/dist/esm/components/flows-actors/system-catalog.js.map +1 -1
- package/dist/esm/components/flows-actors/system-catalog.labels.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/system-catalog.labels.js +0 -5
- package/dist/esm/components/flows-actors/system-catalog.labels.js.map +1 -1
- package/dist/esm/components/form/Form.d.ts +2 -2
- package/dist/esm/components/form/Form.js +2 -2
- package/dist/esm/components/form/Form.js.map +1 -1
- package/dist/esm/components/form/automated/AutomatedArrayField.d.ts +28 -3
- package/dist/esm/components/form/automated/AutomatedArrayField.d.ts.map +1 -1
- package/dist/esm/components/form/automated/AutomatedArrayField.js +43 -14
- package/dist/esm/components/form/automated/AutomatedArrayField.js.map +1 -1
- package/dist/esm/components/form/automated/FormField.d.ts +3 -0
- package/dist/esm/components/form/automated/FormField.d.ts.map +1 -1
- package/dist/esm/components/form/automated/FormField.js +60 -21
- package/dist/esm/components/form/automated/FormField.js.map +1 -1
- package/dist/esm/components/form/automated/FormFieldArray.d.ts +6 -3
- package/dist/esm/components/form/automated/FormFieldArray.d.ts.map +1 -1
- package/dist/esm/components/form/automated/FormFieldArray.js +3 -2
- package/dist/esm/components/form/automated/FormFieldArray.js.map +1 -1
- package/dist/esm/components/form/automated/ResourceAutomatedForm.d.ts +5 -4
- package/dist/esm/components/form/automated/ResourceAutomatedForm.d.ts.map +1 -1
- package/dist/esm/components/form/automated/ResourceAutomatedForm.js +148 -55
- package/dist/esm/components/form/automated/ResourceAutomatedForm.js.map +1 -1
- package/dist/esm/components/form/automated/ResourceFormActionsContext.d.ts +30 -0
- package/dist/esm/components/form/automated/ResourceFormActionsContext.d.ts.map +1 -1
- package/dist/esm/components/form/automated/ResourceFormActionsContext.js +30 -1
- package/dist/esm/components/form/automated/ResourceFormActionsContext.js.map +1 -1
- package/dist/esm/components/form/automated/TemplatePlacedFieldsContext.d.ts +79 -0
- package/dist/esm/components/form/automated/TemplatePlacedFieldsContext.d.ts.map +1 -0
- package/dist/esm/components/form/automated/TemplatePlacedFieldsContext.js +203 -0
- package/dist/esm/components/form/automated/TemplatePlacedFieldsContext.js.map +1 -0
- package/dist/esm/components/form/automated/automated-form-submit.utils.d.ts +12 -0
- package/dist/esm/components/form/automated/automated-form-submit.utils.d.ts.map +1 -1
- package/dist/esm/components/form/automated/automated-form-submit.utils.js +11 -0
- package/dist/esm/components/form/automated/automated-form-submit.utils.js.map +1 -1
- package/dist/esm/components/form/chromes/FormFieldChrome.d.ts.map +1 -1
- package/dist/esm/components/form/chromes/FormFieldChrome.js +2 -2
- package/dist/esm/components/form/chromes/FormFieldChrome.js.map +1 -1
- package/dist/esm/components/form/combobox.d.ts +7 -0
- package/dist/esm/components/form/combobox.d.ts.map +1 -1
- package/dist/esm/components/form/combobox.js.map +1 -1
- package/dist/esm/components/form/controls/form-field-checkbox-group.d.ts.map +1 -1
- package/dist/esm/components/form/controls/form-field-checkbox-group.js +13 -0
- package/dist/esm/components/form/controls/form-field-checkbox-group.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-address.d.ts +58 -0
- package/dist/esm/components/form/fields/form-field-address.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-address.js +34 -6
- package/dist/esm/components/form/fields/form-field-address.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-address.labels.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-address.labels.js +60 -1
- package/dist/esm/components/form/fields/form-field-address.labels.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-file.d.ts +0 -12
- package/dist/esm/components/form/fields/form-field-file.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-file.js +34 -13
- package/dist/esm/components/form/fields/form-field-file.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-file.labels.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-file.labels.js +46 -0
- package/dist/esm/components/form/fields/form-field-file.labels.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-string-organization-role.d.ts +73 -0
- package/dist/esm/components/form/fields/form-field-string-organization-role.d.ts.map +1 -0
- package/dist/esm/components/form/fields/form-field-string-organization-role.js +64 -0
- package/dist/esm/components/form/fields/form-field-string-organization-role.js.map +1 -0
- package/dist/esm/components/form/fields/form-field-string.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-string.js +8 -1
- package/dist/esm/components/form/fields/form-field-string.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-string.labels.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-string.labels.js +4 -0
- package/dist/esm/components/form/fields/form-field-string.labels.js.map +1 -1
- package/dist/esm/components/form/validation-errors/FormErrorSummary.js +1 -1
- package/dist/esm/components/form/validation-errors/FormErrorSummary.js.map +1 -1
- package/dist/esm/components/form/validation-errors/resolver-error-nesting.d.ts +31 -0
- package/dist/esm/components/form/validation-errors/resolver-error-nesting.d.ts.map +1 -0
- package/dist/esm/components/form/validation-errors/resolver-error-nesting.js +81 -0
- package/dist/esm/components/form/validation-errors/resolver-error-nesting.js.map +1 -0
- package/dist/esm/components/form/validation-errors/resource-error-notification-context.utils.d.ts +14 -1
- package/dist/esm/components/form/validation-errors/resource-error-notification-context.utils.d.ts.map +1 -1
- package/dist/esm/components/form/validation-errors/resource-error-notification-context.utils.js +14 -0
- package/dist/esm/components/form/validation-errors/resource-error-notification-context.utils.js.map +1 -1
- package/dist/esm/components/form/validation-errors/zod-issue-resolver.d.ts +22 -0
- package/dist/esm/components/form/validation-errors/zod-issue-resolver.d.ts.map +1 -1
- package/dist/esm/components/form/validation-errors/zod-issue-resolver.js +1 -22
- package/dist/esm/components/form/validation-errors/zod-issue-resolver.js.map +1 -1
- package/dist/esm/components/layout/resizable.d.ts +11 -0
- package/dist/esm/components/layout/resizable.d.ts.map +1 -1
- package/dist/esm/components/layout/resizable.js.map +1 -1
- package/dist/esm/components/navigation/app-level/ApplicationLevel_NavigationBack.d.ts +11 -1
- package/dist/esm/components/navigation/app-level/ApplicationLevel_NavigationBack.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/ApplicationLevel_NavigationBack.js +15 -3
- package/dist/esm/components/navigation/app-level/ApplicationLevel_NavigationBack.js.map +1 -1
- package/dist/esm/components/navigation/app-level/ApplicationLevel_StatusBar.d.ts +2 -2
- package/dist/esm/components/navigation/app-level/ApplicationLevel_StatusBar.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/ApplicationLevel_StatusBar.js.map +1 -1
- package/dist/esm/components/navigation/app-level/HostedComponentInteractionsProvider.d.ts +2 -2
- package/dist/esm/components/navigation/app-level/HostedComponentInteractionsProvider.js +2 -2
- package/dist/esm/components/navigation/app-level/HostedComponentInteractionsProvider.js.map +1 -1
- package/dist/esm/components/navigation/app-level/SidebarResourceBrowser.js +18 -20
- package/dist/esm/components/navigation/app-level/SidebarResourceBrowser.js.map +1 -1
- package/dist/esm/components/navigation/app-level/useCommandMenuBehavior.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/useCommandMenuBehavior.js +7 -1
- package/dist/esm/components/navigation/app-level/useCommandMenuBehavior.js.map +1 -1
- package/dist/esm/components/navigation/app-level/useMenuBarBehavior.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/useMenuBarBehavior.js +4 -1
- package/dist/esm/components/navigation/app-level/useMenuBarBehavior.js.map +1 -1
- package/dist/esm/components/navigation/app-level/useMenuUserOrgBehavior.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/useMenuUserOrgBehavior.js +18 -2
- package/dist/esm/components/navigation/app-level/useMenuUserOrgBehavior.js.map +1 -1
- package/dist/esm/components/navigation/app-level/useSidebarBehavior.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/useSidebarBehavior.js +82 -10
- package/dist/esm/components/navigation/app-level/useSidebarBehavior.js.map +1 -1
- package/dist/esm/components/navigation/app-level/useStatusBarBehavior.d.ts +2 -2
- package/dist/esm/components/navigation/app-level/useStatusBarBehavior.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/useStatusBarBehavior.js.map +1 -1
- package/dist/esm/components/resources/ResourceCollectionQuickFilterTabs.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceCollectionQuickFilterTabs.js +8 -1
- package/dist/esm/components/resources/ResourceCollectionQuickFilterTabs.js.map +1 -1
- package/dist/esm/components/resources/ResourceCollectionToolbar.d.ts +8 -2
- package/dist/esm/components/resources/ResourceCollectionToolbar.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceCollectionToolbar.js +6 -2
- package/dist/esm/components/resources/ResourceCollectionToolbar.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Breadcrumb.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Breadcrumb.js +31 -16
- package/dist/esm/components/resources/ResourceLayout_Breadcrumb.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ContainerDialogs.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ContainerDialogs.js +23 -8
- package/dist/esm/components/resources/ResourceLayout_ContainerDialogs.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ContainerNested.js +2 -2
- package/dist/esm/components/resources/ResourceLayout_ContainerNested.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Header.d.ts +13 -0
- package/dist/esm/components/resources/ResourceLayout_Header.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Header.js +55 -28
- package/dist/esm/components/resources/ResourceLayout_Header.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_List.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_List.js +41 -20
- package/dist/esm/components/resources/ResourceLayout_List.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_List.labels.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_List.labels.js +1 -2
- package/dist/esm/components/resources/ResourceLayout_List.labels.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Read.d.ts +9 -4
- package/dist/esm/components/resources/ResourceLayout_Read.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Read.js +30 -11
- package/dist/esm/components/resources/ResourceLayout_Read.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ReadSummary.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ReadSummary.js +4 -2
- package/dist/esm/components/resources/ResourceLayout_ReadSummary.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ReadSummary_TableRow.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ReadSummary_TableRow.js +6 -2
- package/dist/esm/components/resources/ResourceLayout_ReadSummary_TableRow.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Search.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Search.js +30 -14
- package/dist/esm/components/resources/ResourceLayout_Search.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_SemanticOperationFallback.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_SemanticOperationFallback.js +14 -198
- package/dist/esm/components/resources/ResourceLayout_SemanticOperationFallback.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Update.d.ts +2 -2
- package/dist/esm/components/resources/ResourceLayout_Update.js +2 -2
- package/dist/esm/components/resources/ResourceLayout_Update.js.map +1 -1
- package/dist/esm/components/resources/ResourceListItemRenderer.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceListItemRenderer.js +69 -39
- package/dist/esm/components/resources/ResourceListItemRenderer.js.map +1 -1
- package/dist/esm/components/resources/ResourceOperationActionDropdown.d.ts +32 -0
- package/dist/esm/components/resources/ResourceOperationActionDropdown.d.ts.map +1 -0
- package/dist/esm/components/resources/ResourceOperationActionDropdown.js +130 -0
- package/dist/esm/components/resources/ResourceOperationActionDropdown.js.map +1 -0
- package/dist/esm/components/resources/collection-create-placement.utils.d.ts +32 -0
- package/dist/esm/components/resources/collection-create-placement.utils.d.ts.map +1 -0
- package/dist/esm/components/resources/collection-create-placement.utils.js +37 -0
- package/dist/esm/components/resources/collection-create-placement.utils.js.map +1 -0
- package/dist/esm/components/resources/embeds/RelatedResourcePreview.d.ts.map +1 -1
- package/dist/esm/components/resources/embeds/RelatedResourcePreview.js +5 -1
- package/dist/esm/components/resources/embeds/RelatedResourcePreview.js.map +1 -1
- package/dist/esm/components/resources/embeds/RelatedResourceSections.d.ts +8 -1
- package/dist/esm/components/resources/embeds/RelatedResourceSections.d.ts.map +1 -1
- package/dist/esm/components/resources/embeds/RelatedResourceSections.js +49 -2
- package/dist/esm/components/resources/embeds/RelatedResourceSections.js.map +1 -1
- package/dist/esm/components/resources/embeds/ResourceEmbeds.d.ts +22 -0
- package/dist/esm/components/resources/embeds/ResourceEmbeds.d.ts.map +1 -1
- package/dist/esm/components/resources/embeds/ResourceEmbeds.js +85 -2
- package/dist/esm/components/resources/embeds/ResourceEmbeds.js.map +1 -1
- package/dist/esm/components/resources/resourceLayout.utils.d.ts +14 -0
- package/dist/esm/components/resources/resourceLayout.utils.d.ts.map +1 -1
- package/dist/esm/components/resources/resourceLayout.utils.js +22 -0
- package/dist/esm/components/resources/resourceLayout.utils.js.map +1 -1
- package/dist/esm/components/resources/skeleton/ArrayField.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/ArrayField.js +3 -0
- package/dist/esm/components/resources/skeleton/ArrayField.js.map +1 -1
- package/dist/esm/components/resources/skeleton/FormLayout.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/FormLayout.js +33 -1
- package/dist/esm/components/resources/skeleton/FormLayout.js.map +1 -1
- package/dist/esm/components/resources/skeleton/ObjectScope.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/ObjectScope.js +3 -0
- package/dist/esm/components/resources/skeleton/ObjectScope.js.map +1 -1
- package/dist/esm/components/resources/skeleton/Section.d.ts +12 -0
- package/dist/esm/components/resources/skeleton/Section.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/Section.js +28 -2
- package/dist/esm/components/resources/skeleton/Section.js.map +1 -1
- package/dist/esm/components/resources/skeleton/SectionFieldsContext.d.ts +70 -0
- package/dist/esm/components/resources/skeleton/SectionFieldsContext.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/SectionFieldsContext.js +157 -1
- package/dist/esm/components/resources/skeleton/SectionFieldsContext.js.map +1 -1
- package/dist/esm/components/resources/skeleton/WizardLayout.d.ts +6 -0
- package/dist/esm/components/resources/skeleton/WizardLayout.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/WizardLayout.js +13 -2
- package/dist/esm/components/resources/skeleton/WizardLayout.js.map +1 -1
- package/dist/esm/components/resources/skeleton/WizardStep.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/WizardStep.js +2 -1
- package/dist/esm/components/resources/skeleton/WizardStep.js.map +1 -1
- package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldDisplayPreset_ResourceReference_Default.d.ts.map +1 -1
- package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldDisplayPreset_ResourceReference_Default.js +61 -15
- package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldDisplayPreset_ResourceReference_Default.js.map +1 -1
- package/dist/esm/components/resources-fields/resource-reference/resource-reference.shared.utils.d.ts +24 -2
- package/dist/esm/components/resources-fields/resource-reference/resource-reference.shared.utils.d.ts.map +1 -1
- package/dist/esm/components/resources-fields/resource-reference/resource-reference.shared.utils.js +69 -1
- package/dist/esm/components/resources-fields/resource-reference/resource-reference.shared.utils.js.map +1 -1
- package/dist/esm/components/resources-fields/resource-reference/useResourceSearch.d.ts.map +1 -1
- package/dist/esm/components/resources-fields/resource-reference/useResourceSearch.js +18 -19
- package/dist/esm/components/resources-fields/resource-reference/useResourceSearch.js.map +1 -1
- package/dist/esm/components/sections/ContentSectionContainer.d.ts.map +1 -1
- package/dist/esm/components/sections/ContentSectionContainer.js +5 -4
- package/dist/esm/components/sections/ContentSectionContainer.js.map +1 -1
- package/dist/esm/components/sections/stepper.d.ts +5 -0
- package/dist/esm/components/sections/stepper.d.ts.map +1 -1
- package/dist/esm/components/sections/stepper.js.map +1 -1
- package/dist/esm/components/sections/surface.d.ts.map +1 -1
- package/dist/esm/components/sections/surface.js +12 -3
- package/dist/esm/components/sections/surface.js.map +1 -1
- package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.d.ts +43 -0
- package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.d.ts.map +1 -0
- package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.js +129 -0
- package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.js.map +1 -0
- package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.labels.d.ts +3 -0
- package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.labels.d.ts.map +1 -0
- package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.labels.js +34 -0
- package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.labels.js.map +1 -0
- package/dist/esm/components/settings/AppPage_AppearanceSettings.d.ts.map +1 -1
- package/dist/esm/components/settings/AppPage_AppearanceSettings.js +9 -11
- package/dist/esm/components/settings/AppPage_AppearanceSettings.js.map +1 -1
- package/dist/esm/components/settings/AppPage_AppearanceSettings.labels.d.ts.map +1 -1
- package/dist/esm/components/settings/AppPage_AppearanceSettings.labels.js +3 -2
- package/dist/esm/components/settings/AppPage_AppearanceSettings.labels.js.map +1 -1
- package/dist/esm/components/settings/AppPage_BillingSettings.d.ts +4 -2
- package/dist/esm/components/settings/AppPage_BillingSettings.d.ts.map +1 -1
- package/dist/esm/components/settings/AppPage_BillingSettings.js +21 -3
- package/dist/esm/components/settings/AppPage_BillingSettings.js.map +1 -1
- package/dist/esm/components/settings/AppPage_BillingSettings.labels.d.ts.map +1 -1
- package/dist/esm/components/settings/AppPage_BillingSettings.labels.js +5 -10
- package/dist/esm/components/settings/AppPage_BillingSettings.labels.js.map +1 -1
- package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.d.ts +58 -0
- package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.d.ts.map +1 -1
- package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.js +243 -40
- package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.js.map +1 -1
- package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.labels.d.ts.map +1 -1
- package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.labels.js +67 -6
- package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.labels.js.map +1 -1
- package/dist/esm/components/settings/AppPage_InvitationsSettings.d.ts.map +1 -1
- package/dist/esm/components/settings/AppPage_InvitationsSettings.js +19 -11
- package/dist/esm/components/settings/AppPage_InvitationsSettings.js.map +1 -1
- package/dist/esm/components/settings/AppPage_InvitationsSettings.labels.d.ts.map +1 -1
- package/dist/esm/components/settings/AppPage_InvitationsSettings.labels.js +4 -2
- package/dist/esm/components/settings/AppPage_InvitationsSettings.labels.js.map +1 -1
- package/dist/esm/components/settings/SettingsHub.d.ts.map +1 -1
- package/dist/esm/components/settings/SettingsHub.js +3 -0
- package/dist/esm/components/settings/SettingsHub.js.map +1 -1
- package/dist/esm/components/settings/SettingsResourceOperationPanel.d.ts.map +1 -1
- package/dist/esm/components/settings/SettingsResourceOperationPanel.js +16 -1
- package/dist/esm/components/settings/SettingsResourceOperationPanel.js.map +1 -1
- package/dist/esm/components/settings/useOwnerProviderConnections.d.ts +59 -0
- package/dist/esm/components/settings/useOwnerProviderConnections.d.ts.map +1 -0
- package/dist/esm/components/settings/useOwnerProviderConnections.js +136 -0
- package/dist/esm/components/settings/useOwnerProviderConnections.js.map +1 -0
- package/dist/esm/components/views/chart-view/chart-view.utils.d.ts +5 -0
- package/dist/esm/components/views/chart-view/chart-view.utils.d.ts.map +1 -1
- package/dist/esm/components/views/chart-view/chart-view.utils.js +5 -0
- package/dist/esm/components/views/chart-view/chart-view.utils.js.map +1 -1
- package/dist/esm/components/views/chart-view/useResourceChartData.d.ts +50 -0
- package/dist/esm/components/views/chart-view/useResourceChartData.d.ts.map +1 -0
- package/dist/esm/components/views/chart-view/useResourceChartData.js +72 -0
- package/dist/esm/components/views/chart-view/useResourceChartData.js.map +1 -0
- package/dist/esm/components/views/composite-view/CompositeLayout.d.ts.map +1 -1
- package/dist/esm/components/views/composite-view/CompositeLayout.js +2 -1
- package/dist/esm/components/views/composite-view/CompositeLayout.js.map +1 -1
- package/dist/esm/core/app-shell/AppShellBuildingBlocks.d.ts +86 -0
- package/dist/esm/core/app-shell/AppShellBuildingBlocks.d.ts.map +1 -0
- package/dist/esm/core/app-shell/AppShellBuildingBlocks.js +187 -0
- package/dist/esm/core/app-shell/AppShellBuildingBlocks.js.map +1 -0
- package/dist/esm/core/app-shell/PortalContainerContext.d.ts +5 -2
- package/dist/esm/core/app-shell/PortalContainerContext.d.ts.map +1 -1
- package/dist/esm/core/app-shell/PortalContainerContext.js +5 -2
- package/dist/esm/core/app-shell/PortalContainerContext.js.map +1 -1
- package/dist/esm/core/app-shell/app-shell.schemas.d.ts +18 -9
- package/dist/esm/core/app-shell/app-shell.schemas.d.ts.map +1 -1
- package/dist/esm/core/app-shell/app-shell.schemas.js +1 -0
- package/dist/esm/core/app-shell/app-shell.schemas.js.map +1 -1
- package/dist/esm/core/app-shell/useAppShellLayout.d.ts +10 -0
- package/dist/esm/core/app-shell/useAppShellLayout.d.ts.map +1 -1
- package/dist/esm/core/app-shell/useAppShellLayout.js +28 -5
- package/dist/esm/core/app-shell/useAppShellLayout.js.map +1 -1
- package/dist/esm/core/app-shell/usePublicShellLayout.d.ts.map +1 -1
- package/dist/esm/core/app-shell/usePublicShellLayout.js +38 -0
- package/dist/esm/core/app-shell/usePublicShellLayout.js.map +1 -1
- package/dist/esm/core/automated-layout/automated-layout.frontend.utils.d.ts +15 -1
- package/dist/esm/core/automated-layout/automated-layout.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/automated-layout/automated-layout.frontend.utils.js +47 -13
- package/dist/esm/core/automated-layout/automated-layout.frontend.utils.js.map +1 -1
- package/dist/esm/core/billing/BillingContext.d.ts +25 -2
- package/dist/esm/core/billing/BillingContext.d.ts.map +1 -1
- package/dist/esm/core/billing/BillingContext.js +16 -25
- package/dist/esm/core/billing/BillingContext.js.map +1 -1
- package/dist/esm/core/billing/billing-provider-display.frontend.utils.d.ts +11 -3
- package/dist/esm/core/billing/billing-provider-display.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/billing/billing-provider-display.frontend.utils.js +14 -8
- package/dist/esm/core/billing/billing-provider-display.frontend.utils.js.map +1 -1
- package/dist/esm/core/billing/useBillingPlanChange.d.ts.map +1 -1
- package/dist/esm/core/billing/useBillingPlanChange.js +2 -0
- package/dist/esm/core/billing/useBillingPlanChange.js.map +1 -1
- package/dist/esm/core/components-registry/assert-registry-completeness.frontend.helper.d.ts.map +1 -1
- package/dist/esm/core/components-registry/assert-registry-completeness.frontend.helper.js +1 -0
- package/dist/esm/core/components-registry/assert-registry-completeness.frontend.helper.js.map +1 -1
- package/dist/esm/core/components-registry/provider-component-registry.frontend.service.d.ts +29 -229
- package/dist/esm/core/components-registry/provider-component-registry.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/components-registry/provider-component-registry.frontend.service.js +29 -327
- package/dist/esm/core/components-registry/provider-component-registry.frontend.service.js.map +1 -1
- package/dist/esm/core/components-registry/useProviderComponent.frontend.hooks.d.ts +17 -27
- package/dist/esm/core/components-registry/useProviderComponent.frontend.hooks.d.ts.map +1 -1
- package/dist/esm/core/components-registry/useProviderComponent.frontend.hooks.js +28 -48
- package/dist/esm/core/components-registry/useProviderComponent.frontend.hooks.js.map +1 -1
- package/dist/esm/core/config/app-configuration-frontend.schemas.d.ts +21 -11
- package/dist/esm/core/config/app-configuration-frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/config/app-configuration-frontend.schemas.js +4 -4
- package/dist/esm/core/config/app-configuration-frontend.schemas.js.map +1 -1
- package/dist/esm/core/config/app-level-components.frontend.schemas.d.ts +17 -0
- package/dist/esm/core/config/app-level-components.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/config/app-level-components.frontend.schemas.js +17 -0
- package/dist/esm/core/config/app-level-components.frontend.schemas.js.map +1 -1
- package/dist/esm/core/config/chart-view.frontend.schemas.d.ts +10 -10
- package/dist/esm/core/config/engine-settings-destinations.d.ts.map +1 -1
- package/dist/esm/core/config/engine-settings-destinations.js +221 -6
- package/dist/esm/core/config/engine-settings-destinations.js.map +1 -1
- package/dist/esm/core/config/launcher-items.frontend.schemas.d.ts +8 -0
- package/dist/esm/core/config/launcher-items.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/config/launcher-items.frontend.schemas.js +1 -0
- package/dist/esm/core/config/launcher-items.frontend.schemas.js.map +1 -1
- package/dist/esm/core/config/settings-hub.frontend.schemas.d.ts +10 -1
- package/dist/esm/core/config/settings-hub.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/config/settings-hub.frontend.schemas.js +9 -0
- package/dist/esm/core/config/settings-hub.frontend.schemas.js.map +1 -1
- package/dist/esm/core/config/verify-launcher-content.d.ts.map +1 -1
- package/dist/esm/core/config/verify-launcher-content.js +30 -19
- package/dist/esm/core/config/verify-launcher-content.js.map +1 -1
- package/dist/esm/core/errors/ErrorContext.d.ts.map +1 -1
- package/dist/esm/core/errors/ErrorContext.js +9 -1
- package/dist/esm/core/errors/ErrorContext.js.map +1 -1
- package/dist/esm/core/errors/GlobalErrorHandler.d.ts.map +1 -1
- package/dist/esm/core/errors/GlobalErrorHandler.js +5 -4
- package/dist/esm/core/errors/GlobalErrorHandler.js.map +1 -1
- package/dist/esm/core/errors/RouterErrorBoundary.js +1 -1
- package/dist/esm/core/errors/RouterErrorBoundary.js.map +1 -1
- package/dist/esm/core/errors/errors-builder.frontend.services.d.ts +2 -2
- package/dist/esm/core/errors/errors-builder.frontend.services.d.ts.map +1 -1
- package/dist/esm/core/errors/errors-builder.frontend.services.js +4 -4
- package/dist/esm/core/errors/errors-builder.frontend.services.js.map +1 -1
- package/dist/esm/core/errors/user-facing-error-message.frontend.utils.js +1 -1
- package/dist/esm/core/errors/user-facing-error-message.frontend.utils.js.map +1 -1
- package/dist/esm/core/events/NotificationContext.d.ts.map +1 -1
- package/dist/esm/core/events/NotificationContext.js +23 -5
- package/dist/esm/core/events/NotificationContext.js.map +1 -1
- package/dist/esm/core/events/events.frontend.schemas.d.ts +110 -43
- package/dist/esm/core/events/events.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/events/events.frontend.schemas.js +89 -15
- package/dist/esm/core/events/events.frontend.schemas.js.map +1 -1
- package/dist/esm/core/execution/useExecutionParticipationRMM.d.ts +2 -0
- package/dist/esm/core/execution/useExecutionParticipationRMM.d.ts.map +1 -1
- package/dist/esm/core/execution/useExecutionParticipationRMM.js +2 -1
- package/dist/esm/core/execution/useExecutionParticipationRMM.js.map +1 -1
- package/dist/esm/core/execution/useExecutionResourceOperationSurface.d.ts +1 -1
- package/dist/esm/core/execution/useExecutionResourceOperationSurface.d.ts.map +1 -1
- package/dist/esm/core/execution/useExecutionResourceOperationSurface.js +5 -2
- package/dist/esm/core/execution/useExecutionResourceOperationSurface.js.map +1 -1
- package/dist/esm/core/external-providers/ConsentBasedProviderSdks.d.ts +63 -0
- package/dist/esm/core/external-providers/ConsentBasedProviderSdks.d.ts.map +1 -0
- package/dist/esm/core/external-providers/ConsentBasedProviderSdks.js +131 -0
- package/dist/esm/core/external-providers/ConsentBasedProviderSdks.js.map +1 -0
- package/dist/esm/core/external-providers/ProviderAddressLookupCombobox.d.ts +61 -0
- package/dist/esm/core/external-providers/ProviderAddressLookupCombobox.d.ts.map +1 -0
- package/dist/esm/core/external-providers/ProviderAddressLookupCombobox.js +178 -0
- package/dist/esm/core/external-providers/ProviderAddressLookupCombobox.js.map +1 -0
- package/dist/esm/core/external-providers/ProviderAddressLookupHost.d.ts +52 -0
- package/dist/esm/core/external-providers/ProviderAddressLookupHost.d.ts.map +1 -0
- package/dist/esm/core/external-providers/ProviderAddressLookupHost.js +144 -0
- package/dist/esm/core/external-providers/ProviderAddressLookupHost.js.map +1 -0
- package/dist/esm/core/external-providers/ProviderFilePickerHost.d.ts +22 -1
- package/dist/esm/core/external-providers/ProviderFilePickerHost.d.ts.map +1 -1
- package/dist/esm/core/external-providers/ProviderFilePickerHost.js +23 -3
- package/dist/esm/core/external-providers/ProviderFilePickerHost.js.map +1 -1
- package/dist/esm/core/external-providers/provider-address-lookup-selection.frontend.utils.d.ts +55 -0
- package/dist/esm/core/external-providers/provider-address-lookup-selection.frontend.utils.d.ts.map +1 -0
- package/dist/esm/core/external-providers/provider-address-lookup-selection.frontend.utils.js +65 -0
- package/dist/esm/core/external-providers/provider-address-lookup-selection.frontend.utils.js.map +1 -0
- package/dist/esm/core/external-providers/provider-scope-reauthorization-offers.frontend.d.ts +63 -0
- package/dist/esm/core/external-providers/provider-scope-reauthorization-offers.frontend.d.ts.map +1 -0
- package/dist/esm/core/external-providers/provider-scope-reauthorization-offers.frontend.js +100 -0
- package/dist/esm/core/external-providers/provider-scope-reauthorization-offers.frontend.js.map +1 -0
- package/dist/esm/core/flows-actors/FlowsActorsContext.d.ts +45 -7
- package/dist/esm/core/flows-actors/FlowsActorsContext.d.ts.map +1 -1
- package/dist/esm/core/flows-actors/FlowsActorsContext.js +112 -28
- package/dist/esm/core/flows-actors/FlowsActorsContext.js.map +1 -1
- package/dist/esm/core/flows-actors/usePendingDecisions.d.ts +32 -0
- package/dist/esm/core/flows-actors/usePendingDecisions.d.ts.map +1 -0
- package/dist/esm/core/flows-actors/usePendingDecisions.js +91 -0
- package/dist/esm/core/flows-actors/usePendingDecisions.js.map +1 -0
- package/dist/esm/core/guidance/GuidanceRenderer.d.ts.map +1 -1
- package/dist/esm/core/guidance/GuidanceRenderer.js +3 -2
- package/dist/esm/core/guidance/GuidanceRenderer.js.map +1 -1
- package/dist/esm/core/i18n/I18nContext.d.ts +22 -8
- package/dist/esm/core/i18n/I18nContext.d.ts.map +1 -1
- package/dist/esm/core/i18n/I18nContext.js +21 -9
- package/dist/esm/core/i18n/I18nContext.js.map +1 -1
- package/dist/esm/core/i18n/component-label-resolution.utils.d.ts +5 -3
- package/dist/esm/core/i18n/component-label-resolution.utils.d.ts.map +1 -1
- package/dist/esm/core/i18n/component-label-resolution.utils.js +5 -3
- package/dist/esm/core/i18n/component-label-resolution.utils.js.map +1 -1
- package/dist/esm/core/i18n/useI18n.d.ts +2 -1
- package/dist/esm/core/i18n/useI18n.d.ts.map +1 -1
- package/dist/esm/core/i18n/useI18n.js +2 -1
- package/dist/esm/core/i18n/useI18n.js.map +1 -1
- package/dist/esm/core/loading/LoadingContext.d.ts.map +1 -1
- package/dist/esm/core/loading/LoadingContext.js +7 -1
- package/dist/esm/core/loading/LoadingContext.js.map +1 -1
- package/dist/esm/core/loading/LoadingGate.d.ts.map +1 -1
- package/dist/esm/core/loading/LoadingGate.js +19 -1
- package/dist/esm/core/loading/LoadingGate.js.map +1 -1
- package/dist/esm/core/monitoring/analytics/AnalyticsContext.d.ts +15 -2
- package/dist/esm/core/monitoring/analytics/AnalyticsContext.d.ts.map +1 -1
- package/dist/esm/core/monitoring/analytics/AnalyticsContext.js +183 -20
- package/dist/esm/core/monitoring/analytics/AnalyticsContext.js.map +1 -1
- package/dist/esm/core/monitoring/analytics/AnalyticsEventBridge.js +2 -2
- package/dist/esm/core/monitoring/analytics/AnalyticsEventBridge.js.map +1 -1
- package/dist/esm/core/monitoring/analytics/analytics-provider-registry.frontend.service.d.ts +7 -15
- package/dist/esm/core/monitoring/analytics/analytics-provider-registry.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/monitoring/analytics/analytics-provider-registry.frontend.service.js +8 -26
- package/dist/esm/core/monitoring/analytics/analytics-provider-registry.frontend.service.js.map +1 -1
- package/dist/esm/core/monitoring/analytics/analytics-provider.frontend.interface.d.ts +12 -3
- package/dist/esm/core/monitoring/analytics/analytics-provider.frontend.interface.d.ts.map +1 -1
- package/dist/esm/core/monitoring/analytics/analytics-provider.frontend.interface.js +3 -2
- package/dist/esm/core/monitoring/analytics/analytics-provider.frontend.interface.js.map +1 -1
- package/dist/esm/core/monitoring/analytics/providers/backend-proxy-analytics.provider.d.ts +42 -0
- package/dist/esm/core/monitoring/analytics/providers/backend-proxy-analytics.provider.d.ts.map +1 -1
- package/dist/esm/core/monitoring/analytics/providers/backend-proxy-analytics.provider.js +89 -5
- package/dist/esm/core/monitoring/analytics/providers/backend-proxy-analytics.provider.js.map +1 -1
- package/dist/esm/core/monitoring/analytics/providers/console-analytics.provider.d.ts +2 -0
- package/dist/esm/core/monitoring/analytics/providers/console-analytics.provider.d.ts.map +1 -1
- package/dist/esm/core/monitoring/analytics/providers/console-analytics.provider.js +2 -0
- package/dist/esm/core/monitoring/analytics/providers/console-analytics.provider.js.map +1 -1
- package/dist/esm/core/navigation/NavigationContentAreas.d.ts +78 -0
- package/dist/esm/core/navigation/NavigationContentAreas.d.ts.map +1 -1
- package/dist/esm/core/navigation/NavigationContentAreas.js +264 -16
- package/dist/esm/core/navigation/NavigationContentAreas.js.map +1 -1
- package/dist/esm/core/navigation/NavigationContext.d.ts +8 -0
- package/dist/esm/core/navigation/NavigationContext.d.ts.map +1 -1
- package/dist/esm/core/navigation/NavigationContext.js +137 -30
- package/dist/esm/core/navigation/NavigationContext.js.map +1 -1
- package/dist/esm/core/navigation/launcher-resolution.d.ts +2 -0
- package/dist/esm/core/navigation/launcher-resolution.d.ts.map +1 -1
- package/dist/esm/core/navigation/launcher-resolution.js +1 -0
- package/dist/esm/core/navigation/launcher-resolution.js.map +1 -1
- package/dist/esm/core/navigation/navigation-cascade.d.ts +46 -0
- package/dist/esm/core/navigation/navigation-cascade.d.ts.map +1 -0
- package/dist/esm/core/navigation/navigation-cascade.js +222 -0
- package/dist/esm/core/navigation/navigation-cascade.js.map +1 -0
- package/dist/esm/core/navigation/navigation-clean-break.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/navigation/navigation-clean-break.frontend.utils.js +21 -2
- package/dist/esm/core/navigation/navigation-clean-break.frontend.utils.js.map +1 -1
- package/dist/esm/core/navigation/navigation-controller-internals.d.ts +71 -0
- package/dist/esm/core/navigation/navigation-controller-internals.d.ts.map +1 -0
- package/dist/esm/core/navigation/navigation-controller-internals.js +84 -0
- package/dist/esm/core/navigation/navigation-controller-internals.js.map +1 -0
- package/dist/esm/core/navigation/navigation-policy-resolver.service.d.ts +86 -2
- package/dist/esm/core/navigation/navigation-policy-resolver.service.d.ts.map +1 -1
- package/dist/esm/core/navigation/navigation-policy-resolver.service.js +242 -124
- package/dist/esm/core/navigation/navigation-policy-resolver.service.js.map +1 -1
- package/dist/esm/core/navigation/navigation.schemas.d.ts +170 -8
- package/dist/esm/core/navigation/navigation.schemas.d.ts.map +1 -1
- package/dist/esm/core/navigation/navigation.schemas.js +121 -2
- package/dist/esm/core/navigation/navigation.schemas.js.map +1 -1
- package/dist/esm/core/navigation/navigation.utils.d.ts +102 -6
- package/dist/esm/core/navigation/navigation.utils.d.ts.map +1 -1
- package/dist/esm/core/navigation/navigation.utils.js +283 -34
- package/dist/esm/core/navigation/navigation.utils.js.map +1 -1
- package/dist/esm/core/navigation/useIsStackEntryActive.d.ts +0 -10
- package/dist/esm/core/navigation/useIsStackEntryActive.d.ts.map +0 -1
- package/dist/esm/core/navigation/useIsStackEntryActive.js.map +0 -1
- package/dist/esm/core/navigation/useNavigationController.d.ts +28 -157
- package/dist/esm/core/navigation/useNavigationController.d.ts.map +1 -1
- package/dist/esm/core/navigation/useNavigationController.js +211 -1189
- package/dist/esm/core/navigation/useNavigationController.js.map +1 -1
- package/dist/esm/core/navigation/useNavigationRouterSync.d.ts +174 -0
- package/dist/esm/core/navigation/useNavigationRouterSync.d.ts.map +1 -0
- package/dist/esm/core/navigation/useNavigationRouterSync.js +977 -0
- package/dist/esm/core/navigation/useNavigationRouterSync.js.map +1 -0
- package/dist/esm/core/navigation/useOverlayTitle.d.ts +13 -1
- package/dist/esm/core/navigation/useOverlayTitle.d.ts.map +1 -1
- package/dist/esm/core/navigation/useOverlayTitle.js +15 -10
- package/dist/esm/core/navigation/useOverlayTitle.js.map +1 -1
- package/dist/esm/core/navigation/useResponsiveZoneMigration.d.ts +43 -0
- package/dist/esm/core/navigation/useResponsiveZoneMigration.d.ts.map +1 -0
- package/dist/esm/core/navigation/useResponsiveZoneMigration.js +44 -0
- package/dist/esm/core/navigation/useResponsiveZoneMigration.js.map +1 -0
- package/dist/esm/core/navigation/zone-collapse-migration.d.ts +83 -0
- package/dist/esm/core/navigation/zone-collapse-migration.d.ts.map +1 -0
- package/dist/esm/core/navigation/zone-collapse-migration.js +116 -0
- package/dist/esm/core/navigation/zone-collapse-migration.js.map +1 -0
- package/dist/esm/core/navigation/zone-collapse.d.ts +51 -0
- package/dist/esm/core/navigation/zone-collapse.d.ts.map +1 -0
- package/dist/esm/core/navigation/zone-collapse.js +59 -0
- package/dist/esm/core/navigation/zone-collapse.js.map +1 -0
- package/dist/esm/core/navigation/zone-emphasis.d.ts +3 -0
- package/dist/esm/core/navigation/zone-emphasis.d.ts.map +1 -1
- package/dist/esm/core/navigation/zone-emphasis.js +26 -4
- package/dist/esm/core/navigation/zone-emphasis.js.map +1 -1
- package/dist/esm/core/navigation/zone-visible-entry.d.ts +22 -0
- package/dist/esm/core/navigation/zone-visible-entry.d.ts.map +1 -1
- package/dist/esm/core/navigation/zone-visible-entry.js +25 -0
- package/dist/esm/core/navigation/zone-visible-entry.js.map +1 -1
- package/dist/esm/core/requests/websockets/WebSocketContext.d.ts.map +1 -1
- package/dist/esm/core/requests/websockets/WebSocketContext.js +53 -18
- package/dist/esm/core/requests/websockets/WebSocketContext.js.map +1 -1
- package/dist/esm/core/requests/websockets/WebSocketEventBridge.d.ts.map +1 -1
- package/dist/esm/core/requests/websockets/WebSocketEventBridge.js +3 -1
- package/dist/esm/core/requests/websockets/WebSocketEventBridge.js.map +1 -1
- package/dist/esm/core/requests/websockets/useNotificationBadges.d.ts +22 -0
- package/dist/esm/core/requests/websockets/useNotificationBadges.d.ts.map +1 -1
- package/dist/esm/core/requests/websockets/useNotificationBadges.js +72 -3
- package/dist/esm/core/requests/websockets/useNotificationBadges.js.map +1 -1
- package/dist/esm/core/requests/websockets/usePublishNotificationBadgeCount.d.ts +28 -0
- package/dist/esm/core/requests/websockets/usePublishNotificationBadgeCount.d.ts.map +1 -0
- package/dist/esm/core/requests/websockets/usePublishNotificationBadgeCount.js +86 -0
- package/dist/esm/core/requests/websockets/usePublishNotificationBadgeCount.js.map +1 -0
- package/dist/esm/core/requests/wildo-http-client-manual-calls.frontend.service.d.ts +38 -3
- package/dist/esm/core/requests/wildo-http-client-manual-calls.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/requests/wildo-http-client-manual-calls.frontend.service.js +57 -2
- package/dist/esm/core/requests/wildo-http-client-manual-calls.frontend.service.js.map +1 -1
- package/dist/esm/core/requests/wildo-http-client-resources.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/requests/wildo-http-client-resources.frontend.service.js +4 -2
- package/dist/esm/core/requests/wildo-http-client-resources.frontend.service.js.map +1 -1
- package/dist/esm/core/requests/wildo-http-client.frontend.service.d.ts +30 -1
- package/dist/esm/core/requests/wildo-http-client.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/requests/wildo-http-client.frontend.service.js +47 -4
- package/dist/esm/core/requests/wildo-http-client.frontend.service.js.map +1 -1
- package/dist/esm/core/resources/ResourceRegistryContext.d.ts.map +1 -1
- package/dist/esm/core/resources/ResourceRegistryContext.js +22 -1
- package/dist/esm/core/resources/ResourceRegistryContext.js.map +1 -1
- package/dist/esm/core/resources/context-resource-identifiers.frontend.utils.js +1 -1
- package/dist/esm/core/resources/context-resource-identifiers.frontend.utils.js.map +1 -1
- package/dist/esm/core/resources/frontend-resource.utils.d.ts +22 -1
- package/dist/esm/core/resources/frontend-resource.utils.d.ts.map +1 -1
- package/dist/esm/core/resources/frontend-resource.utils.js +25 -2
- package/dist/esm/core/resources/frontend-resource.utils.js.map +1 -1
- package/dist/esm/core/resources/operation-semantics.frontend.utils.d.ts +113 -13
- package/dist/esm/core/resources/operation-semantics.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/resources/operation-semantics.frontend.utils.js +173 -20
- package/dist/esm/core/resources/operation-semantics.frontend.utils.js.map +1 -1
- package/dist/esm/core/resources/relationship-surface-runtime.frontend.utils.d.ts +11 -0
- package/dist/esm/core/resources/relationship-surface-runtime.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/resources/relationship-surface-runtime.frontend.utils.js +7 -0
- package/dist/esm/core/resources/relationship-surface-runtime.frontend.utils.js.map +1 -1
- package/dist/esm/core/resources/resource-label-field-paths.frontend.utils.d.ts +3 -2
- package/dist/esm/core/resources/resource-label-field-paths.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/resources/resource-label-field-paths.frontend.utils.js +13 -5
- package/dist/esm/core/resources/resource-label-field-paths.frontend.utils.js.map +1 -1
- package/dist/esm/core/resources/resources-repository.frontend.service.d.ts +6 -0
- package/dist/esm/core/resources/resources-repository.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/resources/resources-repository.frontend.service.js +90 -1
- package/dist/esm/core/resources/resources-repository.frontend.service.js.map +1 -1
- package/dist/esm/core/resources/resources.frontend.schemas.d.ts +139 -16
- package/dist/esm/core/resources/resources.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/resources/resources.frontend.schemas.js +110 -11
- package/dist/esm/core/resources/resources.frontend.schemas.js.map +1 -1
- package/dist/esm/core/resources/rmm/ResourceMutationManager.d.ts.map +1 -1
- package/dist/esm/core/resources/rmm/ResourceMutationManager.js +3 -1
- package/dist/esm/core/resources/rmm/ResourceMutationManager.js.map +1 -1
- package/dist/esm/core/resources/rmm/update-like-mutation-fallback.frontend.d.ts +10 -0
- package/dist/esm/core/resources/rmm/update-like-mutation-fallback.frontend.d.ts.map +1 -1
- package/dist/esm/core/resources/rmm/update-like-mutation-fallback.frontend.js +8 -0
- package/dist/esm/core/resources/rmm/update-like-mutation-fallback.frontend.js.map +1 -1
- package/dist/esm/core/resources/rmm/useResourceRMM.d.ts +7 -0
- package/dist/esm/core/resources/rmm/useResourceRMM.d.ts.map +1 -1
- package/dist/esm/core/resources/rmm/useResourceRMM.js +9 -2
- package/dist/esm/core/resources/rmm/useResourceRMM.js.map +1 -1
- package/dist/esm/core/resources/useOperationDirectExecution.d.ts +59 -0
- package/dist/esm/core/resources/useOperationDirectExecution.d.ts.map +1 -0
- package/dist/esm/core/resources/useOperationDirectExecution.js +278 -0
- package/dist/esm/core/resources/useOperationDirectExecution.js.map +1 -0
- package/dist/esm/core/resources/useResourceOperationActions.d.ts +1 -1
- package/dist/esm/core/resources/useResourceOperationActions.d.ts.map +1 -1
- package/dist/esm/core/resources/useResourceOperationActions.js +69 -22
- package/dist/esm/core/resources/useResourceOperationActions.js.map +1 -1
- package/dist/esm/core/resources/useResourceOperationSurface.d.ts +8 -6
- package/dist/esm/core/resources/useResourceOperationSurface.d.ts.map +1 -1
- package/dist/esm/core/resources/useResourceOperationSurface.js +3 -2
- package/dist/esm/core/resources/useResourceOperationSurface.js.map +1 -1
- package/dist/esm/core/runtime/AppRouter.d.ts.map +1 -1
- package/dist/esm/core/runtime/AppRouter.js +23 -2
- package/dist/esm/core/runtime/AppRouter.js.map +1 -1
- package/dist/esm/core/runtime/ApplicationContext.shared.d.ts +4 -2
- package/dist/esm/core/runtime/ApplicationContext.shared.d.ts.map +1 -1
- package/dist/esm/core/runtime/ApplicationContext.shared.js.map +1 -1
- package/dist/esm/core/runtime/ApplicationMainContext.d.ts +12 -2
- package/dist/esm/core/runtime/ApplicationMainContext.d.ts.map +1 -1
- package/dist/esm/core/runtime/ApplicationMainContext.js +5 -2
- package/dist/esm/core/runtime/ApplicationMainContext.js.map +1 -1
- package/dist/esm/core/runtime/domain-module.frontend.definitions.d.ts +25 -1
- package/dist/esm/core/runtime/domain-module.frontend.definitions.d.ts.map +1 -1
- package/dist/esm/core/runtime/domain-module.frontend.definitions.js +37 -1
- package/dist/esm/core/runtime/domain-module.frontend.definitions.js.map +1 -1
- package/dist/esm/core/runtime/start-application.frontend.service.d.ts +21 -2
- package/dist/esm/core/runtime/start-application.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/runtime/start-application.frontend.service.js +51 -4
- package/dist/esm/core/runtime/start-application.frontend.service.js.map +1 -1
- package/dist/esm/core/security/AuthSessionContext.d.ts +11 -0
- package/dist/esm/core/security/AuthSessionContext.d.ts.map +1 -1
- package/dist/esm/core/security/AuthSessionContext.js +70 -22
- package/dist/esm/core/security/AuthSessionContext.js.map +1 -1
- package/dist/esm/core/security/StepUpAuthContext.d.ts.map +1 -1
- package/dist/esm/core/security/StepUpAuthContext.js +10 -2
- package/dist/esm/core/security/StepUpAuthContext.js.map +1 -1
- package/dist/esm/core/security/UserOrgsContext.d.ts.map +1 -1
- package/dist/esm/core/security/UserOrgsContext.js +72 -8
- package/dist/esm/core/security/UserOrgsContext.js.map +1 -1
- package/dist/esm/core/security/route-organization-access.frontend.utils.d.ts +7 -0
- package/dist/esm/core/security/route-organization-access.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/security/route-organization-access.frontend.utils.js +8 -2
- package/dist/esm/core/security/route-organization-access.frontend.utils.js.map +1 -1
- package/dist/esm/core/security/useGrantedConsentPurposes.d.ts +30 -0
- package/dist/esm/core/security/useGrantedConsentPurposes.d.ts.map +1 -0
- package/dist/esm/core/security/useGrantedConsentPurposes.js +38 -0
- package/dist/esm/core/security/useGrantedConsentPurposes.js.map +1 -0
- package/dist/esm/core/ui/UIContext.d.ts.map +1 -1
- package/dist/esm/core/ui/UIContext.js +10 -6
- package/dist/esm/core/ui/UIContext.js.map +1 -1
- package/dist/esm/core/ui/color-conversion.utils.d.ts +20 -0
- package/dist/esm/core/ui/color-conversion.utils.d.ts.map +1 -1
- package/dist/esm/core/ui/color-conversion.utils.js +39 -5
- package/dist/esm/core/ui/color-conversion.utils.js.map +1 -1
- package/dist/esm/core/ui/themes/default.theme.d.ts.map +1 -1
- package/dist/esm/core/ui/themes/default.theme.js +22 -2
- package/dist/esm/core/ui/themes/default.theme.js.map +1 -1
- package/dist/esm/core/ui/ui.frontend.schemas.d.ts +6 -6
- package/dist/esm/core/ui/ui.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/ui/ui.frontend.schemas.js +3 -3
- package/dist/esm/core/ui/ui.frontend.schemas.js.map +1 -1
- package/dist/esm/index.d.ts +10 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +19 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/testing/app-shell-placement-coverage.d.ts +43 -0
- package/dist/esm/testing/app-shell-placement-coverage.d.ts.map +1 -0
- package/dist/esm/testing/app-shell-placement-coverage.js +114 -0
- package/dist/esm/testing/app-shell-placement-coverage.js.map +1 -0
- package/dist/esm/testing/mock-builders.d.ts.map +1 -1
- package/dist/esm/testing/mock-builders.js +5 -0
- package/dist/esm/testing/mock-builders.js.map +1 -1
- package/dist/esm/testing.d.ts +1 -0
- package/dist/esm/testing.d.ts.map +1 -1
- package/dist/esm/testing.js +1 -0
- package/dist/esm/testing.js.map +1 -1
- package/package.json +9 -7
- package/dist/esm/core/navigation/useIsStackEntryActive.js +0 -15
- package/dist/tsconfig.build.tsbuildinfo +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouterErrorBoundary.js","sourceRoot":"","sources":["../../../../../src/core/errors/RouterErrorBoundary.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useContext, useMemo } from 'react';\nimport { useRouteError, isRouteErrorResponse, useNavigate } from 'react-router-dom';\nimport { sharedErrorBuilder } from './errors-builder.frontend.services';\nimport { LoggerFrontendService } from '~wildo-frontend-lib/core/monitoring/logger.frontend.service';\nimport { AppLayout_RouterErrorBoundary } from '~wildo-frontend-lib/components/app/AppLayout_RouterErrorBoundary';\nimport { frontendEventBus } from '~wildo-frontend-lib/core/events/event-bus.frontend.service';\nimport {\n FrontendEvents,\n type FrontendEvent_NavigationRequest,\n} from '~wildo-frontend-lib/core/events/events.frontend.schemas';\nimport { useEventBus } from '~wildo-frontend-lib/core/events/useEventBus';\nimport { ApplicationContext } from '~wildo-frontend-lib/core/runtime/ApplicationContext.shared';\n\nimport { I18nContext } from '~wildo-frontend-lib/core/i18n/I18nContext';\nimport { ResourceRegistryContext } from '~wildo-frontend-lib/core/resources/ResourceRegistryContext';\nimport { NavigationUtils } from '~wildo-frontend-lib/core/navigation/navigation.utils';\nimport {\n navigateHomeWithFreshStart,\n navigatePathWithFreshStart,\n} from '~wildo-frontend-lib/core/navigation/navigation-clean-break.frontend.utils';\nimport {\n APP_LEVEL_NAVIGATION_SOURCE,\n NavigationContentType,\n} from '~wildo-frontend-lib/core/navigation/navigation.schemas';\nimport type { NavigationContent_ResourceOperation } from '~wildo-frontend-lib/core/navigation/navigation.schemas';\nimport { NavigationContext } from '~wildo-frontend-lib/core/navigation/NavigationContext';\nimport type {\n ErrorPageAction,\n ErrorPageConfigDefinition,\n} from '~wildo-frontend-lib/core/config/app-configuration-frontend.schemas';\nimport { useAppScopeSafe } from '~wildo-frontend-lib/core/scope/useAppScope';\nimport { NavigationZoneName } from '@wildo-ai/saas-models';\nimport type { ErrorUserGuidance, WildoError_Frontend } from '@wildo-ai/saas-models';\nimport { buildCompositeRouteUrlPath } from '~wildo-frontend-lib/core/config/composite-view.schemas';\nimport { frontendResourceUtils } from '~wildo-frontend-lib/core/resources/frontend-resource.utils';\n\nconst logger = LoggerFrontendService.getLogger();\n\nfunction extractContextStringIdentifiers(\n context: Record<string, unknown> | undefined,\n): Record<string, string> {\n if (!context) {\n return {};\n }\n\n return Object.fromEntries(\n Object.entries(context).filter(([, value]) => typeof value === 'string'),\n ) as Record<string, string>;\n}\n\n/**\n * Router Error Boundary component for React Router v6\n * This component is designed to be used as an `errorElement` in React Router routes\n * to handle routing errors and provide a better UX than the default error page.\n *\n * Uses APP_LAYOUTS_ROUTER_ERROR_BOUNDARY component for rendering.\n * This component renders inside the main provider tree (I18nProvider, IconRegistryProvider, etc.)\n * because ApplicationMainProvider wraps RouterProvider with all required providers.\n */\nexport const RouterErrorBoundary: React.FC = () => {\n const error = useRouteError();\n const navigate = useNavigate();\n const { emit } = useEventBus();\n const resourceRegistryCtx = useContext(ResourceRegistryContext);\n const appScope = useAppScopeSafe();\n const navigationContext = useContext(NavigationContext);\n\n // Resolve error page config from application context.\n // Use useContext directly (not useApplication) to avoid throwing when context is undefined.\n // frontendConfiguration is already resolved per-app — no app-type indexing needed.\n const appContext = useContext(ApplicationContext);\n // I18n may not be initialized if error occurs during startup — use optional context\n const i18nContext = useContext(I18nContext);\n const routeStatus = isRouteErrorResponse(error) ? error.status : 404;\n const errorPageConfig = useMemo((): ErrorPageConfigDefinition | undefined => {\n if (!appContext?.frontendConfiguration) return undefined;\n const frontendConfig = appContext.frontendConfiguration;\n if (!frontendConfig.errorPageConfig) return undefined;\n switch (routeStatus) {\n case 404: return frontendConfig.errorPageConfig.notFound;\n case 401: return frontendConfig.errorPageConfig.unauthorized;\n case 403: return frontendConfig.errorPageConfig.forbidden;\n case 503: return frontendConfig.errorPageConfig.maintenance;\n default:\n if (routeStatus >= 500) return frontendConfig.errorPageConfig.serverError;\n return undefined;\n }\n }, [appContext, routeStatus]);\n\n // Build WildoError once for both side effects (logging/events) and userGuidance extraction\n const { wildoError, userGuidance } = useMemo(() => {\n if (!error) return { wildoError: undefined, userGuidance: undefined };\n const we = isRouteErrorResponse(error)\n ? sharedErrorBuilder.buildRouterError(error, error.status)\n : sharedErrorBuilder.buildRouterError(error);\n return {\n wildoError: we,\n userGuidance: (we as WildoError_Frontend & { userGuidance?: ErrorUserGuidance }).userGuidance,\n };\n }, [error]);\n\n React.useEffect(() => {\n // Report the error to our error handling system\n if (wildoError) {\n // Log the error\n logger.error('RouterErrorBoundary caught error:', { wildoError, error });\n\n // Emit error via EventBus (replaces legacy window.dispatchEvent)\n try {\n frontendEventBus.emit(FrontendEvents.ERROR_OCCURED, {\n error: wildoError\n });\n } catch (dispatchError) {\n logger.warn('Failed to dispatch error event:', { dispatchError });\n }\n }\n }, [wildoError, error]);\n\n const recoveryContextIdentifiers = useMemo(() => {\n const identifiers: Record<string, string> = {\n ...(appScope?.buildContextResourceIdentifiers?.() ?? {}),\n ...extractContextStringIdentifiers(wildoError?.context),\n };\n\n if (wildoError?.organizationId) {\n identifiers.organizationId = wildoError.organizationId;\n }\n\n return identifiers;\n }, [appScope, wildoError]);\n\n const navigateHome = React.useCallback(() => {\n navigateHomeWithFreshStart({\n emit,\n routerNavigate: navigate,\n });\n }, [emit, navigate]);\n\n const emitRuntimeNavigation = React.useCallback((params: {\n content: FrontendEvent_NavigationRequest['content'];\n urlPath?: string;\n }) => {\n if (!params.content) {\n navigateHome();\n return;\n }\n\n if (!navigationContext) {\n if (!params.urlPath) {\n navigateHome();\n return;\n }\n\n navigate(params.urlPath, { replace: true });\n return;\n }\n\n emit(FrontendEvents.NAVIGATION_REQUEST, {\n content: params.content,\n initiator: { sourceZone: APP_LEVEL_NAVIGATION_SOURCE },\n urlPath: params.urlPath,\n replaceBrowserHistory: true,\n });\n }, [emit, navigate, navigateHome, navigationContext]);\n\n const handleErrorPageNavigateAction = React.useCallback((action: ErrorPageAction) => {\n if (action.type !== 'navigate') {\n return;\n }\n\n if (action.resourceOperationPath) {\n if (!resourceRegistryCtx) {\n navigateHome();\n return;\n }\n\n const { registry } = resourceRegistryCtx;\n const opPath = action.resourceOperationPath;\n const resourceConfig = registry.resourceConfigurations[opPath.resourceType];\n if (!resourceConfig) {\n navigateHome();\n return;\n }\n\n const operation = resourceConfig.operations.find(\n (candidate) => String(candidate.operationIdentifier) === String(opPath.operationIdentifier)\n && Boolean(candidate.isOperationDefault ?? true) === opPath.isOperationDefault\n && Boolean(candidate.isBulkOperation ?? false) === opPath.isBulkOperation\n && String(candidate.variantKey ?? '') === String(opPath.variantKey ?? ''),\n );\n if (!operation) {\n navigateHome();\n return;\n }\n\n const resolvedUrl = NavigationUtils.resolveResourceUrl(\n resourceConfig as any,\n operation as any,\n recoveryContextIdentifiers,\n registry.allResourceFieldIdentifiers,\n opPath.parentResourcesRequirements,\n )?.resolvedUrl;\n if (!resolvedUrl) {\n navigateHome();\n return;\n }\n\n emitRuntimeNavigation({\n content: {\n contentType: NavigationContentType.RESOURCE_OPERATION,\n resourceContext: frontendResourceUtils.createFrontendResourceOperationContextFromOperation({\n resourceType: opPath.resourceType,\n operation,\n contextResourceIdentifiers: recoveryContextIdentifiers,\n parentResourcesRequirements: opPath.parentResourcesRequirements,\n }),\n },\n urlPath: resolvedUrl,\n });\n return;\n }\n\n if (action.compositeViewReference) {\n const compositeContext = Object.keys(recoveryContextIdentifiers).length > 0\n ? recoveryContextIdentifiers\n : undefined;\n emitRuntimeNavigation({\n content: {\n contentType: NavigationContentType.COMPOSITE_VIEW,\n viewRef: action.compositeViewReference,\n contextResourceIdentifiers: compositeContext,\n },\n urlPath: buildCompositeRouteUrlPath(action.compositeViewReference, compositeContext),\n });\n return;\n }\n\n if (!action.target || action.target === '/') {\n navigateHome();\n return;\n }\n\n if (!navigationContext) {\n navigate(action.target, { replace: true });\n return;\n }\n\n navigatePathWithFreshStart({\n emit,\n routerNavigate: navigate,\n path: action.target,\n });\n }, [emit, emitRuntimeNavigation, navigate, navigateHome, navigationContext, recoveryContextIdentifiers, resourceRegistryCtx]);\n\n // Map ErrorUserGuidance → ErrorDisplayUserGuidance\n // Multi-level fallback: i18n label → raw guidance string\n const resolvedUserGuidance = useMemo(() => {\n if (!userGuidance) return undefined;\n\n // Resolve the guidance key for i18n lookups\n // Priority: explicit guidanceKey → customMessageReference from WildoError\n const guidanceKey = userGuidance.guidanceKey\n ?? (wildoError as WildoError_Frontend | undefined)?.customMessageReference;\n\n // Helper: try i18n first, then fall back to raw string\n const resolveField = (field: string, rawValue?: string): string | undefined => {\n if (guidanceKey && i18nContext) {\n const i18nValue = i18nContext.tErrorGuidance(guidanceKey, field);\n if (i18nValue) return i18nValue;\n }\n return rawValue;\n };\n\n return {\n explanation: resolveField('explanation', userGuidance.explanation),\n resolution: resolveField('resolution', userGuidance.resolution),\n completedSteps: userGuidance.completedSteps,\n retryAfterSeconds: userGuidance.retryAfterSeconds,\n nextAction: userGuidance.nextAction\n ? {\n label: resolveField('nextActionLabel', userGuidance.nextAction.label) ?? userGuidance.nextAction.label,\n onClick: () => {\n if (userGuidance.nextAction!.type === 'url') {\n window.open(userGuidance.nextAction!.ref, '_blank', 'noopener,noreferrer');\n } else {\n // Operation guidance should re-enter the runtime with typed\n // content when reconstruction is possible. If not, fail closed.\n const ref = userGuidance.nextAction!.ref;\n if (!resourceRegistryCtx) {\n logger.warn('Cannot navigate to operation: resource registry not available', { ref });\n navigateHome();\n return;\n }\n const { registry } = resourceRegistryCtx;\n\n const resolved = NavigationUtils.resolveOperationRef(ref, recoveryContextIdentifiers, registry);\n if (!resolved || resolved.contentType !== NavigationContentType.RESOURCE_OPERATION) {\n navigateHome();\n return;\n }\n\n const { resourceContext } = resolved as NavigationContent_ResourceOperation;\n const resourceConfig = registry.resourceConfigurations[resourceContext.resourceType];\n if (!resourceConfig) {\n navigateHome();\n return;\n }\n\n const result = NavigationUtils.resolveResourceUrl(\n resourceConfig,\n resourceContext.operation,\n recoveryContextIdentifiers,\n registry.allResourceFieldIdentifiers,\n resourceContext.parentResourcesRequirements,\n );\n if (result?.resolvedUrl) {\n emitRuntimeNavigation({\n content: resolved,\n urlPath: result.resolvedUrl,\n });\n return;\n }\n\n navigateHome();\n }\n },\n }\n : undefined,\n };\n }, [emitRuntimeNavigation, i18nContext, navigateHome, recoveryContextIdentifiers, resourceRegistryCtx, userGuidance, wildoError]);\n const navigateBack = React.useCallback(() => {\n if (navigationContext) {\n // The ONE go-back resolver — it composes a hosted pane's URL under its host, which this\n // boundary's own stack walk used to bypass (writing the pane's bare address rebuilt the pane\n // into primary: the defect the composer exists to prevent, re-entered through an error page).\n const target = NavigationUtils.resolveGoBackTarget({\n currentBrowserUrl: NavigationUtils.buildBrowserUrl(window.location.pathname, window.location.search),\n getZoneState: navigationContext.getZoneState,\n });\n if (target?.browserUrl) {\n emit(FrontendEvents.NAVIGATION_POP, { zone: target.zone });\n navigate(target.browserUrl, { replace: true });\n return;\n }\n }\n\n if (window.history.length > 1) {\n navigate(-1);\n return;\n }\n navigateHome();\n }, [navigate, navigateHome, navigationContext]);\n\n // Handle case where component is used as element for \"*\" catch-all route (404)\n // In this case, useRouteError() returns undefined\n if (!error) {\n return (\n <AppLayout_RouterErrorBoundary\n errorType=\"route\"\n routeError={{\n status: 404,\n statusText: 'Not Found',\n data: { pathname: window.location.pathname }\n }}\n navigate={navigate}\n navigateAction={handleErrorPageNavigateAction}\n navigateBack={navigateBack}\n navigateHome={navigateHome}\n errorPageConfig={errorPageConfig}\n />\n );\n }\n\n // Determine error type and render appropriate layout\n if (isRouteErrorResponse(error)) {\n return (\n <AppLayout_RouterErrorBoundary\n errorType=\"route\"\n routeError={{\n status: error.status,\n statusText: error.statusText,\n data: error.data\n }}\n navigate={navigate}\n navigateAction={handleErrorPageNavigateAction}\n navigateBack={navigateBack}\n navigateHome={navigateHome}\n errorPageConfig={errorPageConfig}\n userGuidance={resolvedUserGuidance}\n />\n );\n }\n\n if (error instanceof Error) {\n return (\n <AppLayout_RouterErrorBoundary\n errorType=\"javascript\"\n jsError={error}\n navigate={navigate}\n navigateAction={handleErrorPageNavigateAction}\n navigateBack={navigateBack}\n navigateHome={navigateHome}\n errorPageConfig={errorPageConfig}\n userGuidance={resolvedUserGuidance}\n />\n );\n }\n\n return (\n <AppLayout_RouterErrorBoundary\n errorType=\"generic\"\n unknownError={error}\n navigate={navigate}\n navigateAction={handleErrorPageNavigateAction}\n navigateBack={navigateBack}\n navigateHome={navigateHome}\n errorPageConfig={errorPageConfig}\n userGuidance={resolvedUserGuidance}\n />\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"RouterErrorBoundary.js","sourceRoot":"","sources":["../../../../../src/core/errors/RouterErrorBoundary.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useContext, useMemo } from 'react';\nimport { useRouteError, isRouteErrorResponse, useNavigate } from 'react-router-dom';\nimport { sharedErrorBuilder } from './errors-builder.frontend.services';\nimport { LoggerFrontendService } from '~wildo-frontend-lib/core/monitoring/logger.frontend.service';\nimport { AppLayout_RouterErrorBoundary } from '~wildo-frontend-lib/components/app/AppLayout_RouterErrorBoundary';\nimport { frontendEventBus } from '~wildo-frontend-lib/core/events/event-bus.frontend.service';\nimport {\n FrontendEvents,\n type FrontendEvent_NavigationRequest,\n} from '~wildo-frontend-lib/core/events/events.frontend.schemas';\nimport { useEventBus } from '~wildo-frontend-lib/core/events/useEventBus';\nimport { ApplicationContext } from '~wildo-frontend-lib/core/runtime/ApplicationContext.shared';\n\nimport { I18nContext } from '~wildo-frontend-lib/core/i18n/I18nContext';\nimport { ResourceRegistryContext } from '~wildo-frontend-lib/core/resources/ResourceRegistryContext';\nimport { NavigationUtils } from '~wildo-frontend-lib/core/navigation/navigation.utils';\nimport {\n navigateHomeWithFreshStart,\n navigatePathWithFreshStart,\n} from '~wildo-frontend-lib/core/navigation/navigation-clean-break.frontend.utils';\nimport {\n APP_LEVEL_NAVIGATION_SOURCE,\n NavigationContentType,\n} from '~wildo-frontend-lib/core/navigation/navigation.schemas';\nimport type { NavigationContent_ResourceOperation } from '~wildo-frontend-lib/core/navigation/navigation.schemas';\nimport { NavigationContext } from '~wildo-frontend-lib/core/navigation/NavigationContext';\nimport type {\n ErrorPageAction,\n ErrorPageConfigDefinition,\n} from '~wildo-frontend-lib/core/config/app-configuration-frontend.schemas';\nimport { useAppScopeSafe } from '~wildo-frontend-lib/core/scope/useAppScope';\nimport { NavigationZoneName } from '@wildo-ai/saas-models';\nimport type { ErrorUserGuidance, WildoError_Frontend } from '@wildo-ai/saas-models';\nimport { buildCompositeRouteUrlPath } from '~wildo-frontend-lib/core/config/composite-view.schemas';\nimport { frontendResourceUtils } from '~wildo-frontend-lib/core/resources/frontend-resource.utils';\n\nconst logger = LoggerFrontendService.getLogger();\n\nfunction extractContextStringIdentifiers(\n context: Record<string, unknown> | undefined,\n): Record<string, string> {\n if (!context) {\n return {};\n }\n\n return Object.fromEntries(\n Object.entries(context).filter(([, value]) => typeof value === 'string'),\n ) as Record<string, string>;\n}\n\n/**\n * Router Error Boundary component for React Router v6\n * This component is designed to be used as an `errorElement` in React Router routes\n * to handle routing errors and provide a better UX than the default error page.\n *\n * Uses APP_LAYOUTS_ROUTER_ERROR_BOUNDARY component for rendering.\n * This component renders inside the main provider tree (I18nProvider, IconRegistryProvider, etc.)\n * because ApplicationMainProvider wraps RouterProvider with all required providers.\n */\nexport const RouterErrorBoundary: React.FC = () => {\n const error = useRouteError();\n const navigate = useNavigate();\n const { emit } = useEventBus();\n const resourceRegistryCtx = useContext(ResourceRegistryContext);\n const appScope = useAppScopeSafe();\n const navigationContext = useContext(NavigationContext);\n\n // Resolve error page config from application context.\n // Use useContext directly (not useApplication) to avoid throwing when context is undefined.\n // frontendConfiguration is already resolved per-app — no app-type indexing needed.\n const appContext = useContext(ApplicationContext);\n // I18n may not be initialized if error occurs during startup — use optional context\n const i18nContext = useContext(I18nContext);\n const routeStatus = isRouteErrorResponse(error) ? error.status : 404;\n const errorPageConfig = useMemo((): ErrorPageConfigDefinition | undefined => {\n if (!appContext?.frontendConfiguration) return undefined;\n const frontendConfig = appContext.frontendConfiguration;\n if (!frontendConfig.errorPageConfig) return undefined;\n switch (routeStatus) {\n case 404: return frontendConfig.errorPageConfig.notFound;\n case 401: return frontendConfig.errorPageConfig.unauthorized;\n case 403: return frontendConfig.errorPageConfig.forbidden;\n case 503: return frontendConfig.errorPageConfig.maintenance;\n default:\n if (routeStatus >= 500) return frontendConfig.errorPageConfig.serverError;\n return undefined;\n }\n }, [appContext, routeStatus]);\n\n // Build WildoError once for both side effects (logging/events) and userGuidance extraction\n const { wildoError, userGuidance } = useMemo(() => {\n if (!error) return { wildoError: undefined, userGuidance: undefined };\n const we = isRouteErrorResponse(error)\n ? sharedErrorBuilder.buildRouterError(error, error.status)\n : sharedErrorBuilder.buildRouterError(error);\n return {\n wildoError: we,\n userGuidance: (we as WildoError_Frontend & { userGuidance?: ErrorUserGuidance }).userGuidance,\n };\n }, [error]);\n\n React.useEffect(() => {\n // Report the error to our error handling system\n if (wildoError) {\n // Log the error\n logger.error('RouterErrorBoundary caught error:', { wildoError, error });\n\n // Emit error via EventBus (replaces legacy window.dispatchEvent)\n try {\n frontendEventBus.emit(FrontendEvents.ERROR_OCCURED, {\n error: wildoError\n });\n } catch (dispatchError) {\n logger.warn('Failed to dispatch error event:', { dispatchError });\n }\n }\n }, [wildoError, error]);\n\n const recoveryContextIdentifiers = useMemo(() => {\n const identifiers: Record<string, string> = {\n ...(appScope?.buildContextResourceIdentifiers?.() ?? {}),\n ...extractContextStringIdentifiers(wildoError?.context),\n };\n\n if (wildoError?.organizationId) {\n identifiers.organizationId = wildoError.organizationId;\n }\n\n return identifiers;\n }, [appScope, wildoError]);\n\n const navigateHome = React.useCallback(() => {\n navigateHomeWithFreshStart({\n emit,\n routerNavigate: navigate,\n });\n }, [emit, navigate]);\n\n const emitRuntimeNavigation = React.useCallback((params: {\n content: FrontendEvent_NavigationRequest['content'];\n urlPath?: string;\n }) => {\n if (!params.content) {\n navigateHome();\n return;\n }\n\n if (!navigationContext) {\n if (!params.urlPath) {\n navigateHome();\n return;\n }\n\n navigate(params.urlPath, { replace: true });\n return;\n }\n\n emit(FrontendEvents.NAVIGATION_REQUEST, {\n content: params.content,\n initiator: { sourceZone: APP_LEVEL_NAVIGATION_SOURCE },\n urlPath: params.urlPath,\n replaceBrowserHistory: true,\n });\n }, [emit, navigate, navigateHome, navigationContext]);\n\n const handleErrorPageNavigateAction = React.useCallback((action: ErrorPageAction) => {\n if (action.type !== 'navigate') {\n return;\n }\n\n if (action.resourceOperationPath) {\n if (!resourceRegistryCtx) {\n navigateHome();\n return;\n }\n\n const { registry } = resourceRegistryCtx;\n const opPath = action.resourceOperationPath;\n const resourceConfig = registry.resourceConfigurations[opPath.resourceType];\n if (!resourceConfig) {\n navigateHome();\n return;\n }\n\n const operation = resourceConfig.operations.find(\n (candidate) => String(candidate.operationIdentifier) === String(opPath.operationIdentifier)\n && Boolean(candidate.isOperationDefault ?? true) === opPath.isOperationDefault\n && Boolean(candidate.isBulkOperation ?? false) === opPath.isBulkOperation\n && String(candidate.variantKey ?? '') === String(opPath.variantKey ?? ''),\n );\n if (!operation) {\n navigateHome();\n return;\n }\n\n const resolvedUrl = NavigationUtils.resolveResourceUrl(\n resourceConfig as any,\n operation as any,\n recoveryContextIdentifiers,\n registry.allResourceFieldIdentifiers,\n opPath.parentResourcesRequirements,\n )?.resolvedUrl;\n if (!resolvedUrl) {\n navigateHome();\n return;\n }\n\n emitRuntimeNavigation({\n content: {\n contentType: NavigationContentType.RESOURCE_OPERATION,\n resourceContext: frontendResourceUtils.createFrontendResourceOperationContextFromOperation({\n resourceType: opPath.resourceType,\n operation,\n contextResourceIdentifiers: recoveryContextIdentifiers,\n parentResourcesRequirements: opPath.parentResourcesRequirements,\n }),\n },\n urlPath: resolvedUrl,\n });\n return;\n }\n\n if (action.compositeViewReference) {\n const compositeContext = Object.keys(recoveryContextIdentifiers).length > 0\n ? recoveryContextIdentifiers\n : undefined;\n emitRuntimeNavigation({\n content: {\n contentType: NavigationContentType.COMPOSITE_VIEW,\n viewRef: action.compositeViewReference,\n contextResourceIdentifiers: compositeContext,\n },\n urlPath: buildCompositeRouteUrlPath(action.compositeViewReference, compositeContext),\n });\n return;\n }\n\n if (!action.target || action.target === '/') {\n navigateHome();\n return;\n }\n\n if (!navigationContext) {\n navigate(action.target, { replace: true });\n return;\n }\n\n navigatePathWithFreshStart({\n emit,\n routerNavigate: navigate,\n path: action.target,\n });\n }, [emit, emitRuntimeNavigation, navigate, navigateHome, navigationContext, recoveryContextIdentifiers, resourceRegistryCtx]);\n\n // Map ErrorUserGuidance → ErrorDisplayUserGuidance\n // Multi-level fallback: i18n label → raw guidance string\n const resolvedUserGuidance = useMemo(() => {\n if (!userGuidance) return undefined;\n\n // Resolve the guidance key for i18n lookups\n // Priority: explicit guidanceKey → customMessageReference from WildoError\n const guidanceKey = userGuidance.guidanceKey\n ?? (wildoError as WildoError_Frontend | undefined)?.customMessageReference;\n\n // Helper: try i18n first, then fall back to raw string\n const resolveField = (field: string, rawValue?: string): string | undefined => {\n if (guidanceKey && i18nContext) {\n const i18nValue = i18nContext.tErrorGuidance(guidanceKey, field, userGuidance.params);\n if (i18nValue) return i18nValue;\n }\n return rawValue;\n };\n\n return {\n explanation: resolveField('explanation', userGuidance.explanation),\n resolution: resolveField('resolution', userGuidance.resolution),\n completedSteps: userGuidance.completedSteps,\n retryAfterSeconds: userGuidance.retryAfterSeconds,\n nextAction: userGuidance.nextAction\n ? {\n label: resolveField('nextActionLabel', userGuidance.nextAction.label) ?? userGuidance.nextAction.label,\n onClick: () => {\n if (userGuidance.nextAction!.type === 'url') {\n window.open(userGuidance.nextAction!.ref, '_blank', 'noopener,noreferrer');\n } else {\n // Operation guidance should re-enter the runtime with typed\n // content when reconstruction is possible. If not, fail closed.\n const ref = userGuidance.nextAction!.ref;\n if (!resourceRegistryCtx) {\n logger.warn('Cannot navigate to operation: resource registry not available', { ref });\n navigateHome();\n return;\n }\n const { registry } = resourceRegistryCtx;\n\n const resolved = NavigationUtils.resolveOperationRef(ref, recoveryContextIdentifiers, registry);\n if (!resolved || resolved.contentType !== NavigationContentType.RESOURCE_OPERATION) {\n navigateHome();\n return;\n }\n\n const { resourceContext } = resolved as NavigationContent_ResourceOperation;\n const resourceConfig = registry.resourceConfigurations[resourceContext.resourceType];\n if (!resourceConfig) {\n navigateHome();\n return;\n }\n\n const result = NavigationUtils.resolveResourceUrl(\n resourceConfig,\n resourceContext.operation,\n recoveryContextIdentifiers,\n registry.allResourceFieldIdentifiers,\n resourceContext.parentResourcesRequirements,\n );\n if (result?.resolvedUrl) {\n emitRuntimeNavigation({\n content: resolved,\n urlPath: result.resolvedUrl,\n });\n return;\n }\n\n navigateHome();\n }\n },\n }\n : undefined,\n };\n }, [emitRuntimeNavigation, i18nContext, navigateHome, recoveryContextIdentifiers, resourceRegistryCtx, userGuidance, wildoError]);\n const navigateBack = React.useCallback(() => {\n if (navigationContext) {\n // The ONE go-back resolver — it composes a hosted pane's URL under its host, which this\n // boundary's own stack walk used to bypass (writing the pane's bare address rebuilt the pane\n // into primary: the defect the composer exists to prevent, re-entered through an error page).\n const target = NavigationUtils.resolveGoBackTarget({\n currentBrowserUrl: NavigationUtils.buildBrowserUrl(window.location.pathname, window.location.search),\n getZoneState: navigationContext.getZoneState,\n });\n if (target?.browserUrl) {\n emit(FrontendEvents.NAVIGATION_POP, { zone: target.zone });\n navigate(target.browserUrl, { replace: true });\n return;\n }\n }\n\n if (window.history.length > 1) {\n navigate(-1);\n return;\n }\n navigateHome();\n }, [navigate, navigateHome, navigationContext]);\n\n // Handle case where component is used as element for \"*\" catch-all route (404)\n // In this case, useRouteError() returns undefined\n if (!error) {\n return (\n <AppLayout_RouterErrorBoundary\n errorType=\"route\"\n routeError={{\n status: 404,\n statusText: 'Not Found',\n data: { pathname: window.location.pathname }\n }}\n navigate={navigate}\n navigateAction={handleErrorPageNavigateAction}\n navigateBack={navigateBack}\n navigateHome={navigateHome}\n errorPageConfig={errorPageConfig}\n />\n );\n }\n\n // Determine error type and render appropriate layout\n if (isRouteErrorResponse(error)) {\n return (\n <AppLayout_RouterErrorBoundary\n errorType=\"route\"\n routeError={{\n status: error.status,\n statusText: error.statusText,\n data: error.data\n }}\n navigate={navigate}\n navigateAction={handleErrorPageNavigateAction}\n navigateBack={navigateBack}\n navigateHome={navigateHome}\n errorPageConfig={errorPageConfig}\n userGuidance={resolvedUserGuidance}\n />\n );\n }\n\n if (error instanceof Error) {\n return (\n <AppLayout_RouterErrorBoundary\n errorType=\"javascript\"\n jsError={error}\n navigate={navigate}\n navigateAction={handleErrorPageNavigateAction}\n navigateBack={navigateBack}\n navigateHome={navigateHome}\n errorPageConfig={errorPageConfig}\n userGuidance={resolvedUserGuidance}\n />\n );\n }\n\n return (\n <AppLayout_RouterErrorBoundary\n errorType=\"generic\"\n unknownError={error}\n navigate={navigate}\n navigateAction={handleErrorPageNavigateAction}\n navigateBack={navigateBack}\n navigateHome={navigateHome}\n errorPageConfig={errorPageConfig}\n userGuidance={resolvedUserGuidance}\n />\n );\n};\n"]}
|
|
@@ -62,8 +62,8 @@ export declare class ErrorBuilderFrontend {
|
|
|
62
62
|
* - Single source of truth for error building
|
|
63
63
|
* - Automatic context propagation to ErrorBoundary and RouterErrorBoundary errors
|
|
64
64
|
*
|
|
65
|
-
* User context is managed by ErrorContext, which listens to USER_LOGIN
|
|
66
|
-
* PRIMARY_SCOPE_CHANGED
|
|
65
|
+
* User context is managed by ErrorContext, which listens to USER_LOGIN / USER_LOGOUT (the person
|
|
66
|
+
* arriving and leaving) and PRIMARY_SCOPE_CHANGED (organization changes) and updates this shared instance.
|
|
67
67
|
*/
|
|
68
68
|
export declare const sharedErrorBuilder: ErrorBuilderFrontend;
|
|
69
69
|
//# sourceMappingURL=errors-builder.frontend.services.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors-builder.frontend.services.d.ts","sourceRoot":"","sources":["../../../../../src/core/errors/errors-builder.frontend.services.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,2BAA2B,EAE3B,SAAS,EACT,kBAAkB,EAClB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"errors-builder.frontend.services.d.ts","sourceRoot":"","sources":["../../../../../src/core/errors/errors-builder.frontend.services.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,2BAA2B,EAE3B,SAAS,EACT,kBAAkB,EAClB,mBAAmB,EACwD,MAAM,uBAAuB,CAAC;AAC3G,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC;;;GAGG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,cAAc,CAAC,CAAS;IAChC,OAAO,CAAC,MAAM,CAAC,CAAS;gBAEZ,OAAO,CAAC,EAAE;QACpB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB;IAKD,oBAAoB,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAI9D,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAM9C,wBAAwB,CACtB,SAAS,EAAE,SAAS,EACpB,OAAO,GAAE;QACP,sBAAsB,CAAC,EAAE,2BAA2B,CAAC;QACrD,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KACzB,GACL,mBAAmB;IA4BtB,qBAAqB,CAAC,YAAY,EAAE,kBAAkB,GAAG,mBAAmB;IAiB5E;;;;;;;OAOG;IACH,eAAe,CACb,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,SAAS,EACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC1C,mBAAmB;IAgBtB;;;;;;;OAOG;IACH,gBAAgB,CACd,KAAK,EAAE,GAAG,EACV,MAAM,CAAC,EAAE,MAAM,EACf,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC1C,mBAAmB;IA0CtB;;;;;;OAMG;IACH,mBAAmB,CACjB,KAAK,EAAE,GAAG,EACV,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC1C,mBAAmB;IAiBtB;;;;;;OAMG;IACH,iBAAiB,CACf,KAAK,EAAE,GAAG,EACV,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC1C,mBAAmB;CAcvB;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB,sBAA6B,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ERROR_DEFINITIONS, ErrorHandling_Strategy, ErrorType, ResourceOperationRiskLevel, describeCaughtError } from '@wildo-ai/saas-models';
|
|
1
|
+
import { ERROR_DEFINITIONS, ErrorHandling_Strategy, ErrorType, ResourceOperationRiskLevel, WebSocketSystemErrorCode, describeCaughtError } from '@wildo-ai/saas-models';
|
|
2
2
|
import { ErrorManagementService } from './error-management.frontend.service.js';
|
|
3
3
|
/**
|
|
4
4
|
* Frontend Error Builder
|
|
@@ -125,7 +125,7 @@ export class ErrorBuilderFrontend {
|
|
|
125
125
|
* @returns WildoError_Frontend instance
|
|
126
126
|
*/
|
|
127
127
|
buildWebSocketError(error, additionalContext) {
|
|
128
|
-
const errorType = additionalContext?.errorCode ===
|
|
128
|
+
const errorType = additionalContext?.errorCode === WebSocketSystemErrorCode.RATE_LIMIT_EXCEEDED
|
|
129
129
|
? ErrorType.RATE_LIMIT
|
|
130
130
|
: ErrorType.NETWORK;
|
|
131
131
|
return this.buildWildoError_Frontend(errorType, {
|
|
@@ -162,8 +162,8 @@ export class ErrorBuilderFrontend {
|
|
|
162
162
|
* - Single source of truth for error building
|
|
163
163
|
* - Automatic context propagation to ErrorBoundary and RouterErrorBoundary errors
|
|
164
164
|
*
|
|
165
|
-
* User context is managed by ErrorContext, which listens to USER_LOGIN
|
|
166
|
-
* PRIMARY_SCOPE_CHANGED
|
|
165
|
+
* User context is managed by ErrorContext, which listens to USER_LOGIN / USER_LOGOUT (the person
|
|
166
|
+
* arriving and leaving) and PRIMARY_SCOPE_CHANGED (organization changes) and updates this shared instance.
|
|
167
167
|
*/
|
|
168
168
|
export const sharedErrorBuilder = new ErrorBuilderFrontend();
|
|
169
169
|
//# sourceMappingURL=errors-builder.frontend.services.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors-builder.frontend.services.js","sourceRoot":"","sources":["../../../../../src/core/errors/errors-builder.frontend.services.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ERROR_DEFINITIONS,\n ErrorCustomMessageReference,\n ErrorHandling_Strategy,\n ErrorType,\n WildoError_Backend,\n WildoError_Frontend,\n ResourceOperationRiskLevel, describeCaughtError } from '@wildo-ai/saas-models';\nimport type { ErrorInfo } from 'react';\nimport { ErrorManagementService } from './error-management.frontend.service';\n\n/**\n * Frontend Error Builder\n * Creates unified error configurations and WildoError_Frontend instances for client-side use\n */\nexport class ErrorBuilderFrontend {\n private organizationId?: string;\n private userId?: string;\n\n constructor(context?: {\n organizationId?: string;\n userId?: string;\n }) {\n this.organizationId = context?.organizationId;\n this.userId = context?.userId;\n }\n\n updateOrganizationId(organizationId: string | undefined): void {\n this.organizationId = organizationId;\n }\n\n updateUserId(userId: string | undefined): void {\n this.userId = userId;\n }\n \n \n\n buildWildoError_Frontend(\n errorType: ErrorType,\n options: {\n customMessageReference?: ErrorCustomMessageReference,\n operationPathKey?: string,\n context?: Record<string, any>\n } = {}\n ): WildoError_Frontend {\n\n const errorDefinition = ERROR_DEFINITIONS[errorType];\n\n return {\n type: errorType,\n severity: errorDefinition.severity,\n customMessageReference: options.customMessageReference || errorDefinition.defaultCustomMessageReference,\n timestamp: new Date(),\n organizationId: this.organizationId ?? undefined,\n userId: this.userId ?? undefined,\n operationPathKey: options.operationPathKey ?? undefined,\n\n // Frontend actions and config\n frontendActions: errorDefinition.frontendActions || [],\n redirectPolicy: errorDefinition.redirectPolicy,\n errorHandlingStrategy: errorDefinition.errorHandlingStrategy ?? ErrorHandling_Strategy.STOP,\n retryPolicy: errorDefinition.retryPolicy,\n maxRetries: errorDefinition.maxRetries,\n initialDelay: errorDefinition.initialDelay,\n baseDelay: errorDefinition.baseDelay,\n \n showToUser: errorDefinition.showToUser ?? true,\n context: options.context ?? undefined,\n };\n }\n\n\n buildFromBackendError(backendError: WildoError_Backend): WildoError_Frontend {\n // Type-safe access to backend error properties\n const errorType: ErrorType = (backendError as WildoError_Backend).type;\n const customMessageReference: ErrorCustomMessageReference = (backendError as WildoError_Backend).customMessageReference;\n const operationPathKey: string | undefined = (backendError as WildoError_Backend).operationPathKey;\n const context: Record<string, any> | undefined = (backendError as WildoError_Backend).context;\n \n return this.buildWildoError_Frontend(\n errorType,\n {\n customMessageReference: customMessageReference ?? undefined,\n operationPathKey: operationPathKey ?? undefined,\n context: context ?? undefined\n }\n );\n }\n\n /**\n * Build error from React component error\n * \n * @param error - The Error object from React\n * @param errorInfo - React.ErrorInfo with component stack\n * @param additionalContext - Optional additional context to merge\n * @returns WildoError_Frontend instance\n */\n buildReactError(\n error: Error,\n errorInfo: ErrorInfo,\n additionalContext?: Record<string, unknown>\n ): WildoError_Frontend {\n return this.buildWildoError_Frontend(\n ErrorType.UNCAUGHT_EXCEPTION,\n {\n context: {\n componentStack: errorInfo.componentStack,\n errorStack: error.stack,\n errorName: error.name,\n errorMessage: error.message,\n timestamp: new Date().toISOString(),\n ...(additionalContext || {}),\n },\n }\n );\n }\n\n /**\n * Build error from router error\n * \n * @param error - The error from router (can be RouteErrorResponse, Error, or any)\n * @param status - Optional HTTP status code (for RouteErrorResponse)\n * @param additionalContext - Optional additional context to merge\n * @returns WildoError_Frontend instance\n */\n buildRouterError(\n error: any,\n status?: number,\n additionalContext?: Record<string, unknown>\n ): WildoError_Frontend {\n let errorType = ErrorType.UNKNOWN;\n\n // If status code provided, use centralized HTTP error behavior\n if (status !== undefined) {\n const behavior = ErrorManagementService.getHttpErrorBehavior(status, ResourceOperationRiskLevel.MEDIUM);\n errorType = behavior.errorType;\n } else if (error instanceof Error) {\n errorType = ErrorType.UNCAUGHT_EXCEPTION;\n }\n\n // Build context based on error type\n const context: Record<string, unknown> = {\n pathname: window.location.pathname,\n timestamp: new Date().toISOString(),\n ...(additionalContext || {}),\n };\n\n // Handle RouteErrorResponse format\n if (status !== undefined && error?.statusText) {\n context.status = status;\n context.statusText = error.statusText;\n if (error.data) {\n context.data = error.data;\n }\n }\n\n // Handle Error instance\n if (error instanceof Error) {\n context.errorName = error.name;\n context.errorStack = error.stack;\n context.errorMessage = error.message;\n } else if (error !== null && typeof error === 'object') {\n // Handle other object types\n context.error = String(error);\n }\n\n return this.buildWildoError_Frontend(errorType, {\n context,\n });\n }\n\n /**\n * Build error from WebSocket error\n * \n * @param error - The error from WebSocket connection\n * @param additionalContext - Optional additional context to merge\n * @returns WildoError_Frontend instance\n */\n buildWebSocketError(\n error: any,\n additionalContext?: Record<string, unknown>\n ): WildoError_Frontend {\n const errorType = additionalContext?.errorCode === 'RATE_LIMIT_EXCEEDED'\n ? ErrorType.RATE_LIMIT\n : ErrorType.NETWORK;\n\n return this.buildWildoError_Frontend(\n errorType,\n {\n context: {\n source: 'websocket',\n errorMessage: describeCaughtError(error),\n ...(additionalContext || {}),\n },\n }\n );\n }\n\n /**\n * Build error from promise rejection\n * \n * @param error - The error from rejected promise\n * @param additionalContext - Optional additional context to merge\n * @returns WildoError_Frontend instance\n */\n buildPromiseError(\n error: any,\n additionalContext?: Record<string, unknown>\n ): WildoError_Frontend {\n return this.buildWildoError_Frontend(\n ErrorType.UNCAUGHT_EXCEPTION,\n {\n context: {\n source: 'promise',\n errorMessage: describeCaughtError(error),\n errorStack: error instanceof Error ? error.stack : undefined,\n ...(additionalContext || {}),\n },\n }\n );\n }\n\n}\n\n/**\n * Shared singleton instance of ErrorBuilderFrontend\n * \n * This instance is used across all error handling services to ensure:\n * - Consistent user context (userId, organizationId) across all errors\n * - Single source of truth for error building\n * - Automatic context propagation to ErrorBoundary and RouterErrorBoundary errors\n * \n * User context is managed by ErrorContext, which listens to USER_LOGIN and \n * PRIMARY_SCOPE_CHANGED events (for organization changes) and updates this shared instance.\n */\nexport const sharedErrorBuilder = new ErrorBuilderFrontend(); "]}
|
|
1
|
+
{"version":3,"file":"errors-builder.frontend.services.js","sourceRoot":"","sources":["../../../../../src/core/errors/errors-builder.frontend.services.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ERROR_DEFINITIONS,\n ErrorCustomMessageReference,\n ErrorHandling_Strategy,\n ErrorType,\n WildoError_Backend,\n WildoError_Frontend,\n ResourceOperationRiskLevel, WebSocketSystemErrorCode, describeCaughtError } from '@wildo-ai/saas-models';\nimport type { ErrorInfo } from 'react';\nimport { ErrorManagementService } from './error-management.frontend.service';\n\n/**\n * Frontend Error Builder\n * Creates unified error configurations and WildoError_Frontend instances for client-side use\n */\nexport class ErrorBuilderFrontend {\n private organizationId?: string;\n private userId?: string;\n\n constructor(context?: {\n organizationId?: string;\n userId?: string;\n }) {\n this.organizationId = context?.organizationId;\n this.userId = context?.userId;\n }\n\n updateOrganizationId(organizationId: string | undefined): void {\n this.organizationId = organizationId;\n }\n\n updateUserId(userId: string | undefined): void {\n this.userId = userId;\n }\n \n \n\n buildWildoError_Frontend(\n errorType: ErrorType,\n options: {\n customMessageReference?: ErrorCustomMessageReference,\n operationPathKey?: string,\n context?: Record<string, any>\n } = {}\n ): WildoError_Frontend {\n\n const errorDefinition = ERROR_DEFINITIONS[errorType];\n\n return {\n type: errorType,\n severity: errorDefinition.severity,\n customMessageReference: options.customMessageReference || errorDefinition.defaultCustomMessageReference,\n timestamp: new Date(),\n organizationId: this.organizationId ?? undefined,\n userId: this.userId ?? undefined,\n operationPathKey: options.operationPathKey ?? undefined,\n\n // Frontend actions and config\n frontendActions: errorDefinition.frontendActions || [],\n redirectPolicy: errorDefinition.redirectPolicy,\n errorHandlingStrategy: errorDefinition.errorHandlingStrategy ?? ErrorHandling_Strategy.STOP,\n retryPolicy: errorDefinition.retryPolicy,\n maxRetries: errorDefinition.maxRetries,\n initialDelay: errorDefinition.initialDelay,\n baseDelay: errorDefinition.baseDelay,\n \n showToUser: errorDefinition.showToUser ?? true,\n context: options.context ?? undefined,\n };\n }\n\n\n buildFromBackendError(backendError: WildoError_Backend): WildoError_Frontend {\n // Type-safe access to backend error properties\n const errorType: ErrorType = (backendError as WildoError_Backend).type;\n const customMessageReference: ErrorCustomMessageReference = (backendError as WildoError_Backend).customMessageReference;\n const operationPathKey: string | undefined = (backendError as WildoError_Backend).operationPathKey;\n const context: Record<string, any> | undefined = (backendError as WildoError_Backend).context;\n \n return this.buildWildoError_Frontend(\n errorType,\n {\n customMessageReference: customMessageReference ?? undefined,\n operationPathKey: operationPathKey ?? undefined,\n context: context ?? undefined\n }\n );\n }\n\n /**\n * Build error from React component error\n * \n * @param error - The Error object from React\n * @param errorInfo - React.ErrorInfo with component stack\n * @param additionalContext - Optional additional context to merge\n * @returns WildoError_Frontend instance\n */\n buildReactError(\n error: Error,\n errorInfo: ErrorInfo,\n additionalContext?: Record<string, unknown>\n ): WildoError_Frontend {\n return this.buildWildoError_Frontend(\n ErrorType.UNCAUGHT_EXCEPTION,\n {\n context: {\n componentStack: errorInfo.componentStack,\n errorStack: error.stack,\n errorName: error.name,\n errorMessage: error.message,\n timestamp: new Date().toISOString(),\n ...(additionalContext || {}),\n },\n }\n );\n }\n\n /**\n * Build error from router error\n * \n * @param error - The error from router (can be RouteErrorResponse, Error, or any)\n * @param status - Optional HTTP status code (for RouteErrorResponse)\n * @param additionalContext - Optional additional context to merge\n * @returns WildoError_Frontend instance\n */\n buildRouterError(\n error: any,\n status?: number,\n additionalContext?: Record<string, unknown>\n ): WildoError_Frontend {\n let errorType = ErrorType.UNKNOWN;\n\n // If status code provided, use centralized HTTP error behavior\n if (status !== undefined) {\n const behavior = ErrorManagementService.getHttpErrorBehavior(status, ResourceOperationRiskLevel.MEDIUM);\n errorType = behavior.errorType;\n } else if (error instanceof Error) {\n errorType = ErrorType.UNCAUGHT_EXCEPTION;\n }\n\n // Build context based on error type\n const context: Record<string, unknown> = {\n pathname: window.location.pathname,\n timestamp: new Date().toISOString(),\n ...(additionalContext || {}),\n };\n\n // Handle RouteErrorResponse format\n if (status !== undefined && error?.statusText) {\n context.status = status;\n context.statusText = error.statusText;\n if (error.data) {\n context.data = error.data;\n }\n }\n\n // Handle Error instance\n if (error instanceof Error) {\n context.errorName = error.name;\n context.errorStack = error.stack;\n context.errorMessage = error.message;\n } else if (error !== null && typeof error === 'object') {\n // Handle other object types\n context.error = String(error);\n }\n\n return this.buildWildoError_Frontend(errorType, {\n context,\n });\n }\n\n /**\n * Build error from WebSocket error\n * \n * @param error - The error from WebSocket connection\n * @param additionalContext - Optional additional context to merge\n * @returns WildoError_Frontend instance\n */\n buildWebSocketError(\n error: any,\n additionalContext?: Record<string, unknown>\n ): WildoError_Frontend {\n const errorType = additionalContext?.errorCode === WebSocketSystemErrorCode.RATE_LIMIT_EXCEEDED\n ? ErrorType.RATE_LIMIT\n : ErrorType.NETWORK;\n\n return this.buildWildoError_Frontend(\n errorType,\n {\n context: {\n source: 'websocket',\n errorMessage: describeCaughtError(error),\n ...(additionalContext || {}),\n },\n }\n );\n }\n\n /**\n * Build error from promise rejection\n * \n * @param error - The error from rejected promise\n * @param additionalContext - Optional additional context to merge\n * @returns WildoError_Frontend instance\n */\n buildPromiseError(\n error: any,\n additionalContext?: Record<string, unknown>\n ): WildoError_Frontend {\n return this.buildWildoError_Frontend(\n ErrorType.UNCAUGHT_EXCEPTION,\n {\n context: {\n source: 'promise',\n errorMessage: describeCaughtError(error),\n errorStack: error instanceof Error ? error.stack : undefined,\n ...(additionalContext || {}),\n },\n }\n );\n }\n\n}\n\n/**\n * Shared singleton instance of ErrorBuilderFrontend\n * \n * This instance is used across all error handling services to ensure:\n * - Consistent user context (userId, organizationId) across all errors\n * - Single source of truth for error building\n * - Automatic context propagation to ErrorBoundary and RouterErrorBoundary errors\n * \n * User context is managed by ErrorContext, which listens to USER_LOGIN / USER_LOGOUT (the person\n * arriving and leaving) and PRIMARY_SCOPE_CHANGED (organization changes) and updates this shared instance.\n */\nexport const sharedErrorBuilder = new ErrorBuilderFrontend(); "]}
|
|
@@ -198,7 +198,7 @@ function resolveLocalizedGuidanceText(facts, translators) {
|
|
|
198
198
|
if (!guidance || !guidanceKey)
|
|
199
199
|
return undefined;
|
|
200
200
|
for (const field of GUIDANCE_DISPLAY_FIELDS) {
|
|
201
|
-
const localized = translators.tErrorGuidance(guidanceKey, field);
|
|
201
|
+
const localized = translators.tErrorGuidance(guidanceKey, field, guidance.params);
|
|
202
202
|
if (localized)
|
|
203
203
|
return localized;
|
|
204
204
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-facing-error-message.frontend.utils.js","sourceRoot":"","sources":["../../../../../src/core/errors/user-facing-error-message.frontend.utils.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * User-facing error message resolution — the ONE place a caught error becomes words a person reads.\n *\n * ## The policy this implements\n *\n * The text shown for an error comes from the i18n tree, never from the error object:\n *\n * - a backend error's `message` IS its `customMessageReference` (`\"validation\"`), which is an i18n\n * KEY, not a sentence — the HTTP client copies it onto the thrown error, so `e.message` renders a\n * key to the person;\n * - `details.message` / `context.message` / `context.originalMessage` are server-authored English\n * meant for developers and logs — untranslatable, and frequently a Zod issue\n * (`Invalid option: expected one of …`);\n * - a plain `Error` thrown in the browser (a WebAuthn `DOMException`, an invariant message) is\n * developer text as well.\n *\n * None of those may reach a person. What may is, in order:\n *\n * **Translated text always beats untranslated text** (decided 2026-09-15). In order:\n *\n * 1. **Localized user guidance** — `errors_guidance.{guidanceKey ?? ref}.explanation`, then `.resolution`.\n * 2. **The reference label** — `errors_messages.{ref}.msg` — unless the reference is only the GENERIC\n * bucket of its error type AND that bucket's wording is {@link GenericErrorWording.SURFACE} AND the\n * surface supplied its own words. See {@link GENERIC_ERROR_WORDING_BY_ERROR_TYPE}.\n * 3. **The surface's own words** — the label of the screen that failed (\"Passkey sign-in failed. Try\n * again.\"), passed by the caller.\n * 4. **The framework's default label** — `errors_messages.default.msg`.\n * 5. **Raw user guidance** — the backend's `userGuidance.explanation` / `.resolution` string. It is the\n * field DESIGNED for display (see `buildErrorWithGuidance`), so it is kept, but it is untranslated:\n * it appears only when no authored label of any kind exists.\n * 6. **The default label's KEY PATH.** A missing label must LOOK missing so somebody adds it\n * (`.claude/rules/display-text-comes-from-i18n.md`); an empty string would hide the failure entirely,\n * because every error surface renders only a truthy message.\n *\n * ## Why a generic reference can lose to the surface\n *\n * A generic bucket (`validation`, `internal`, `authentication`, …) is the reference an error carries\n * when the server named NO specific reason. Its label was written without knowing where it would be\n * shown, so for some buckets it misleads: a passkey button the person typed nothing into would read\n * *\"Some information is invalid. Please review it.\"* The surface knows what failed; the bucket does\n * not. For other buckets the generic label tells the person something the surface cannot know and\n * can act on — *\"Check your connection\"*, *\"Please wait a moment\"* — and it wins. That split is a\n * property of the error-type vocabulary, so it lives in one total record over {@link ErrorType}.\n *\n * Measured 2026-09-15: a passkey sign-in answered `400 validation`, and the sign-in screen rendered\n * the literal word `validation` in its alert, in every locale.\n */\n\nimport {\n ERROR_DEFINITIONS,\n ErrorCustomMessageReference,\n ErrorType,\n type ErrorUserGuidance,\n} from '@wildo-ai/saas-models';\nimport { LabellingTypes } from '@wildo-ai/presets-components-models';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Generic-bucket wording\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Whose words a person sees when an error carries only the GENERIC reference of its type.\n *\n * Only consulted when the caller supplied surface words; with none, the reference label is used\n * whatever the classification, because there is nothing more precise to say.\n */\nexport enum GenericErrorWording {\n /**\n * The surface's own words win. For buckets whose generic label only says \"it failed\", or points the\n * person at something the surface may not have asked them for (their input, signing in again, a\n * missing item). The surface that failed says it more precisely.\n */\n SURFACE = 'SURFACE',\n /**\n * The generic reference label wins. For buckets whose label carries a fact the surface cannot know\n * and the person can act on: connectivity, permission, a state conflict, throttling, an unavailable\n * dependency, a plan limit.\n */\n REFERENCE = 'REFERENCE',\n}\n\n/**\n * The wording decision for every {@link ErrorType}'s generic bucket.\n *\n * TOTAL over the enum on purpose: a new error type is a compile error here until someone decides what\n * its generic bucket should say to a person, instead of silently inheriting a default.\n */\nexport const GENERIC_ERROR_WORDING_BY_ERROR_TYPE: Readonly<Record<ErrorType, GenericErrorWording>> = {\n [ErrorType.NETWORK]: GenericErrorWording.REFERENCE,\n [ErrorType.AUTHENTICATION]: GenericErrorWording.SURFACE,\n [ErrorType.AUTHORIZATION]: GenericErrorWording.REFERENCE,\n [ErrorType.VALIDATION]: GenericErrorWording.SURFACE,\n [ErrorType.PAYLOAD_TOO_LARGE]: GenericErrorWording.REFERENCE,\n [ErrorType.NOT_FOUND]: GenericErrorWording.SURFACE,\n [ErrorType.CONFLICT]: GenericErrorWording.REFERENCE,\n [ErrorType.RATE_LIMIT]: GenericErrorWording.REFERENCE,\n [ErrorType.INTERNAL]: GenericErrorWording.SURFACE,\n [ErrorType.DATABASE]: GenericErrorWording.SURFACE,\n [ErrorType.EXTERNAL_SERVICE]: GenericErrorWording.REFERENCE,\n [ErrorType.UNKNOWN]: GenericErrorWording.SURFACE,\n [ErrorType.UNCAUGHT_EXCEPTION]: GenericErrorWording.SURFACE,\n [ErrorType.UNHANDLED_REJECTION]: GenericErrorWording.SURFACE,\n [ErrorType.BUSINESS_RULE]: GenericErrorWording.SURFACE,\n [ErrorType.INFRASTRUCTURE]: GenericErrorWording.SURFACE,\n [ErrorType.CONFIGURATION]: GenericErrorWording.SURFACE,\n [ErrorType.FEATURE_NOT_AVAILABLE]: GenericErrorWording.REFERENCE,\n [ErrorType.FEATURE_LIMIT_EXCEEDED]: GenericErrorWording.REFERENCE,\n [ErrorType.INSUFFICIENT_CREDITS]: GenericErrorWording.REFERENCE,\n};\n\n/**\n * Generic reference → the error types whose default it is. Derived from `ERROR_DEFINITIONS`, so a\n * reference is \"generic\" exactly when some error type falls back to it — no second list to keep.\n */\nconst GENERIC_REFERENCE_OWNERS: ReadonlyMap<string, readonly ErrorType[]> = (() => {\n const owners = new Map<string, ErrorType[]>();\n for (const definition of Object.values(ERROR_DEFINITIONS)) {\n const reference = definition.defaultCustomMessageReference;\n owners.set(reference, [...(owners.get(reference) ?? []), definition.type]);\n }\n return owners;\n})();\n\nconst ERROR_TYPE_VALUES: ReadonlySet<string> = new Set(Object.values(ErrorType));\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Translators\n// ─────────────────────────────────────────────────────────────────────────────\n\n/** The two i18n resolvers error display needs — the matching members of `I18nContextType`. */\nexport interface ErrorMessageTranslators {\n /** Resolves `errors_messages.{ref}.{key}`; returns the key path when the label is missing. */\n tErrorMessage: (errorRef: string, key?: string, params?: Record<string, string | number>) => string;\n /** Resolves `errors_guidance.{guidanceKey}.{field}`; returns `''` when the label is missing. */\n tErrorGuidance: (guidanceKey: string, field: string, params?: Record<string, string | number>) => string;\n}\n\n/**\n * The localized `errors_messages.{ref}.msg` label, or `undefined` when none is authored.\n *\n * `tErrorMessage` fails OPEN — a missing label comes back as its own key path — so every caller that\n * must not show a key needs this guard. It used to be hand-copied at each such caller.\n */\nexport function resolveErrorReferenceLabel(\n tErrorMessage: ErrorMessageTranslators['tErrorMessage'],\n errorRef: string | undefined,\n): string | undefined {\n if (!errorRef) return undefined;\n const resolved = tErrorMessage(errorRef);\n if (!resolved || resolved.endsWith(`.${errorRef}.msg`)) return undefined;\n return resolved;\n}\n\n/**\n * Words for a DECLARED REFUSAL CODE — the machine code a custom implementation returns in the error's\n * `details.code` (#1048), e.g. `SECRET_SLUG_NOT_DECLARED`.\n *\n * Tried in order, first answer wins:\n * 1. the code as an `ErrorCustomMessageReference` value — some declared codes ARE vocabulary members,\n * and their words live in `errors_messages`;\n * 2. `errors_refusals.<code>.msg`, which the labelling planner derives from every\n * `errorScenarios[].errorCode` a resource specification declares, with its `when` text as context.\n *\n * `undefined` when neither is authored, so the caller falls through to the error's generic REFERENCE\n * label. That fallback is itself authored, less specific text — never an invented sentence — and the\n * server's own `details.message` is never shown: it is English prose (RFC 9457 §3.1.4 says consumers\n * SHOULD NOT parse `detail`; the machine-readable member is what a client reads).\n *\n * spec-cite: RFC 9457 §3.1.4 — https://www.rfc-editor.org/rfc/rfc9457#section-3.1.4\n */\nexport function resolveRefusalCodeLabel(\n translators: { tErrorMessage: ErrorMessageTranslators['tErrorMessage']; t: (key: string) => string },\n code: string | undefined,\n): string | undefined {\n if (!code) return undefined;\n const asReference = resolveErrorReferenceLabel(translators.tErrorMessage, code);\n if (asReference) return asReference;\n const key = `${LabellingTypes.ERRORS_REFUSALS}.${code}.msg`;\n const resolved = translators.t(key);\n return resolved && resolved !== key ? resolved : undefined;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Reading an error\n// ─────────────────────────────────────────────────────────────────────────────\n\n/** The only facts about an error that display is allowed to read. Deliberately has no `message`. */\nexport interface DisplayableErrorFacts {\n errorType?: ErrorType;\n customMessageReference?: string;\n userGuidance?: ErrorUserGuidance;\n}\n\nfunction asRecord(value: unknown): Record<string, unknown> | undefined {\n return value !== null && typeof value === 'object' ? (value as Record<string, unknown>) : undefined;\n}\n\nfunction nonEmptyString(value: unknown): string | undefined {\n return typeof value === 'string' && value.trim().length > 0 ? value : undefined;\n}\n\n/**\n * Read the displayable facts from whatever a `catch` received.\n *\n * Three shapes reach a catch in this frontend, and the facts sit at different depths in each:\n * - the HTTP client's rejected axios error, carrying the normalized `wildoError` it attached, plus\n * `customMessageReference` / `errorType` copied flat, plus the raw `response.data.error` envelope;\n * - a `WildoError_Frontend` / `WildoError_Backend` itself (`type`, `customMessageReference`);\n * - anything else — a plain `Error`, a `DOMException`, a string — which has no displayable facts.\n */\nexport function readDisplayableErrorFacts(error: unknown): DisplayableErrorFacts {\n const candidate = asRecord(error);\n if (!candidate) return {};\n\n const attached = asRecord(candidate.wildoError);\n const envelope = asRecord(asRecord(asRecord(candidate.response)?.data)?.error);\n\n // Each candidate is validated BEFORE one is chosen: a `type` that is not an ErrorType (a DOM event's\n // `'click'`) must not shadow a valid `errorType` further down the list.\n const errorType = [attached?.type, candidate.type, candidate.errorType, envelope?.type]\n .find((value): value is ErrorType => typeof value === 'string' && ERROR_TYPE_VALUES.has(value));\n\n // The envelope names its reference `code` first, exactly as `ErrorManagementService.extractErrorDetails`\n // reads it — needed when no `wildoError` was attached (a rejection raised before `handleHttpError`).\n const customMessageReference = nonEmptyString(attached?.customMessageReference)\n ?? nonEmptyString(candidate.customMessageReference)\n ?? nonEmptyString(envelope?.code)\n ?? nonEmptyString(envelope?.customMessageReference);\n\n const userGuidance = (asRecord(attached?.userGuidance) ?? asRecord(candidate.userGuidance) ?? asRecord(envelope?.userGuidance)) as\n | ErrorUserGuidance\n | undefined;\n\n return { errorType, customMessageReference, userGuidance };\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Resolution\n// ─────────────────────────────────────────────────────────────────────────────\n\nconst GUIDANCE_DISPLAY_FIELDS = ['explanation', 'resolution'] as const;\n\n/** Guidance resolved through `errors_guidance` — translated, so it outranks every other source. */\nfunction resolveLocalizedGuidanceText(facts: DisplayableErrorFacts, translators: ErrorMessageTranslators): string | undefined {\n const guidance = facts.userGuidance;\n const guidanceKey = guidance?.guidanceKey ?? facts.customMessageReference;\n if (!guidance || !guidanceKey) return undefined;\n for (const field of GUIDANCE_DISPLAY_FIELDS) {\n const localized = translators.tErrorGuidance(guidanceKey, field);\n if (localized) return localized;\n }\n return undefined;\n}\n\n/** The backend's raw guidance string — untranslated, so it yields to every authored label. */\nfunction resolveRawGuidanceText(facts: DisplayableErrorFacts): string | undefined {\n const guidance = facts.userGuidance;\n if (!guidance) return undefined;\n for (const field of GUIDANCE_DISPLAY_FIELDS) {\n const raw = nonEmptyString(guidance[field]);\n if (raw) return raw;\n }\n return undefined;\n}\n\n/** The error type whose generic bucket `ref` is, preferring the error's own type when it is an owner. */\nfunction genericReferenceOwner(ref: string | undefined, errorType: ErrorType | undefined): ErrorType | undefined {\n if (!ref) return undefined;\n const owners = GENERIC_REFERENCE_OWNERS.get(ref);\n if (!owners || owners.length === 0) return undefined;\n return errorType && owners.includes(errorType) ? errorType : owners[0];\n}\n\nexport interface ResolveUserFacingErrorMessageOptions {\n translators: ErrorMessageTranslators;\n /**\n * The failing surface's own words, already localized — e.g. `t(UserAuthLabel.PASSKEY_ERROR)`. Omit it\n * when there is no surface to speak for (the global error toast): generic buckets then use their\n * reference label.\n */\n surfaceMessage?: string;\n}\n\n/**\n * Turn a caught error into the message a person reads. See the file header for the order and why.\n * Never returns the error's `message`, its `details`/`context` text, or a raw reference.\n */\nexport function resolveUserFacingErrorMessage(error: unknown, options: ResolveUserFacingErrorMessageOptions): string {\n const { translators } = options;\n const facts = readDisplayableErrorFacts(error);\n\n const localizedGuidance = resolveLocalizedGuidanceText(facts, translators);\n if (localizedGuidance) return localizedGuidance;\n\n const surfaceWords = nonEmptyString(options.surfaceMessage);\n const referenceLabel = resolveErrorReferenceLabel(translators.tErrorMessage, facts.customMessageReference);\n\n if (referenceLabel) {\n const owner = genericReferenceOwner(facts.customMessageReference, facts.errorType);\n const surfaceSpeaksMorePrecisely = owner !== undefined\n && GENERIC_ERROR_WORDING_BY_ERROR_TYPE[owner] === GenericErrorWording.SURFACE\n && surfaceWords !== undefined;\n if (!surfaceSpeaksMorePrecisely) return referenceLabel;\n }\n\n if (surfaceWords) return surfaceWords;\n\n // Translated beats untranslated: the authored default label outranks the backend's raw guidance, which in\n // turn outranks the default's key path. Never '' and never the error's own text.\n return resolveErrorReferenceLabel(translators.tErrorMessage, ErrorCustomMessageReference.DEFAULT)\n ?? resolveRawGuidanceText(facts)\n ?? translators.tErrorMessage(ErrorCustomMessageReference.DEFAULT);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"user-facing-error-message.frontend.utils.js","sourceRoot":"","sources":["../../../../../src/core/errors/user-facing-error-message.frontend.utils.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * User-facing error message resolution — the ONE place a caught error becomes words a person reads.\n *\n * ## The policy this implements\n *\n * The text shown for an error comes from the i18n tree, never from the error object:\n *\n * - a backend error's `message` IS its `customMessageReference` (`\"validation\"`), which is an i18n\n * KEY, not a sentence — the HTTP client copies it onto the thrown error, so `e.message` renders a\n * key to the person;\n * - `details.message` / `context.message` / `context.originalMessage` are server-authored English\n * meant for developers and logs — untranslatable, and frequently a Zod issue\n * (`Invalid option: expected one of …`);\n * - a plain `Error` thrown in the browser (a WebAuthn `DOMException`, an invariant message) is\n * developer text as well.\n *\n * None of those may reach a person. What may is, in order:\n *\n * **Translated text always beats untranslated text** (decided 2026-09-15). In order:\n *\n * 1. **Localized user guidance** — `errors_guidance.{guidanceKey ?? ref}.explanation`, then `.resolution`.\n * 2. **The reference label** — `errors_messages.{ref}.msg` — unless the reference is only the GENERIC\n * bucket of its error type AND that bucket's wording is {@link GenericErrorWording.SURFACE} AND the\n * surface supplied its own words. See {@link GENERIC_ERROR_WORDING_BY_ERROR_TYPE}.\n * 3. **The surface's own words** — the label of the screen that failed (\"Passkey sign-in failed. Try\n * again.\"), passed by the caller.\n * 4. **The framework's default label** — `errors_messages.default.msg`.\n * 5. **Raw user guidance** — the backend's `userGuidance.explanation` / `.resolution` string. It is the\n * field DESIGNED for display (see `buildErrorWithGuidance`), so it is kept, but it is untranslated:\n * it appears only when no authored label of any kind exists.\n * 6. **The default label's KEY PATH.** A missing label must LOOK missing so somebody adds it\n * (`.claude/rules/display-text-comes-from-i18n.md`); an empty string would hide the failure entirely,\n * because every error surface renders only a truthy message.\n *\n * ## Why a generic reference can lose to the surface\n *\n * A generic bucket (`validation`, `internal`, `authentication`, …) is the reference an error carries\n * when the server named NO specific reason. Its label was written without knowing where it would be\n * shown, so for some buckets it misleads: a passkey button the person typed nothing into would read\n * *\"Some information is invalid. Please review it.\"* The surface knows what failed; the bucket does\n * not. For other buckets the generic label tells the person something the surface cannot know and\n * can act on — *\"Check your connection\"*, *\"Please wait a moment\"* — and it wins. That split is a\n * property of the error-type vocabulary, so it lives in one total record over {@link ErrorType}.\n *\n * Measured 2026-09-15: a passkey sign-in answered `400 validation`, and the sign-in screen rendered\n * the literal word `validation` in its alert, in every locale.\n */\n\nimport {\n ERROR_DEFINITIONS,\n ErrorCustomMessageReference,\n ErrorType,\n type ErrorUserGuidance,\n} from '@wildo-ai/saas-models';\nimport { LabellingTypes } from '@wildo-ai/presets-components-models';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Generic-bucket wording\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Whose words a person sees when an error carries only the GENERIC reference of its type.\n *\n * Only consulted when the caller supplied surface words; with none, the reference label is used\n * whatever the classification, because there is nothing more precise to say.\n */\nexport enum GenericErrorWording {\n /**\n * The surface's own words win. For buckets whose generic label only says \"it failed\", or points the\n * person at something the surface may not have asked them for (their input, signing in again, a\n * missing item). The surface that failed says it more precisely.\n */\n SURFACE = 'SURFACE',\n /**\n * The generic reference label wins. For buckets whose label carries a fact the surface cannot know\n * and the person can act on: connectivity, permission, a state conflict, throttling, an unavailable\n * dependency, a plan limit.\n */\n REFERENCE = 'REFERENCE',\n}\n\n/**\n * The wording decision for every {@link ErrorType}'s generic bucket.\n *\n * TOTAL over the enum on purpose: a new error type is a compile error here until someone decides what\n * its generic bucket should say to a person, instead of silently inheriting a default.\n */\nexport const GENERIC_ERROR_WORDING_BY_ERROR_TYPE: Readonly<Record<ErrorType, GenericErrorWording>> = {\n [ErrorType.NETWORK]: GenericErrorWording.REFERENCE,\n [ErrorType.AUTHENTICATION]: GenericErrorWording.SURFACE,\n [ErrorType.AUTHORIZATION]: GenericErrorWording.REFERENCE,\n [ErrorType.VALIDATION]: GenericErrorWording.SURFACE,\n [ErrorType.PAYLOAD_TOO_LARGE]: GenericErrorWording.REFERENCE,\n [ErrorType.NOT_FOUND]: GenericErrorWording.SURFACE,\n [ErrorType.CONFLICT]: GenericErrorWording.REFERENCE,\n [ErrorType.RATE_LIMIT]: GenericErrorWording.REFERENCE,\n [ErrorType.INTERNAL]: GenericErrorWording.SURFACE,\n [ErrorType.DATABASE]: GenericErrorWording.SURFACE,\n [ErrorType.EXTERNAL_SERVICE]: GenericErrorWording.REFERENCE,\n [ErrorType.UNKNOWN]: GenericErrorWording.SURFACE,\n [ErrorType.UNCAUGHT_EXCEPTION]: GenericErrorWording.SURFACE,\n [ErrorType.UNHANDLED_REJECTION]: GenericErrorWording.SURFACE,\n [ErrorType.BUSINESS_RULE]: GenericErrorWording.SURFACE,\n [ErrorType.INFRASTRUCTURE]: GenericErrorWording.SURFACE,\n [ErrorType.CONFIGURATION]: GenericErrorWording.SURFACE,\n [ErrorType.FEATURE_NOT_AVAILABLE]: GenericErrorWording.REFERENCE,\n [ErrorType.FEATURE_LIMIT_EXCEEDED]: GenericErrorWording.REFERENCE,\n [ErrorType.INSUFFICIENT_CREDITS]: GenericErrorWording.REFERENCE,\n};\n\n/**\n * Generic reference → the error types whose default it is. Derived from `ERROR_DEFINITIONS`, so a\n * reference is \"generic\" exactly when some error type falls back to it — no second list to keep.\n */\nconst GENERIC_REFERENCE_OWNERS: ReadonlyMap<string, readonly ErrorType[]> = (() => {\n const owners = new Map<string, ErrorType[]>();\n for (const definition of Object.values(ERROR_DEFINITIONS)) {\n const reference = definition.defaultCustomMessageReference;\n owners.set(reference, [...(owners.get(reference) ?? []), definition.type]);\n }\n return owners;\n})();\n\nconst ERROR_TYPE_VALUES: ReadonlySet<string> = new Set(Object.values(ErrorType));\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Translators\n// ─────────────────────────────────────────────────────────────────────────────\n\n/** The two i18n resolvers error display needs — the matching members of `I18nContextType`. */\nexport interface ErrorMessageTranslators {\n /** Resolves `errors_messages.{ref}.{key}`; returns the key path when the label is missing. */\n tErrorMessage: (errorRef: string, key?: string, params?: Record<string, string | number>) => string;\n /** Resolves `errors_guidance.{guidanceKey}.{field}`; returns `''` when the label is missing. */\n tErrorGuidance: (guidanceKey: string, field: string, params?: Record<string, string | number>) => string;\n}\n\n/**\n * The localized `errors_messages.{ref}.msg` label, or `undefined` when none is authored.\n *\n * `tErrorMessage` fails OPEN — a missing label comes back as its own key path — so every caller that\n * must not show a key needs this guard. It used to be hand-copied at each such caller.\n */\nexport function resolveErrorReferenceLabel(\n tErrorMessage: ErrorMessageTranslators['tErrorMessage'],\n errorRef: string | undefined,\n): string | undefined {\n if (!errorRef) return undefined;\n const resolved = tErrorMessage(errorRef);\n if (!resolved || resolved.endsWith(`.${errorRef}.msg`)) return undefined;\n return resolved;\n}\n\n/**\n * Words for a DECLARED REFUSAL CODE — the machine code a custom implementation returns in the error's\n * `details.code` (#1048), e.g. `SECRET_SLUG_NOT_DECLARED`.\n *\n * Tried in order, first answer wins:\n * 1. the code as an `ErrorCustomMessageReference` value — some declared codes ARE vocabulary members,\n * and their words live in `errors_messages`;\n * 2. `errors_refusals.<code>.msg`, which the labelling planner derives from every\n * `errorScenarios[].errorCode` a resource specification declares, with its `when` text as context.\n *\n * `undefined` when neither is authored, so the caller falls through to the error's generic REFERENCE\n * label. That fallback is itself authored, less specific text — never an invented sentence — and the\n * server's own `details.message` is never shown: it is English prose (RFC 9457 §3.1.4 says consumers\n * SHOULD NOT parse `detail`; the machine-readable member is what a client reads).\n *\n * spec-cite: RFC 9457 §3.1.4 — https://www.rfc-editor.org/rfc/rfc9457#section-3.1.4\n */\nexport function resolveRefusalCodeLabel(\n translators: { tErrorMessage: ErrorMessageTranslators['tErrorMessage']; t: (key: string) => string },\n code: string | undefined,\n): string | undefined {\n if (!code) return undefined;\n const asReference = resolveErrorReferenceLabel(translators.tErrorMessage, code);\n if (asReference) return asReference;\n const key = `${LabellingTypes.ERRORS_REFUSALS}.${code}.msg`;\n const resolved = translators.t(key);\n return resolved && resolved !== key ? resolved : undefined;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Reading an error\n// ─────────────────────────────────────────────────────────────────────────────\n\n/** The only facts about an error that display is allowed to read. Deliberately has no `message`. */\nexport interface DisplayableErrorFacts {\n errorType?: ErrorType;\n customMessageReference?: string;\n userGuidance?: ErrorUserGuidance;\n}\n\nfunction asRecord(value: unknown): Record<string, unknown> | undefined {\n return value !== null && typeof value === 'object' ? (value as Record<string, unknown>) : undefined;\n}\n\nfunction nonEmptyString(value: unknown): string | undefined {\n return typeof value === 'string' && value.trim().length > 0 ? value : undefined;\n}\n\n/**\n * Read the displayable facts from whatever a `catch` received.\n *\n * Three shapes reach a catch in this frontend, and the facts sit at different depths in each:\n * - the HTTP client's rejected axios error, carrying the normalized `wildoError` it attached, plus\n * `customMessageReference` / `errorType` copied flat, plus the raw `response.data.error` envelope;\n * - a `WildoError_Frontend` / `WildoError_Backend` itself (`type`, `customMessageReference`);\n * - anything else — a plain `Error`, a `DOMException`, a string — which has no displayable facts.\n */\nexport function readDisplayableErrorFacts(error: unknown): DisplayableErrorFacts {\n const candidate = asRecord(error);\n if (!candidate) return {};\n\n const attached = asRecord(candidate.wildoError);\n const envelope = asRecord(asRecord(asRecord(candidate.response)?.data)?.error);\n\n // Each candidate is validated BEFORE one is chosen: a `type` that is not an ErrorType (a DOM event's\n // `'click'`) must not shadow a valid `errorType` further down the list.\n const errorType = [attached?.type, candidate.type, candidate.errorType, envelope?.type]\n .find((value): value is ErrorType => typeof value === 'string' && ERROR_TYPE_VALUES.has(value));\n\n // The envelope names its reference `code` first, exactly as `ErrorManagementService.extractErrorDetails`\n // reads it — needed when no `wildoError` was attached (a rejection raised before `handleHttpError`).\n const customMessageReference = nonEmptyString(attached?.customMessageReference)\n ?? nonEmptyString(candidate.customMessageReference)\n ?? nonEmptyString(envelope?.code)\n ?? nonEmptyString(envelope?.customMessageReference);\n\n const userGuidance = (asRecord(attached?.userGuidance) ?? asRecord(candidate.userGuidance) ?? asRecord(envelope?.userGuidance)) as\n | ErrorUserGuidance\n | undefined;\n\n return { errorType, customMessageReference, userGuidance };\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Resolution\n// ─────────────────────────────────────────────────────────────────────────────\n\nconst GUIDANCE_DISPLAY_FIELDS = ['explanation', 'resolution'] as const;\n\n/** Guidance resolved through `errors_guidance` — translated, so it outranks every other source. */\nfunction resolveLocalizedGuidanceText(facts: DisplayableErrorFacts, translators: ErrorMessageTranslators): string | undefined {\n const guidance = facts.userGuidance;\n const guidanceKey = guidance?.guidanceKey ?? facts.customMessageReference;\n if (!guidance || !guidanceKey) return undefined;\n for (const field of GUIDANCE_DISPLAY_FIELDS) {\n const localized = translators.tErrorGuidance(guidanceKey, field, guidance.params);\n if (localized) return localized;\n }\n return undefined;\n}\n\n/** The backend's raw guidance string — untranslated, so it yields to every authored label. */\nfunction resolveRawGuidanceText(facts: DisplayableErrorFacts): string | undefined {\n const guidance = facts.userGuidance;\n if (!guidance) return undefined;\n for (const field of GUIDANCE_DISPLAY_FIELDS) {\n const raw = nonEmptyString(guidance[field]);\n if (raw) return raw;\n }\n return undefined;\n}\n\n/** The error type whose generic bucket `ref` is, preferring the error's own type when it is an owner. */\nfunction genericReferenceOwner(ref: string | undefined, errorType: ErrorType | undefined): ErrorType | undefined {\n if (!ref) return undefined;\n const owners = GENERIC_REFERENCE_OWNERS.get(ref);\n if (!owners || owners.length === 0) return undefined;\n return errorType && owners.includes(errorType) ? errorType : owners[0];\n}\n\nexport interface ResolveUserFacingErrorMessageOptions {\n translators: ErrorMessageTranslators;\n /**\n * The failing surface's own words, already localized — e.g. `t(UserAuthLabel.PASSKEY_ERROR)`. Omit it\n * when there is no surface to speak for (the global error toast): generic buckets then use their\n * reference label.\n */\n surfaceMessage?: string;\n}\n\n/**\n * Turn a caught error into the message a person reads. See the file header for the order and why.\n * Never returns the error's `message`, its `details`/`context` text, or a raw reference.\n */\nexport function resolveUserFacingErrorMessage(error: unknown, options: ResolveUserFacingErrorMessageOptions): string {\n const { translators } = options;\n const facts = readDisplayableErrorFacts(error);\n\n const localizedGuidance = resolveLocalizedGuidanceText(facts, translators);\n if (localizedGuidance) return localizedGuidance;\n\n const surfaceWords = nonEmptyString(options.surfaceMessage);\n const referenceLabel = resolveErrorReferenceLabel(translators.tErrorMessage, facts.customMessageReference);\n\n if (referenceLabel) {\n const owner = genericReferenceOwner(facts.customMessageReference, facts.errorType);\n const surfaceSpeaksMorePrecisely = owner !== undefined\n && GENERIC_ERROR_WORDING_BY_ERROR_TYPE[owner] === GenericErrorWording.SURFACE\n && surfaceWords !== undefined;\n if (!surfaceSpeaksMorePrecisely) return referenceLabel;\n }\n\n if (surfaceWords) return surfaceWords;\n\n // Translated beats untranslated: the authored default label outranks the backend's raw guidance, which in\n // turn outranks the default's key path. Never '' and never the error's own text.\n return resolveErrorReferenceLabel(translators.tErrorMessage, ErrorCustomMessageReference.DEFAULT)\n ?? resolveRawGuidanceText(facts)\n ?? translators.tErrorMessage(ErrorCustomMessageReference.DEFAULT);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NotificationContext.d.ts","sourceRoot":"","sources":["../../../../../src/core/events/NotificationContext.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"NotificationContext.d.ts","sourceRoot":"","sources":["../../../../../src/core/events/NotificationContext.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAuF,MAAM,OAAO,CAAC;AAQ5G,OAAO,EAAE,gCAAgC,EAAE,MAAM,+DAA+D,CAAC;AAEjH,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAA6D,MAAM,uBAAuB,CAAC;AAMzI,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAElB,aAAa,EAEd,MAAM,gDAAgD,CAAC;AAGxD,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,CAAC;AAUrD,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,iCAAiC;IACjC,eAAe,CAAC,EAAE,gCAAgC,CAAC;IACnD,iDAAiD;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,gEAAgE;IAChE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mEAAmE;IACnE,QAAQ,CAAC,EAAE;QACT,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,IAAI,CAAC;KACrB,CAAC;CACH;AAMD,MAAM,WAAW,gBAAgB;IAC/B,iDAAiD;IACjD,QAAQ,EAAE,OAAO,CAAC;IAClB,mCAAmC;IACnC,IAAI,CAAC,EAAE,oBAAoB,CAAC,aAAa,CAAC,CAAC;IAC3C,4DAA4D;IAC5D,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,QAAQ,CAAC,EAAE;QACT,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,IAAI,CAAC;KACrB,CAAC;CACH;AAuED,MAAM,WAAW,uBAAuB;IACtC;;;;;OAKG;IACH,aAAa,EAAE,YAAY,EAAE,CAAC;IAG9B,kBAAkB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,QAAQ,EAAE,MAAM,IAAI,CAAC;IAGrB,aAAa,EAAE,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;IAC/E,WAAW,EAAE,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;IAC7E,aAAa,EAAE,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;IAC/E,UAAU,EAAE,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;IAG5E,SAAS,EAAE,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAEhF;;;;;;OAMG;IACH,mBAAmB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/F,mFAAmF;IACnF,sBAAsB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAG7C,WAAW,EAAE,gBAAgB,CAAC;IAC9B,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAG/B,wBAAwB,EAAE,eAAe,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC;IAClE,2BAA2B,EAAE,MAAM,eAAe,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC;CAC5E;AAwBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,IAAI,CAI5G;AAED,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,OAAO,CAAC,uBAAuB,GAAG,SAAS,CAAiE,CAAC;AAMrJ,UAAU,yBAAyB;IACjC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAyBD,wBAAgB,oBAAoB,CAAC,EAAE,QAAQ,EAAE,EAAE,yBAAyB,GAAG,KAAK,CAAC,YAAY,CAu2BhG"}
|
|
@@ -140,7 +140,7 @@ export function NotificationProvider({ children }) {
|
|
|
140
140
|
const [celebration, setCelebration] = useState({ isActive: false });
|
|
141
141
|
const celebrationTimerRef = useRef(null);
|
|
142
142
|
// i18n hooks
|
|
143
|
-
const { tNotificationCustom, tResourceOperation, tComponent, tErrorMessage, tMilestone, tMilestoneReward, t, isReady } = useI18n({
|
|
143
|
+
const { tNotificationCustom, tResourceOperation, tComponent, tErrorMessage, tErrorGuidance, tMilestone, tMilestoneReward, t, isReady } = useI18n({
|
|
144
144
|
component: FrontendComponentType.APPLICATION_LEVEL_NOTIFICATION_CENTER,
|
|
145
145
|
// `milestones` because a milestone notification speaks with the milestone's OWN words — see
|
|
146
146
|
// `resolveMilestoneMessage`. Without it that root is never loaded here and every lookup misses.
|
|
@@ -153,6 +153,7 @@ export function NotificationProvider({ children }) {
|
|
|
153
153
|
const tResourceOperationRef = useRef(tResourceOperation);
|
|
154
154
|
const tComponentRef = useRef(tComponent);
|
|
155
155
|
const tErrorMessageRef = useRef(tErrorMessage);
|
|
156
|
+
const tErrorGuidanceRef = useRef(tErrorGuidance);
|
|
156
157
|
const tMilestoneRef = useRef(tMilestone);
|
|
157
158
|
const tMilestoneRewardRef = useRef(tMilestoneReward);
|
|
158
159
|
const tRef = useRef(t);
|
|
@@ -179,10 +180,11 @@ export function NotificationProvider({ children }) {
|
|
|
179
180
|
tResourceOperationRef.current = tResourceOperation;
|
|
180
181
|
tComponentRef.current = tComponent;
|
|
181
182
|
tErrorMessageRef.current = tErrorMessage;
|
|
183
|
+
tErrorGuidanceRef.current = tErrorGuidance;
|
|
182
184
|
tMilestoneRef.current = tMilestone;
|
|
183
185
|
tMilestoneRewardRef.current = tMilestoneReward;
|
|
184
186
|
tRef.current = t;
|
|
185
|
-
}, [tNotificationCustom, tResourceOperation, tComponent, tErrorMessage, tMilestone, tMilestoneReward, t]);
|
|
187
|
+
}, [tNotificationCustom, tResourceOperation, tComponent, tErrorMessage, tErrorGuidance, tMilestone, tMilestoneReward, t]);
|
|
186
188
|
// ================================
|
|
187
189
|
// Toast Display
|
|
188
190
|
// ================================
|
|
@@ -341,9 +343,27 @@ export function NotificationProvider({ children }) {
|
|
|
341
343
|
*/
|
|
342
344
|
const payload = options.data;
|
|
343
345
|
const carriedErrorRef = (payload?.errorCustomMessageReference ?? payload?.customMessageReference);
|
|
346
|
+
const carriedGuidanceKey = typeof payload?.errorGuidanceKey === 'string' ? payload.errorGuidanceKey : undefined;
|
|
344
347
|
const carriesError = (type === 'error' || type === 'warning')
|
|
345
|
-
&& (typeof carriedErrorRef === 'string' || typeof payload?.errorRefusalCode === 'string');
|
|
348
|
+
&& (typeof carriedErrorRef === 'string' || typeof payload?.errorRefusalCode === 'string' || carriedGuidanceKey !== undefined);
|
|
346
349
|
if (carriesError) {
|
|
350
|
+
/*
|
|
351
|
+
* The server's GUIDANCE first: it is the most specific thing a refusal says, and it is a label
|
|
352
|
+
* (`errors_guidance.<key>.explanation`, interpolated with the params it carried). Without it a form
|
|
353
|
+
* showed "refused as invalid" while the server had said exactly why.
|
|
354
|
+
*
|
|
355
|
+
* Only the EXPLANATION: a toast is one sentence, and `resolution` (what to do next) belongs on a
|
|
356
|
+
* surface with room for it. Nor the guidance's raw prose, which the payload never carries. That is
|
|
357
|
+
* narrower than `resolveUserFacingErrorMessage`, which also falls back to both.
|
|
358
|
+
*/
|
|
359
|
+
if (carriedGuidanceKey) {
|
|
360
|
+
const params = payload?.errorGuidanceParams && typeof payload.errorGuidanceParams === 'object'
|
|
361
|
+
? payload.errorGuidanceParams
|
|
362
|
+
: undefined;
|
|
363
|
+
const guidance = tErrorGuidanceRef.current(carriedGuidanceKey, 'explanation', params);
|
|
364
|
+
if (guidance)
|
|
365
|
+
return guidance;
|
|
366
|
+
}
|
|
347
367
|
const refusal = resolveRefusalCodeLabel({ tErrorMessage: tErrorMessageRef.current, t: tRef.current }, typeof payload?.errorRefusalCode === 'string' ? payload.errorRefusalCode : undefined);
|
|
348
368
|
if (refusal)
|
|
349
369
|
return refusal;
|
|
@@ -685,8 +705,6 @@ export function NotificationProvider({ children }) {
|
|
|
685
705
|
setNotificationsPreferences(payload.notificationsPreferences);
|
|
686
706
|
logDebug('Notification preferences updated from UserOrgsContext event', {
|
|
687
707
|
email: payload.notificationsPreferences.email,
|
|
688
|
-
push: payload.notificationsPreferences.push,
|
|
689
|
-
sms: payload.notificationsPreferences.sms,
|
|
690
708
|
inApp: payload.notificationsPreferences.inApp,
|
|
691
709
|
});
|
|
692
710
|
}
|