@wildo-ai/saas-frontend-lib 1.1.2 → 1.1.3
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/browser-bootstrap/theme-bootstrap.d.ts.map +1 -1
- package/dist/esm/browser-bootstrap/theme-bootstrap.js.map +1 -1
- package/dist/esm/browser-bootstrap.exports.d.ts.map +1 -1
- package/dist/esm/browser-bootstrap.exports.js.map +1 -1
- package/dist/esm/companion-exports.d.ts.map +1 -1
- package/dist/esm/companion-exports.js.map +1 -1
- package/dist/esm/companion-runtime-exports.d.ts.map +1 -1
- package/dist/esm/companion-runtime-exports.js.map +1 -1
- package/dist/esm/components/actions/action-bar.d.ts.map +1 -1
- package/dist/esm/components/actions/action-bar.js.map +1 -1
- package/dist/esm/components/actions/action-button.d.ts.map +1 -1
- package/dist/esm/components/actions/action-button.js.map +1 -1
- package/dist/esm/components/actions/button-group.d.ts.map +1 -1
- package/dist/esm/components/actions/button-group.js.map +1 -1
- package/dist/esm/components/actions/button.d.ts.map +1 -1
- package/dist/esm/components/actions/button.js.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/artifact-browser.types.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/artifact-browser.types.js.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/artifact-list.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/artifact-list.js.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/artifact.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/artifact.js.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/code-block.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/code-block.js.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/image.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/image.js.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/web-preview.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/web-preview.js.map +1 -1
- package/dist/esm/components/ai-elements/chat/conversation.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/chat/conversation.js.map +1 -1
- package/dist/esm/components/ai-elements/chat/message.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/chat/message.js.map +1 -1
- package/dist/esm/components/ai-elements/chat/prompt-input.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/chat/prompt-input.js.map +1 -1
- package/dist/esm/components/ai-elements/chat/sources.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/chat/sources.js.map +1 -1
- package/dist/esm/components/ai-elements/chat/suggestion.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/chat/suggestion.js.map +1 -1
- package/dist/esm/components/ai-elements/decision/approval.d.ts +15 -2
- 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/ai-elements/execution/confirmation.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/execution/confirmation.js.map +1 -1
- package/dist/esm/components/ai-elements/execution/queue.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/execution/queue.js.map +1 -1
- package/dist/esm/components/ai-elements/execution/task.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/execution/task.js.map +1 -1
- package/dist/esm/components/ai-elements/execution/tool.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/execution/tool.js.map +1 -1
- package/dist/esm/components/ai-elements/graph/canvas.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/canvas.js.map +1 -1
- package/dist/esm/components/ai-elements/graph/connection.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/connection.js.map +1 -1
- package/dist/esm/components/ai-elements/graph/controls.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/controls.js.map +1 -1
- package/dist/esm/components/ai-elements/graph/edge.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/edge.js.map +1 -1
- package/dist/esm/components/ai-elements/graph/node.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/node.js.map +1 -1
- package/dist/esm/components/ai-elements/graph/panel.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/panel.js.map +1 -1
- package/dist/esm/components/ai-elements/graph/toolbar.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/toolbar.js.map +1 -1
- package/dist/esm/components/ai-elements/meta/agent-wrappers.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/meta/agent-wrappers.js.map +1 -1
- package/dist/esm/components/ai-elements/meta/context.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/meta/context.js.map +1 -1
- package/dist/esm/components/ai-elements/meta/model-selector.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/meta/model-selector.js.map +1 -1
- package/dist/esm/components/ai-elements/meta/open-in-chat.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/meta/open-in-chat.js.map +1 -1
- package/dist/esm/components/ai-elements/shared/loader.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/shared/loader.js.map +1 -1
- package/dist/esm/components/ai-elements/shared/shimmer.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/shared/shimmer.js.map +1 -1
- package/dist/esm/components/ai-elements/stream/execution-stream.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/stream/execution-stream.js.map +1 -1
- package/dist/esm/components/ai-elements/trace/chain-of-thought.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/trace/chain-of-thought.js.map +1 -1
- package/dist/esm/components/ai-elements/trace/checkpoint.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/trace/checkpoint.js.map +1 -1
- package/dist/esm/components/ai-elements/trace/inline-citation.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/trace/inline-citation.js.map +1 -1
- package/dist/esm/components/ai-elements/trace/plan.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/trace/plan.js.map +1 -1
- package/dist/esm/components/ai-elements/trace/reasoning.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/trace/reasoning.js.map +1 -1
- package/dist/esm/components/app/AppLayout_AuthenticatedRoute.d.ts.map +1 -1
- package/dist/esm/components/app/AppLayout_AuthenticatedRoute.js.map +1 -1
- package/dist/esm/components/app/AppLayout_ErrorBoundary.d.ts.map +1 -1
- package/dist/esm/components/app/AppLayout_ErrorBoundary.js.map +1 -1
- package/dist/esm/components/app/AppLayout_ErrorBoundary.labels.d.ts.map +1 -1
- package/dist/esm/components/app/AppLayout_ErrorBoundary.labels.js.map +1 -1
- package/dist/esm/components/app/AppLayout_Home.d.ts.map +1 -1
- package/dist/esm/components/app/AppLayout_Home.js.map +1 -1
- package/dist/esm/components/app/AppLayout_Home.labels.d.ts.map +1 -1
- package/dist/esm/components/app/AppLayout_Home.labels.js.map +1 -1
- package/dist/esm/components/app/AppLayout_MainContainer.d.ts.map +1 -1
- package/dist/esm/components/app/AppLayout_MainContainer.js.map +1 -1
- package/dist/esm/components/app/AppLayout_NotificationCenter.d.ts.map +1 -1
- package/dist/esm/components/app/AppLayout_NotificationCenter.js +7 -2
- package/dist/esm/components/app/AppLayout_NotificationCenter.js.map +1 -1
- package/dist/esm/components/app/AppLayout_RouterErrorBoundary.d.ts.map +1 -1
- package/dist/esm/components/app/AppLayout_RouterErrorBoundary.js.map +1 -1
- package/dist/esm/components/app/AppLayout_RouterErrorBoundary.labels.d.ts.map +1 -1
- package/dist/esm/components/app/AppLayout_RouterErrorBoundary.labels.js.map +1 -1
- package/dist/esm/components/app/AppPage_Home.d.ts.map +1 -1
- package/dist/esm/components/app/AppPage_Home.js.map +1 -1
- package/dist/esm/components/app/PublicLayout_MainContainer.d.ts.map +1 -1
- package/dist/esm/components/app/PublicLayout_MainContainer.js.map +1 -1
- package/dist/esm/components/app/PublicLayout_StaticContentContainer.d.ts.map +1 -1
- package/dist/esm/components/app/PublicLayout_StaticContentContainer.js.map +1 -1
- package/dist/esm/components/app/PublicLayout_StaticContentContainer.labels.d.ts.map +1 -1
- package/dist/esm/components/app/PublicLayout_StaticContentContainer.labels.js.map +1 -1
- package/dist/esm/components/app/PublicLayout_Terms.labels.d.ts.map +1 -1
- package/dist/esm/components/app/PublicLayout_Terms.labels.js.map +1 -1
- package/dist/esm/components/auth/Auth_AuthCallback.d.ts.map +1 -1
- package/dist/esm/components/auth/Auth_AuthCallback.js.map +1 -1
- package/dist/esm/components/auth/Auth_AuthCallback.labels.d.ts.map +1 -1
- package/dist/esm/components/auth/Auth_AuthCallback.labels.js.map +1 -1
- package/dist/esm/components/auth/Auth_ConfirmEmail.d.ts.map +1 -1
- package/dist/esm/components/auth/Auth_ConfirmEmail.js.map +1 -1
- package/dist/esm/components/auth/Auth_ConfirmEmail.labels.d.ts.map +1 -1
- package/dist/esm/components/auth/Auth_ConfirmEmail.labels.js.map +1 -1
- package/dist/esm/components/auth/Auth_EnrollmentRequired.d.ts.map +1 -1
- package/dist/esm/components/auth/Auth_EnrollmentRequired.js.map +1 -1
- package/dist/esm/components/auth/Auth_EnrollmentRequired.labels.d.ts.map +1 -1
- package/dist/esm/components/auth/Auth_EnrollmentRequired.labels.js.map +1 -1
- package/dist/esm/components/auth/Auth_Invitation.d.ts.map +1 -1
- package/dist/esm/components/auth/Auth_Invitation.js.map +1 -1
- package/dist/esm/components/auth/Auth_Invitation.labels.d.ts.map +1 -1
- package/dist/esm/components/auth/Auth_Invitation.labels.js.map +1 -1
- package/dist/esm/components/auth/Auth_MagicLinkVerify.d.ts.map +1 -1
- package/dist/esm/components/auth/Auth_MagicLinkVerify.js.map +1 -1
- package/dist/esm/components/auth/Auth_MagicLinkVerify.labels.d.ts.map +1 -1
- package/dist/esm/components/auth/Auth_MagicLinkVerify.labels.js.map +1 -1
- package/dist/esm/components/auth/Auth_Main.d.ts.map +1 -1
- package/dist/esm/components/auth/Auth_Main.js.map +1 -1
- package/dist/esm/components/auth/Auth_Main.labels.d.ts.map +1 -1
- package/dist/esm/components/auth/Auth_Main.labels.js.map +1 -1
- package/dist/esm/components/auth/Auth_MfaChallenge.d.ts.map +1 -1
- package/dist/esm/components/auth/Auth_MfaChallenge.js.map +1 -1
- package/dist/esm/components/auth/Auth_MfaChallenge.labels.d.ts.map +1 -1
- package/dist/esm/components/auth/Auth_MfaChallenge.labels.js.map +1 -1
- package/dist/esm/components/auth/Auth_OAuthConsent.d.ts.map +1 -1
- package/dist/esm/components/auth/Auth_OAuthConsent.js.map +1 -1
- package/dist/esm/components/auth/Auth_OAuthConsent.labels.d.ts.map +1 -1
- package/dist/esm/components/auth/Auth_OAuthConsent.labels.js.map +1 -1
- package/dist/esm/components/auth/Auth_OAuthLoggedOut.d.ts.map +1 -1
- package/dist/esm/components/auth/Auth_OAuthLoggedOut.js.map +1 -1
- package/dist/esm/components/auth/Auth_OAuthLoggedOut.labels.d.ts.map +1 -1
- package/dist/esm/components/auth/Auth_OAuthLoggedOut.labels.js.map +1 -1
- package/dist/esm/components/auth/Auth_OAuthLogoutConfirm.d.ts.map +1 -1
- package/dist/esm/components/auth/Auth_OAuthLogoutConfirm.js.map +1 -1
- package/dist/esm/components/auth/Auth_OAuthLogoutConfirm.labels.d.ts.map +1 -1
- package/dist/esm/components/auth/Auth_OAuthLogoutConfirm.labels.js.map +1 -1
- package/dist/esm/components/auth/Auth_OneOffSession.d.ts.map +1 -1
- package/dist/esm/components/auth/Auth_OneOffSession.js.map +1 -1
- package/dist/esm/components/auth/Auth_OneOffSession.labels.d.ts.map +1 -1
- package/dist/esm/components/auth/Auth_OneOffSession.labels.js.map +1 -1
- package/dist/esm/components/auth/Auth_PasswordLost.d.ts.map +1 -1
- package/dist/esm/components/auth/Auth_PasswordLost.js.map +1 -1
- package/dist/esm/components/auth/Auth_PasswordLost.labels.d.ts.map +1 -1
- package/dist/esm/components/auth/Auth_PasswordLost.labels.js.map +1 -1
- package/dist/esm/components/auth/Auth_Register.d.ts.map +1 -1
- package/dist/esm/components/auth/Auth_Register.js.map +1 -1
- package/dist/esm/components/auth/Auth_Register.labels.d.ts.map +1 -1
- package/dist/esm/components/auth/Auth_Register.labels.js.map +1 -1
- package/dist/esm/components/auth/StepUpAuthDialog.d.ts.map +1 -1
- 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.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.map +1 -1
- package/dist/esm/components/auth/admin-config/ResourceLayoutPreset_Create_SamlWizard.d.ts.map +1 -1
- package/dist/esm/components/auth/admin-config/ResourceLayoutPreset_Create_SamlWizard.js.map +1 -1
- package/dist/esm/components/auth/admin-config/ResourceLayoutPreset_Read_SsoSaml.d.ts.map +1 -1
- package/dist/esm/components/auth/admin-config/ResourceLayoutPreset_Read_SsoSaml.js.map +1 -1
- package/dist/esm/components/auth/admin-config/SsoConnectionSamlReadSection.d.ts.map +1 -1
- package/dist/esm/components/auth/admin-config/SsoConnectionSamlReadSection.js.map +1 -1
- package/dist/esm/components/auth/enrollment/PasskeyEnrollmentMethod.d.ts.map +1 -1
- package/dist/esm/components/auth/enrollment/PasskeyEnrollmentMethod.js.map +1 -1
- package/dist/esm/components/auth/enrollment/PhoneEnrollmentMethod.d.ts.map +1 -1
- package/dist/esm/components/auth/enrollment/PhoneEnrollmentMethod.js.map +1 -1
- package/dist/esm/components/auth/enrollment/TotpEnrollmentMethod.d.ts.map +1 -1
- package/dist/esm/components/auth/enrollment/TotpEnrollmentMethod.js.map +1 -1
- package/dist/esm/components/auth/enrollment/enrollment-method-components.d.ts.map +1 -1
- package/dist/esm/components/auth/enrollment/enrollment-method-components.js.map +1 -1
- package/dist/esm/components/auth/methods/EmailOtpAuthMethod.d.ts.map +1 -1
- package/dist/esm/components/auth/methods/EmailOtpAuthMethod.js.map +1 -1
- package/dist/esm/components/auth/methods/ExternalOAuth2AuthMethod.d.ts.map +1 -1
- package/dist/esm/components/auth/methods/ExternalOAuth2AuthMethod.js.map +1 -1
- package/dist/esm/components/auth/methods/MagicLinkAuthMethod.d.ts.map +1 -1
- package/dist/esm/components/auth/methods/MagicLinkAuthMethod.js.map +1 -1
- package/dist/esm/components/auth/methods/OrgOidcAuthMethod.d.ts.map +1 -1
- package/dist/esm/components/auth/methods/OrgOidcAuthMethod.js.map +1 -1
- package/dist/esm/components/auth/methods/OrgSamlAuthMethod.d.ts.map +1 -1
- package/dist/esm/components/auth/methods/OrgSamlAuthMethod.js.map +1 -1
- package/dist/esm/components/auth/methods/PasskeyAuthMethod.d.ts.map +1 -1
- package/dist/esm/components/auth/methods/PasskeyAuthMethod.js.map +1 -1
- package/dist/esm/components/auth/methods/PasswordAuthMethod.d.ts.map +1 -1
- package/dist/esm/components/auth/methods/PasswordAuthMethod.js.map +1 -1
- package/dist/esm/components/auth/methods/SmsOtpAuthMethod.d.ts.map +1 -1
- package/dist/esm/components/auth/methods/SmsOtpAuthMethod.js.map +1 -1
- package/dist/esm/components/auth/methods/TotpAuthMethod.d.ts.map +1 -1
- package/dist/esm/components/auth/methods/TotpAuthMethod.js.map +1 -1
- package/dist/esm/components/auth/methods/auth-method-components.d.ts.map +1 -1
- package/dist/esm/components/auth/methods/auth-method-components.js.map +1 -1
- package/dist/esm/components/auth/pages/AuthPage_AuthCallback.d.ts.map +1 -1
- package/dist/esm/components/auth/pages/AuthPage_AuthCallback.js.map +1 -1
- package/dist/esm/components/auth/pages/AuthPage_AuthExchange.d.ts.map +1 -1
- package/dist/esm/components/auth/pages/AuthPage_AuthExchange.js.map +1 -1
- package/dist/esm/components/auth/pages/AuthPage_ConfirmEmail.d.ts.map +1 -1
- package/dist/esm/components/auth/pages/AuthPage_ConfirmEmail.js.map +1 -1
- package/dist/esm/components/auth/pages/AuthPage_EnrollmentRequired.d.ts.map +1 -1
- package/dist/esm/components/auth/pages/AuthPage_EnrollmentRequired.js.map +1 -1
- package/dist/esm/components/auth/pages/AuthPage_Invitation.d.ts.map +1 -1
- package/dist/esm/components/auth/pages/AuthPage_Invitation.js.map +1 -1
- package/dist/esm/components/auth/pages/AuthPage_MagicLinkVerify.d.ts.map +1 -1
- package/dist/esm/components/auth/pages/AuthPage_MagicLinkVerify.js.map +1 -1
- package/dist/esm/components/auth/pages/AuthPage_Main.d.ts.map +1 -1
- package/dist/esm/components/auth/pages/AuthPage_Main.js.map +1 -1
- package/dist/esm/components/auth/pages/AuthPage_MfaChallenge.d.ts.map +1 -1
- package/dist/esm/components/auth/pages/AuthPage_MfaChallenge.js.map +1 -1
- package/dist/esm/components/auth/pages/AuthPage_OAuthConsent.d.ts.map +1 -1
- package/dist/esm/components/auth/pages/AuthPage_OAuthConsent.js.map +1 -1
- package/dist/esm/components/auth/pages/AuthPage_OAuthLoggedOut.d.ts.map +1 -1
- package/dist/esm/components/auth/pages/AuthPage_OAuthLoggedOut.js.map +1 -1
- package/dist/esm/components/auth/pages/AuthPage_OAuthLogoutConfirm.d.ts.map +1 -1
- package/dist/esm/components/auth/pages/AuthPage_OAuthLogoutConfirm.js.map +1 -1
- package/dist/esm/components/auth/pages/AuthPage_OneOffSession.d.ts.map +1 -1
- package/dist/esm/components/auth/pages/AuthPage_OneOffSession.js.map +1 -1
- package/dist/esm/components/auth/pages/AuthPage_PasswordLost.d.ts.map +1 -1
- package/dist/esm/components/auth/pages/AuthPage_PasswordLost.js.map +1 -1
- package/dist/esm/components/auth/pages/AuthPage_Register.d.ts.map +1 -1
- package/dist/esm/components/auth/pages/AuthPage_Register.js.map +1 -1
- package/dist/esm/components/auth/utils/AuthSingleFieldFormLayout.d.ts.map +1 -1
- package/dist/esm/components/auth/utils/AuthSingleFieldFormLayout.js.map +1 -1
- package/dist/esm/components/auth/utils/CredentialUsernameAutofillField.d.ts.map +1 -1
- package/dist/esm/components/auth/utils/CredentialUsernameAutofillField.js.map +1 -1
- package/dist/esm/components/auth/utils/LabeledDivider.d.ts.map +1 -1
- package/dist/esm/components/auth/utils/LabeledDivider.js.map +1 -1
- package/dist/esm/components/auth/utils/OAuthProvidersSection.d.ts.map +1 -1
- package/dist/esm/components/auth/utils/OAuthProvidersSection.js.map +1 -1
- package/dist/esm/components/auth/utils/PasswordStrengthIndicator.d.ts.map +1 -1
- package/dist/esm/components/auth/utils/PasswordStrengthIndicator.js.map +1 -1
- 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.map +1 -1
- package/dist/esm/components/auth/utils/resolvePasswordViolationsToLabels.d.ts.map +1 -1
- package/dist/esm/components/auth/utils/resolvePasswordViolationsToLabels.js.map +1 -1
- package/dist/esm/components/billing/billing-invoice-history.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-invoice-history.js.map +1 -1
- package/dist/esm/components/billing/billing-portal-link.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-portal-link.js.map +1 -1
- package/dist/esm/components/billing/billing-pricing-table.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-pricing-table.js.map +1 -1
- package/dist/esm/components/billing/billing-subscription-status.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-subscription-status.js.map +1 -1
- package/dist/esm/components/billing/billing-usage-dashboard.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-usage-dashboard.js.map +1 -1
- package/dist/esm/components/data-display/AutomaticDisplayer.d.ts.map +1 -1
- package/dist/esm/components/data-display/AutomaticDisplayer.js.map +1 -1
- package/dist/esm/components/data-display/DisplayContextKindContext.d.ts.map +1 -1
- package/dist/esm/components/data-display/DisplayContextKindContext.js.map +1 -1
- package/dist/esm/components/data-display/DisplayField.d.ts.map +1 -1
- package/dist/esm/components/data-display/DisplayField.js +8 -5
- 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.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldEditable.d.ts.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldEditable.js +6 -2
- package/dist/esm/components/data-display/DisplayFieldEditable.js.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldEditableArray.d.ts.map +1 -1
- 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.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldReadOnlyArraySection.d.ts.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldReadOnlyArraySection.js.map +1 -1
- package/dist/esm/components/data-display/DisplayTemplateContext.d.ts.map +1 -1
- package/dist/esm/components/data-display/DisplayTemplateContext.js.map +1 -1
- package/dist/esm/components/data-display/DisplayValueDispatcher.d.ts.map +1 -1
- 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.map +1 -1
- 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/SummaryContext.d.ts.map +1 -1
- package/dist/esm/components/data-display/SummaryContext.js.map +1 -1
- package/dist/esm/components/data-display/automatic-displayer.utils.d.ts.map +1 -1
- package/dist/esm/components/data-display/automatic-displayer.utils.js.map +1 -1
- package/dist/esm/components/data-display/avatar.d.ts.map +1 -1
- package/dist/esm/components/data-display/avatar.js.map +1 -1
- package/dist/esm/components/data-display/badge.d.ts.map +1 -1
- package/dist/esm/components/data-display/badge.js.map +1 -1
- package/dist/esm/components/data-display/chart-echarts.d.ts.map +1 -1
- package/dist/esm/components/data-display/chart-echarts.js.map +1 -1
- package/dist/esm/components/data-display/chromes/DisplayChromeContext.d.ts.map +1 -1
- package/dist/esm/components/data-display/chromes/DisplayChromeContext.js.map +1 -1
- package/dist/esm/components/data-display/chromes/DisplayFieldChrome.d.ts.map +1 -1
- package/dist/esm/components/data-display/chromes/DisplayFieldChrome.js.map +1 -1
- package/dist/esm/components/data-display/description-list.d.ts.map +1 -1
- package/dist/esm/components/data-display/description-list.js.map +1 -1
- package/dist/esm/components/data-display/display-field-resolution.utils.d.ts.map +1 -1
- package/dist/esm/components/data-display/display-field-resolution.utils.js.map +1 -1
- 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/display-resource-link-trail.d.ts.map +1 -1
- package/dist/esm/components/data-display/display-resource-link-trail.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-bigdecimal.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-bigdecimal.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-boolean.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-boolean.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-code.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-code.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-date.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-date.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-datetime.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-datetime.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-duration.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-duration.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-enum.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-enum.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-audio.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-audio.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-document.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-document.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-gallery.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-gallery.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-image.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-image.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-video.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file-video.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-file.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-json.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-json.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-money.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-money.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-number.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-number.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-phone.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-phone.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-bigdecimal.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-bigdecimal.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-date.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-date.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-datetime.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-datetime.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-money.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-money.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-number.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-number.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-time.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-range-time.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-string.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-string.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-time.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-time.js.map +1 -1
- package/dist/esm/components/data-display/notification-indicator.d.ts.map +1 -1
- package/dist/esm/components/data-display/notification-indicator.js.map +1 -1
- package/dist/esm/components/data-display/useFileActivation.d.ts.map +1 -1
- package/dist/esm/components/data-display/useFileActivation.js.map +1 -1
- package/dist/esm/components/feedback/celebration-overlay.d.ts.map +1 -1
- package/dist/esm/components/feedback/celebration-overlay.js.map +1 -1
- package/dist/esm/components/feedback/danger-zone.d.ts.map +1 -1
- package/dist/esm/components/feedback/danger-zone.js.map +1 -1
- package/dist/esm/components/feedback/empty-display-policy.utils.d.ts.map +1 -1
- package/dist/esm/components/feedback/empty-display-policy.utils.js.map +1 -1
- package/dist/esm/components/feedback/empty-state.d.ts.map +1 -1
- package/dist/esm/components/feedback/empty-state.js.map +1 -1
- package/dist/esm/components/feedback/error-display.d.ts.map +1 -1
- package/dist/esm/components/feedback/error-display.js.map +1 -1
- package/dist/esm/components/feedback/features/feature-limit-indicator.d.ts.map +1 -1
- package/dist/esm/components/feedback/features/feature-limit-indicator.js.map +1 -1
- package/dist/esm/components/feedback/features/feature-lock-badge.d.ts.map +1 -1
- package/dist/esm/components/feedback/features/feature-lock-badge.js.map +1 -1
- package/dist/esm/components/feedback/features/feature-unavailable-dialog.d.ts.map +1 -1
- package/dist/esm/components/feedback/features/feature-unavailable-dialog.js.map +1 -1
- package/dist/esm/components/feedback/features/feature-unavailable-prompt.d.ts +36 -0
- package/dist/esm/components/feedback/features/feature-unavailable-prompt.d.ts.map +1 -1
- package/dist/esm/components/feedback/features/feature-unavailable-prompt.js +29 -0
- package/dist/esm/components/feedback/features/feature-unavailable-prompt.js.map +1 -1
- package/dist/esm/components/feedback/loading-overlay.d.ts.map +1 -1
- package/dist/esm/components/feedback/loading-overlay.js.map +1 -1
- package/dist/esm/components/feedback/loading-spinner.d.ts.map +1 -1
- package/dist/esm/components/feedback/loading-spinner.js.map +1 -1
- package/dist/esm/components/feedback/notification-center.d.ts +11 -5
- package/dist/esm/components/feedback/notification-center.d.ts.map +1 -1
- package/dist/esm/components/feedback/notification-center.js +2 -3
- package/dist/esm/components/feedback/notification-center.js.map +1 -1
- package/dist/esm/components/feedback/operations-confirm-critical.d.ts.map +1 -1
- package/dist/esm/components/feedback/operations-confirm-critical.js.map +1 -1
- package/dist/esm/components/feedback/progress.d.ts.map +1 -1
- package/dist/esm/components/feedback/progress.js.map +1 -1
- package/dist/esm/components/feedback/resource-empty-state.d.ts.map +1 -1
- package/dist/esm/components/feedback/resource-empty-state.js.map +1 -1
- package/dist/esm/components/feedback/skeleton-text.d.ts.map +1 -1
- package/dist/esm/components/feedback/skeleton-text.js.map +1 -1
- package/dist/esm/components/feedback/skeleton.d.ts.map +1 -1
- package/dist/esm/components/feedback/skeleton.js.map +1 -1
- package/dist/esm/components/feedback/toast.d.ts.map +1 -1
- package/dist/esm/components/feedback/toast.js.map +1 -1
- package/dist/esm/components/files/Files_UploadGrantDrop.d.ts +41 -0
- package/dist/esm/components/files/Files_UploadGrantDrop.d.ts.map +1 -0
- package/dist/esm/components/files/Files_UploadGrantDrop.js +207 -0
- package/dist/esm/components/files/Files_UploadGrantDrop.js.map +1 -0
- package/dist/esm/components/files/Files_UploadGrantDrop.labels.d.ts +3 -0
- package/dist/esm/components/files/Files_UploadGrantDrop.labels.d.ts.map +1 -0
- package/dist/esm/components/files/Files_UploadGrantDrop.labels.js +36 -0
- package/dist/esm/components/files/Files_UploadGrantDrop.labels.js.map +1 -0
- package/dist/esm/components/files/pages/FilesPage_UploadGrant.d.ts +8 -0
- package/dist/esm/components/files/pages/FilesPage_UploadGrant.d.ts.map +1 -0
- package/dist/esm/components/files/pages/FilesPage_UploadGrant.js +14 -0
- package/dist/esm/components/files/pages/FilesPage_UploadGrant.js.map +1 -0
- package/dist/esm/components/flows-actors/actor.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/actor.js.map +1 -1
- package/dist/esm/components/flows-actors/actor.labels.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/actor.labels.js.map +1 -1
- package/dist/esm/components/flows-actors/agent-config.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/agent-config.js.map +1 -1
- package/dist/esm/components/flows-actors/agent-config.labels.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/agent-config.labels.js.map +1 -1
- package/dist/esm/components/flows-actors/approval.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/approval.js +14 -2
- 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 +2 -0
- package/dist/esm/components/flows-actors/approval.labels.js.map +1 -1
- package/dist/esm/components/flows-actors/artifact-browser.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/artifact-browser.js.map +1 -1
- package/dist/esm/components/flows-actors/artifact-browser.labels.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/artifact-browser.labels.js.map +1 -1
- package/dist/esm/components/flows-actors/execution-plan.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/execution-plan.js.map +1 -1
- package/dist/esm/components/flows-actors/execution-plan.labels.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/execution-plan.labels.js.map +1 -1
- package/dist/esm/components/flows-actors/flow-execution.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/flow-execution.js.map +1 -1
- package/dist/esm/components/flows-actors/flow-execution.labels.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/flow-execution.labels.js.map +1 -1
- package/dist/esm/components/flows-actors/flow-node-badges.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/flow-node-badges.js.map +1 -1
- package/dist/esm/components/flows-actors/flow-node.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/flow-node.js.map +1 -1
- package/dist/esm/components/flows-actors/flow-node.labels.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/flow-node.labels.js.map +1 -1
- package/dist/esm/components/flows-actors/flows-actors-graph-runtime.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/flows-actors-graph-runtime.js.map +1 -1
- package/dist/esm/components/flows-actors/flows-actors-graph.lazy.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/flows-actors-graph.lazy.js.map +1 -1
- package/dist/esm/components/flows-actors/flows-actors-ui.utils.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/flows-actors-ui.utils.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.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.map +1 -1
- package/dist/esm/components/flows-actors/task-detail.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/task-detail.js.map +1 -1
- package/dist/esm/components/flows-actors/task-detail.labels.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/task-detail.labels.js.map +1 -1
- package/dist/esm/components/flows-actors/task-memory.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/task-memory.js.map +1 -1
- package/dist/esm/components/flows-actors/task-memory.labels.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/task-memory.labels.js.map +1 -1
- package/dist/esm/components/form/Form.d.ts.map +1 -1
- package/dist/esm/components/form/Form.js.map +1 -1
- package/dist/esm/components/form/automated/AutomatedArrayField.d.ts.map +1 -1
- package/dist/esm/components/form/automated/AutomatedArrayField.js +1 -1
- package/dist/esm/components/form/automated/AutomatedArrayField.js.map +1 -1
- package/dist/esm/components/form/automated/AutomatedForm.d.ts.map +1 -1
- package/dist/esm/components/form/automated/AutomatedForm.js +16 -9
- package/dist/esm/components/form/automated/AutomatedForm.js.map +1 -1
- package/dist/esm/components/form/automated/AutosaveContext.d.ts.map +1 -1
- package/dist/esm/components/form/automated/AutosaveContext.js.map +1 -1
- package/dist/esm/components/form/automated/FormField.d.ts.map +1 -1
- package/dist/esm/components/form/automated/FormField.js +9 -2
- package/dist/esm/components/form/automated/FormField.js.map +1 -1
- package/dist/esm/components/form/automated/FormFieldArray.d.ts.map +1 -1
- package/dist/esm/components/form/automated/FormFieldArray.js.map +1 -1
- package/dist/esm/components/form/automated/FormFieldComposite.d.ts.map +1 -1
- package/dist/esm/components/form/automated/FormFieldComposite.js +8 -6
- package/dist/esm/components/form/automated/FormFieldComposite.js.map +1 -1
- package/dist/esm/components/form/automated/FormFieldRecord.d.ts.map +1 -1
- package/dist/esm/components/form/automated/FormFieldRecord.js.map +1 -1
- package/dist/esm/components/form/automated/FormTemplateContext.d.ts.map +1 -1
- package/dist/esm/components/form/automated/FormTemplateContext.js.map +1 -1
- package/dist/esm/components/form/automated/GeneratedAssociationRelationshipField.d.ts.map +1 -1
- package/dist/esm/components/form/automated/GeneratedAssociationRelationshipField.js.map +1 -1
- package/dist/esm/components/form/automated/GeneratedReferenceRelationshipField.d.ts.map +1 -1
- package/dist/esm/components/form/automated/GeneratedReferenceRelationshipField.js.map +1 -1
- package/dist/esm/components/form/automated/ResourceAutomatedForm.d.ts.map +1 -1
- package/dist/esm/components/form/automated/ResourceAutomatedForm.js +37 -3
- package/dist/esm/components/form/automated/ResourceAutomatedForm.js.map +1 -1
- package/dist/esm/components/form/automated/ResourceFormActionsContext.d.ts.map +1 -1
- package/dist/esm/components/form/automated/ResourceFormActionsContext.js.map +1 -1
- 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.map +1 -1
- package/dist/esm/components/form/automated/autosave-derivation.frontend.utils.d.ts +12 -0
- package/dist/esm/components/form/automated/autosave-derivation.frontend.utils.d.ts.map +1 -0
- package/dist/esm/components/form/automated/autosave-derivation.frontend.utils.js +26 -0
- package/dist/esm/components/form/automated/autosave-derivation.frontend.utils.js.map +1 -0
- package/dist/esm/components/form/automated/autosave-indicator.d.ts.map +1 -1
- package/dist/esm/components/form/automated/autosave-indicator.js.map +1 -1
- package/dist/esm/components/form/automated/autosave-indicator.utils.d.ts.map +1 -1
- package/dist/esm/components/form/automated/autosave-indicator.utils.js.map +1 -1
- package/dist/esm/components/form/automated/create-form-default-values.utils.d.ts.map +1 -1
- package/dist/esm/components/form/automated/create-form-default-values.utils.js.map +1 -1
- package/dist/esm/components/form/automated/form-field-autocomplete.frontend.utils.d.ts.map +1 -1
- package/dist/esm/components/form/automated/form-field-autocomplete.frontend.utils.js.map +1 -1
- package/dist/esm/components/form/automated/generated-relationship-field.helpers.d.ts.map +1 -1
- package/dist/esm/components/form/automated/generated-relationship-field.helpers.js.map +1 -1
- package/dist/esm/components/form/automated/generated-relationship-field.hooks.d.ts.map +1 -1
- package/dist/esm/components/form/automated/generated-relationship-field.hooks.js.map +1 -1
- package/dist/esm/components/form/automated/generated-relationship-field.shared.d.ts.map +1 -1
- package/dist/esm/components/form/automated/generated-relationship-field.shared.js.map +1 -1
- package/dist/esm/components/form/automated/generated-relationship-field.utils.d.ts.map +1 -1
- package/dist/esm/components/form/automated/generated-relationship-field.utils.js.map +1 -1
- package/dist/esm/components/form/automated/useArrayItemAutosaveField.d.ts.map +1 -1
- package/dist/esm/components/form/automated/useArrayItemAutosaveField.js.map +1 -1
- package/dist/esm/components/form/chromes/FormChromeContext.d.ts.map +1 -1
- package/dist/esm/components/form/chromes/FormChromeContext.js.map +1 -1
- package/dist/esm/components/form/chromes/FormFieldChrome.d.ts.map +1 -1
- package/dist/esm/components/form/chromes/FormFieldChrome.js.map +1 -1
- package/dist/esm/components/form/chromes/field.d.ts.map +1 -1
- package/dist/esm/components/form/chromes/field.js.map +1 -1
- package/dist/esm/components/form/chromes/form-primitives.d.ts.map +1 -1
- package/dist/esm/components/form/chromes/form-primitives.js.map +1 -1
- 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/boolean/checkbox.d.ts.map +1 -1
- package/dist/esm/components/form/controls/boolean/checkbox.js.map +1 -1
- package/dist/esm/components/form/controls/boolean/switch.d.ts.map +1 -1
- package/dist/esm/components/form/controls/boolean/switch.js.map +1 -1
- package/dist/esm/components/form/controls/boolean/toggle-group-boolean.d.ts.map +1 -1
- package/dist/esm/components/form/controls/boolean/toggle-group-boolean.js.map +1 -1
- package/dist/esm/components/form/controls/boolean/toggle.d.ts.map +1 -1
- package/dist/esm/components/form/controls/boolean/toggle.js.map +1 -1
- package/dist/esm/components/form/controls/date-time/calendar.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/calendar.js.map +1 -1
- package/dist/esm/components/form/controls/date-time/date-range-picker.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/date-range-picker.js.map +1 -1
- package/dist/esm/components/form/controls/date-time/datepicker.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/datepicker.js.map +1 -1
- package/dist/esm/components/form/controls/date-time/datetime-picker.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/datetime-picker.js.map +1 -1
- package/dist/esm/components/form/controls/date-time/datetime-range-picker.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/datetime-range-picker.js.map +1 -1
- package/dist/esm/components/form/controls/date-time/time-picker.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/time-picker.js.map +1 -1
- package/dist/esm/components/form/controls/date-time/time-range-picker.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/time-range-picker.js.map +1 -1
- package/dist/esm/components/form/controls/enum/radio.d.ts.map +1 -1
- package/dist/esm/components/form/controls/enum/radio.js.map +1 -1
- package/dist/esm/components/form/controls/enum/select-multiple.d.ts.map +1 -1
- package/dist/esm/components/form/controls/enum/select-multiple.js.map +1 -1
- package/dist/esm/components/form/controls/enum/select.d.ts.map +1 -1
- package/dist/esm/components/form/controls/enum/select.js.map +1 -1
- package/dist/esm/components/form/controls/enum/toggle-group.d.ts.map +1 -1
- package/dist/esm/components/form/controls/enum/toggle-group.js.map +1 -1
- package/dist/esm/components/form/controls/file/file-upload.d.ts.map +1 -1
- package/dist/esm/components/form/controls/file/file-upload.js.map +1 -1
- package/dist/esm/components/form/controls/file/image-crop.d.ts.map +1 -1
- package/dist/esm/components/form/controls/file/image-crop.frontend.utils.d.ts.map +1 -1
- package/dist/esm/components/form/controls/file/image-crop.frontend.utils.js.map +1 -1
- package/dist/esm/components/form/controls/file/image-crop.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.map +1 -1
- package/dist/esm/components/form/controls/input-group.d.ts.map +1 -1
- package/dist/esm/components/form/controls/input-group.js.map +1 -1
- package/dist/esm/components/form/controls/input.d.ts.map +1 -1
- package/dist/esm/components/form/controls/input.js.map +1 -1
- package/dist/esm/components/form/controls/number/slider.d.ts.map +1 -1
- package/dist/esm/components/form/controls/number/slider.js.map +1 -1
- package/dist/esm/components/form/controls/string/color-input.d.ts.map +1 -1
- package/dist/esm/components/form/controls/string/color-input.js.map +1 -1
- package/dist/esm/components/form/controls/string/inline-edit-text.d.ts.map +1 -1
- package/dist/esm/components/form/controls/string/inline-edit-text.js.map +1 -1
- package/dist/esm/components/form/controls/string/input-otp.d.ts.map +1 -1
- package/dist/esm/components/form/controls/string/input-otp.js.map +1 -1
- package/dist/esm/components/form/controls/string/markdown-editor.d.ts.map +1 -1
- package/dist/esm/components/form/controls/string/markdown-editor.js.map +1 -1
- package/dist/esm/components/form/controls/string/markdown-editor.labels.d.ts.map +1 -1
- package/dist/esm/components/form/controls/string/markdown-editor.labels.js.map +1 -1
- package/dist/esm/components/form/controls/string/password-input.d.ts.map +1 -1
- package/dist/esm/components/form/controls/string/password-input.js.map +1 -1
- package/dist/esm/components/form/controls/string/textarea.d.ts.map +1 -1
- package/dist/esm/components/form/controls/string/textarea.js.map +1 -1
- package/dist/esm/components/form/feedback/RemoteChangeNotification.d.ts.map +1 -1
- package/dist/esm/components/form/feedback/RemoteChangeNotification.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-bigdecimal.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-bigdecimal.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-bigdecimal.labels.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-bigdecimal.labels.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-boolean.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-boolean.js +4 -2
- package/dist/esm/components/form/fields/form-field-boolean.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-boolean.labels.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-boolean.labels.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-code.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-code.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-code.labels.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-code.labels.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-date.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-date.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-date.labels.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-date.labels.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-datetime.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-datetime.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-datetime.labels.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-datetime.labels.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-duration.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-duration.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-duration.labels.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-duration.labels.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-enum.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-enum.js +4 -2
- package/dist/esm/components/form/fields/form-field-enum.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-enum.labels.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-enum.labels.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-file-provider-constraints.frontend.utils.d.ts +15 -5
- package/dist/esm/components/form/fields/form-field-file-provider-constraints.frontend.utils.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-file-provider-constraints.frontend.utils.js +21 -18
- package/dist/esm/components/form/fields/form-field-file-provider-constraints.frontend.utils.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-file.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-file.js +90 -2
- 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 +15 -0
- package/dist/esm/components/form/fields/form-field-file.labels.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-money.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-money.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-money.labels.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-money.labels.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-number.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-number.js +4 -2
- package/dist/esm/components/form/fields/form-field-number.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-number.labels.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-number.labels.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-phone.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-phone.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-phone.labels.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-phone.labels.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-range-bigdecimal.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-range-bigdecimal.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-range-bigdecimal.labels.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-range-bigdecimal.labels.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-range-date.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-range-date.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-range-date.labels.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-range-date.labels.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-range-datetime.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-range-datetime.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-range-datetime.labels.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-range-datetime.labels.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-range-money.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-range-money.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-range-money.labels.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-range-money.labels.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-range-number.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-range-number.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-range-number.labels.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-range-number.labels.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-range-time.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-range-time.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-range-time.labels.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-range-time.labels.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-string.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-string.js +7 -2
- 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.map +1 -1
- package/dist/esm/components/form/fields/form-field-time.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-time.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-time.labels.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-time.labels.js.map +1 -1
- package/dist/esm/components/form/fields/useFormField.d.ts.map +1 -1
- package/dist/esm/components/form/fields/useFormField.js.map +1 -1
- package/dist/esm/components/form/form-context.d.ts.map +1 -1
- package/dist/esm/components/form/form-context.js.map +1 -1
- package/dist/esm/components/form/form-context.utils.d.ts.map +1 -1
- package/dist/esm/components/form/form-context.utils.js.map +1 -1
- package/dist/esm/components/form/form-field-types.d.ts.map +1 -1
- package/dist/esm/components/form/form-field-types.js.map +1 -1
- package/dist/esm/components/form/useFormSchemaContext.d.ts.map +1 -1
- package/dist/esm/components/form/useFormSchemaContext.js.map +1 -1
- package/dist/esm/components/form/validation-errors/FormErrorSummary.d.ts.map +1 -1
- package/dist/esm/components/form/validation-errors/FormErrorSummary.js.map +1 -1
- package/dist/esm/components/form/validation-errors/form-error-extraction.utils.d.ts.map +1 -1
- package/dist/esm/components/form/validation-errors/form-error-extraction.utils.js.map +1 -1
- package/dist/esm/components/form/validation-errors/form-validation.d.ts.map +1 -1
- package/dist/esm/components/form/validation-errors/form-validation.js.map +1 -1
- package/dist/esm/components/form/validation-errors/getFieldError.d.ts.map +1 -1
- package/dist/esm/components/form/validation-errors/getFieldError.js.map +1 -1
- package/dist/esm/components/form/validation-errors/scroll-to-first-error.utils.d.ts.map +1 -1
- package/dist/esm/components/form/validation-errors/scroll-to-first-error.utils.js.map +1 -1
- package/dist/esm/components/form/validation-errors/useFieldUniquenessValidation.d.ts.map +1 -1
- package/dist/esm/components/form/validation-errors/useFieldUniquenessValidation.js.map +1 -1
- package/dist/esm/components/form/validation-errors/useServerErrorInjection.d.ts.map +1 -1
- package/dist/esm/components/form/validation-errors/useServerErrorInjection.js.map +1 -1
- package/dist/esm/components/layout/aspect-ratio.d.ts.map +1 -1
- package/dist/esm/components/layout/aspect-ratio.js.map +1 -1
- package/dist/esm/components/layout/carousel.d.ts.map +1 -1
- package/dist/esm/components/layout/carousel.js.map +1 -1
- package/dist/esm/components/layout/divider.d.ts.map +1 -1
- package/dist/esm/components/layout/divider.js.map +1 -1
- 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/layout/scroll-area.d.ts.map +1 -1
- package/dist/esm/components/layout/scroll-area.js.map +1 -1
- package/dist/esm/components/layout/separator.d.ts.map +1 -1
- package/dist/esm/components/layout/separator.js.map +1 -1
- package/dist/esm/components/navigation/NavigationItemBadge.d.ts +6 -0
- package/dist/esm/components/navigation/NavigationItemBadge.d.ts.map +1 -1
- package/dist/esm/components/navigation/NavigationItemBadge.js +2 -1
- package/dist/esm/components/navigation/NavigationItemBadge.js.map +1 -1
- package/dist/esm/components/navigation/app-level/ApplicationLevel_ActivityBar.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/ApplicationLevel_ActivityBar.js.map +1 -1
- package/dist/esm/components/navigation/app-level/ApplicationLevel_CommandMenu.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/ApplicationLevel_CommandMenu.js.map +1 -1
- package/dist/esm/components/navigation/app-level/ApplicationLevel_ControlPanel.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/ApplicationLevel_ControlPanel.js.map +1 -1
- package/dist/esm/components/navigation/app-level/ApplicationLevel_MenuBar.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/ApplicationLevel_MenuBar.js.map +1 -1
- package/dist/esm/components/navigation/app-level/ApplicationLevel_MenuUserOrg.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/ApplicationLevel_MenuUserOrg.js.map +1 -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.map +1 -1
- package/dist/esm/components/navigation/app-level/ApplicationLevel_NotificationCenter.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/ApplicationLevel_NotificationCenter.js.map +1 -1
- package/dist/esm/components/navigation/app-level/ApplicationLevel_QuickActionButton.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/ApplicationLevel_QuickActionButton.js.map +1 -1
- package/dist/esm/components/navigation/app-level/ApplicationLevel_QuickSwitcher.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/ApplicationLevel_QuickSwitcher.js.map +1 -1
- package/dist/esm/components/navigation/app-level/ApplicationLevel_Sidebar.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/ApplicationLevel_Sidebar.js.map +1 -1
- 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/ApplicationLevel_Toolbar.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/ApplicationLevel_Toolbar.js.map +1 -1
- package/dist/esm/components/navigation/app-level/ApplicationLevel_UtilityPanel.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/ApplicationLevel_UtilityPanel.js.map +1 -1
- package/dist/esm/components/navigation/app-level/HostedComponentInteractionsProvider.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/HostedComponentInteractionsProvider.js.map +1 -1
- package/dist/esm/components/navigation/app-level/SidebarResourceBrowser.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/SidebarResourceBrowser.js.map +1 -1
- package/dist/esm/components/navigation/app-level/component-props.application-level.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/component-props.application-level.frontend.schemas.js.map +1 -1
- package/dist/esm/components/navigation/app-level/useActivityBarBehavior.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/useActivityBarBehavior.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.map +1 -1
- package/dist/esm/components/navigation/app-level/useControlPanelBehavior.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/useControlPanelBehavior.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.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.map +1 -1
- package/dist/esm/components/navigation/app-level/useNavigationBehaviors.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/useNavigationBehaviors.js.map +1 -1
- package/dist/esm/components/navigation/app-level/useNotificationCenterBehavior.d.ts +5 -2
- package/dist/esm/components/navigation/app-level/useNotificationCenterBehavior.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/useNotificationCenterBehavior.js +18 -41
- package/dist/esm/components/navigation/app-level/useNotificationCenterBehavior.js.map +1 -1
- package/dist/esm/components/navigation/app-level/useQuickActionButtonBehavior.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/useQuickActionButtonBehavior.js.map +1 -1
- package/dist/esm/components/navigation/app-level/useQuickSwitcherBehavior.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/useQuickSwitcherBehavior.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 +1 -1
- package/dist/esm/components/navigation/app-level/useSidebarBehavior.js.map +1 -1
- package/dist/esm/components/navigation/app-level/useStatusBarBehavior.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/useStatusBarBehavior.js +13 -3
- package/dist/esm/components/navigation/app-level/useStatusBarBehavior.js.map +1 -1
- package/dist/esm/components/navigation/app-level/useToolbarBehavior.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/useToolbarBehavior.js.map +1 -1
- package/dist/esm/components/navigation/app-level/useUtilityPanelBehavior.d.ts +23 -5
- package/dist/esm/components/navigation/app-level/useUtilityPanelBehavior.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/useUtilityPanelBehavior.js +81 -13
- package/dist/esm/components/navigation/app-level/useUtilityPanelBehavior.js.map +1 -1
- package/dist/esm/components/navigation/breadcrumb.d.ts.map +1 -1
- package/dist/esm/components/navigation/breadcrumb.js.map +1 -1
- package/dist/esm/components/navigation/command.d.ts.map +1 -1
- package/dist/esm/components/navigation/command.js.map +1 -1
- package/dist/esm/components/navigation/menu-bar.d.ts.map +1 -1
- package/dist/esm/components/navigation/menu-bar.js.map +1 -1
- package/dist/esm/components/navigation/navbar.d.ts.map +1 -1
- package/dist/esm/components/navigation/navbar.js.map +1 -1
- package/dist/esm/components/navigation/sidebar.d.ts.map +1 -1
- package/dist/esm/components/navigation/sidebar.js.map +1 -1
- package/dist/esm/components/overlays/containers/OverlayContainer.d.ts.map +1 -1
- package/dist/esm/components/overlays/containers/OverlayContainer.js.map +1 -1
- package/dist/esm/components/overlays/containers/OverlayContainer.labels.d.ts.map +1 -1
- package/dist/esm/components/overlays/containers/OverlayContainer.labels.js.map +1 -1
- package/dist/esm/components/overlays/containers/alert-dialog.d.ts.map +1 -1
- package/dist/esm/components/overlays/containers/alert-dialog.js.map +1 -1
- package/dist/esm/components/overlays/containers/alert.d.ts.map +1 -1
- package/dist/esm/components/overlays/containers/alert.js.map +1 -1
- package/dist/esm/components/overlays/containers/dialog.d.ts.map +1 -1
- package/dist/esm/components/overlays/containers/dialog.js.map +1 -1
- package/dist/esm/components/overlays/containers/dialog.shared-types.d.ts.map +1 -1
- package/dist/esm/components/overlays/containers/dialog.shared-types.js.map +1 -1
- package/dist/esm/components/overlays/containers/drawer.d.ts.map +1 -1
- package/dist/esm/components/overlays/containers/drawer.js.map +1 -1
- package/dist/esm/components/overlays/containers/navigation-overlay-container.utils.d.ts.map +1 -1
- package/dist/esm/components/overlays/containers/navigation-overlay-container.utils.js.map +1 -1
- package/dist/esm/components/overlays/containers/overlay-container-mode-resolution.utils.d.ts.map +1 -1
- package/dist/esm/components/overlays/containers/overlay-container-mode-resolution.utils.js.map +1 -1
- package/dist/esm/components/overlays/containers/sheet.d.ts.map +1 -1
- package/dist/esm/components/overlays/containers/sheet.js.map +1 -1
- package/dist/esm/components/overlays/floating/context-menu.d.ts.map +1 -1
- package/dist/esm/components/overlays/floating/context-menu.js.map +1 -1
- package/dist/esm/components/overlays/floating/dropdown-menu.d.ts.map +1 -1
- package/dist/esm/components/overlays/floating/dropdown-menu.js.map +1 -1
- package/dist/esm/components/overlays/floating/hover-card.d.ts.map +1 -1
- package/dist/esm/components/overlays/floating/hover-card.js.map +1 -1
- package/dist/esm/components/overlays/floating/menu.shared-types.d.ts.map +1 -1
- package/dist/esm/components/overlays/floating/menu.shared-types.js.map +1 -1
- package/dist/esm/components/overlays/floating/popover.d.ts.map +1 -1
- package/dist/esm/components/overlays/floating/popover.js.map +1 -1
- package/dist/esm/components/overlays/floating/tooltip.d.ts.map +1 -1
- package/dist/esm/components/overlays/floating/tooltip.js.map +1 -1
- package/dist/esm/components/progression/ProgressionAchievementBadge.d.ts.map +1 -1
- package/dist/esm/components/progression/ProgressionAchievementBadge.js.map +1 -1
- package/dist/esm/components/progression/ProgressionAchievementBadge.labels.d.ts.map +1 -1
- package/dist/esm/components/progression/ProgressionAchievementBadge.labels.js.map +1 -1
- package/dist/esm/components/progression/ProgressionMilestoneTracker.d.ts.map +1 -1
- package/dist/esm/components/progression/ProgressionMilestoneTracker.js.map +1 -1
- package/dist/esm/components/progression/ProgressionMilestoneTracker.labels.d.ts.map +1 -1
- package/dist/esm/components/progression/ProgressionMilestoneTracker.labels.js.map +1 -1
- package/dist/esm/components/resources/CollectionSelectionControls.d.ts.map +1 -1
- package/dist/esm/components/resources/CollectionSelectionControls.js.map +1 -1
- package/dist/esm/components/resources/EphemeralFieldsRevealDialog.d.ts.map +1 -1
- package/dist/esm/components/resources/EphemeralFieldsRevealDialog.js.map +1 -1
- package/dist/esm/components/resources/InlineSearchInput.d.ts.map +1 -1
- package/dist/esm/components/resources/InlineSearchInput.js.map +1 -1
- package/dist/esm/components/resources/ResourceCollectionBody_Table.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceCollectionBody_Table.js.map +1 -1
- package/dist/esm/components/resources/ResourceCollectionQuickFilterTabs.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceCollectionQuickFilterTabs.js.map +1 -1
- package/dist/esm/components/resources/ResourceCollectionToolbar.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceCollectionToolbar.js.map +1 -1
- package/dist/esm/components/resources/ResourceInPlaceOperationRow.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceInPlaceOperationRow.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Action.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Action.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Action.labels.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Action.labels.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Breadcrumb.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Breadcrumb.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Breadcrumb.labels.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Breadcrumb.labels.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_CollectionActions.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_CollectionActions.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ContainerDialogs.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ContainerDialogs.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ContainerDialogs.labels.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ContainerDialogs.labels.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ContainerNested.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ContainerNested.js +9 -0
- package/dist/esm/components/resources/ResourceLayout_ContainerNested.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ContainerNested.labels.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ContainerNested.labels.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Create.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Create.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Create.labels.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Create.labels.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_DangerZone.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_DangerZone.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_DangerZone.labels.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_DangerZone.labels.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_FilterChips.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_FilterChips.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Filters.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Filters.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Filters.labels.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Filters.labels.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_FiltersControl.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_FiltersControl.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Header.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Header.js +1 -1
- package/dist/esm/components/resources/ResourceLayout_Header.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Header.labels.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Header.labels.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_InsertedViews.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_InsertedViews.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_List.d.ts.map +1 -1
- 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.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_List_Table.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_List_Table.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_OperationBulk.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_OperationBulk.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_OperationBulk.labels.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_OperationBulk.labels.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_OperationsItems.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_OperationsItems.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_OperationsItems.labels.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_OperationsItems.labels.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Pagination.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Pagination.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Pagination.labels.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Pagination.labels.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Read.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Read.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Read.labels.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Read.labels.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ReadSummary.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ReadSummary.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ReadSummary.labels.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ReadSummary.labels.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.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Read_Expandable.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Read_Expandable.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Search.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Search.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Search.labels.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Search.labels.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Search_Table.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Search_Table.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_SemanticOperationFallback.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_SemanticOperationFallback.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_SortControl.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_SortControl.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Update.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Update.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Update.labels.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Update.labels.js.map +1 -1
- package/dist/esm/components/resources/ResourceListItemRenderer.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceListItemRenderer.js.map +1 -1
- package/dist/esm/components/resources/ResourceOperationActionPopover.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceOperationActionPopover.js.map +1 -1
- package/dist/esm/components/resources/ResourceOperationSurface.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceOperationSurface.js.map +1 -1
- package/dist/esm/components/resources/ResourceOwnedViewEmbeds.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceOwnedViewEmbeds.js.map +1 -1
- package/dist/esm/components/resources/ResourceViewModeToggle.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceViewModeToggle.js.map +1 -1
- package/dist/esm/components/resources/card-action-placement.utils.d.ts.map +1 -1
- package/dist/esm/components/resources/card-action-placement.utils.js.map +1 -1
- package/dist/esm/components/resources/collection-card-layout.utils.d.ts.map +1 -1
- package/dist/esm/components/resources/collection-card-layout.utils.js.map +1 -1
- package/dist/esm/components/resources/collection-view-mode.frontend.d.ts.map +1 -1
- package/dist/esm/components/resources/collection-view-mode.frontend.js.map +1 -1
- package/dist/esm/components/resources/component-props.resources-layout.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/components/resources/component-props.resources-layout.frontend.schemas.js.map +1 -1
- package/dist/esm/components/resources/embeds/ComposedChildrenRegistry.d.ts.map +1 -1
- package/dist/esm/components/resources/embeds/ComposedChildrenRegistry.js.map +1 -1
- package/dist/esm/components/resources/embeds/EmbeddedResourceDescent.d.ts.map +1 -1
- package/dist/esm/components/resources/embeds/EmbeddedResourceDescent.js.map +1 -1
- package/dist/esm/components/resources/embeds/EmbeddedResourceHostContext.d.ts.map +1 -1
- package/dist/esm/components/resources/embeds/EmbeddedResourceHostContext.js.map +1 -1
- package/dist/esm/components/resources/embeds/RelatedResourcePreview.d.ts.map +1 -1
- package/dist/esm/components/resources/embeds/RelatedResourcePreview.js.map +1 -1
- package/dist/esm/components/resources/embeds/RelatedResourceSections.d.ts.map +1 -1
- package/dist/esm/components/resources/embeds/RelatedResourceSections.js.map +1 -1
- package/dist/esm/components/resources/embeds/ResourceEmbeds.d.ts.map +1 -1
- package/dist/esm/components/resources/embeds/ResourceEmbeds.js.map +1 -1
- package/dist/esm/components/resources/embeds/child-operation-addressability.utils.d.ts.map +1 -1
- package/dist/esm/components/resources/embeds/child-operation-addressability.utils.js.map +1 -1
- package/dist/esm/components/resources/embeds/useEmbeddedResourceContext.d.ts.map +1 -1
- package/dist/esm/components/resources/embeds/useEmbeddedResourceContext.js.map +1 -1
- package/dist/esm/components/resources/inserted-resource-view.frontend.utils.d.ts.map +1 -1
- package/dist/esm/components/resources/inserted-resource-view.frontend.utils.js.map +1 -1
- package/dist/esm/components/resources/resource-operation-custom-view.contracts.d.ts.map +1 -1
- package/dist/esm/components/resources/resource-operation-custom-view.contracts.js.map +1 -1
- package/dist/esm/components/resources/resourceLayout.utils.d.ts.map +1 -1
- 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.map +1 -1
- package/dist/esm/components/resources/skeleton/ArrayItemTemplate.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/ArrayItemTemplate.js.map +1 -1
- package/dist/esm/components/resources/skeleton/DiscriminatorSwitch.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/DiscriminatorSwitch.js.map +1 -1
- package/dist/esm/components/resources/skeleton/DisplayLayout.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/DisplayLayout.js.map +1 -1
- package/dist/esm/components/resources/skeleton/Divider.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/Divider.js.map +1 -1
- package/dist/esm/components/resources/skeleton/FieldScopeContext.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/FieldScopeContext.js.map +1 -1
- package/dist/esm/components/resources/skeleton/FormErrorSummarySlot.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/FormErrorSummarySlot.js.map +1 -1
- package/dist/esm/components/resources/skeleton/FormLayout.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/FormLayout.js.map +1 -1
- package/dist/esm/components/resources/skeleton/FormLayoutSlotContext.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/FormLayoutSlotContext.js.map +1 -1
- package/dist/esm/components/resources/skeleton/Group.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/Group.js.map +1 -1
- package/dist/esm/components/resources/skeleton/ObjectScope.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/ObjectScope.js.map +1 -1
- package/dist/esm/components/resources/skeleton/ResourceHeaderTitle.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/ResourceHeaderTitle.js.map +1 -1
- package/dist/esm/components/resources/skeleton/Section.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/Section.js.map +1 -1
- package/dist/esm/components/resources/skeleton/Section.shared.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/Section.shared.js.map +1 -1
- package/dist/esm/components/resources/skeleton/SectionFieldsContext.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/SectionFieldsContext.js.map +1 -1
- package/dist/esm/components/resources/skeleton/SectionHostHeadingContext.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/SectionHostHeadingContext.js.map +1 -1
- package/dist/esm/components/resources/skeleton/SectionPresentationContext.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/SectionPresentationContext.js.map +1 -1
- package/dist/esm/components/resources/skeleton/SubmitButton.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/SubmitButton.js.map +1 -1
- package/dist/esm/components/resources/skeleton/SummaryHeader.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/SummaryHeader.js.map +1 -1
- package/dist/esm/components/resources/skeleton/SummaryLayout.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/SummaryLayout.js.map +1 -1
- package/dist/esm/components/resources/skeleton/SummaryMeta.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/SummaryMeta.js.map +1 -1
- package/dist/esm/components/resources/skeleton/SummaryTitle.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/SummaryTitle.js.map +1 -1
- package/dist/esm/components/resources/skeleton/WizardLayout.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/WizardLayout.js.map +1 -1
- package/dist/esm/components/resources/skeleton/WizardLayoutContext.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/WizardLayoutContext.js.map +1 -1
- package/dist/esm/components/resources/skeleton/WizardStep.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/WizardStep.js.map +1 -1
- package/dist/esm/components/resources/skeleton/WizardStepFieldsContext.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/WizardStepFieldsContext.js.map +1 -1
- package/dist/esm/components/resources/skeleton/section-consolidation.shared.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/section-consolidation.shared.js.map +1 -1
- package/dist/esm/components/resources/skeleton/section-consolidation.utils.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/section-consolidation.utils.js.map +1 -1
- package/dist/esm/components/resources/useInlineSearch.d.ts.map +1 -1
- package/dist/esm/components/resources/useInlineSearch.js.map +1 -1
- package/dist/esm/components/resources/useLongPress.d.ts.map +1 -1
- package/dist/esm/components/resources/useLongPress.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.map +1 -1
- package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldEditPreset_ResourceReference_Default.d.ts.map +1 -1
- package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldEditPreset_ResourceReference_Default.js.map +1 -1
- package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldEditPreset_ResourceReference_Default.labels.d.ts.map +1 -1
- package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldEditPreset_ResourceReference_Default.labels.js.map +1 -1
- package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldEditPreset_ResourceReference_Search.d.ts.map +1 -1
- package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldEditPreset_ResourceReference_Search.js.map +1 -1
- package/dist/esm/components/resources-fields/resource-reference/ResourceFieldDisplay_ResourceReference.d.ts.map +1 -1
- package/dist/esm/components/resources-fields/resource-reference/ResourceFieldDisplay_ResourceReference.js.map +1 -1
- package/dist/esm/components/resources-fields/resource-reference/ResourceFieldEdit_ResourceReference.d.ts.map +1 -1
- package/dist/esm/components/resources-fields/resource-reference/ResourceFieldEdit_ResourceReference.js.map +1 -1
- 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.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.map +1 -1
- package/dist/esm/components/sections/ContentSectionContainer.d.ts.map +1 -1
- package/dist/esm/components/sections/ContentSectionContainer.js.map +1 -1
- package/dist/esm/components/sections/ContentSectionContainer.labels.d.ts.map +1 -1
- package/dist/esm/components/sections/ContentSectionContainer.labels.js.map +1 -1
- package/dist/esm/components/sections/accordion.d.ts.map +1 -1
- package/dist/esm/components/sections/accordion.js.map +1 -1
- package/dist/esm/components/sections/card.d.ts.map +1 -1
- package/dist/esm/components/sections/card.js.map +1 -1
- package/dist/esm/components/sections/collapsible.d.ts.map +1 -1
- package/dist/esm/components/sections/collapsible.js.map +1 -1
- package/dist/esm/components/sections/content-section.d.ts.map +1 -1
- package/dist/esm/components/sections/content-section.js.map +1 -1
- package/dist/esm/components/sections/pagination.d.ts.map +1 -1
- package/dist/esm/components/sections/pagination.js.map +1 -1
- package/dist/esm/components/sections/section-grouping.shared.d.ts.map +1 -1
- package/dist/esm/components/sections/section-grouping.shared.js.map +1 -1
- package/dist/esm/components/sections/stacked-layout.d.ts.map +1 -1
- package/dist/esm/components/sections/stacked-layout.js.map +1 -1
- 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.map +1 -1
- package/dist/esm/components/sections/table.d.ts.map +1 -1
- package/dist/esm/components/sections/table.js.map +1 -1
- package/dist/esm/components/sections/tabs.d.ts.map +1 -1
- package/dist/esm/components/sections/tabs.js.map +1 -1
- package/dist/esm/components/settings/AppPage_AppearanceSettings.d.ts.map +1 -1
- 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.map +1 -1
- package/dist/esm/components/settings/AppPage_BillingSettings.d.ts.map +1 -1
- 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.map +1 -1
- package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.d.ts +64 -0
- package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.d.ts.map +1 -0
- package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.js +184 -0
- package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.js.map +1 -0
- package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.labels.d.ts +3 -0
- package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.labels.d.ts.map +1 -0
- package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.labels.js +26 -0
- package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.labels.js.map +1 -0
- package/dist/esm/components/settings/AppPage_InvitationsSettings.d.ts.map +1 -1
- 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.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/SettingsHub.labels.d.ts.map +1 -1
- package/dist/esm/components/settings/SettingsHub.labels.js.map +1 -1
- package/dist/esm/components/settings/SettingsResourceOperationPanel.d.ts.map +1 -1
- package/dist/esm/components/settings/SettingsResourceOperationPanel.js.map +1 -1
- package/dist/esm/components/settings/SettingsSectionNavigationHost.d.ts.map +1 -1
- package/dist/esm/components/settings/SettingsSectionNavigationHost.js.map +1 -1
- package/dist/esm/components/typography/heading.d.ts.map +1 -1
- package/dist/esm/components/typography/heading.js.map +1 -1
- package/dist/esm/components/typography/label.d.ts.map +1 -1
- package/dist/esm/components/typography/label.js.map +1 -1
- package/dist/esm/components/typography/link.d.ts.map +1 -1
- package/dist/esm/components/typography/link.js.map +1 -1
- package/dist/esm/components/typography/text.d.ts.map +1 -1
- package/dist/esm/components/typography/text.js.map +1 -1
- package/dist/esm/components/typography/truncated-text.d.ts.map +1 -1
- package/dist/esm/components/typography/truncated-text.js.map +1 -1
- package/dist/esm/components/views/ViewLayout_Header.d.ts.map +1 -1
- package/dist/esm/components/views/ViewLayout_Header.js.map +1 -1
- package/dist/esm/components/views/ViewNotFound.d.ts.map +1 -1
- package/dist/esm/components/views/ViewNotFound.js.map +1 -1
- package/dist/esm/components/views/ViewNotFound.labels.d.ts.map +1 -1
- package/dist/esm/components/views/ViewNotFound.labels.js.map +1 -1
- package/dist/esm/components/views/chart-view/ChartEmptyState.d.ts.map +1 -1
- package/dist/esm/components/views/chart-view/ChartEmptyState.js.map +1 -1
- package/dist/esm/components/views/chart-view/ChartErrorState.d.ts.map +1 -1
- package/dist/esm/components/views/chart-view/ChartErrorState.js.map +1 -1
- package/dist/esm/components/views/chart-view/ChartLoadingSkeleton.d.ts.map +1 -1
- package/dist/esm/components/views/chart-view/ChartLoadingSkeleton.js.map +1 -1
- package/dist/esm/components/views/chart-view/ChartView.d.ts.map +1 -1
- package/dist/esm/components/views/chart-view/ChartView.js.map +1 -1
- package/dist/esm/components/views/chart-view/ChartView.labels.d.ts.map +1 -1
- package/dist/esm/components/views/chart-view/ChartView.labels.js.map +1 -1
- package/dist/esm/components/views/chart-view/ChartView.lazy.d.ts.map +1 -1
- package/dist/esm/components/views/chart-view/ChartView.lazy.js.map +1 -1
- package/dist/esm/components/views/chart-view/ChartWidget.d.ts.map +1 -1
- package/dist/esm/components/views/chart-view/ChartWidget.js.map +1 -1
- package/dist/esm/components/views/chart-view/ChartWidget.labels.d.ts.map +1 -1
- package/dist/esm/components/views/chart-view/ChartWidget.labels.js.map +1 -1
- package/dist/esm/components/views/chart-view/WildoEChart.d.ts.map +1 -1
- package/dist/esm/components/views/chart-view/WildoEChart.js.map +1 -1
- package/dist/esm/components/views/chart-view/chart-export.utils.d.ts.map +1 -1
- package/dist/esm/components/views/chart-view/chart-export.utils.js.map +1 -1
- package/dist/esm/components/views/chart-view/chart-runtime.utils.d.ts.map +1 -1
- package/dist/esm/components/views/chart-view/chart-runtime.utils.js.map +1 -1
- package/dist/esm/components/views/chart-view/chart-theme-bridge.d.ts.map +1 -1
- package/dist/esm/components/views/chart-view/chart-theme-bridge.js.map +1 -1
- 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.map +1 -1
- package/dist/esm/components/views/chart-view/dev/ChartView.example.d.ts.map +1 -1
- package/dist/esm/components/views/chart-view/dev/ChartView.example.js.map +1 -1
- package/dist/esm/components/views/chart-view/echarts-setup.d.ts.map +1 -1
- package/dist/esm/components/views/chart-view/echarts-setup.js.map +1 -1
- package/dist/esm/components/views/chart-view/enum-color-bridge.d.ts.map +1 -1
- package/dist/esm/components/views/chart-view/enum-color-bridge.js.map +1 -1
- package/dist/esm/components/views/chart-view/option-builder/builder-utils.d.ts.map +1 -1
- package/dist/esm/components/views/chart-view/option-builder/builder-utils.js.map +1 -1
- package/dist/esm/components/views/chart-view/option-builder/builders/bar-family.builder.d.ts.map +1 -1
- package/dist/esm/components/views/chart-view/option-builder/builders/bar-family.builder.js.map +1 -1
- package/dist/esm/components/views/chart-view/option-builder/builders/composed.builder.d.ts.map +1 -1
- package/dist/esm/components/views/chart-view/option-builder/builders/composed.builder.js.map +1 -1
- package/dist/esm/components/views/chart-view/option-builder/builders/funnel.builder.d.ts.map +1 -1
- package/dist/esm/components/views/chart-view/option-builder/builders/funnel.builder.js.map +1 -1
- package/dist/esm/components/views/chart-view/option-builder/builders/gauge.builder.d.ts.map +1 -1
- package/dist/esm/components/views/chart-view/option-builder/builders/gauge.builder.js.map +1 -1
- package/dist/esm/components/views/chart-view/option-builder/builders/heatmap.builder.d.ts.map +1 -1
- package/dist/esm/components/views/chart-view/option-builder/builders/heatmap.builder.js.map +1 -1
- package/dist/esm/components/views/chart-view/option-builder/builders/hierarchical-family.builder.d.ts.map +1 -1
- package/dist/esm/components/views/chart-view/option-builder/builders/hierarchical-family.builder.js.map +1 -1
- package/dist/esm/components/views/chart-view/option-builder/builders/line-family.builder.d.ts.map +1 -1
- package/dist/esm/components/views/chart-view/option-builder/builders/line-family.builder.js.map +1 -1
- package/dist/esm/components/views/chart-view/option-builder/builders/parallel.builder.d.ts.map +1 -1
- package/dist/esm/components/views/chart-view/option-builder/builders/parallel.builder.js.map +1 -1
- package/dist/esm/components/views/chart-view/option-builder/builders/pie-family.builder.d.ts.map +1 -1
- package/dist/esm/components/views/chart-view/option-builder/builders/pie-family.builder.js.map +1 -1
- package/dist/esm/components/views/chart-view/option-builder/builders/radar.builder.d.ts.map +1 -1
- package/dist/esm/components/views/chart-view/option-builder/builders/radar.builder.js.map +1 -1
- package/dist/esm/components/views/chart-view/option-builder/builders/sankey.builder.d.ts.map +1 -1
- package/dist/esm/components/views/chart-view/option-builder/builders/sankey.builder.js.map +1 -1
- package/dist/esm/components/views/chart-view/option-builder/builders/scatter-family.builder.d.ts.map +1 -1
- package/dist/esm/components/views/chart-view/option-builder/builders/scatter-family.builder.js.map +1 -1
- package/dist/esm/components/views/chart-view/option-builder/builders/statistical-family.builder.d.ts.map +1 -1
- package/dist/esm/components/views/chart-view/option-builder/builders/statistical-family.builder.js.map +1 -1
- package/dist/esm/components/views/chart-view/option-builder/chart-type-builder.interface.d.ts.map +1 -1
- package/dist/esm/components/views/chart-view/option-builder/chart-type-builder.interface.js.map +1 -1
- package/dist/esm/components/views/chart-view/option-builder/echarts-option-builder.d.ts.map +1 -1
- package/dist/esm/components/views/chart-view/option-builder/echarts-option-builder.js.map +1 -1
- package/dist/esm/components/views/composite-view/CompositeLayout.d.ts.map +1 -1
- package/dist/esm/components/views/composite-view/CompositeLayout.js.map +1 -1
- package/dist/esm/components/views/composite-view/CompositeView.d.ts.map +1 -1
- package/dist/esm/components/views/composite-view/CompositeView.js.map +1 -1
- package/dist/esm/components/views/composite-view/CompositeViewContext.d.ts.map +1 -1
- package/dist/esm/components/views/composite-view/CompositeViewContext.js.map +1 -1
- package/dist/esm/components/views/composite-view/useCompositeResourceOperationContextBuilder.d.ts.map +1 -1
- package/dist/esm/components/views/composite-view/useCompositeResourceOperationContextBuilder.js.map +1 -1
- package/dist/esm/components/views/composite-view/useHostRecordDerivedParentContext.d.ts.map +1 -1
- package/dist/esm/components/views/composite-view/useHostRecordDerivedParentContext.js.map +1 -1
- package/dist/esm/components/views/execution-view/ExecutionView.d.ts.map +1 -1
- package/dist/esm/components/views/execution-view/ExecutionView.js.map +1 -1
- package/dist/esm/components/views/execution-view/ExecutionView.labels.d.ts.map +1 -1
- package/dist/esm/components/views/execution-view/ExecutionView.labels.js.map +1 -1
- package/dist/esm/components/views/flows-actors-view/FlowsActorsView.d.ts.map +1 -1
- package/dist/esm/components/views/flows-actors-view/FlowsActorsView.js +11 -7
- package/dist/esm/components/views/flows-actors-view/FlowsActorsView.js.map +1 -1
- package/dist/esm/components/views/flows-actors-view/FlowsActorsView.labels.d.ts.map +1 -1
- package/dist/esm/components/views/flows-actors-view/FlowsActorsView.labels.js.map +1 -1
- package/dist/esm/components/views/full-custom-view/FullCustomView.d.ts.map +1 -1
- package/dist/esm/components/views/full-custom-view/FullCustomView.js.map +1 -1
- package/dist/esm/components/views/onboarding-view/OnboardingView.d.ts.map +1 -1
- package/dist/esm/components/views/onboarding-view/OnboardingView.js.map +1 -1
- package/dist/esm/components/views/onboarding-view/OnboardingView.labels.d.ts.map +1 -1
- package/dist/esm/components/views/onboarding-view/OnboardingView.labels.js.map +1 -1
- package/dist/esm/components/views/onboarding-view/onboarding-view.utils.d.ts.map +1 -1
- package/dist/esm/components/views/onboarding-view/onboarding-view.utils.js.map +1 -1
- package/dist/esm/core/app-shell/PortalContainerContext.d.ts.map +1 -1
- package/dist/esm/core/app-shell/PortalContainerContext.js.map +1 -1
- package/dist/esm/core/app-shell/app-shell.schemas.d.ts +40 -18
- package/dist/esm/core/app-shell/app-shell.schemas.d.ts.map +1 -1
- package/dist/esm/core/app-shell/app-shell.schemas.js +0 -5
- package/dist/esm/core/app-shell/app-shell.schemas.js.map +1 -1
- package/dist/esm/core/app-shell/app-shell.utils.d.ts.map +1 -1
- package/dist/esm/core/app-shell/app-shell.utils.js.map +1 -1
- package/dist/esm/core/app-shell/hosted-components.utils.d.ts.map +1 -1
- package/dist/esm/core/app-shell/hosted-components.utils.js.map +1 -1
- package/dist/esm/core/app-shell/useAppShellLayout.d.ts.map +1 -1
- 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.map +1 -1
- package/dist/esm/core/automated-layout/automated-layout.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/automated-layout/automated-layout.frontend.schemas.js.map +1 -1
- package/dist/esm/core/automated-layout/automated-layout.frontend.utils.d.ts +31 -11
- 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 +34 -25
- package/dist/esm/core/automated-layout/automated-layout.frontend.utils.js.map +1 -1
- package/dist/esm/core/automated-layout/default-layout-generator.frontend.utils.d.ts +30 -4
- package/dist/esm/core/automated-layout/default-layout-generator.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/automated-layout/default-layout-generator.frontend.utils.js +232 -17
- package/dist/esm/core/automated-layout/default-layout-generator.frontend.utils.js.map +1 -1
- package/dist/esm/core/billing/BillingContext.d.ts +36 -0
- package/dist/esm/core/billing/BillingContext.d.ts.map +1 -1
- package/dist/esm/core/billing/BillingContext.js +1 -0
- package/dist/esm/core/billing/BillingContext.js.map +1 -1
- package/dist/esm/core/billing/BillingErrorNotifier.d.ts.map +1 -1
- package/dist/esm/core/billing/BillingErrorNotifier.js.map +1 -1
- package/dist/esm/core/billing/billing-launcher.d.ts.map +1 -1
- package/dist/esm/core/billing/billing-launcher.js.map +1 -1
- 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.map +1 -1
- package/dist/esm/core/billing/useBilling.d.ts.map +1 -1
- package/dist/esm/core/billing/useBilling.js.map +1 -1
- package/dist/esm/core/billing/useBillingAction.d.ts.map +1 -1
- package/dist/esm/core/billing/useBillingAction.js.map +1 -1
- package/dist/esm/core/billing/useSafeBillingActionExecutor.d.ts.map +1 -1
- package/dist/esm/core/billing/useSafeBillingActionExecutor.js.map +1 -1
- package/dist/esm/core/branding/useBrandIdentity.d.ts +17 -0
- package/dist/esm/core/branding/useBrandIdentity.d.ts.map +1 -1
- package/dist/esm/core/branding/useBrandIdentity.js +17 -0
- package/dist/esm/core/branding/useBrandIdentity.js.map +1 -1
- package/dist/esm/core/branding/useBrandPresentation.d.ts.map +1 -1
- package/dist/esm/core/branding/useBrandPresentation.js.map +1 -1
- package/dist/esm/core/commons/devices.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/commons/devices.frontend.schemas.js.map +1 -1
- package/dist/esm/core/commons/local-storage.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/commons/local-storage.frontend.schemas.js.map +1 -1
- package/dist/esm/core/commons/window-event.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/commons/window-event.frontend.schemas.js.map +1 -1
- package/dist/esm/core/companion/companion-exports.frontend.definitions.d.ts.map +1 -1
- package/dist/esm/core/companion/companion-exports.frontend.definitions.js.map +1 -1
- package/dist/esm/core/components-registry/ComponentNotInjected.d.ts.map +1 -1
- package/dist/esm/core/components-registry/ComponentNotInjected.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/component-registry-loader.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/components-registry/component-registry-loader.frontend.service.js.map +1 -1
- package/dist/esm/core/components-registry/component-registry.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/components-registry/component-registry.frontend.schemas.js.map +1 -1
- package/dist/esm/core/components-registry/component-registry.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/components-registry/component-registry.frontend.service.js +4 -1
- package/dist/esm/core/components-registry/component-registry.frontend.service.js.map +1 -1
- package/dist/esm/core/components-registry/component-resolver.frontend.helper.d.ts.map +1 -1
- package/dist/esm/core/components-registry/component-resolver.frontend.helper.js +8 -1
- package/dist/esm/core/components-registry/component-resolver.frontend.helper.js.map +1 -1
- package/dist/esm/core/components-registry/provider-component-registry.frontend.service.d.ts +128 -0
- package/dist/esm/core/components-registry/provider-component-registry.frontend.service.d.ts.map +1 -0
- package/dist/esm/core/components-registry/provider-component-registry.frontend.service.js +183 -0
- package/dist/esm/core/components-registry/provider-component-registry.frontend.service.js.map +1 -0
- package/dist/esm/core/components-registry/register-framework-layouts.d.ts.map +1 -1
- package/dist/esm/core/components-registry/register-framework-layouts.js +2 -0
- package/dist/esm/core/components-registry/register-framework-layouts.js.map +1 -1
- package/dist/esm/core/components-registry/useProviderComponent.frontend.hooks.d.ts +68 -0
- package/dist/esm/core/components-registry/useProviderComponent.frontend.hooks.d.ts.map +1 -0
- package/dist/esm/core/components-registry/useProviderComponent.frontend.hooks.js +98 -0
- package/dist/esm/core/components-registry/useProviderComponent.frontend.hooks.js.map +1 -0
- package/dist/esm/core/config/app-configuration-frontend.schemas.d.ts +15 -5
- package/dist/esm/core/config/app-configuration-frontend.schemas.d.ts.map +1 -1
- 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 +44 -7
- 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 +44 -7
- 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 +6 -6
- package/dist/esm/core/config/chart-view.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/config/chart-view.frontend.schemas.js.map +1 -1
- package/dist/esm/core/config/composite-view.schemas.d.ts +4 -4
- package/dist/esm/core/config/composite-view.schemas.d.ts.map +1 -1
- package/dist/esm/core/config/composite-view.schemas.js.map +1 -1
- package/dist/esm/core/config/config-merge-utilities.d.ts.map +1 -1
- package/dist/esm/core/config/config-merge-utilities.js.map +1 -1
- package/dist/esm/core/config/engine-settings-destinations.d.ts +20 -0
- package/dist/esm/core/config/engine-settings-destinations.d.ts.map +1 -1
- package/dist/esm/core/config/engine-settings-destinations.js +90 -5
- package/dist/esm/core/config/engine-settings-destinations.js.map +1 -1
- package/dist/esm/core/config/execution-view.schemas.d.ts.map +1 -1
- package/dist/esm/core/config/execution-view.schemas.js.map +1 -1
- package/dist/esm/core/config/flows-actors-view.schemas.d.ts +5 -3
- package/dist/esm/core/config/flows-actors-view.schemas.d.ts.map +1 -1
- package/dist/esm/core/config/flows-actors-view.schemas.js +2 -2
- package/dist/esm/core/config/flows-actors-view.schemas.js.map +1 -1
- package/dist/esm/core/config/full-custom-view.schemas.d.ts.map +1 -1
- package/dist/esm/core/config/full-custom-view.schemas.js.map +1 -1
- package/dist/esm/core/config/inserted-view-launcher.schemas.d.ts.map +1 -1
- package/dist/esm/core/config/inserted-view-launcher.schemas.js.map +1 -1
- package/dist/esm/core/config/inserted-view.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/config/inserted-view.frontend.schemas.js.map +1 -1
- package/dist/esm/core/config/launcher-items.frontend.schemas.d.ts +51 -11
- package/dist/esm/core/config/launcher-items.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/config/launcher-items.frontend.schemas.js +21 -7
- package/dist/esm/core/config/launcher-items.frontend.schemas.js.map +1 -1
- package/dist/esm/core/config/onboarding-view.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/config/onboarding-view.frontend.schemas.js.map +1 -1
- package/dist/esm/core/config/resource-owned-view-resolution.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/config/resource-owned-view-resolution.frontend.utils.js.map +1 -1
- package/dist/esm/core/config/settings-hub-gating.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/config/settings-hub-gating.frontend.utils.js.map +1 -1
- package/dist/esm/core/config/settings-hub.frontend.schemas.d.ts +14 -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 +13 -0
- package/dist/esm/core/config/settings-hub.frontend.schemas.js.map +1 -1
- package/dist/esm/core/config/useSettingsHubConfig.d.ts.map +1 -1
- package/dist/esm/core/config/useSettingsHubConfig.js.map +1 -1
- package/dist/esm/core/config/useVisibleSettingsHubConfig.d.ts.map +1 -1
- package/dist/esm/core/config/useVisibleSettingsHubConfig.js.map +1 -1
- package/dist/esm/core/config/verify-feature-references.frontend.d.ts +7 -0
- package/dist/esm/core/config/verify-feature-references.frontend.d.ts.map +1 -1
- package/dist/esm/core/config/verify-feature-references.frontend.js +42 -1
- package/dist/esm/core/config/verify-feature-references.frontend.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 +9 -2
- package/dist/esm/core/config/verify-launcher-content.js.map +1 -1
- package/dist/esm/core/config/verify-settings-hub-content.d.ts.map +1 -1
- package/dist/esm/core/config/verify-settings-hub-content.js.map +1 -1
- package/dist/esm/core/config/views-frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/config/views-frontend.schemas.js.map +1 -1
- package/dist/esm/core/enums/common-enum-registry.d.ts.map +1 -1
- package/dist/esm/core/enums/common-enum-registry.js.map +1 -1
- package/dist/esm/core/errors/ErrorBoundary.d.ts.map +1 -1
- package/dist/esm/core/errors/ErrorBoundary.js.map +1 -1
- package/dist/esm/core/errors/ErrorContext.d.ts.map +1 -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.map +1 -1
- package/dist/esm/core/errors/RouterErrorBoundary.d.ts.map +1 -1
- package/dist/esm/core/errors/RouterErrorBoundary.js.map +1 -1
- package/dist/esm/core/errors/error-management.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/errors/error-management.frontend.service.js.map +1 -1
- package/dist/esm/core/errors/errors-builder.frontend.services.d.ts.map +1 -1
- package/dist/esm/core/errors/errors-builder.frontend.services.js.map +1 -1
- package/dist/esm/core/errors/errors.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/errors/errors.frontend.schemas.js.map +1 -1
- package/dist/esm/core/errors/http-error-behavior.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/errors/http-error-behavior.frontend.schemas.js.map +1 -1
- package/dist/esm/core/errors/useError.d.ts.map +1 -1
- package/dist/esm/core/errors/useError.js.map +1 -1
- package/dist/esm/core/errors/withErrorBoundary.d.ts.map +1 -1
- package/dist/esm/core/errors/withErrorBoundary.js.map +1 -1
- package/dist/esm/core/events/EventBusContext.d.ts.map +1 -1
- package/dist/esm/core/events/EventBusContext.js.map +1 -1
- package/dist/esm/core/events/NotificationContext.d.ts +6 -5
- package/dist/esm/core/events/NotificationContext.d.ts.map +1 -1
- package/dist/esm/core/events/NotificationContext.js +41 -39
- package/dist/esm/core/events/NotificationContext.js.map +1 -1
- package/dist/esm/core/events/event-bus.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/events/event-bus.frontend.service.js.map +1 -1
- package/dist/esm/core/events/events.frontend.schemas.d.ts +34 -18
- package/dist/esm/core/events/events.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/events/events.frontend.schemas.js +22 -1
- package/dist/esm/core/events/events.frontend.schemas.js.map +1 -1
- package/dist/esm/core/events/notification-display-policy.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/events/notification-display-policy.frontend.schemas.js.map +1 -1
- package/dist/esm/core/events/toast.d.ts.map +1 -1
- package/dist/esm/core/events/toast.js.map +1 -1
- package/dist/esm/core/events/useEventBus.d.ts.map +1 -1
- package/dist/esm/core/events/useEventBus.js.map +1 -1
- package/dist/esm/core/events/useNotification.d.ts.map +1 -1
- package/dist/esm/core/events/useNotification.js.map +1 -1
- package/dist/esm/core/execution/ExecutionDirtyMarkerScopeContext.d.ts.map +1 -1
- package/dist/esm/core/execution/ExecutionDirtyMarkerScopeContext.js.map +1 -1
- package/dist/esm/core/execution/ExecutionRuntimeContext.d.ts.map +1 -1
- package/dist/esm/core/execution/ExecutionRuntimeContext.js.map +1 -1
- package/dist/esm/core/execution/execution-anchor.utils.d.ts.map +1 -1
- package/dist/esm/core/execution/execution-anchor.utils.js.map +1 -1
- package/dist/esm/core/execution/execution-dirty-markers.utils.d.ts.map +1 -1
- package/dist/esm/core/execution/execution-dirty-markers.utils.js.map +1 -1
- package/dist/esm/core/execution/execution-failure-handling.utils.d.ts.map +1 -1
- package/dist/esm/core/execution/execution-failure-handling.utils.js.map +1 -1
- package/dist/esm/core/execution/execution-outcome-emission.utils.d.ts.map +1 -1
- package/dist/esm/core/execution/execution-outcome-emission.utils.js.map +1 -1
- package/dist/esm/core/execution/execution-participation.utils.d.ts.map +1 -1
- package/dist/esm/core/execution/execution-participation.utils.js.map +1 -1
- package/dist/esm/core/execution/useExecution.d.ts.map +1 -1
- package/dist/esm/core/execution/useExecution.js.map +1 -1
- package/dist/esm/core/execution/useExecutionDirtyBridge.d.ts.map +1 -1
- package/dist/esm/core/execution/useExecutionDirtyBridge.js.map +1 -1
- package/dist/esm/core/execution/useExecutionParticipationDataPrefetch.d.ts.map +1 -1
- package/dist/esm/core/execution/useExecutionParticipationDataPrefetch.js.map +1 -1
- package/dist/esm/core/execution/useExecutionParticipationPrefetch.d.ts.map +1 -1
- package/dist/esm/core/execution/useExecutionParticipationPrefetch.js.map +1 -1
- package/dist/esm/core/execution/useExecutionParticipationRMM.d.ts.map +1 -1
- package/dist/esm/core/execution/useExecutionParticipationRMM.js.map +1 -1
- package/dist/esm/core/execution/useExecutionResourceOperationContextBuilder.d.ts.map +1 -1
- package/dist/esm/core/execution/useExecutionResourceOperationContextBuilder.js.map +1 -1
- package/dist/esm/core/execution/useExecutionResourceOperationSurface.d.ts.map +1 -1
- package/dist/esm/core/execution/useExecutionResourceOperationSurface.js.map +1 -1
- package/dist/esm/core/external-providers/ProviderFilePickerHost.d.ts +66 -0
- package/dist/esm/core/external-providers/ProviderFilePickerHost.d.ts.map +1 -0
- package/dist/esm/core/external-providers/ProviderFilePickerHost.js +101 -0
- package/dist/esm/core/external-providers/ProviderFilePickerHost.js.map +1 -0
- package/dist/esm/core/external-providers/frontend-provider-display-label.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/external-providers/frontend-provider-display-label.frontend.utils.js.map +1 -1
- package/dist/esm/core/external-providers/frontend-provider-registry.frontend.service.d.ts +33 -15
- package/dist/esm/core/external-providers/frontend-provider-registry.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/external-providers/frontend-provider-registry.frontend.service.js +27 -21
- package/dist/esm/core/external-providers/frontend-provider-registry.frontend.service.js.map +1 -1
- package/dist/esm/core/external-providers/provider-file-selection.frontend.utils.d.ts +103 -0
- package/dist/esm/core/external-providers/provider-file-selection.frontend.utils.d.ts.map +1 -0
- package/dist/esm/core/external-providers/provider-file-selection.frontend.utils.js +117 -0
- package/dist/esm/core/external-providers/provider-file-selection.frontend.utils.js.map +1 -0
- package/dist/esm/core/features/FeatureGate.d.ts.map +1 -1
- package/dist/esm/core/features/FeatureGate.js +1 -1
- package/dist/esm/core/features/FeatureGate.js.map +1 -1
- package/dist/esm/core/features/FeatureRouteGuard.d.ts.map +1 -1
- package/dist/esm/core/features/FeatureRouteGuard.js +1 -1
- package/dist/esm/core/features/FeatureRouteGuard.js.map +1 -1
- package/dist/esm/core/features/FeaturesContext.d.ts.map +1 -1
- package/dist/esm/core/features/FeaturesContext.js.map +1 -1
- package/dist/esm/core/features/feature-unavailability.frontend.utils.d.ts +7 -0
- package/dist/esm/core/features/feature-unavailability.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/features/feature-unavailability.frontend.utils.js +5 -0
- package/dist/esm/core/features/feature-unavailability.frontend.utils.js.map +1 -1
- package/dist/esm/core/features/useFeatureAvailability.d.ts +2 -0
- package/dist/esm/core/features/useFeatureAvailability.d.ts.map +1 -1
- package/dist/esm/core/features/useFeatureAvailability.js +4 -2
- package/dist/esm/core/features/useFeatureAvailability.js.map +1 -1
- package/dist/esm/core/features/useFeatureGate.d.ts.map +1 -1
- package/dist/esm/core/features/useFeatureGate.js.map +1 -1
- package/dist/esm/core/features/useFeatures.d.ts.map +1 -1
- package/dist/esm/core/features/useFeatures.js.map +1 -1
- package/dist/esm/core/features/useOperationFeatureAvailability.d.ts.map +1 -1
- package/dist/esm/core/features/useOperationFeatureAvailability.js.map +1 -1
- package/dist/esm/core/flows-actors/FlowsActorsContext.d.ts +20 -1
- package/dist/esm/core/flows-actors/FlowsActorsContext.d.ts.map +1 -1
- package/dist/esm/core/flows-actors/FlowsActorsContext.js +50 -1
- package/dist/esm/core/flows-actors/FlowsActorsContext.js.map +1 -1
- package/dist/esm/core/flows-actors/useFlowsActors.d.ts.map +1 -1
- package/dist/esm/core/flows-actors/useFlowsActors.js.map +1 -1
- package/dist/esm/core/guidance/GuidanceContext.d.ts.map +1 -1
- package/dist/esm/core/guidance/GuidanceContext.js +2 -2
- package/dist/esm/core/guidance/GuidanceContext.js.map +1 -1
- package/dist/esm/core/guidance/GuidanceRenderer.d.ts.map +1 -1
- package/dist/esm/core/guidance/GuidanceRenderer.js.map +1 -1
- package/dist/esm/core/guidance/guidance-audience.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/guidance/guidance-audience.frontend.utils.js.map +1 -1
- package/dist/esm/core/guidance/guidance-resource-compiler.shared.utils.d.ts.map +1 -1
- package/dist/esm/core/guidance/guidance-resource-compiler.shared.utils.js.map +1 -1
- package/dist/esm/core/guidance/renderers/GuidanceAnnouncement.d.ts.map +1 -1
- package/dist/esm/core/guidance/renderers/GuidanceAnnouncement.js.map +1 -1
- package/dist/esm/core/guidance/renderers/GuidanceAnnouncement.labels.d.ts.map +1 -1
- package/dist/esm/core/guidance/renderers/GuidanceAnnouncement.labels.js.map +1 -1
- package/dist/esm/core/guidance/renderers/GuidanceBadge.d.ts.map +1 -1
- package/dist/esm/core/guidance/renderers/GuidanceBadge.js.map +1 -1
- package/dist/esm/core/guidance/renderers/GuidanceBadge.labels.d.ts.map +1 -1
- package/dist/esm/core/guidance/renderers/GuidanceBadge.labels.js.map +1 -1
- package/dist/esm/core/guidance/renderers/GuidanceBanner.d.ts.map +1 -1
- package/dist/esm/core/guidance/renderers/GuidanceBanner.js.map +1 -1
- package/dist/esm/core/guidance/renderers/GuidanceBanner.labels.d.ts.map +1 -1
- package/dist/esm/core/guidance/renderers/GuidanceBanner.labels.js.map +1 -1
- package/dist/esm/core/guidance/renderers/GuidanceCard.d.ts.map +1 -1
- package/dist/esm/core/guidance/renderers/GuidanceCard.js.map +1 -1
- package/dist/esm/core/guidance/renderers/GuidanceCard.labels.d.ts.map +1 -1
- package/dist/esm/core/guidance/renderers/GuidanceCard.labels.js.map +1 -1
- package/dist/esm/core/guidance/renderers/GuidanceChecklist.d.ts.map +1 -1
- package/dist/esm/core/guidance/renderers/GuidanceChecklist.js.map +1 -1
- package/dist/esm/core/guidance/renderers/GuidanceChecklist.labels.d.ts.map +1 -1
- package/dist/esm/core/guidance/renderers/GuidanceChecklist.labels.js.map +1 -1
- package/dist/esm/core/guidance/renderers/GuidanceChecklistItem.d.ts.map +1 -1
- package/dist/esm/core/guidance/renderers/GuidanceChecklistItem.js.map +1 -1
- package/dist/esm/core/guidance/renderers/GuidanceChecklistItem.labels.d.ts.map +1 -1
- package/dist/esm/core/guidance/renderers/GuidanceChecklistItem.labels.js.map +1 -1
- package/dist/esm/core/guidance/renderers/GuidanceModal.d.ts.map +1 -1
- package/dist/esm/core/guidance/renderers/GuidanceModal.js.map +1 -1
- package/dist/esm/core/guidance/renderers/GuidanceModal.labels.d.ts.map +1 -1
- package/dist/esm/core/guidance/renderers/GuidanceModal.labels.js.map +1 -1
- package/dist/esm/core/guidance/renderers/GuidanceSurvey.d.ts.map +1 -1
- package/dist/esm/core/guidance/renderers/GuidanceSurvey.js.map +1 -1
- package/dist/esm/core/guidance/renderers/GuidanceSurvey.labels.d.ts.map +1 -1
- package/dist/esm/core/guidance/renderers/GuidanceSurvey.labels.js.map +1 -1
- package/dist/esm/core/guidance/renderers/GuidanceTooltip.d.ts.map +1 -1
- package/dist/esm/core/guidance/renderers/GuidanceTooltip.js.map +1 -1
- package/dist/esm/core/guidance/renderers/GuidanceTooltip.labels.d.ts.map +1 -1
- package/dist/esm/core/guidance/renderers/GuidanceTooltip.labels.js.map +1 -1
- package/dist/esm/core/guidance/renderers/GuidanceTour.d.ts.map +1 -1
- package/dist/esm/core/guidance/renderers/GuidanceTour.js.map +1 -1
- package/dist/esm/core/guidance/renderers/GuidanceTour.labels.d.ts.map +1 -1
- package/dist/esm/core/guidance/renderers/GuidanceTour.labels.js.map +1 -1
- package/dist/esm/core/guidance/useGuidance.d.ts.map +1 -1
- package/dist/esm/core/guidance/useGuidance.js.map +1 -1
- package/dist/esm/core/hotkey/DefaultHotkeyHandler.d.ts +29 -0
- package/dist/esm/core/hotkey/DefaultHotkeyHandler.d.ts.map +1 -1
- package/dist/esm/core/hotkey/DefaultHotkeyHandler.js +76 -1
- package/dist/esm/core/hotkey/DefaultHotkeyHandler.js.map +1 -1
- package/dist/esm/core/hotkey/HotkeyRegistryContext.d.ts.map +1 -1
- package/dist/esm/core/hotkey/HotkeyRegistryContext.js +44 -8
- package/dist/esm/core/hotkey/HotkeyRegistryContext.js.map +1 -1
- package/dist/esm/core/hotkey/HotkeyShortcutsHelpDialog.d.ts.map +1 -1
- package/dist/esm/core/hotkey/HotkeyShortcutsHelpDialog.js.map +1 -1
- package/dist/esm/core/hotkey/hotkey-registry.frontend.schemas.d.ts +53 -1
- package/dist/esm/core/hotkey/hotkey-registry.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/hotkey/hotkey-registry.frontend.schemas.js +78 -13
- package/dist/esm/core/hotkey/hotkey-registry.frontend.schemas.js.map +1 -1
- package/dist/esm/core/hotkey/merge-hotkey-emit-shortcuts.d.ts.map +1 -1
- package/dist/esm/core/hotkey/merge-hotkey-emit-shortcuts.js.map +1 -1
- package/dist/esm/core/hotkey/useHotkey.d.ts.map +1 -1
- package/dist/esm/core/hotkey/useHotkey.js.map +1 -1
- package/dist/esm/core/i18n/I18nContext.d.ts +9 -0
- package/dist/esm/core/i18n/I18nContext.d.ts.map +1 -1
- package/dist/esm/core/i18n/I18nContext.js +149 -32
- package/dist/esm/core/i18n/I18nContext.js.map +1 -1
- package/dist/esm/core/i18n/component-label-resolution.utils.d.ts.map +1 -1
- package/dist/esm/core/i18n/component-label-resolution.utils.js.map +1 -1
- package/dist/esm/core/i18n/regional-preference-resolution.frontend.utils.d.ts +51 -0
- package/dist/esm/core/i18n/regional-preference-resolution.frontend.utils.d.ts.map +1 -0
- package/dist/esm/core/i18n/regional-preference-resolution.frontend.utils.js +66 -0
- package/dist/esm/core/i18n/regional-preference-resolution.frontend.utils.js.map +1 -0
- package/dist/esm/core/i18n/useI18n.d.ts.map +1 -1
- package/dist/esm/core/i18n/useI18n.js +22 -2
- package/dist/esm/core/i18n/useI18n.js.map +1 -1
- package/dist/esm/core/icons/IconRegistryBridge.d.ts.map +1 -1
- package/dist/esm/core/icons/IconRegistryBridge.js.map +1 -1
- package/dist/esm/core/icons/IconRegistryContext.d.ts.map +1 -1
- package/dist/esm/core/icons/IconRegistryContext.js.map +1 -1
- package/dist/esm/core/icons/icon-registry.frontend.definitions.d.ts.map +1 -1
- package/dist/esm/core/icons/icon-registry.frontend.definitions.js.map +1 -1
- package/dist/esm/core/icons/icon-registry.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/icons/icon-registry.frontend.schemas.js.map +1 -1
- package/dist/esm/core/icons/useIconRegistry.d.ts.map +1 -1
- package/dist/esm/core/icons/useIconRegistry.js.map +1 -1
- package/dist/esm/core/loading/AppLoadingGate.d.ts.map +1 -1
- package/dist/esm/core/loading/AppLoadingGate.js.map +1 -1
- package/dist/esm/core/loading/LoadingBarrier.d.ts.map +1 -1
- package/dist/esm/core/loading/LoadingBarrier.js.map +1 -1
- package/dist/esm/core/loading/LoadingContext.d.ts.map +1 -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 +16 -3
- package/dist/esm/core/loading/LoadingGate.js.map +1 -1
- package/dist/esm/core/loading/loading-policy.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/loading/loading-policy.frontend.schemas.js.map +1 -1
- package/dist/esm/core/loading/loading-scope.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/loading/loading-scope.frontend.utils.js.map +1 -1
- package/dist/esm/core/loading/loading-types.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/loading/loading-types.frontend.schemas.js.map +1 -1
- package/dist/esm/core/loading/resolveLoadingPolicy.d.ts.map +1 -1
- package/dist/esm/core/loading/resolveLoadingPolicy.js.map +1 -1
- package/dist/esm/core/loading/useAppLoading.d.ts.map +1 -1
- package/dist/esm/core/loading/useAppLoading.js.map +1 -1
- package/dist/esm/core/loading/useComponentLoading.d.ts.map +1 -1
- package/dist/esm/core/loading/useComponentLoading.js.map +1 -1
- package/dist/esm/core/loading/useEmitLoadingScope.d.ts.map +1 -1
- package/dist/esm/core/loading/useEmitLoadingScope.js.map +1 -1
- package/dist/esm/core/loading/useLoading.d.ts.map +1 -1
- package/dist/esm/core/loading/useLoading.js.map +1 -1
- package/dist/esm/core/mode/AppModeContext.d.ts.map +1 -1
- package/dist/esm/core/mode/AppModeContext.js.map +1 -1
- package/dist/esm/core/mode/section-visibility.d.ts.map +1 -1
- package/dist/esm/core/mode/section-visibility.js.map +1 -1
- package/dist/esm/core/monitoring/analytics/AnalyticsContext.d.ts.map +1 -1
- package/dist/esm/core/monitoring/analytics/AnalyticsContext.js.map +1 -1
- package/dist/esm/core/monitoring/analytics/AnalyticsEventBridge.d.ts.map +1 -1
- package/dist/esm/core/monitoring/analytics/AnalyticsEventBridge.js.map +1 -1
- 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.map +1 -1
- 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.map +1 -1
- 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.map +1 -1
- 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.map +1 -1
- package/dist/esm/core/monitoring/analytics/useAnalytics.d.ts.map +1 -1
- package/dist/esm/core/monitoring/analytics/useAnalytics.js.map +1 -1
- package/dist/esm/core/monitoring/error-monitoring-bridge.frontend.service.d.ts +97 -0
- package/dist/esm/core/monitoring/error-monitoring-bridge.frontend.service.d.ts.map +1 -0
- package/dist/esm/core/monitoring/error-monitoring-bridge.frontend.service.js +179 -0
- package/dist/esm/core/monitoring/error-monitoring-bridge.frontend.service.js.map +1 -0
- package/dist/esm/core/monitoring/logger.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/monitoring/logger.frontend.service.js.map +1 -1
- package/dist/esm/core/navigation/NavigationContentAreas.d.ts.map +1 -1
- package/dist/esm/core/navigation/NavigationContentAreas.js +76 -48
- package/dist/esm/core/navigation/NavigationContentAreas.js.map +1 -1
- package/dist/esm/core/navigation/NavigationContext.d.ts +12 -0
- package/dist/esm/core/navigation/NavigationContext.d.ts.map +1 -1
- package/dist/esm/core/navigation/NavigationContext.js +24 -0
- package/dist/esm/core/navigation/NavigationContext.js.map +1 -1
- package/dist/esm/core/navigation/NavigationRequestBridge.d.ts.map +1 -1
- package/dist/esm/core/navigation/NavigationRequestBridge.js.map +1 -1
- package/dist/esm/core/navigation/hosted-pane.constants.d.ts.map +1 -1
- package/dist/esm/core/navigation/hosted-pane.constants.js.map +1 -1
- package/dist/esm/core/navigation/launcher-resolution.d.ts +1 -1
- package/dist/esm/core/navigation/launcher-resolution.d.ts.map +1 -1
- package/dist/esm/core/navigation/launcher-resolution.js +1 -1
- package/dist/esm/core/navigation/launcher-resolution.js.map +1 -1
- package/dist/esm/core/navigation/launcher-runtime-availability.d.ts.map +1 -1
- package/dist/esm/core/navigation/launcher-runtime-availability.js.map +1 -1
- 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.map +1 -1
- package/dist/esm/core/navigation/navigation-policy-resolver.service.d.ts +14 -5
- package/dist/esm/core/navigation/navigation-policy-resolver.service.d.ts.map +1 -1
- package/dist/esm/core/navigation/navigation-policy-resolver.service.js +146 -17
- package/dist/esm/core/navigation/navigation-policy-resolver.service.js.map +1 -1
- package/dist/esm/core/navigation/navigation.schemas.d.ts +58 -10
- package/dist/esm/core/navigation/navigation.schemas.d.ts.map +1 -1
- package/dist/esm/core/navigation/navigation.schemas.js +1 -1
- package/dist/esm/core/navigation/navigation.schemas.js.map +1 -1
- package/dist/esm/core/navigation/navigation.utils.d.ts +2 -2
- package/dist/esm/core/navigation/navigation.utils.d.ts.map +1 -1
- package/dist/esm/core/navigation/navigation.utils.js +4 -4
- package/dist/esm/core/navigation/navigation.utils.js.map +1 -1
- package/dist/esm/core/navigation/primary-destination-layout.d.ts.map +1 -1
- package/dist/esm/core/navigation/primary-destination-layout.js.map +1 -1
- package/dist/esm/core/navigation/useIsStackEntryActive.d.ts.map +1 -1
- package/dist/esm/core/navigation/useIsStackEntryActive.js.map +1 -1
- package/dist/esm/core/navigation/useLauncherResolutionContext.d.ts.map +1 -1
- package/dist/esm/core/navigation/useLauncherResolutionContext.js.map +1 -1
- package/dist/esm/core/navigation/useNavigationController.d.ts +8 -0
- package/dist/esm/core/navigation/useNavigationController.d.ts.map +1 -1
- package/dist/esm/core/navigation/useNavigationController.js +26 -6
- package/dist/esm/core/navigation/useNavigationController.js.map +1 -1
- package/dist/esm/core/navigation/useNavigationState.d.ts.map +1 -1
- package/dist/esm/core/navigation/useNavigationState.js.map +1 -1
- package/dist/esm/core/navigation/useOverlayTitle.d.ts.map +1 -1
- package/dist/esm/core/navigation/useOverlayTitle.js.map +1 -1
- package/dist/esm/core/navigation/useTransactionAwareSyncRetry.d.ts.map +1 -1
- package/dist/esm/core/navigation/useTransactionAwareSyncRetry.js.map +1 -1
- package/dist/esm/core/navigation/view-title-resolution.d.ts.map +1 -1
- package/dist/esm/core/navigation/view-title-resolution.js.map +1 -1
- package/dist/esm/core/navigation/zone-content-geometry.d.ts.map +1 -1
- package/dist/esm/core/navigation/zone-content-geometry.js.map +1 -1
- package/dist/esm/core/navigation/zone-empty-behavior.d.ts.map +1 -1
- package/dist/esm/core/navigation/zone-empty-behavior.js.map +1 -1
- package/dist/esm/core/navigation/zone-visible-entry.d.ts +26 -0
- package/dist/esm/core/navigation/zone-visible-entry.d.ts.map +1 -0
- package/dist/esm/core/navigation/zone-visible-entry.js +76 -0
- package/dist/esm/core/navigation/zone-visible-entry.js.map +1 -0
- package/dist/esm/core/requests/api-readiness-checker.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/requests/api-readiness-checker.frontend.service.js.map +1 -1
- package/dist/esm/core/requests/auth-refresh-resilience.frontend.d.ts.map +1 -1
- package/dist/esm/core/requests/auth-refresh-resilience.frontend.js.map +1 -1
- package/dist/esm/core/requests/client-instance-id.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/requests/client-instance-id.frontend.service.js.map +1 -1
- package/dist/esm/core/requests/network-backoff.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/requests/network-backoff.frontend.utils.js.map +1 -1
- package/dist/esm/core/requests/offline-replay-policy.frontend.d.ts.map +1 -1
- package/dist/esm/core/requests/offline-replay-policy.frontend.js.map +1 -1
- package/dist/esm/core/requests/request-cancellation.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/requests/request-cancellation.frontend.utils.js.map +1 -1
- package/dist/esm/core/requests/websockets/ConnectionStatusNotifier.d.ts.map +1 -1
- package/dist/esm/core/requests/websockets/ConnectionStatusNotifier.js.map +1 -1
- package/dist/esm/core/requests/websockets/WebSocketContext.d.ts.map +1 -1
- 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.map +1 -1
- package/dist/esm/core/requests/websockets/useNotificationBadges.d.ts.map +1 -1
- package/dist/esm/core/requests/websockets/useNotificationBadges.js +32 -19
- package/dist/esm/core/requests/websockets/useNotificationBadges.js.map +1 -1
- package/dist/esm/core/requests/websockets/useResourceRoom.d.ts.map +1 -1
- package/dist/esm/core/requests/websockets/useResourceRoom.js.map +1 -1
- package/dist/esm/core/requests/websockets/useWebSocket.d.ts.map +1 -1
- package/dist/esm/core/requests/websockets/useWebSocket.js.map +1 -1
- package/dist/esm/core/requests/websockets/websocket-resource-validation.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/requests/websockets/websocket-resource-validation.frontend.service.js.map +1 -1
- package/dist/esm/core/requests/wildo-http-client-manual-calls.frontend.service.d.ts +73 -2
- 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 +56 -1
- 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.map +1 -1
- package/dist/esm/core/requests/wildo-http-client.frontend.service.d.ts +6 -0
- 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 +1 -0
- package/dist/esm/core/requests/wildo-http-client.frontend.service.js.map +1 -1
- package/dist/esm/core/resources/ResourceOperationViewContext.d.ts.map +1 -1
- package/dist/esm/core/resources/ResourceOperationViewContext.js.map +1 -1
- package/dist/esm/core/resources/ResourceOperationViewProvider.d.ts.map +1 -1
- package/dist/esm/core/resources/ResourceOperationViewProvider.js.map +1 -1
- package/dist/esm/core/resources/ResourceReadCacheBridge.d.ts.map +1 -1
- package/dist/esm/core/resources/ResourceReadCacheBridge.js.map +1 -1
- package/dist/esm/core/resources/ResourceRegistryContext.d.ts.map +1 -1
- package/dist/esm/core/resources/ResourceRegistryContext.js.map +1 -1
- package/dist/esm/core/resources/ScopedResourceRegistryProvider.d.ts.map +1 -1
- package/dist/esm/core/resources/ScopedResourceRegistryProvider.js.map +1 -1
- package/dist/esm/core/resources/collection-export-url.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/resources/collection-export-url.frontend.utils.js.map +1 -1
- package/dist/esm/core/resources/context-resource-identifiers.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/resources/context-resource-identifiers.frontend.utils.js.map +1 -1
- package/dist/esm/core/resources/ephemeral-fields.utils.d.ts.map +1 -1
- package/dist/esm/core/resources/ephemeral-fields.utils.js.map +1 -1
- package/dist/esm/core/resources/file-serve-url.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/resources/file-serve-url.frontend.utils.js.map +1 -1
- package/dist/esm/core/resources/frontend-resource.utils.d.ts.map +1 -1
- package/dist/esm/core/resources/frontend-resource.utils.js.map +1 -1
- package/dist/esm/core/resources/hooks/useOperationEnabled.d.ts.map +1 -1
- package/dist/esm/core/resources/hooks/useOperationEnabled.js.map +1 -1
- package/dist/esm/core/resources/in-place/InPlaceOperationContext.d.ts.map +1 -1
- package/dist/esm/core/resources/in-place/InPlaceOperationContext.js.map +1 -1
- package/dist/esm/core/resources/operation-initiator-satisfaction.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/resources/operation-initiator-satisfaction.frontend.utils.js.map +1 -1
- package/dist/esm/core/resources/operation-semantics.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/resources/operation-semantics.frontend.utils.js.map +1 -1
- package/dist/esm/core/resources/relationship-quick-create.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/resources/relationship-quick-create.frontend.utils.js.map +1 -1
- 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.map +1 -1
- package/dist/esm/core/resources/resource-addressability.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/resources/resource-addressability.frontend.utils.js.map +1 -1
- package/dist/esm/core/resources/resource-operation-view.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/resources/resource-operation-view.frontend.utils.js.map +1 -1
- package/dist/esm/core/resources/resource-path.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/resources/resource-path.frontend.schemas.js.map +1 -1
- package/dist/esm/core/resources/resource-read-cache.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/resources/resource-read-cache.frontend.service.js.map +1 -1
- package/dist/esm/core/resources/resources-repository.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/resources/resources-repository.frontend.service.js.map +1 -1
- package/dist/esm/core/resources/resources.frontend.schemas.d.ts +2 -2
- package/dist/esm/core/resources/resources.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/resources/resources.frontend.schemas.js.map +1 -1
- package/dist/esm/core/resources/rmm/HttpTransportAdapter.d.ts.map +1 -1
- package/dist/esm/core/resources/rmm/HttpTransportAdapter.js.map +1 -1
- package/dist/esm/core/resources/rmm/RMMRegistry.d.ts.map +1 -1
- package/dist/esm/core/resources/rmm/RMMRegistry.js.map +1 -1
- package/dist/esm/core/resources/rmm/RMMRegistryContext.d.ts.map +1 -1
- package/dist/esm/core/resources/rmm/RMMRegistryContext.js.map +1 -1
- package/dist/esm/core/resources/rmm/RMMWebSocketBridge.d.ts.map +1 -1
- package/dist/esm/core/resources/rmm/RMMWebSocketBridge.js.map +1 -1
- package/dist/esm/core/resources/rmm/ResourceMutationManager.d.ts.map +1 -1
- package/dist/esm/core/resources/rmm/ResourceMutationManager.js.map +1 -1
- package/dist/esm/core/resources/rmm/canonical-read.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/resources/rmm/canonical-read.frontend.utils.js.map +1 -1
- package/dist/esm/core/resources/rmm/field-path.utils.d.ts.map +1 -1
- package/dist/esm/core/resources/rmm/field-path.utils.js.map +1 -1
- package/dist/esm/core/resources/rmm/rmm-constants.d.ts.map +1 -1
- package/dist/esm/core/resources/rmm/rmm-constants.js.map +1 -1
- package/dist/esm/core/resources/rmm/rmm-noop-snapshot.d.ts.map +1 -1
- package/dist/esm/core/resources/rmm/rmm-noop-snapshot.js.map +1 -1
- package/dist/esm/core/resources/rmm/types.d.ts.map +1 -1
- package/dist/esm/core/resources/rmm/types.js.map +1 -1
- 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.map +1 -1
- package/dist/esm/core/resources/rmm/useListInvalidation.d.ts.map +1 -1
- package/dist/esm/core/resources/rmm/useListInvalidation.js.map +1 -1
- package/dist/esm/core/resources/rmm/useRMMEventHandler.d.ts.map +1 -1
- package/dist/esm/core/resources/rmm/useRMMEventHandler.js.map +1 -1
- package/dist/esm/core/resources/rmm/useRMMSnapshot.d.ts.map +1 -1
- package/dist/esm/core/resources/rmm/useRMMSnapshot.js.map +1 -1
- package/dist/esm/core/resources/rmm/useResourceMutationManager.d.ts.map +1 -1
- package/dist/esm/core/resources/rmm/useResourceMutationManager.js.map +1 -1
- package/dist/esm/core/resources/rmm/useResourceRMM.d.ts.map +1 -1
- package/dist/esm/core/resources/rmm/useResourceRMM.js.map +1 -1
- package/dist/esm/core/resources/useAuthedFileObjectUrl.frontend.hook.d.ts.map +1 -1
- package/dist/esm/core/resources/useAuthedFileObjectUrl.frontend.hook.js.map +1 -1
- package/dist/esm/core/resources/useHostlessResourceNavigation.d.ts.map +1 -1
- package/dist/esm/core/resources/useHostlessResourceNavigation.js.map +1 -1
- package/dist/esm/core/resources/useOperationEnabled.d.ts.map +1 -1
- package/dist/esm/core/resources/useOperationEnabled.js.map +1 -1
- package/dist/esm/core/resources/useResourceLabels.d.ts.map +1 -1
- package/dist/esm/core/resources/useResourceLabels.js +20 -14
- package/dist/esm/core/resources/useResourceLabels.js.map +1 -1
- package/dist/esm/core/resources/useResourceOperationActions.d.ts.map +1 -1
- package/dist/esm/core/resources/useResourceOperationActions.js.map +1 -1
- package/dist/esm/core/resources/useResourceOperationSurface.d.ts.map +1 -1
- package/dist/esm/core/resources/useResourceOperationSurface.js.map +1 -1
- package/dist/esm/core/resources/useResourceRegistry.d.ts.map +1 -1
- package/dist/esm/core/resources/useResourceRegistry.js.map +1 -1
- package/dist/esm/core/resources/useResourceSelection.d.ts.map +1 -1
- package/dist/esm/core/resources/useResourceSelection.js.map +1 -1
- package/dist/esm/core/resources/utils/operation-enabled-condition.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/resources/utils/operation-enabled-condition.frontend.utils.js.map +1 -1
- package/dist/esm/core/runtime/AppRouter.d.ts.map +1 -1
- package/dist/esm/core/runtime/AppRouter.js +2 -1
- package/dist/esm/core/runtime/AppRouter.js.map +1 -1
- package/dist/esm/core/runtime/ApplicationContext.shared.d.ts +9 -0
- 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.map +1 -1
- package/dist/esm/core/runtime/ApplicationMainContext.js +1 -0
- package/dist/esm/core/runtime/ApplicationMainContext.js.map +1 -1
- package/dist/esm/core/runtime/app-config-overrides.frontend.definitions.d.ts.map +1 -1
- package/dist/esm/core/runtime/app-config-overrides.frontend.definitions.js.map +1 -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.map +1 -1
- package/dist/esm/core/runtime/env-variable-loader.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/runtime/env-variable-loader.frontend.service.js.map +1 -1
- package/dist/esm/core/runtime/frontend-companion-resource-inputs.d.ts.map +1 -1
- package/dist/esm/core/runtime/frontend-companion-resource-inputs.js.map +1 -1
- package/dist/esm/core/runtime/routes.frontend.definitions.d.ts +6 -0
- package/dist/esm/core/runtime/routes.frontend.definitions.d.ts.map +1 -1
- package/dist/esm/core/runtime/routes.frontend.definitions.js +7 -0
- package/dist/esm/core/runtime/routes.frontend.definitions.js.map +1 -1
- package/dist/esm/core/runtime/runtime.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/runtime/runtime.frontend.schemas.js.map +1 -1
- package/dist/esm/core/runtime/start-application.frontend.service.d.ts +38 -0
- package/dist/esm/core/runtime/start-application.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/runtime/start-application.frontend.service.js +84 -3
- package/dist/esm/core/runtime/start-application.frontend.service.js.map +1 -1
- package/dist/esm/core/runtime/useApplication.d.ts.map +1 -1
- package/dist/esm/core/runtime/useApplication.js.map +1 -1
- package/dist/esm/core/scope/AppScopeContext.d.ts.map +1 -1
- package/dist/esm/core/scope/AppScopeContext.js.map +1 -1
- package/dist/esm/core/scope/scope.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/scope/scope.frontend.schemas.js.map +1 -1
- package/dist/esm/core/scope/scope.utils.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/scope/scope.utils.frontend.service.js.map +1 -1
- package/dist/esm/core/scope/useAppScope.d.ts.map +1 -1
- package/dist/esm/core/scope/useAppScope.js.map +1 -1
- package/dist/esm/core/security/AnonymousSessionContext.d.ts.map +1 -1
- package/dist/esm/core/security/AnonymousSessionContext.js.map +1 -1
- package/dist/esm/core/security/AuthSessionContext.d.ts.map +1 -1
- 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.map +1 -1
- package/dist/esm/core/security/UserOrgsContext.d.ts.map +1 -1
- package/dist/esm/core/security/UserOrgsContext.js +37 -9
- package/dist/esm/core/security/UserOrgsContext.js.map +1 -1
- package/dist/esm/core/security/auth-redirect.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/security/auth-redirect.frontend.utils.js.map +1 -1
- package/dist/esm/core/security/auth-session.utils.d.ts.map +1 -1
- package/dist/esm/core/security/auth-session.utils.js.map +1 -1
- package/dist/esm/core/security/cross-frontend-handoff.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/security/cross-frontend-handoff.frontend.service.js.map +1 -1
- package/dist/esm/core/security/jwt.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/security/jwt.frontend.utils.js.map +1 -1
- package/dist/esm/core/security/security.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/security/security.frontend.schemas.js.map +1 -1
- package/dist/esm/core/security/session-token-storage.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/security/session-token-storage.frontend.service.js.map +1 -1
- package/dist/esm/core/security/useAuthSession.d.ts.map +1 -1
- package/dist/esm/core/security/useAuthSession.js.map +1 -1
- package/dist/esm/core/security/useResolvedAuthConfig.d.ts.map +1 -1
- package/dist/esm/core/security/useResolvedAuthConfig.js.map +1 -1
- package/dist/esm/core/security/useStepUpAuth.d.ts.map +1 -1
- package/dist/esm/core/security/useStepUpAuth.js.map +1 -1
- package/dist/esm/core/security/useUserOrgs.d.ts.map +1 -1
- package/dist/esm/core/security/useUserOrgs.js.map +1 -1
- package/dist/esm/core/ui/SurfaceErrorBoundary.d.ts.map +1 -1
- package/dist/esm/core/ui/SurfaceErrorBoundary.js.map +1 -1
- package/dist/esm/core/ui/SurfacePolicyContext.d.ts.map +1 -1
- package/dist/esm/core/ui/SurfacePolicyContext.js.map +1 -1
- package/dist/esm/core/ui/TypographyScopeContext.d.ts.map +1 -1
- package/dist/esm/core/ui/TypographyScopeContext.js.map +1 -1
- package/dist/esm/core/ui/UIContext.d.ts.map +1 -1
- package/dist/esm/core/ui/UIContext.js.map +1 -1
- package/dist/esm/core/ui/chart-style-defaults.d.ts.map +1 -1
- package/dist/esm/core/ui/chart-style-defaults.js.map +1 -1
- package/dist/esm/core/ui/cn.d.ts.map +1 -1
- package/dist/esm/core/ui/cn.js.map +1 -1
- package/dist/esm/core/ui/color-conversion.utils.d.ts.map +1 -1
- package/dist/esm/core/ui/color-conversion.utils.js.map +1 -1
- package/dist/esm/core/ui/design-token-class-groups.d.ts.map +1 -1
- package/dist/esm/core/ui/design-token-class-groups.js.map +1 -1
- package/dist/esm/core/ui/design-token-config.utils.d.ts.map +1 -1
- package/dist/esm/core/ui/design-token-config.utils.js.map +1 -1
- package/dist/esm/core/ui/design-token.utils.d.ts.map +1 -1
- package/dist/esm/core/ui/design-token.utils.js.map +1 -1
- package/dist/esm/core/ui/material-runtime.d.ts.map +1 -1
- package/dist/esm/core/ui/material-runtime.js.map +1 -1
- package/dist/esm/core/ui/surface-a11y.utils.d.ts.map +1 -1
- package/dist/esm/core/ui/surface-a11y.utils.js.map +1 -1
- package/dist/esm/core/ui/theme-preference-storage.shared.d.ts.map +1 -1
- package/dist/esm/core/ui/theme-preference-storage.shared.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.map +1 -1
- package/dist/esm/core/ui/ui.frontend.schemas.d.ts +7 -2
- package/dist/esm/core/ui/ui.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/ui/ui.frontend.schemas.js.map +1 -1
- package/dist/esm/core/ui/useThemePreferenceControl.d.ts.map +1 -1
- package/dist/esm/core/ui/useThemePreferenceControl.js.map +1 -1
- package/dist/esm/core/ui/useUI.d.ts.map +1 -1
- package/dist/esm/core/ui/useUI.js.map +1 -1
- package/dist/esm/index.d.ts +7 -2
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +20 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/tailwind/index.d.ts.map +1 -1
- package/dist/esm/tailwind/index.js.map +1 -1
- package/dist/esm/testing/mock-builders.d.ts.map +1 -1
- package/dist/esm/testing/mock-builders.js +2 -0
- package/dist/esm/testing/mock-builders.js.map +1 -1
- package/dist/esm/testing/mock-factory.d.ts.map +1 -1
- package/dist/esm/testing/mock-factory.js.map +1 -1
- package/dist/esm/testing/rmm-helpers.d.ts.map +1 -1
- package/dist/esm/testing/rmm-helpers.js.map +1 -1
- package/dist/esm/testing/test-providers.d.ts.map +1 -1
- package/dist/esm/testing/test-providers.js.map +1 -1
- package/dist/esm/testing.d.ts.map +1 -1
- package/dist/esm/testing.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +6 -5
- package/dist/esm/components/billing/billing-plan-change-preview.d.ts +0 -21
- package/dist/esm/components/billing/billing-plan-change-preview.d.ts.map +0 -1
- package/dist/esm/components/billing/billing-plan-change-preview.js +0 -12
- package/dist/esm/components/billing/billing-plan-change-preview.js.map +0 -1
- package/dist/esm/components/billing/billing-promotion-code-input.d.ts +0 -12
- package/dist/esm/components/billing/billing-promotion-code-input.d.ts.map +0 -1
- package/dist/esm/components/billing/billing-promotion-code-input.js +0 -11
- package/dist/esm/components/billing/billing-promotion-code-input.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResourceMutationManager.js","sourceRoot":"","sources":["../../../../../../src/core/resources/rmm/ResourceMutationManager.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * ResourceMutationManager — Production Implementation (Phase 1.1)\n *\n * Pure TypeScript class that owns all mutation state for a single resource instance.\n * Consumers observe state via useSyncExternalStore(rmm.subscribe, rmm.getSnapshot).\n * Side-effect events via useEffect([snapshot.lastEvent?.id]).\n *\n * State machine: IDLE → QUEUED → SAVING → IDLE (happy path)\n * SAVING → ERROR → SAVING (retry) → IDLE (exhaust: optimistic\n * state REVERTS to confirmedData + user-visible failure)\n * SAVING → CONFLICT → IDLE (acknowledge)\n * ANY → DELETED (terminal)\n */\n\nimport type {\n RMMEvent,\n RMMSnapshot,\n ResourceMutationManagerConfig,\n MutationQueueEntry,\n MutationSource,\n MutationResult,\n MutationError,\n ActiveMutation,\n BackpressureConfig,\n DeferredSelfEvent,\n OperationDescriptor,\n OperationResult,\n CRDTFieldTimestamps,\n} from './types';\nimport type { FieldMetaEntry } from '@wildo-ai/saas-models';\nimport {\n DataMode,\n extractCrdtFieldNames,\n lwwFieldWinner,\n nextMonotonicTimestamp,\n CrdtResolutionWinner,\n sanitizeFieldMeta,\n CoreResourceOperation,\n ErrorCustomMessageReference,\n ResourcesConfig_OperationPathUtils,\n} from '@wildo-ai/saas-models';\nimport { frontendEventBus } from '~wildo-frontend-lib/core/events/event-bus.frontend.service';\nimport { FrontendEvents } from '~wildo-frontend-lib/core/events/events.frontend.schemas';\nimport {\n RMMState,\n RMMEventType,\n MutationType,\n MutationSourceType,\n MutationErrorType,\n OperationResultStatus,\n ConflictStrategy,\n ConflictReason,\n DeletionReason,\n MutationPriority,\n MutationCancelledError,\n ResourceDeletedError,\n BackpressureRejectedError,\n} from './types';\nimport {\n RMM_HARD_TIMEOUT_MS,\n RMM_MAX_QUEUE_DEPTH,\n RMM_SERVER_RETRY_DELAY_MS,\n RMM_SOFT_TIMEOUT_MS,\n RMM_TRANSIENT_RETRY_DELAYS,\n} from './rmm-constants';\nimport { rmmFieldPathsOverlap, rmmNormalizeFieldPath, rmmReadPathValue } from './field-path.utils';\nimport { LoggerFrontendService } from '~wildo-frontend-lib/core/monitoring/logger.frontend.service';\n\n// =============================================================================\n// LOGGING\n// =============================================================================\n\nconst logger = LoggerFrontendService.getLogger();\nconst logDebug = logger.debugByType('ResourceMutationManager');\nlogger.setDebugTypeLogging('ResourceMutationManager', false);\n\n/**\n * Cap on remembered self-produced versions (see `_producedVersions`). Only very\n * recent self-versions can still be in flight over the WebSocket, so a small\n * bound is ample; it prevents unbounded growth on long-lived, heavily-edited\n * resources.\n */\nconst PRODUCED_VERSIONS_MAX = 64;\n\n// =============================================================================\n// MODULE HELPERS\n// =============================================================================\n\n/**\n * Read a value at a possibly-DOTTED path, mirroring `deepSetByPath`'s traversal and normalisation.\n *\n * Used to ask whether the server ECHOED a value for a field the caller cleared. A dotted key cannot\n * be answered by a flat lookup: the read-back carries `{ address: { city: 'X' } }`, never a literal\n * `'address.city'` key, so a flat probe would report \"no echo\" for every nested field and clear it\n * even when the server said otherwise.\n */\nfunction deepReadByPath(obj: Record<string, unknown>, path: string): unknown {\n const segments = rmmNormalizeFieldPath(path).split('.').filter(Boolean);\n let current: unknown = obj;\n for (const segment of segments) {\n if (current === null || current === undefined || typeof current !== 'object') return undefined;\n current = Array.isArray(current)\n ? (current as unknown[])[Number(segment)]\n : (current as Record<string, unknown>)[segment];\n }\n return current;\n}\n\nfunction deepSetByPath(obj: Record<string, unknown>, path: string, value: unknown): void {\n const segments = rmmNormalizeFieldPath(path).split('.').filter(Boolean);\n let current: Record<string, unknown> | unknown[] = obj;\n for (let i = 0; i < segments.length - 1; i++) {\n const seg = segments[i];\n const nextSegment = segments[i + 1];\n const nextContainer = /^\\d+$/.test(nextSegment) ? [] : {};\n\n if ((current as Record<string, unknown>)[seg] === undefined || (current as Record<string, unknown>)[seg] === null || typeof (current as Record<string, unknown>)[seg] !== 'object') {\n if (value === undefined) return;\n (current as Record<string, unknown>)[seg] = nextContainer;\n }\n current = (current as Record<string, unknown>)[seg] as Record<string, unknown> | unknown[];\n }\n const lastSeg = segments[segments.length - 1];\n if (value === undefined) {\n if (Array.isArray(current) && /^\\d+$/.test(lastSeg)) {\n delete current[Number(lastSeg)];\n } else {\n delete (current as Record<string, unknown>)[lastSeg];\n }\n } else {\n if (Array.isArray(current) && /^\\d+$/.test(lastSeg)) {\n current[Number(lastSeg)] = value;\n } else {\n (current as Record<string, unknown>)[lastSeg] = value;\n }\n }\n}\n\n\n// =============================================================================\n// INTERNAL TYPES\n// =============================================================================\n\nenum TransitionEventType {\n QUEUE_MUTATION = 'QUEUE_MUTATION',\n START_SAVING = 'START_SAVING',\n SAVE_SUCCESS = 'SAVE_SUCCESS',\n SAVE_ERROR = 'SAVE_ERROR',\n RETRY = 'RETRY',\n CONFLICT_DETECTED = 'CONFLICT_DETECTED',\n CONFLICT_ACKNOWLEDGED = 'CONFLICT_ACKNOWLEDGED',\n CANCEL = 'CANCEL',\n DELETE = 'DELETE',\n REMOTE_UPDATE = 'REMOTE_UPDATE',\n}\n\ntype TransitionEvent =\n | { type: TransitionEventType.QUEUE_MUTATION }\n | { type: TransitionEventType.START_SAVING }\n | { type: TransitionEventType.SAVE_SUCCESS; result: OperationResult; savedFields: string[]; clearedFields: string[]; source: MutationSource }\n | { type: TransitionEventType.SAVE_ERROR; result: OperationResult; savedFields: string[]; source: MutationSource }\n | { type: TransitionEventType.RETRY }\n | {\n type: TransitionEventType.CONFLICT_DETECTED;\n discardedFields: string[];\n reason: ConflictReason;\n currentData: Record<string, unknown>;\n currentVersion: number;\n conflictDetails?: MutationError['conflictDetails'];\n }\n | { type: TransitionEventType.CONFLICT_ACKNOWLEDGED }\n | { type: TransitionEventType.CANCEL }\n | { type: TransitionEventType.DELETE; reason: DeletionReason; deletedBy?: string }\n | { type: TransitionEventType.REMOTE_UPDATE; changedFields: string[]; mergedFields: string[]; version: number; initiatorUserId: string; crdtResolutions?: Record<string, CrdtResolutionWinner> };\n\n// =============================================================================\n// CONSTANTS\n// =============================================================================\n\nconst DEFAULT_AUTOSAVE_SOURCE: MutationSource = { type: MutationSourceType.FORM, subscriberId: 'autosave' };\n\nconst DEFAULT_BACKPRESSURE: BackpressureConfig = {\n maxQueueDepth: RMM_MAX_QUEUE_DEPTH,\n softTimeoutMs: RMM_SOFT_TIMEOUT_MS,\n hardTimeoutMs: RMM_HARD_TIMEOUT_MS,\n};\n\n// =============================================================================\n// CLASS\n// =============================================================================\n\nexport class ResourceMutationManager {\n // --- Identity ---\n readonly resourceType: string;\n private _resourceId: string | null;\n\n // --- Data (two-tier: confirmed vs optimistic) ---\n private _confirmedData: Record<string, unknown> | null = null;\n private _version: number | null = null;\n\n // --- Mutation State ---\n private _pendingFields: Map<string, unknown> = new Map();\n private _queue: MutationQueueEntry[] = [];\n private _activeMutation: ActiveMutation | null = null;\n private _state: RMMState = RMMState.IDLE;\n private _lastError: MutationError | null = null;\n\n // --- Declarative Event Model ---\n private _lastEvent: RMMEvent | null = null;\n private _eventCounter = 0;\n\n // --- Snapshot (for useSyncExternalStore) ---\n private _snapshotVersion = 0;\n private _cachedSnapshot: RMMSnapshot | null = null;\n private _cachedSnapshotVersion = -1;\n private _snapshotListeners: Set<() => void> = new Set();\n\n // --- Optimistic Data Memoization ---\n private _optimisticDataVersion = -1;\n private _cachedOptimisticData: Record<string, unknown> | null = null;\n\n // --- Config ---\n private _config: ResourceMutationManagerConfig;\n private _mutationIdCounter = 0;\n\n // --- Retry ---\n private _retryTimer: ReturnType<typeof setTimeout> | null = null;\n private _retryDelays = [...RMM_TRANSIENT_RETRY_DELAYS];\n private _serverRetryDelay = RMM_SERVER_RETRY_DELAY_MS;\n private _authoritativeRecoveryTimer: ReturnType<typeof setTimeout> | null = null;\n\n // --- Backpressure ---\n private _backpressure: BackpressureConfig;\n private _softTimer: ReturnType<typeof setTimeout> | null = null;\n private _hardTimer: ReturnType<typeof setTimeout> | null = null;\n\n // --- WebSocket Event Deferral (Phase 4 — data structure only) ---\n private _deferredSelfEvents: DeferredSelfEvent[] = [];\n private _allowSettledSelfEventRepair = false;\n\n // Server versions THIS tab's own confirmed mutations minted. A WebSocket echo\n // whose version is in this set is this tab's own optimistic echo (discard /\n // defer); a version NOT in it is a change from another client — even another\n // tab of the same user — so it is applied. See `_isOwnEcho`. Bounded FIFO.\n private _producedVersions: Set<number> = new Set();\n\n // --- CRDT Metadata ---\n private _crdtFieldNames: ReadonlySet<string>;\n private _fieldMeta: Record<string, FieldMetaEntry> | null = null;\n private _pendingFieldTimestamps: Map<string, number> = new Map();\n private _lastIssuedLocalTimestamp = 0;\n private _clockOffset: number = 0;\n\n // --- Destroy ---\n private _onDrainCallbacks: Array<() => void> = [];\n\n constructor(config: ResourceMutationManagerConfig) {\n this._config = config;\n this.resourceType = config.resourceType;\n this._resourceId = config.resourceId;\n const bp = config.backpressure;\n this._backpressure = {\n maxQueueDepth: bp?.maxQueueDepth ?? DEFAULT_BACKPRESSURE.maxQueueDepth,\n softTimeoutMs: bp?.softTimeoutMs ?? DEFAULT_BACKPRESSURE.softTimeoutMs,\n hardTimeoutMs: bp?.hardTimeoutMs ?? DEFAULT_BACKPRESSURE.hardTimeoutMs,\n };\n this._crdtFieldNames = extractCrdtFieldNames(config.resourceSchema);\n\n this.subscribe = this.subscribe.bind(this);\n this.getSnapshot = this.getSnapshot.bind(this);\n\n logDebug('constructor', {\n resourceType: config.resourceType,\n resourceId: config.resourceId,\n conflictStrategy: config.conflictPolicy.strategy,\n operationPathKey: config.operationPathKey,\n crdtFieldCount: this._crdtFieldNames.size,\n crdtFields: Array.from(this._crdtFieldNames),\n });\n }\n\n /**\n * Returns a strictly positive client timestamp for CRDT ordering.\n * Uses clock calibration from the registry; falls back to raw Date.now() when offset is 0.\n *\n * For a given CRDT field, the timestamp reflects the **last** local edit\n * enqueued (e.g. last autosave batch / submit merge), not the first keystroke.\n */\n private _getAdjustedTimestamp(): number {\n const raw = Date.now() + this._clockOffset;\n this._lastIssuedLocalTimestamp = nextMonotonicTimestamp(Math.max(1, raw), this._lastIssuedLocalTimestamp);\n return this._lastIssuedLocalTimestamp;\n }\n\n private _isCrdtManagedField(field: string): boolean {\n return this._crdtFieldNames.has(field) || this._crdtFieldNames.has(field.split('.')[0] ?? field);\n }\n\n set clockOffset(offset: number) {\n this._clockOffset = offset;\n }\n\n // =============================================================================\n // PUBLIC API — Identity\n // =============================================================================\n\n get resourceId(): string | null {\n return this._resourceId;\n }\n\n /** Contextual parameters used for doOperation routing (e.g., parent IDs for nested resources). */\n get contextualParameters(): Record<string, string | number> {\n return this._config.contextualParameters;\n }\n\n /** Context identifiers used to authorize and subscribe to the resource room. */\n get contextResourceIdentifiers(): Record<string, string> {\n return this._config.contextResourceIdentifiers ?? {};\n }\n\n /** Parent resource requirements for nested resource resolution during reconnection refetch. */\n get parentResourcesRequirements(): unknown[] | undefined {\n return this._config.parentResourcesRequirements;\n }\n\n /** Canonical READ path used for authoritative reseed/read-back flows. */\n get readOperationPathKey(): string | undefined {\n return this._config.readOperationPathKey;\n }\n\n /**\n * Applies runtime updates after the RMM was created via\n * `RMMRegistry.getOrCreate`. Registry identity stays `(resourceType, resourceId)`;\n * this patches the config used for `OperationDescriptor`, transport ownership,\n * self-event detection, and any caller-provided conflict / CRDT semantics that\n * are expected to stay aligned when a live surface reuses an existing instance.\n */\n syncRuntimeRoutingConfig(patch: {\n transportAdapter?: ResourceMutationManagerConfig['transportAdapter'];\n currentUserId: string;\n contextResourceIdentifiers?: Record<string, string>;\n contextualParameters: Record<string, string | number>;\n parentResourcesRequirements?: unknown[];\n operationPathKey?: string;\n readOperationPathKey?: string;\n conflictPolicy?: ResourceMutationManagerConfig['conflictPolicy'];\n resourceSchema?: ResourceMutationManagerConfig['resourceSchema'];\n }): void {\n if (this._state === RMMState.DELETED) return;\n\n const hasReadOperationPathKeyPatch = Object.prototype.hasOwnProperty.call(\n patch,\n 'readOperationPathKey',\n );\n const hasParentResourcesRequirementsPatch = Object.prototype.hasOwnProperty.call(\n patch,\n 'parentResourcesRequirements',\n );\n const didUpdateOperationPathKey =\n patch.operationPathKey !== undefined && patch.operationPathKey !== this._config.operationPathKey;\n const didUpdateReadOperationPathKey =\n hasReadOperationPathKeyPatch && patch.readOperationPathKey !== this._config.readOperationPathKey;\n const didUpdateTransportAdapter =\n patch.transportAdapter !== undefined && patch.transportAdapter !== this._config.transportAdapter;\n const didUpdateConflictPolicy =\n patch.conflictPolicy !== undefined\n && patch.conflictPolicy.strategy !== this._config.conflictPolicy.strategy;\n const didUpdateResourceSchema =\n patch.resourceSchema !== undefined && patch.resourceSchema !== this._config.resourceSchema;\n\n this._config = {\n ...this._config,\n ...(patch.transportAdapter !== undefined ? { transportAdapter: patch.transportAdapter } : {}),\n currentUserId: patch.currentUserId,\n ...(patch.contextResourceIdentifiers !== undefined\n ? { contextResourceIdentifiers: { ...patch.contextResourceIdentifiers } }\n : {}),\n contextualParameters: { ...patch.contextualParameters },\n ...(hasParentResourcesRequirementsPatch\n ? { parentResourcesRequirements: patch.parentResourcesRequirements }\n : {}),\n ...(patch.operationPathKey !== undefined ? { operationPathKey: patch.operationPathKey } : {}),\n ...(hasReadOperationPathKeyPatch ? { readOperationPathKey: patch.readOperationPathKey } : {}),\n ...(patch.conflictPolicy !== undefined ? { conflictPolicy: patch.conflictPolicy } : {}),\n ...(patch.resourceSchema !== undefined ? { resourceSchema: patch.resourceSchema } : {}),\n };\n\n if (didUpdateResourceSchema) {\n this._crdtFieldNames = extractCrdtFieldNames(patch.resourceSchema);\n }\n\n logDebug('syncRuntimeRoutingConfig', {\n resourceType: this.resourceType,\n resourceId: this._resourceId,\n hasUserId: patch.currentUserId.length > 0,\n didUpdateOperationPathKey,\n didUpdateReadOperationPathKey,\n didUpdateTransportAdapter,\n didUpdateConflictPolicy,\n didUpdateResourceSchema,\n crdtFieldCount: this._crdtFieldNames.size,\n });\n\n if (didUpdateOperationPathKey || didUpdateReadOperationPathKey) {\n this._invalidateSnapshot();\n }\n }\n\n // =============================================================================\n // PUBLIC API — State Management\n // =============================================================================\n\n /**\n * May be called multiple times (e.g., on refetch or WS reconnection).\n * Replaces _confirmedData and _version. Preserves _pendingFields.\n */\n setInitialState(\n data: Record<string, unknown>,\n version: number,\n _fieldMeta?: Record<string, FieldMetaEntry>,\n ): void {\n if (this._state === RMMState.DELETED) return;\n\n this._confirmedData = { ...data };\n this._version = version;\n this._clearAuthoritativeRecoveryTimer();\n this._allowSettledSelfEventRepair = false;\n const rawMeta = _fieldMeta ?? (data._field_meta as Record<string, FieldMetaEntry> | undefined);\n this._fieldMeta = rawMeta != null ? sanitizeFieldMeta(rawMeta) : null;\n this._invalidateSnapshot();\n\n logDebug('setInitialState', {\n resourceId: this._resourceId,\n version,\n fieldCount: Object.keys(data).length,\n pendingFieldCount: this._pendingFields.size,\n hasFieldMeta: this._fieldMeta !== null,\n });\n }\n\n // =============================================================================\n // PUBLIC API — Mutations\n // =============================================================================\n\n /**\n * Queue a mutation. Returns a Promise that resolves with MutationResult on\n * completion (success or server error). Rejects only for cancellation\n * (MutationCancelledError) or deletion (ResourceDeletedError).\n *\n * For HIGH-priority mutations (submit/draft/publish), all pending LOW fields\n * are merged in and the accumulator is cleared.\n */\n queueMutation(\n fields: Record<string, unknown>,\n options?: {\n type?: MutationQueueEntry['type'];\n priority?: MutationPriority;\n source?: MutationSource;\n signal?: AbortSignal;\n transportOverride?: MutationQueueEntry['transportOverride'];\n },\n ): Promise<MutationResult> {\n if (this._state === RMMState.DELETED) {\n logDebug('queueMutation: rejected — resource deleted', { resourceId: this._resourceId });\n return Promise.reject(new ResourceDeletedError());\n }\n\n const priority = options?.priority ?? MutationPriority.LOW;\n const type = options?.type ?? MutationType.AUTOSAVE;\n const source = options?.source ?? DEFAULT_AUTOSAVE_SOURCE;\n\n if (this._queue.length >= this._backpressure.maxQueueDepth && priority <= MutationPriority.LOW) {\n logDebug('queueMutation: rejected — backpressure', {\n queueDepth: this._queue.length,\n maxDepth: this._backpressure.maxQueueDepth,\n });\n return Promise.reject(new BackpressureRejectedError());\n }\n\n logDebug('queueMutation', {\n type,\n priority,\n source: source.subscriberId,\n fields: Object.keys(fields),\n state: this._state,\n queueDepth: this._queue.length,\n pendingFieldCount: this._pendingFields.size,\n });\n\n return new Promise<MutationResult>((resolve, reject) => {\n const entry: MutationQueueEntry = {\n id: `mut_${++this._mutationIdCounter}`,\n type,\n fields: { ...fields },\n priority,\n source,\n resolve,\n reject,\n signal: options?.signal,\n transportOverride: options?.transportOverride,\n };\n\n if (priority >= MutationPriority.HIGH) {\n for (const [key, value] of this._pendingFields) {\n if (!(key in entry.fields)) {\n entry.fields[key] = value;\n }\n }\n this._pendingFields.clear();\n // Record timestamps for CRDT fields in the submit that weren't already timestamped\n for (const key of Object.keys(entry.fields)) {\n if (this._isCrdtManagedField(key) && !this._pendingFieldTimestamps.has(key)) {\n this._pendingFieldTimestamps.set(key, this._getAdjustedTimestamp());\n }\n }\n } else {\n for (const [key, value] of Object.entries(fields)) {\n this._pendingFields.set(key, value);\n if (this._isCrdtManagedField(key)) {\n this._pendingFieldTimestamps.set(key, this._getAdjustedTimestamp());\n }\n }\n }\n\n this._queue.push(entry);\n this._queue.sort((a, b) => b.priority - a.priority);\n\n if (this._queue.length > 1) {\n this._autoCoalesceQueue();\n }\n\n this._transition({ type: TransitionEventType.QUEUE_MUTATION });\n this._processQueue();\n });\n }\n\n /**\n * Fire-and-forget convenience for autosave.\n * Errors are observable via snapshot.lastEvent, not via Promise.\n */\n autosave(fields: Record<string, unknown>): void {\n this.queueMutation(fields, {\n type: MutationType.AUTOSAVE,\n priority: MutationPriority.LOW,\n source: DEFAULT_AUTOSAVE_SOURCE,\n }).catch(() => {\n // Swallowed — errors delivered via lastEvent\n });\n }\n\n /**\n * Queue all accumulated pending fields as a single mutation.\n * Returns null if no pending fields exist.\n */\n flushPendingFields(options?: {\n priority?: MutationPriority;\n source?: MutationSource;\n signal?: AbortSignal;\n }): Promise<MutationResult | null> {\n if (this._pendingFields.size === 0) return Promise.resolve(null);\n\n const fields: Record<string, unknown> = {};\n for (const [key, value] of this._pendingFields) {\n fields[key] = value;\n }\n\n return this.queueMutation(fields, {\n type: MutationType.AUTOSAVE,\n priority: options?.priority ?? MutationPriority.NORMAL,\n source: options?.source ?? DEFAULT_AUTOSAVE_SOURCE,\n signal: options?.signal,\n });\n }\n\n /**\n * Cancel all pending and in-flight mutations. Rejects Promises with\n * MutationCancelledError. Aborts in-flight via AbortController.\n * Pending field accumulator is preserved (hasUnsavedChanges stays true).\n */\n cancelPendingMutations(source?: MutationSource): void {\n if (this._state === RMMState.DELETED) return;\n\n logDebug('cancelPendingMutations', {\n source: source?.subscriberId,\n queueDepth: this._queue.length,\n hasActiveMutation: this._activeMutation !== null,\n pendingFieldCount: this._pendingFields.size,\n });\n\n if (this._retryTimer) {\n clearTimeout(this._retryTimer);\n this._retryTimer = null;\n }\n\n if (this._activeMutation) {\n this._activeMutation.abortController.abort();\n this._activeMutation.entry.reject(new MutationCancelledError(source));\n this._activeMutation = null;\n }\n\n for (const entry of this._queue) {\n entry.reject(new MutationCancelledError(source));\n }\n this._queue = [];\n this._deferredSelfEvents = [];\n this._pendingFieldTimestamps.clear();\n\n this._transition({ type: TransitionEventType.CANCEL });\n }\n\n /**\n * Transition out of CONFLICT state. Typically called by the consumer after\n * showing a conflict banner and resetting the form to remote data.\n */\n acknowledgeConflict(): void {\n if (this._state !== RMMState.CONFLICT) return;\n logDebug('acknowledgeConflict', { resourceId: this._resourceId });\n this._transition({ type: TransitionEventType.CONFLICT_ACKNOWLEDGED });\n this._processQueue();\n }\n\n // =============================================================================\n // PUBLIC API — Remote Events\n // =============================================================================\n\n /**\n * Whether an incoming remote update is THIS tab's OWN echo (so it should be\n * deferred/discarded rather than applied).\n *\n * The signal is the **server version**, not the user id. Server `_version`s\n * are a monotonic, per-resource counter: the version produced by one tab's\n * mutation is globally unique, so `_producedVersions` (the versions THIS\n * manager's own confirmed mutations minted) identifies this tab's echoes\n * exactly. A change from ANOTHER tab — even the SAME user — carries a version\n * this tab never produced, so it is (correctly) foreign and gets applied.\n *\n * WHY NOT `initiatorUserId === currentUserId` (the previous check): that\n * treated EVERY same-user tab as \"self\" and silently discarded cross-tab\n * updates — the multi-tab-stale bug (two tabs of one user never see each\n * other's edits; the receiver logged `self-event discarded`).\n *\n * Fail-open: if a produced version was never recorded (e.g. the HTTP response\n * was lost but the echo arrived), the echo is treated as foreign and APPLIED\n * — harmless, since it carries the authoritative value the tab would have\n * confirmed anyway (and the bridge's field-diff skips it when it's a no-op).\n */\n private _isOwnEcho(version: number): boolean {\n return this._producedVersions.has(version);\n }\n\n /**\n * Record a server version this manager's own mutation just minted, so a later\n * WebSocket echo of that same version is recognised as this tab's own and not\n * re-applied. Bounded (FIFO) — only recent self-versions can still be in\n * flight over the wire; older ones are pruned.\n */\n private _recordProducedVersion(version: number | undefined): void {\n if (version == null) return;\n this._producedVersions.add(version);\n if (this._producedVersions.size > PRODUCED_VERSIONS_MAX) {\n // Sets preserve insertion order → the first key is the oldest.\n const oldest = this._producedVersions.values().next().value;\n if (oldest !== undefined) this._producedVersions.delete(oldest);\n }\n }\n\n /**\n * Apply a remote update from another client (typically via WebSocket).\n *\n * Self-event handling: an echo of a version THIS tab produced (see\n * {@link _isOwnEcho}) is deferred while a mutation is in-flight (so the\n * canonical HTTP/read-back path settles confirmed truth first) and otherwise\n * discarded (the HTTP response already applied it). An update from ANOTHER tab\n * — even the same user — carries a version this tab never produced, so it is\n * foreign and applied.\n *\n * Silent merge when no pending field overlap. Falls through to conflictPolicy\n * when overlap exists.\n */\n applyRemoteUpdate(\n changedFields: Record<string, unknown>,\n version: number,\n initiatorUserId?: string,\n _fieldMeta?: Record<string, FieldMetaEntry>,\n ): void {\n if (this._state === RMMState.DELETED) return;\n\n if (this._isOwnEcho(version)) {\n if (this._activeMutation !== null) {\n // This tab's own echo, deferred while the matching mutation is still in\n // flight so the canonical HTTP/read-back path settles confirmed truth\n // first.\n logDebug('applyRemoteUpdate: own-echo deferred (mutation in-flight)', {\n version,\n activeMutationId: this._activeMutation.entry.id,\n });\n this._deferredSelfEvents.push({ changedFields, version, initiatorUserId, fieldMeta: _fieldMeta });\n return;\n }\n if (this._allowSettledSelfEventRepair) {\n // If the immediate authoritative read-back missed, one later settled\n // own-echo may repair confirmed truth instead of being discarded.\n this._clearAuthoritativeRecoveryTimer();\n this._allowSettledSelfEventRepair = false;\n logDebug('applyRemoteUpdate: accepting settled own-echo after canonical read-back miss', { version });\n this._applyRemoteUpdateInternal(changedFields, version, initiatorUserId, _fieldMeta, true);\n return;\n }\n logDebug('applyRemoteUpdate: own-echo discarded (no in-flight mutation)', { version });\n return;\n }\n\n // In-flight race guard (complements the version-correlated self-check above).\n // While a mutation is in flight the version WE are about to produce is not\n // yet known — `_isOwnEcho` cannot recognise this tab's own echo until the\n // HTTP response records the produced version. An echo from the CURRENT user\n // arriving in that window is EITHER (a) this tab's own echo racing ahead of\n // its HTTP response, OR (b) a concurrent commit from ANOTHER tab of the same\n // user. Defer either way; once our mutation settles,\n // `_processDeferredSelfEvents(producedVersion)` discards the deferred event\n // whose version matches ours (own echo) and applies the rest as remote\n // changes — so the same-user-other-tab case (b) still lands (the multi-tab\n // fix), just after our own mutation settles.\n //\n // Without this, an own echo that beats the HTTP response is treated as a\n // foreign change and spuriously CONFLICTS with the in-flight pending fields,\n // cancelling a mutation that actually succeeded. User-id here is only a\n // \"defer for now\" heuristic — version correlation still makes the final\n // discard-vs-apply decision, so it never mis-discards another tab's change.\n if (\n this._activeMutation !== null\n && initiatorUserId !== undefined\n && initiatorUserId === this._config.currentUserId\n ) {\n logDebug('applyRemoteUpdate: same-user echo deferred (mutation in-flight, version not yet known)', {\n version,\n activeMutationId: this._activeMutation.entry.id,\n });\n this._deferredSelfEvents.push({ changedFields, version, initiatorUserId, fieldMeta: _fieldMeta });\n return;\n }\n\n this._applyRemoteUpdateInternal(changedFields, version, initiatorUserId, _fieldMeta);\n }\n\n /**\n * Transition to DELETED from any state. Aborts in-flight, rejects all queued\n * Promises with ResourceDeletedError.\n */\n handleDeletion(reason: DeletionReason, deletedBy?: string): void {\n logDebug('handleDeletion', { reason, deletedBy, resourceId: this._resourceId });\n this._transition({ type: TransitionEventType.DELETE, reason, deletedBy });\n }\n\n // =============================================================================\n // PUBLIC API — Snapshot (for useSyncExternalStore)\n // =============================================================================\n\n subscribe(callback: () => void): () => void {\n this._snapshotListeners.add(callback);\n return () => {\n this._snapshotListeners.delete(callback);\n };\n }\n\n /**\n * Returns a referentially stable snapshot. Same object reference when\n * state hasn't changed — useSyncExternalStore won't trigger re-render.\n */\n getSnapshot(): RMMSnapshot {\n if (this._cachedSnapshot && this._cachedSnapshotVersion === this._snapshotVersion) {\n return this._cachedSnapshot;\n }\n\n const optimisticData = this._getOptimisticData();\n const pendingFieldNames = Array.from(this._pendingFields.keys());\n const pendingFieldValues: Record<string, unknown> = {};\n for (const [key, value] of this._pendingFields) {\n pendingFieldValues[key] = value;\n }\n\n this._cachedSnapshot = {\n state: this._state,\n version: this._version,\n confirmedData: this._confirmedData,\n optimisticData,\n pendingFieldNames,\n pendingFieldValues,\n isSaving: this._state === RMMState.SAVING,\n isDeleted: this._state === RMMState.DELETED,\n hasUnsavedChanges:\n this._pendingFields.size > 0 || this._queue.length > 0 || this._activeMutation !== null,\n error: this._lastError,\n queueDepth: this._queue.length,\n lastEvent: this._lastEvent,\n };\n\n this._cachedSnapshotVersion = this._snapshotVersion;\n return this._cachedSnapshot;\n }\n\n // =============================================================================\n // PUBLIC API — Lifecycle\n // =============================================================================\n\n /**\n * Flush pending fields, wait for in-flight to complete, then clean up.\n * Called by the registry when refCount reaches zero after DESTROY_DELAY_MS.\n *\n * Bounded flush loop: fields folded back into _pendingFields by mid-ladder\n * paths (a VALIDATION failure, a superseded retry) may reappear after the\n * first flush completes, so we re-check up to 3 times. A retry-EXHAUSTED\n * flush no longer re-queues — terminal failure reverts to confirmed state —\n * so exhaustion simply exits this loop with nothing pending.\n */\n async destroy(): Promise<void> {\n logDebug('destroy: starting', {\n resourceId: this._resourceId,\n pendingFieldCount: this._pendingFields.size,\n queueDepth: this._queue.length,\n hasActiveMutation: this._activeMutation !== null,\n });\n\n let flushAttempts = 0;\n while (this._pendingFields.size > 0 && flushAttempts++ < 3) {\n try {\n await this.flushPendingFields();\n } catch (err) {\n logDebug('destroy: flushPendingFields failed', {\n resourceId: this._resourceId,\n attempt: flushAttempts,\n error: err instanceof Error ? err.message : String(err),\n });\n break;\n }\n }\n\n if (this._pendingFields.size > 0) {\n logDebug('destroy: completing with pending fields remaining (flush exhausted or failed)', {\n resourceId: this._resourceId,\n pendingFieldCount: this._pendingFields.size,\n });\n }\n\n if (this._activeMutation || this._queue.length > 0) {\n logDebug('destroy: waiting for drain', { queueDepth: this._queue.length });\n await new Promise<void>((resolve) => {\n this._onDrainCallbacks.push(resolve);\n });\n }\n\n this._clearTimers();\n this._clearAuthoritativeRecoveryTimer();\n this._snapshotListeners.clear();\n logDebug('destroy: complete', { resourceId: this._resourceId });\n }\n\n // =============================================================================\n // INTERNAL — State Machine\n // =============================================================================\n\n /**\n * Single dispatch method for all state transitions. Structured for future\n * XState v5 migration: guards are pure checks, side effects grouped as\n * actions, no ad-hoc state assignments outside this method.\n */\n private _transition(event: TransitionEvent): void {\n const prevState = this._state;\n\n switch (event.type) {\n case TransitionEventType.QUEUE_MUTATION:\n if (this._state === RMMState.IDLE) {\n this._state = RMMState.QUEUED;\n } else if (this._state === RMMState.ERROR) {\n // A fresh mutation supersedes one that is failing/erroring. The\n // original `!_retryTimer` arm already resumed the queue once retries\n // were exhausted (or a retry was mid-flight, timer already null);\n // this branch additionally BREAKS a still-pending retry so the newest\n // user edit is not held hostage by the retry ladder.\n //\n // Without this, an edit queued while the active mutation is WAITING to\n // retry a transient/server error (e.g. a backend blip or a dev\n // restart-window 503 that the browser surfaces as a CORS-less network\n // error) fires no request at all — `_processQueue` early-returns while\n // state is ERROR — until the ladder exhausts (several seconds). To the\n // user that reads as \"the second edit silently did nothing\".\n //\n // Fold the superseded mutation's in-flight fields back into the\n // pending batch (newest edit wins on overlap — the `!has` guard — so\n // nothing is lost), cancel the pending retry, and reject its promise\n // as cancelled so its autosave quietly returns to idle while THIS\n // fresh mutation reports the real save state. Mirrors the field\n // preservation already done on the retry-exhausted path.\n if (this._retryTimer && this._activeMutation) {\n this._clearTimers();\n const superseded = this._activeMutation;\n for (const [field, value] of Object.entries(superseded.savingFields)) {\n if (!this._pendingFields.has(field)) {\n this._pendingFields.set(field, value);\n }\n }\n superseded.abortController.abort();\n this._activeMutation = null;\n superseded.entry.reject(new MutationCancelledError(superseded.entry.source));\n }\n this._state = RMMState.QUEUED;\n }\n this._invalidateSnapshot();\n return;\n\n case TransitionEventType.START_SAVING:\n if (this._state === RMMState.QUEUED) {\n this._state = RMMState.SAVING;\n this._lastError = null;\n this._startBackpressureTimers();\n }\n break;\n\n case TransitionEventType.SAVE_SUCCESS: {\n this._state =\n this._queue.length > 0 || this._pendingFields.size > 0 ? RMMState.QUEUED : RMMState.IDLE;\n this._lastError = null;\n this._clearTimers();\n\n if (event.result.data) {\n this._mergeResponseDataIntoConfirmed(event.result.data);\n }\n this._applyConfirmedClears(event.clearedFields, event.result.data);\n if (event.result.newVersion !== undefined) {\n this._version = event.result.newVersion;\n }\n\n this._lastEvent = {\n type: RMMEventType.MUTATION_RESULT,\n result: {\n success: true,\n savedFields: event.savedFields,\n newVersion: event.result.newVersion,\n responseData: event.result.data,\n },\n source: event.source,\n id: ++this._eventCounter,\n };\n break;\n }\n\n case TransitionEventType.SAVE_ERROR: {\n const errorType = event.result.error?.type;\n const mutationError: MutationError = event.result.error\n ? {\n type: event.result.error.type,\n status: event.result.error.status,\n validationErrors: event.result.error.validationErrors,\n message: event.result.error.message,\n conflictDetails: event.result.error.conflictDetails,\n }\n : { type: MutationErrorType.SERVER, message: 'Unknown error' };\n\n this._lastError = mutationError;\n\n // --- Conflict (409) ---\n if (errorType === MutationErrorType.CONFLICT) {\n this._clearTimers();\n this._state = RMMState.CONFLICT;\n\n const allDiscardedFields = [...new Set([\n ...event.savedFields,\n ...this._pendingFields.keys(),\n ])];\n\n for (const entry of this._queue) {\n entry.reject(new MutationCancelledError());\n }\n this._queue = [];\n this._pendingFields.clear();\n this._pendingFieldTimestamps.clear();\n this._deferredSelfEvents = [];\n\n const cd = mutationError.conflictDetails;\n const serverSlice = cd?.currentValues;\n const currentData =\n serverSlice && Object.keys(serverSlice).length > 0\n ? { ...(this._confirmedData ?? {}), ...serverSlice }\n : (this._confirmedData ?? {});\n const currentVersion = cd?.currentVersion ?? this._version ?? 0;\n\n this._confirmedData = { ...currentData };\n this._version = currentVersion;\n\n this._lastEvent = {\n type: RMMEventType.CONFLICT_RESET,\n discardedFields: allDiscardedFields,\n reason: ConflictReason.VERSION_CONFLICT,\n currentData,\n currentVersion,\n conflictDetails: cd,\n id: ++this._eventCounter,\n };\n break;\n }\n\n // --- Abort (no retry, no lastEvent — communicated via Promise rejection) ---\n if (errorType === MutationErrorType.ABORT) {\n this._clearTimers();\n const nextState =\n this._queue.length > 0 || this._pendingFields.size > 0 ? RMMState.QUEUED : RMMState.IDLE;\n this._state = nextState;\n if (nextState === RMMState.IDLE) {\n this._lastError = null;\n }\n break;\n }\n\n // --- Validation / Not Found (no retry, with lastEvent) ---\n if (errorType === MutationErrorType.VALIDATION || errorType === MutationErrorType.NOT_FOUND) {\n this._clearTimers();\n\n if (errorType === MutationErrorType.VALIDATION && this._activeMutation) {\n for (const field of event.savedFields) {\n if (!this._pendingFields.has(field)) {\n this._pendingFields.set(field, this._activeMutation.savingFields[field]);\n }\n }\n }\n\n this._lastEvent = {\n type: RMMEventType.MUTATION_RESULT,\n result: {\n success: false,\n savedFields: event.savedFields,\n error: mutationError,\n retriesRemaining: 0,\n },\n source: event.source,\n id: ++this._eventCounter,\n };\n\n this._state =\n this._queue.length > 0 || this._pendingFields.size > 0 ? RMMState.QUEUED : RMMState.IDLE;\n break;\n }\n\n // --- Transient / Server (may retry) ---\n const retryCount = this._activeMutation?.retryCount ?? 0;\n const maxRetries =\n errorType === MutationErrorType.TRANSIENT\n ? this._retryDelays.length\n : errorType === MutationErrorType.SERVER\n ? 1\n : 0;\n\n if (retryCount < maxRetries) {\n const delay =\n errorType === MutationErrorType.TRANSIENT\n ? this._retryDelays[retryCount]\n : this._serverRetryDelay;\n\n this._state = RMMState.ERROR;\n\n this._lastEvent = {\n type: RMMEventType.MUTATION_RESULT,\n result: {\n success: false,\n savedFields: event.savedFields,\n error: mutationError,\n retriesRemaining: maxRetries - retryCount,\n },\n source: event.source,\n id: ++this._eventCounter,\n };\n\n this._retryTimer = setTimeout(() => {\n this._retryTimer = null;\n if (this._state !== RMMState.ERROR || !this._activeMutation) return;\n this._activeMutation.retryCount++;\n logDebug('retry: attempt', {\n mutationId: this._activeMutation.entry.id,\n retryCount: this._activeMutation.retryCount,\n maxRetries,\n delayMs: delay,\n });\n this._transition({ type: TransitionEventType.RETRY });\n this._executeTransport(this._activeMutation);\n }, delay);\n break;\n }\n\n // --- Retry exhausted — TERMINAL failure: revert + surface (audit B1) ---\n //\n // The ladder is spent and the write is NOT persisted. The previous\n // behaviour re-queued the failed values into `_pendingFields`, which\n // kept `optimisticData` rendering them as \"saved\" forever while the\n // transport's `silent: true` suppressed every toast — a silent write\n // loss (checklist edits surviving on screen and vanishing on reload).\n //\n // Terminal contract, mirroring CONFLICT_DETECTED's reset shape:\n // 1. REVERT — drop the failed values (and anything queued behind them\n // on the same dead backend) so `optimisticData` falls back to\n // `confirmedData` and the UI stops claiming the save happened.\n // 2. EVENT — emit a MUTATION_RESULT failure (`retriesRemaining: 0`) so\n // subscribers (forms/displayers) observe the terminal failure and\n // drop their own optimistic UI.\n // 3. NOTIFY — emit a user-visible resource error notification; the\n // transport's `silent: true` only suppresses the per-attempt global\n // toasts, so without this the terminal failure had NO user signal.\n //\n // Rejected alternative — keep re-queueing and let a later mutation\n // retry: with the backend down every later attempt exhausts the same\n // way, so the \"eventual save\" never comes and the lie compounds.\n // CONFLICT semantics are untouched (handled above).\n this._clearTimers();\n\n const terminalDiscardedFields = [...new Set([\n ...event.savedFields,\n ...this._pendingFields.keys(),\n ])];\n\n for (const entry of this._queue) {\n entry.reject(new MutationCancelledError());\n }\n this._queue = [];\n this._pendingFields.clear();\n this._pendingFieldTimestamps.clear();\n this._deferredSelfEvents = [];\n\n this._lastEvent = {\n type: RMMEventType.MUTATION_RESULT,\n result: {\n success: false,\n savedFields: event.savedFields,\n error: mutationError,\n retriesRemaining: 0,\n },\n source: event.source,\n id: ++this._eventCounter,\n };\n\n this._state = RMMState.IDLE;\n\n this._emitTerminalMutationFailureNotification(mutationError, terminalDiscardedFields);\n break;\n }\n\n case TransitionEventType.RETRY:\n if (this._state === RMMState.ERROR) {\n this._state = RMMState.SAVING;\n }\n break;\n\n case TransitionEventType.CONFLICT_DETECTED: {\n this._clearTimers();\n this._state = RMMState.CONFLICT;\n\n if (this._activeMutation) {\n this._activeMutation.abortController.abort();\n this._activeMutation.entry.reject(new MutationCancelledError());\n this._activeMutation = null;\n }\n\n for (const entry of this._queue) {\n entry.reject(new MutationCancelledError());\n }\n this._queue = [];\n this._pendingFields.clear();\n this._pendingFieldTimestamps.clear();\n this._deferredSelfEvents = [];\n\n this._confirmedData = { ...event.currentData };\n this._version = event.currentVersion;\n\n this._lastEvent = {\n type: RMMEventType.CONFLICT_RESET,\n discardedFields: event.discardedFields,\n reason: event.reason,\n currentData: event.currentData,\n currentVersion: event.currentVersion,\n conflictDetails: event.conflictDetails,\n id: ++this._eventCounter,\n };\n break;\n }\n\n case TransitionEventType.CONFLICT_ACKNOWLEDGED:\n if (this._state === RMMState.CONFLICT) {\n this._state = this._queue.length > 0 ? RMMState.QUEUED : RMMState.IDLE;\n this._lastError = null;\n }\n break;\n\n case TransitionEventType.CANCEL:\n this._state = RMMState.IDLE;\n this._lastError = null;\n break;\n\n case TransitionEventType.DELETE: {\n this._clearTimers();\n\n if (this._activeMutation) {\n this._activeMutation.abortController.abort();\n this._activeMutation.entry.reject(new ResourceDeletedError());\n this._activeMutation = null;\n }\n\n for (const entry of this._queue) {\n entry.reject(new ResourceDeletedError());\n }\n this._queue = [];\n this._pendingFields.clear();\n this._pendingFieldTimestamps.clear();\n this._deferredSelfEvents = [];\n\n this._state = RMMState.DELETED;\n\n this._lastEvent = {\n type: RMMEventType.RESOURCE_DELETED,\n reason: event.reason,\n deletedBy: event.deletedBy,\n id: ++this._eventCounter,\n };\n break;\n }\n\n case TransitionEventType.REMOTE_UPDATE:\n this._lastEvent = {\n type: RMMEventType.REMOTE_UPDATE,\n changedFields: event.changedFields,\n mergedFields: event.mergedFields,\n version: event.version,\n initiatorUserId: event.initiatorUserId,\n crdtResolutions: event.crdtResolutions,\n id: ++this._eventCounter,\n };\n break;\n }\n\n if (this._state !== prevState) {\n logDebug('_transition', {\n event: event.type,\n from: prevState,\n to: this._state,\n queueDepth: this._queue.length,\n pendingFieldCount: this._pendingFields.size,\n hasActiveMutation: this._activeMutation !== null,\n lastEventType: this._lastEvent?.type,\n });\n }\n\n this._invalidateSnapshot();\n }\n\n /**\n * Emit the user-visible notification for a TERMINAL mutation failure\n * (transient/server retry ladder exhausted).\n *\n * Why HERE and not in a React subscriber: the retry ladder can outlive the\n * surface that queued the mutation (registry-held instance, destroy-delayed),\n * and the notification invariant is \"every exhausted ladder surfaces exactly\n * one user-visible error\". Emitting from the single exhaustion site makes\n * that unbypassable for every creation path (hooks, registry, tests) instead\n * of hoping each consumer wires a handler. The transport's `silent: true`\n * suppresses only the per-attempt global error toasts; this is the one\n * deliberate terminal signal.\n *\n * Emission is best-effort and must never throw into the state machine.\n */\n private _emitTerminalMutationFailureNotification(error: MutationError, discardedFields: string[]): void {\n const operationPathKey = this._config.operationPathKey ?? this.resourceType;\n let operationPath: {\n operationIdentifier?: string;\n variantType?: string;\n isOperationDefault?: boolean;\n isBulkOperation?: boolean;\n variantKey?: string;\n } = {};\n try {\n operationPath = ResourcesConfig_OperationPathUtils.parseOperationPathKey(operationPathKey) as typeof operationPath;\n } catch {\n // A bare resourceType fallback key is not a parseable operation path —\n // notify with UPDATE-shaped defaults rather than dropping the signal.\n }\n\n try {\n frontendEventBus.emit(FrontendEvents.NOTIFY_RESOURCE_ERROR, {\n resourceType: this.resourceType,\n parentResourcesRequirements: [],\n operationIdentifier: String(operationPath.operationIdentifier ?? CoreResourceOperation.UPDATE),\n isOperationDefault: operationPath.isOperationDefault ?? true,\n isBulkOperation: operationPath.isBulkOperation ?? false,\n variantKey: operationPath.variantKey,\n operation: undefined,\n contextResourceIdentifiers: this._config.contextResourceIdentifiers ?? {},\n additionalContext: {\n error: error.message ?? 'Saving failed after retries',\n // TRANSIENT terminal failures are network-level (connection refused,\n // readiness gate gave up): route the toast copy through the\n // localized NETWORK error label. SERVER failures fall through to\n // the notification layer's default error message.\n errorCustomMessageReference:\n error.type === MutationErrorType.TRANSIENT ? ErrorCustomMessageReference.NETWORK : undefined,\n errorHttpStatus: error.status,\n mutationErrorType: error.type,\n discardedFields,\n },\n });\n } catch (emitError) {\n logDebug('_emitTerminalMutationFailureNotification: emit failed', {\n resourceId: this._resourceId,\n error: emitError instanceof Error ? emitError.message : String(emitError),\n });\n }\n }\n\n // =============================================================================\n // INTERNAL — Queue Processing\n // =============================================================================\n\n /**\n * Process the next mutation in the queue if no mutation is currently in-flight.\n * Uses move semantics: fields are moved from _pendingFields into savingFields.\n */\n private _processQueue(): void {\n if (this._activeMutation !== null) return;\n if (this._queue.length === 0) return;\n if (this._state === RMMState.CONFLICT || this._state === RMMState.DELETED || this._state === RMMState.ERROR) return;\n\n const entry = this._queue.shift()!;\n\n let savingFields: Record<string, unknown>;\n\n if (entry.type === MutationType.SUBMIT || entry.type === MutationType.DRAFT || entry.type === MutationType.PUBLISH) {\n savingFields = { ...entry.fields };\n this._pendingFields.clear();\n } else {\n savingFields = {};\n for (const key of Object.keys(entry.fields)) {\n if (this._pendingFields.has(key)) {\n savingFields[key] = this._pendingFields.get(key);\n this._pendingFields.delete(key);\n } else {\n savingFields[key] = entry.fields[key];\n }\n }\n }\n\n logDebug('_processQueue: dequeued', {\n mutationId: entry.id,\n type: entry.type,\n priority: entry.priority,\n savingFields: Object.keys(savingFields),\n remainingQueue: this._queue.length,\n remainingPending: this._pendingFields.size,\n });\n\n const abortController = new AbortController();\n\n // AbortSignal composition: wire caller's signal to our controller\n if (entry.signal) {\n if (entry.signal.aborted) {\n entry.reject(new MutationCancelledError(entry.source));\n this._processQueue();\n return;\n }\n entry.signal.addEventListener('abort', () => abortController.abort(), { once: true });\n }\n\n this._activeMutation = {\n entry,\n savingFields,\n abortController,\n retryCount: 0,\n };\n\n this._transition({ type: TransitionEventType.START_SAVING });\n this._executeTransport(this._activeMutation);\n }\n\n /**\n * Execute the transport adapter for a mutation. Captures `thisMutation`\n * reference before the async call to detect stale callbacks — if\n * cancelPendingMutations() runs during the await, the callback bails out.\n */\n private _executeTransport(mutation: ActiveMutation): void {\n const thisMutation = mutation;\n\n logDebug('_executeTransport: sending', {\n mutationId: mutation.entry.id,\n type: mutation.entry.type,\n fields: Object.keys(mutation.savingFields),\n version: this._version,\n retryCount: mutation.retryCount,\n });\n\n // Build field timestamps for CRDT fields being sent\n const fieldTimestamps: Record<string, number> = {};\n for (const field of Object.keys(mutation.savingFields)) {\n if (this._isCrdtManagedField(field)) {\n const ts = this._pendingFieldTimestamps.get(field);\n if (ts !== undefined) {\n fieldTimestamps[field] = ts;\n }\n }\n }\n\n const transportOverride = thisMutation.entry.transportOverride;\n const descriptor: OperationDescriptor = {\n operationPathKey: transportOverride?.operationPathKey ?? this._config.operationPathKey ?? this._config.resourceType,\n contextualParameters: transportOverride?.contextualParameters ?? this._config.contextualParameters,\n parentResourcesRequirements: transportOverride?.parentResourcesRequirements ?? this._config.parentResourcesRequirements,\n requestData: transportOverride?.requestData ?? mutation.savingFields,\n expectedVersion: this._version,\n signal: mutation.abortController.signal,\n fieldTimestamps:\n Object.keys(fieldTimestamps).length > 0\n ? fieldTimestamps\n : undefined,\n };\n\n this._config.transportAdapter.execute(descriptor).then(\n async (rawResult) => {\n if (this._activeMutation !== thisMutation) {\n logDebug('_executeTransport: stale callback — ignored', { mutationId: thisMutation.entry.id });\n return;\n }\n\n const savedFields = Object.keys(thisMutation.savingFields);\n const source = thisMutation.entry.source;\n const result = rawResult.status === OperationResultStatus.SUCCESS && transportOverride?.readBackOnSuccess\n ? await this._readBackConfirmedState(rawResult)\n : rawResult;\n\n if (result.status === OperationResultStatus.SUCCESS) {\n logDebug('_executeTransport: success', {\n mutationId: thisMutation.entry.id,\n savedFields,\n newVersion: result.newVersion,\n });\n\n // Store _fieldMeta from transport response (preserve null semantics)\n const rawTransportMeta = result.fieldMeta ?? result.data?._field_meta;\n if (rawTransportMeta != null) {\n this._fieldMeta = sanitizeFieldMeta(rawTransportMeta);\n }\n\n for (const field of savedFields) {\n this._pendingFieldTimestamps.delete(field);\n }\n\n // The fields this mutation explicitly CLEARED. Carried through to confirmed state because\n // the canonical read-back expresses a clear by OMITTING the key, which a merge cannot act\n // on — see `_applyConfirmedClears`.\n const clearedFields = Object.entries(thisMutation.savingFields)\n .filter(([, fieldValue]) => fieldValue === null)\n .map(([fieldName]) => fieldName);\n\n this._transition({ type: TransitionEventType.SAVE_SUCCESS, result, savedFields, clearedFields, source });\n this._activeMutation = null;\n // Remember the version THIS tab's mutation just minted, so its own\n // WebSocket echo is recognised (and skipped) while another tab's\n // change — carrying a version this tab never produced — is applied.\n this._recordProducedVersion(result.newVersion);\n this._processDeferredSelfEvents(result.newVersion);\n this._invalidateSnapshot();\n\n thisMutation.entry.resolve({\n success: true,\n savedFields,\n newVersion: result.newVersion,\n responseData: result.data,\n });\n\n this._processQueue();\n this._notifyDrained();\n } else {\n logDebug('_executeTransport: error', {\n mutationId: thisMutation.entry.id,\n errorType: result.error?.type,\n errorStatus: result.error?.status,\n errorMessage: result.error?.message,\n savedFields,\n });\n this._transition({ type: TransitionEventType.SAVE_ERROR, result, savedFields, source });\n\n if (this._state === RMMState.ERROR) {\n // Retry scheduled — mutation stays alive, don't resolve/reject yet\n } else if (this._state === RMMState.CONFLICT) {\n this._activeMutation = null;\n this._processDeferredSelfEvents(result.newVersion);\n this._invalidateSnapshot();\n thisMutation.entry.resolve({\n success: false,\n savedFields,\n error: {\n type: MutationErrorType.CONFLICT,\n conflictDetails: result.error?.conflictDetails,\n },\n });\n this._notifyDrained();\n } else if (result.error?.type === MutationErrorType.ABORT) {\n this._activeMutation = null;\n this._processDeferredSelfEvents(result.newVersion);\n this._invalidateSnapshot();\n thisMutation.entry.reject(new MutationCancelledError(thisMutation.entry.source));\n this._processQueue();\n this._notifyDrained();\n } else {\n this._activeMutation = null;\n this._processDeferredSelfEvents(result.newVersion);\n this._invalidateSnapshot();\n thisMutation.entry.resolve({\n success: false,\n savedFields,\n error: result.error\n ? {\n type: result.error.type,\n status: result.error.status,\n validationErrors: result.error.validationErrors,\n message: result.error.message,\n }\n : undefined,\n });\n this._processQueue();\n this._notifyDrained();\n }\n }\n },\n (error: unknown) => {\n if (this._activeMutation !== thisMutation) {\n logDebug('_executeTransport: stale rejection — ignored', { mutationId: thisMutation.entry.id });\n return;\n }\n\n const savedFields = Object.keys(thisMutation.savingFields);\n const source = thisMutation.entry.source;\n\n logDebug('_executeTransport: transport rejected', {\n mutationId: thisMutation.entry.id,\n error: error instanceof Error ? error.message : String(error),\n savedFields,\n });\n\n this._transition({\n type: TransitionEventType.SAVE_ERROR,\n result: {\n status: OperationResultStatus.ERROR,\n error: {\n type: MutationErrorType.TRANSIENT,\n message: error instanceof Error ? error.message : String(error),\n },\n },\n savedFields,\n source,\n });\n\n if (this._state === RMMState.ERROR) {\n // Retry scheduled — mutation stays alive\n } else {\n this._activeMutation = null;\n this._processDeferredSelfEvents(undefined);\n this._invalidateSnapshot();\n thisMutation.entry.resolve({\n success: false,\n savedFields,\n error: {\n type: MutationErrorType.TRANSIENT,\n message: error instanceof Error ? error.message : String(error),\n },\n });\n this._processQueue();\n this._notifyDrained();\n }\n },\n );\n }\n\n // =============================================================================\n // INTERNAL — Authoritative Refresh\n // =============================================================================\n\n private async _readBackConfirmedState(result: OperationResult): Promise<OperationResult> {\n const readOperationPathKey = this._config.readOperationPathKey;\n if (!readOperationPathKey) {\n return result;\n }\n\n // Successful mutations still prefer one canonical RAW reread before the\n // mutation result is promoted to confirmedData. That keeps mutation success\n // and websocket replay on the same authoritative read contract.\n const readResult = await this._config.transportAdapter.execute({\n operationPathKey: readOperationPathKey,\n contextualParameters: this._config.contextualParameters,\n parentResourcesRequirements: this._config.parentResourcesRequirements,\n dataMode: DataMode.RAW,\n signal: undefined,\n });\n\n if (readResult.status !== OperationResultStatus.SUCCESS) {\n this._allowSettledSelfEventRepair = true;\n this._scheduleAuthoritativeRecovery();\n // Keep the mutation marked successful, but strip read-shaped data/field\n // metadata so callers do not accidentally trust a partial mutation\n // response as canonical confirmed state.\n logDebug('_readBackConfirmedState: falling back to mutation response', {\n errorType: readResult.error?.type,\n errorStatus: readResult.error?.status,\n });\n return {\n ...result,\n data: undefined,\n fieldMeta: undefined,\n };\n }\n\n this._clearAuthoritativeRecoveryTimer();\n this._allowSettledSelfEventRepair = false;\n\n return {\n ...result,\n data: readResult.data,\n newVersion: readResult.newVersion ?? result.newVersion,\n fieldMeta: readResult.fieldMeta ?? result.fieldMeta,\n };\n }\n\n // =============================================================================\n // INTERNAL — Optimistic Data\n // =============================================================================\n\n /**\n * Merges transport success payload into `_confirmedData` using `deepSetByPath` per\n * entry so dotted keys and nested shapes match optimistic/remote merge semantics\n * (avoids shallow spread clobbering nested objects).\n */\n /**\n * Remove fields the caller CLEARED from confirmed state, which a merge structurally cannot do.\n *\n * `_mergeResponseDataIntoConfirmed` walks the response's own entries, so it can only ever ADD or\n * OVERWRITE. A cleared field is absent from the canonical read-back — that absence IS the server\n * telling us the field is gone — and an absent key overwrites nothing, so the stale value\n * survived in confirmed state and kept rendering until a full page reload. Live-observed on the\n * surface this contract was built for: the colour disappeared from storage and stayed on screen.\n *\n * Authority still rests with the server: a field is dropped only when the caller explicitly sent\n * `null` for it AND the response did not come back carrying a value. If the server echoes\n * something (a default, a computed value, a rejection of the clear), that echo wins.\n *\n * DOTTED paths are handled, not just top-level names. That is not theoretical tidiness: autosave\n * calls `triggerSave` with the field's RESOLVED name, which for a composite child is its absolute\n * dotted path (`address.city`), and that string is queued verbatim as the mutation key. A\n * top-level `delete next['address.city']` matched no key at all, so a cleared composite child was\n * silently exempt from the very correction this method exists to make.\n */\n private _applyConfirmedClears(\n clearedFields: string[] | undefined,\n responseData: Record<string, unknown> | undefined,\n ): void {\n if (!clearedFields?.length || !this._confirmedData) return;\n\n const next = structuredClone(this._confirmedData);\n for (const fieldName of clearedFields) {\n if (responseData && deepReadByPath(responseData, fieldName) !== undefined) continue;\n // `deepSetByPath` with `undefined` DELETES, and it normalises bracket notation first, so this\n // reaches a nested member as well as a top-level field.\n deepSetByPath(next, fieldName, undefined);\n }\n this._confirmedData = next;\n }\n\n private _mergeResponseDataIntoConfirmed(data: Record<string, unknown>): void {\n const base =\n this._confirmedData !== null ? structuredClone(this._confirmedData) : ({} as Record<string, unknown>);\n for (const [path, value] of Object.entries(data)) {\n deepSetByPath(base, path, value);\n }\n this._confirmedData = base;\n }\n\n /**\n * Path-aware deep merge of _confirmedData + in-flight savingFields + _pendingFields.\n * Uses deepSetByPath for nested paths (e.g., \"metadata.theme\" sets the nested property,\n * not a top-level key named \"metadata.theme\").\n */\n private _getOptimisticData(): Record<string, unknown> | null {\n if (!this._confirmedData) return null;\n\n if (this._pendingFields.size === 0 && !this._activeMutation) {\n return this._confirmedData;\n }\n\n if (this._optimisticDataVersion === this._snapshotVersion) {\n return this._cachedOptimisticData;\n }\n\n const result = structuredClone(this._confirmedData);\n\n if (this._activeMutation) {\n for (const [key, value] of Object.entries(this._activeMutation.savingFields)) {\n deepSetByPath(result, key, value);\n }\n }\n\n for (const [key, value] of this._pendingFields) {\n deepSetByPath(result, key, value);\n }\n\n this._cachedOptimisticData = result;\n this._optimisticDataVersion = this._snapshotVersion;\n return result;\n }\n\n // =============================================================================\n // INTERNAL — Snapshot Management\n // =============================================================================\n\n private _invalidateSnapshot(): void {\n this._snapshotVersion++;\n this._cachedSnapshot = null;\n for (const listener of this._snapshotListeners) {\n listener();\n }\n }\n\n /**\n * Internal merge logic shared by applyRemoteUpdate and _processDeferredSelfEvents.\n * Skips the self-event guard — callers are responsible for determining whether\n * the event should be processed.\n */\n private _applyRemoteUpdateInternal(\n changedFields: Record<string, unknown>,\n version: number,\n initiatorUserId: string,\n _fieldMeta?: Record<string, FieldMetaEntry>,\n acceptEqualVersion = false,\n ): void {\n if (this._state === RMMState.DELETED) return;\n\n const previousVersion = this._version;\n this._clearAuthoritativeRecoveryTimer();\n const localSubmittedBase = structuredClone(this._confirmedData ?? {});\n if (this._activeMutation) {\n for (const [field, value] of Object.entries(this._activeMutation.savingFields)) {\n deepSetByPath(localSubmittedBase, field, value);\n }\n }\n for (const [field, value] of this._pendingFields) {\n deepSetByPath(localSubmittedBase, field, value);\n }\n\n if (this._version !== null && (acceptEqualVersion ? version < this._version : version <= this._version)) {\n logDebug('_applyRemoteUpdateInternal: stale — ignored', {\n incomingVersion: version,\n currentVersion: this._version,\n });\n return;\n }\n\n const changedFieldNames = Object.keys(changedFields);\n const pendingFieldNames = [...this._pendingFields.keys()];\n const savingFieldNames = this._activeMutation\n ? Object.keys(this._activeMutation.savingFields)\n : [];\n const localDirtyFieldNames = [...new Set([...savingFieldNames, ...pendingFieldNames])];\n const overlapping = changedFieldNames.filter((remoteField) => (\n localDirtyFieldNames.some((localField) => rmmFieldPathsOverlap(remoteField, localField))\n ));\n\n logDebug('_applyRemoteUpdateInternal', {\n version,\n changedFields: changedFieldNames,\n overlappingFields: overlapping,\n initiatorUserId,\n state: this._state,\n });\n\n // --- Field-level merge (CRDT-aware) ---\n\n // Separate overlapping fields into CRDT and non-CRDT\n const crdtOverlap: string[] = [];\n const nonCrdtOverlap: string[] = [];\n for (const field of overlapping) {\n if (this._isCrdtManagedField(field)) {\n crdtOverlap.push(field);\n } else {\n nonCrdtOverlap.push(field);\n }\n }\n\n const mergedFields: string[] = [];\n const crdtResolutions: Record<string, CrdtResolutionWinner> = {};\n const updated = structuredClone(this._confirmedData ?? {});\n\n // Non-overlapping fields: always merge silently\n for (const field of changedFieldNames) {\n if (!overlapping.includes(field)) {\n deepSetByPath(updated, field, changedFields[field]);\n mergedFields.push(field);\n }\n }\n\n // CRDT overlapping fields: use shared LWW winner function\n for (const field of crdtOverlap) {\n const pendingConflictField = localDirtyFieldNames.find((localField) => rmmFieldPathsOverlap(field, localField));\n const remoteTs = _fieldMeta?.[field]?.ts ?? 0;\n const localTs = pendingConflictField\n ? this._pendingFieldTimestamps.get(pendingConflictField) ?? 0\n : 0;\n const winner = lwwFieldWinner(remoteTs, localTs);\n crdtResolutions[field] = winner;\n\n if (winner === CrdtResolutionWinner.INCOMING) {\n if (pendingConflictField) {\n this._pendingFields.delete(pendingConflictField);\n this._pendingFieldTimestamps.delete(pendingConflictField);\n }\n deepSetByPath(updated, field, changedFields[field]);\n mergedFields.push(field);\n logDebug('CRDT LWW: remote wins', { field, remoteTs, localTs });\n } else {\n logDebug('CRDT LWW: local wins (keep pending)', { field, remoteTs, localTs });\n }\n }\n\n this._confirmedData = updated;\n\n // Update field meta from remote (sanitize to guard against corrupted payloads)\n if (_fieldMeta != null) {\n this._fieldMeta = { ...sanitizeFieldMeta(this._fieldMeta), ...sanitizeFieldMeta(_fieldMeta) };\n }\n\n this._version = version;\n\n const hasCrdtResolutions = Object.keys(crdtResolutions).length > 0 ? crdtResolutions : undefined;\n\n // If all overlapping fields were resolved (no non-CRDT conflicts remain):\n if (nonCrdtOverlap.length === 0) {\n this._transition({\n type: TransitionEventType.REMOTE_UPDATE,\n changedFields: changedFieldNames,\n mergedFields,\n version,\n initiatorUserId,\n crdtResolutions: hasCrdtResolutions,\n });\n return;\n }\n\n // Non-CRDT overlap remains — fall through to conflictPolicy\n if (this._config.conflictPolicy.strategy === ConflictStrategy.LAST_WRITE_WINS) {\n this._transition({\n type: TransitionEventType.REMOTE_UPDATE,\n changedFields: changedFieldNames,\n mergedFields,\n version,\n initiatorUserId,\n crdtResolutions: hasCrdtResolutions,\n });\n return;\n }\n\n // accept-remote: transition to CONFLICT for non-CRDT overlap.\n // CRDT fields that local won must survive the conflict transition.\n const crdtWonEntries: Map<string, unknown> = new Map();\n const crdtWonTimestamps: Map<string, number> = new Map();\n for (const field of crdtOverlap) {\n const pendingConflictField = localDirtyFieldNames.find((localField) => rmmFieldPathsOverlap(field, localField));\n const localTs = pendingConflictField\n ? this._pendingFieldTimestamps.get(pendingConflictField) ?? 0\n : 0;\n const remoteTs = _fieldMeta?.[field]?.ts ?? 0;\n if (\n pendingConflictField\n && lwwFieldWinner(remoteTs, localTs) === CrdtResolutionWinner.EXISTING\n && this._pendingFields.has(pendingConflictField)\n ) {\n crdtWonEntries.set(pendingConflictField, this._pendingFields.get(pendingConflictField));\n const ts = this._pendingFieldTimestamps.get(pendingConflictField);\n if (ts !== undefined) crdtWonTimestamps.set(pendingConflictField, ts);\n }\n }\n\n const newData = structuredClone(this._confirmedData ?? {});\n for (const [field, value] of Object.entries(changedFields)) {\n deepSetByPath(newData, field, value);\n }\n\n const discardedFields = localDirtyFieldNames\n .filter((field) => !crdtWonEntries.has(field));\n const conflictDetails = {\n currentVersion: version,\n expectedVersion: previousVersion ?? version,\n conflictingFields: overlapping,\n currentValues: Object.fromEntries(\n overlapping.map((field) => [field, rmmReadPathValue(newData, field)]),\n ),\n submittedValues: Object.fromEntries(\n overlapping.map((field) => [field, rmmReadPathValue(localSubmittedBase, field)]),\n ),\n } satisfies NonNullable<MutationError['conflictDetails']>;\n\n this._transition({\n type: TransitionEventType.CONFLICT_DETECTED,\n discardedFields,\n reason: ConflictReason.REMOTE_UPDATE,\n currentData: newData,\n currentVersion: version,\n conflictDetails,\n });\n\n // Restore CRDT-won pending fields after the conflict transition\n for (const [field, value] of crdtWonEntries) {\n this._pendingFields.set(field, value);\n }\n for (const [field, ts] of crdtWonTimestamps) {\n this._pendingFieldTimestamps.set(field, ts);\n }\n }\n\n /**\n * Process deferred self-events after an HTTP response arrives.\n * - Version matches response → discard (same mutation, already handled)\n * - Version differs → process as genuine remote change (another tab/device saved)\n */\n private _processDeferredSelfEvents(responseVersion: number | undefined): void {\n if (this._deferredSelfEvents.length === 0) return;\n\n const deferred = this._deferredSelfEvents;\n this._deferredSelfEvents = [];\n\n for (const event of deferred) {\n if (responseVersion !== undefined && event.version === responseVersion) {\n if (this._allowSettledSelfEventRepair) {\n this._clearAuthoritativeRecoveryTimer();\n this._allowSettledSelfEventRepair = false;\n logDebug('_processDeferredSelfEvents: accepting deferred self-event after canonical read-back miss', {\n version: event.version,\n });\n this._applyRemoteUpdateInternal(\n event.changedFields,\n event.version,\n event.initiatorUserId,\n event.fieldMeta,\n true,\n );\n continue;\n }\n logDebug('_processDeferredSelfEvents: discarded (version matches response)', {\n version: event.version,\n });\n continue;\n }\n\n logDebug('_processDeferredSelfEvents: processing as remote change', {\n eventVersion: event.version,\n responseVersion,\n });\n this._applyRemoteUpdateInternal(event.changedFields, event.version, event.initiatorUserId, event.fieldMeta);\n }\n }\n\n // =============================================================================\n // INTERNAL — Timer Management\n // =============================================================================\n\n private _clearTimers(): void {\n if (this._retryTimer) {\n clearTimeout(this._retryTimer);\n this._retryTimer = null;\n }\n if (this._softTimer) {\n clearTimeout(this._softTimer);\n this._softTimer = null;\n }\n if (this._hardTimer) {\n clearTimeout(this._hardTimer);\n this._hardTimer = null;\n }\n }\n\n /**\n * Schedules one later canonical RAW reread after a successful mutation whose\n * immediate authoritative read-back failed. This keeps confirmed truth\n * canonical while avoiding total dependence on websocket self-repair delivery.\n */\n private _scheduleAuthoritativeRecovery(): void {\n if (this._authoritativeRecoveryTimer || this._state === RMMState.DELETED) {\n return;\n }\n\n this._authoritativeRecoveryTimer = setTimeout(() => {\n this._authoritativeRecoveryTimer = null;\n void this._retryAuthoritativeRecovery();\n }, this._serverRetryDelay);\n }\n\n private _clearAuthoritativeRecoveryTimer(): void {\n if (this._authoritativeRecoveryTimer) {\n clearTimeout(this._authoritativeRecoveryTimer);\n this._authoritativeRecoveryTimer = null;\n }\n }\n\n private async _retryAuthoritativeRecovery(): Promise<void> {\n if (this._state === RMMState.DELETED || !this._allowSettledSelfEventRepair) {\n return;\n }\n\n // This is the mutation-owned recovery path after a read-back miss. It is\n // intentionally separate from RMMWebSocketBridge refetches, which are\n // driven by websocket ingress and reconnection rather than mutation cleanup.\n const readOperationPathKey = this._config.readOperationPathKey;\n if (!readOperationPathKey) {\n return;\n }\n\n const readResult = await this._config.transportAdapter.execute({\n operationPathKey: readOperationPathKey,\n contextualParameters: this._config.contextualParameters,\n parentResourcesRequirements: this._config.parentResourcesRequirements,\n dataMode: DataMode.RAW,\n signal: undefined,\n });\n\n if (readResult.status !== OperationResultStatus.SUCCESS || !readResult.data) {\n logDebug('_retryAuthoritativeRecovery: canonical reread still unavailable', {\n errorType: readResult.error?.type,\n errorStatus: readResult.error?.status,\n });\n return;\n }\n\n const recoveredVersion = readResult.newVersion ?? this._version;\n if (recoveredVersion == null) {\n logDebug('_retryAuthoritativeRecovery: canonical reread missing version', {\n resourceId: this._resourceId,\n });\n return;\n }\n\n logDebug('_retryAuthoritativeRecovery: restored canonical confirmed state', {\n resourceId: this._resourceId,\n version: recoveredVersion,\n });\n this.setInitialState(readResult.data, recoveredVersion, readResult.fieldMeta);\n }\n\n /**\n * Start backpressure timers on first START_SAVING. Timers persist across retries\n * (measuring total elapsed time, not per-attempt). Only started if not already running.\n *\n * **Soft timeout:** Emits a non-success `MUTATION_RESULT` on `lastEvent` for UX/telemetry\n * only — it does **not** abort the transport; the request may still complete and produce\n * a subsequent event. Treat as \"slow operation\", not terminal failure.\n *\n * **Hard timeout:** Aborts via `AbortSignal` and rejects the mutation — terminal for\n * the in-flight operation.\n */\n private _startBackpressureTimers(): void {\n if (this._softTimer) return;\n\n this._softTimer = setTimeout(() => {\n this._softTimer = null;\n if (!this._activeMutation) return;\n\n logDebug('backpressure: soft timeout', {\n mutationId: this._activeMutation.entry.id,\n timeoutMs: this._backpressure.softTimeoutMs,\n });\n\n this._lastEvent = {\n type: RMMEventType.MUTATION_RESULT,\n result: {\n success: false,\n error: { type: MutationErrorType.TRANSIENT, message: 'Operation taking longer than expected' },\n },\n source: this._activeMutation.entry.source,\n id: ++this._eventCounter,\n };\n this._invalidateSnapshot();\n }, this._backpressure.softTimeoutMs);\n\n this._hardTimer = setTimeout(() => {\n this._hardTimer = null;\n this._clearTimers();\n\n logDebug('backpressure: hard timeout — aborting', {\n mutationId: this._activeMutation?.entry.id,\n timeoutMs: this._backpressure.hardTimeoutMs,\n });\n\n const source = this._activeMutation?.entry.source;\n\n if (this._activeMutation) {\n this._activeMutation.abortController.abort();\n this._activeMutation.entry.reject(\n new MutationCancelledError(this._activeMutation.entry.source),\n );\n this._activeMutation = null;\n }\n\n this._deferredSelfEvents = [];\n\n const nextState =\n this._queue.length > 0 || this._pendingFields.size > 0 ? RMMState.QUEUED : RMMState.IDLE;\n this._state = nextState;\n\n if (nextState === RMMState.IDLE) {\n this._lastError = null;\n } else {\n this._lastError = { type: MutationErrorType.TRANSIENT, message: 'Hard timeout exceeded' };\n }\n\n this._lastEvent = {\n type: RMMEventType.MUTATION_RESULT,\n result: {\n success: false,\n error: { type: MutationErrorType.TRANSIENT, message: 'Hard timeout exceeded' },\n retriesRemaining: 0,\n },\n source: source ?? DEFAULT_AUTOSAVE_SOURCE,\n id: ++this._eventCounter,\n };\n\n this._invalidateSnapshot();\n this._processQueue();\n this._notifyDrained();\n }, this._backpressure.hardTimeoutMs);\n }\n\n // =============================================================================\n // INTERNAL — Queue Coalescing\n // =============================================================================\n\n /**\n * Auto-coalesce when queue depth > 1: merge all entries into the highest-priority\n * survivor. Absorbed entries' Promises are chained to the survivor's resolution.\n */\n private _autoCoalesceQueue(): void {\n if (this._queue.length <= 1) return;\n if (this._queue.some((entry) => entry.transportOverride !== undefined)) {\n return;\n }\n\n let survivorIdx = 0;\n for (let i = 1; i < this._queue.length; i++) {\n if (this._queue[i].priority >= this._queue[survivorIdx].priority) {\n survivorIdx = i;\n }\n }\n const survivor = this._queue[survivorIdx];\n\n const absorbed: MutationQueueEntry[] = [];\n for (let i = 0; i < this._queue.length; i++) {\n if (i === survivorIdx) continue;\n const entry = this._queue[i];\n for (const [key, value] of Object.entries(entry.fields)) {\n if (!(key in survivor.fields)) {\n survivor.fields[key] = value;\n }\n }\n absorbed.push(entry);\n }\n\n logDebug('_autoCoalesceQueue', {\n survivorId: survivor.id,\n absorbedCount: absorbed.length,\n absorbedIds: absorbed.map((e) => e.id),\n mergedFieldCount: Object.keys(survivor.fields).length,\n });\n\n const originalResolve = survivor.resolve;\n const originalReject = survivor.reject;\n survivor.resolve = (result: MutationResult) => {\n originalResolve(result);\n for (const entry of absorbed) entry.resolve(result);\n };\n survivor.reject = (error: Error) => {\n originalReject(error);\n for (const entry of absorbed) entry.reject(error);\n };\n\n this._queue = [survivor];\n }\n\n // =============================================================================\n // INTERNAL — Destroy Support\n // =============================================================================\n\n private _notifyDrained(): void {\n if (this._activeMutation !== null || this._queue.length > 0) return;\n for (const cb of this._onDrainCallbacks) cb();\n this._onDrainCallbacks = [];\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ResourceMutationManager.js","sourceRoot":"","sources":["../../../../../src/core/resources/rmm/ResourceMutationManager.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * ResourceMutationManager — Production Implementation (Phase 1.1)\n *\n * Pure TypeScript class that owns all mutation state for a single resource instance.\n * Consumers observe state via useSyncExternalStore(rmm.subscribe, rmm.getSnapshot).\n * Side-effect events via useEffect([snapshot.lastEvent?.id]).\n *\n * State machine: IDLE → QUEUED → SAVING → IDLE (happy path)\n * SAVING → ERROR → SAVING (retry) → IDLE (exhaust: optimistic\n * state REVERTS to confirmedData + user-visible failure)\n * SAVING → CONFLICT → IDLE (acknowledge)\n * ANY → DELETED (terminal)\n */\n\nimport type {\n RMMEvent,\n RMMSnapshot,\n ResourceMutationManagerConfig,\n MutationQueueEntry,\n MutationSource,\n MutationResult,\n MutationError,\n ActiveMutation,\n BackpressureConfig,\n DeferredSelfEvent,\n OperationDescriptor,\n OperationResult,\n CRDTFieldTimestamps,\n} from './types';\nimport type { FieldMetaEntry } from '@wildo-ai/saas-models';\nimport {\n DataMode,\n extractCrdtFieldNames,\n lwwFieldWinner,\n nextMonotonicTimestamp,\n CrdtResolutionWinner,\n sanitizeFieldMeta,\n CoreResourceOperation,\n ErrorCustomMessageReference,\n ResourcesConfig_OperationPathUtils,\n} from '@wildo-ai/saas-models';\nimport { frontendEventBus } from '~wildo-frontend-lib/core/events/event-bus.frontend.service';\nimport { FrontendEvents } from '~wildo-frontend-lib/core/events/events.frontend.schemas';\nimport {\n RMMState,\n RMMEventType,\n MutationType,\n MutationSourceType,\n MutationErrorType,\n OperationResultStatus,\n ConflictStrategy,\n ConflictReason,\n DeletionReason,\n MutationPriority,\n MutationCancelledError,\n ResourceDeletedError,\n BackpressureRejectedError,\n} from './types';\nimport {\n RMM_HARD_TIMEOUT_MS,\n RMM_MAX_QUEUE_DEPTH,\n RMM_SERVER_RETRY_DELAY_MS,\n RMM_SOFT_TIMEOUT_MS,\n RMM_TRANSIENT_RETRY_DELAYS,\n} from './rmm-constants';\nimport { rmmFieldPathsOverlap, rmmNormalizeFieldPath, rmmReadPathValue } from './field-path.utils';\nimport { LoggerFrontendService } from '~wildo-frontend-lib/core/monitoring/logger.frontend.service';\n\n// =============================================================================\n// LOGGING\n// =============================================================================\n\nconst logger = LoggerFrontendService.getLogger();\nconst logDebug = logger.debugByType('ResourceMutationManager');\nlogger.setDebugTypeLogging('ResourceMutationManager', false);\n\n/**\n * Cap on remembered self-produced versions (see `_producedVersions`). Only very\n * recent self-versions can still be in flight over the WebSocket, so a small\n * bound is ample; it prevents unbounded growth on long-lived, heavily-edited\n * resources.\n */\nconst PRODUCED_VERSIONS_MAX = 64;\n\n// =============================================================================\n// MODULE HELPERS\n// =============================================================================\n\n/**\n * Read a value at a possibly-DOTTED path, mirroring `deepSetByPath`'s traversal and normalisation.\n *\n * Used to ask whether the server ECHOED a value for a field the caller cleared. A dotted key cannot\n * be answered by a flat lookup: the read-back carries `{ address: { city: 'X' } }`, never a literal\n * `'address.city'` key, so a flat probe would report \"no echo\" for every nested field and clear it\n * even when the server said otherwise.\n */\nfunction deepReadByPath(obj: Record<string, unknown>, path: string): unknown {\n const segments = rmmNormalizeFieldPath(path).split('.').filter(Boolean);\n let current: unknown = obj;\n for (const segment of segments) {\n if (current === null || current === undefined || typeof current !== 'object') return undefined;\n current = Array.isArray(current)\n ? (current as unknown[])[Number(segment)]\n : (current as Record<string, unknown>)[segment];\n }\n return current;\n}\n\nfunction deepSetByPath(obj: Record<string, unknown>, path: string, value: unknown): void {\n const segments = rmmNormalizeFieldPath(path).split('.').filter(Boolean);\n let current: Record<string, unknown> | unknown[] = obj;\n for (let i = 0; i < segments.length - 1; i++) {\n const seg = segments[i];\n const nextSegment = segments[i + 1];\n const nextContainer = /^\\d+$/.test(nextSegment) ? [] : {};\n\n if ((current as Record<string, unknown>)[seg] === undefined || (current as Record<string, unknown>)[seg] === null || typeof (current as Record<string, unknown>)[seg] !== 'object') {\n if (value === undefined) return;\n (current as Record<string, unknown>)[seg] = nextContainer;\n }\n current = (current as Record<string, unknown>)[seg] as Record<string, unknown> | unknown[];\n }\n const lastSeg = segments[segments.length - 1];\n if (value === undefined) {\n if (Array.isArray(current) && /^\\d+$/.test(lastSeg)) {\n delete current[Number(lastSeg)];\n } else {\n delete (current as Record<string, unknown>)[lastSeg];\n }\n } else {\n if (Array.isArray(current) && /^\\d+$/.test(lastSeg)) {\n current[Number(lastSeg)] = value;\n } else {\n (current as Record<string, unknown>)[lastSeg] = value;\n }\n }\n}\n\n\n// =============================================================================\n// INTERNAL TYPES\n// =============================================================================\n\nenum TransitionEventType {\n QUEUE_MUTATION = 'QUEUE_MUTATION',\n START_SAVING = 'START_SAVING',\n SAVE_SUCCESS = 'SAVE_SUCCESS',\n SAVE_ERROR = 'SAVE_ERROR',\n RETRY = 'RETRY',\n CONFLICT_DETECTED = 'CONFLICT_DETECTED',\n CONFLICT_ACKNOWLEDGED = 'CONFLICT_ACKNOWLEDGED',\n CANCEL = 'CANCEL',\n DELETE = 'DELETE',\n REMOTE_UPDATE = 'REMOTE_UPDATE',\n}\n\ntype TransitionEvent =\n | { type: TransitionEventType.QUEUE_MUTATION }\n | { type: TransitionEventType.START_SAVING }\n | { type: TransitionEventType.SAVE_SUCCESS; result: OperationResult; savedFields: string[]; clearedFields: string[]; source: MutationSource }\n | { type: TransitionEventType.SAVE_ERROR; result: OperationResult; savedFields: string[]; source: MutationSource }\n | { type: TransitionEventType.RETRY }\n | {\n type: TransitionEventType.CONFLICT_DETECTED;\n discardedFields: string[];\n reason: ConflictReason;\n currentData: Record<string, unknown>;\n currentVersion: number;\n conflictDetails?: MutationError['conflictDetails'];\n }\n | { type: TransitionEventType.CONFLICT_ACKNOWLEDGED }\n | { type: TransitionEventType.CANCEL }\n | { type: TransitionEventType.DELETE; reason: DeletionReason; deletedBy?: string }\n | { type: TransitionEventType.REMOTE_UPDATE; changedFields: string[]; mergedFields: string[]; version: number; initiatorUserId: string; crdtResolutions?: Record<string, CrdtResolutionWinner> };\n\n// =============================================================================\n// CONSTANTS\n// =============================================================================\n\nconst DEFAULT_AUTOSAVE_SOURCE: MutationSource = { type: MutationSourceType.FORM, subscriberId: 'autosave' };\n\nconst DEFAULT_BACKPRESSURE: BackpressureConfig = {\n maxQueueDepth: RMM_MAX_QUEUE_DEPTH,\n softTimeoutMs: RMM_SOFT_TIMEOUT_MS,\n hardTimeoutMs: RMM_HARD_TIMEOUT_MS,\n};\n\n// =============================================================================\n// CLASS\n// =============================================================================\n\nexport class ResourceMutationManager {\n // --- Identity ---\n readonly resourceType: string;\n private _resourceId: string | null;\n\n // --- Data (two-tier: confirmed vs optimistic) ---\n private _confirmedData: Record<string, unknown> | null = null;\n private _version: number | null = null;\n\n // --- Mutation State ---\n private _pendingFields: Map<string, unknown> = new Map();\n private _queue: MutationQueueEntry[] = [];\n private _activeMutation: ActiveMutation | null = null;\n private _state: RMMState = RMMState.IDLE;\n private _lastError: MutationError | null = null;\n\n // --- Declarative Event Model ---\n private _lastEvent: RMMEvent | null = null;\n private _eventCounter = 0;\n\n // --- Snapshot (for useSyncExternalStore) ---\n private _snapshotVersion = 0;\n private _cachedSnapshot: RMMSnapshot | null = null;\n private _cachedSnapshotVersion = -1;\n private _snapshotListeners: Set<() => void> = new Set();\n\n // --- Optimistic Data Memoization ---\n private _optimisticDataVersion = -1;\n private _cachedOptimisticData: Record<string, unknown> | null = null;\n\n // --- Config ---\n private _config: ResourceMutationManagerConfig;\n private _mutationIdCounter = 0;\n\n // --- Retry ---\n private _retryTimer: ReturnType<typeof setTimeout> | null = null;\n private _retryDelays = [...RMM_TRANSIENT_RETRY_DELAYS];\n private _serverRetryDelay = RMM_SERVER_RETRY_DELAY_MS;\n private _authoritativeRecoveryTimer: ReturnType<typeof setTimeout> | null = null;\n\n // --- Backpressure ---\n private _backpressure: BackpressureConfig;\n private _softTimer: ReturnType<typeof setTimeout> | null = null;\n private _hardTimer: ReturnType<typeof setTimeout> | null = null;\n\n // --- WebSocket Event Deferral (Phase 4 — data structure only) ---\n private _deferredSelfEvents: DeferredSelfEvent[] = [];\n private _allowSettledSelfEventRepair = false;\n\n // Server versions THIS tab's own confirmed mutations minted. A WebSocket echo\n // whose version is in this set is this tab's own optimistic echo (discard /\n // defer); a version NOT in it is a change from another client — even another\n // tab of the same user — so it is applied. See `_isOwnEcho`. Bounded FIFO.\n private _producedVersions: Set<number> = new Set();\n\n // --- CRDT Metadata ---\n private _crdtFieldNames: ReadonlySet<string>;\n private _fieldMeta: Record<string, FieldMetaEntry> | null = null;\n private _pendingFieldTimestamps: Map<string, number> = new Map();\n private _lastIssuedLocalTimestamp = 0;\n private _clockOffset: number = 0;\n\n // --- Destroy ---\n private _onDrainCallbacks: Array<() => void> = [];\n\n constructor(config: ResourceMutationManagerConfig) {\n this._config = config;\n this.resourceType = config.resourceType;\n this._resourceId = config.resourceId;\n const bp = config.backpressure;\n this._backpressure = {\n maxQueueDepth: bp?.maxQueueDepth ?? DEFAULT_BACKPRESSURE.maxQueueDepth,\n softTimeoutMs: bp?.softTimeoutMs ?? DEFAULT_BACKPRESSURE.softTimeoutMs,\n hardTimeoutMs: bp?.hardTimeoutMs ?? DEFAULT_BACKPRESSURE.hardTimeoutMs,\n };\n this._crdtFieldNames = extractCrdtFieldNames(config.resourceSchema);\n\n this.subscribe = this.subscribe.bind(this);\n this.getSnapshot = this.getSnapshot.bind(this);\n\n logDebug('constructor', {\n resourceType: config.resourceType,\n resourceId: config.resourceId,\n conflictStrategy: config.conflictPolicy.strategy,\n operationPathKey: config.operationPathKey,\n crdtFieldCount: this._crdtFieldNames.size,\n crdtFields: Array.from(this._crdtFieldNames),\n });\n }\n\n /**\n * Returns a strictly positive client timestamp for CRDT ordering.\n * Uses clock calibration from the registry; falls back to raw Date.now() when offset is 0.\n *\n * For a given CRDT field, the timestamp reflects the **last** local edit\n * enqueued (e.g. last autosave batch / submit merge), not the first keystroke.\n */\n private _getAdjustedTimestamp(): number {\n const raw = Date.now() + this._clockOffset;\n this._lastIssuedLocalTimestamp = nextMonotonicTimestamp(Math.max(1, raw), this._lastIssuedLocalTimestamp);\n return this._lastIssuedLocalTimestamp;\n }\n\n private _isCrdtManagedField(field: string): boolean {\n return this._crdtFieldNames.has(field) || this._crdtFieldNames.has(field.split('.')[0] ?? field);\n }\n\n set clockOffset(offset: number) {\n this._clockOffset = offset;\n }\n\n // =============================================================================\n // PUBLIC API — Identity\n // =============================================================================\n\n get resourceId(): string | null {\n return this._resourceId;\n }\n\n /** Contextual parameters used for doOperation routing (e.g., parent IDs for nested resources). */\n get contextualParameters(): Record<string, string | number> {\n return this._config.contextualParameters;\n }\n\n /** Context identifiers used to authorize and subscribe to the resource room. */\n get contextResourceIdentifiers(): Record<string, string> {\n return this._config.contextResourceIdentifiers ?? {};\n }\n\n /** Parent resource requirements for nested resource resolution during reconnection refetch. */\n get parentResourcesRequirements(): unknown[] | undefined {\n return this._config.parentResourcesRequirements;\n }\n\n /** Canonical READ path used for authoritative reseed/read-back flows. */\n get readOperationPathKey(): string | undefined {\n return this._config.readOperationPathKey;\n }\n\n /**\n * Applies runtime updates after the RMM was created via\n * `RMMRegistry.getOrCreate`. Registry identity stays `(resourceType, resourceId)`;\n * this patches the config used for `OperationDescriptor`, transport ownership,\n * self-event detection, and any caller-provided conflict / CRDT semantics that\n * are expected to stay aligned when a live surface reuses an existing instance.\n */\n syncRuntimeRoutingConfig(patch: {\n transportAdapter?: ResourceMutationManagerConfig['transportAdapter'];\n currentUserId: string;\n contextResourceIdentifiers?: Record<string, string>;\n contextualParameters: Record<string, string | number>;\n parentResourcesRequirements?: unknown[];\n operationPathKey?: string;\n readOperationPathKey?: string;\n conflictPolicy?: ResourceMutationManagerConfig['conflictPolicy'];\n resourceSchema?: ResourceMutationManagerConfig['resourceSchema'];\n }): void {\n if (this._state === RMMState.DELETED) return;\n\n const hasReadOperationPathKeyPatch = Object.prototype.hasOwnProperty.call(\n patch,\n 'readOperationPathKey',\n );\n const hasParentResourcesRequirementsPatch = Object.prototype.hasOwnProperty.call(\n patch,\n 'parentResourcesRequirements',\n );\n const didUpdateOperationPathKey =\n patch.operationPathKey !== undefined && patch.operationPathKey !== this._config.operationPathKey;\n const didUpdateReadOperationPathKey =\n hasReadOperationPathKeyPatch && patch.readOperationPathKey !== this._config.readOperationPathKey;\n const didUpdateTransportAdapter =\n patch.transportAdapter !== undefined && patch.transportAdapter !== this._config.transportAdapter;\n const didUpdateConflictPolicy =\n patch.conflictPolicy !== undefined\n && patch.conflictPolicy.strategy !== this._config.conflictPolicy.strategy;\n const didUpdateResourceSchema =\n patch.resourceSchema !== undefined && patch.resourceSchema !== this._config.resourceSchema;\n\n this._config = {\n ...this._config,\n ...(patch.transportAdapter !== undefined ? { transportAdapter: patch.transportAdapter } : {}),\n currentUserId: patch.currentUserId,\n ...(patch.contextResourceIdentifiers !== undefined\n ? { contextResourceIdentifiers: { ...patch.contextResourceIdentifiers } }\n : {}),\n contextualParameters: { ...patch.contextualParameters },\n ...(hasParentResourcesRequirementsPatch\n ? { parentResourcesRequirements: patch.parentResourcesRequirements }\n : {}),\n ...(patch.operationPathKey !== undefined ? { operationPathKey: patch.operationPathKey } : {}),\n ...(hasReadOperationPathKeyPatch ? { readOperationPathKey: patch.readOperationPathKey } : {}),\n ...(patch.conflictPolicy !== undefined ? { conflictPolicy: patch.conflictPolicy } : {}),\n ...(patch.resourceSchema !== undefined ? { resourceSchema: patch.resourceSchema } : {}),\n };\n\n if (didUpdateResourceSchema) {\n this._crdtFieldNames = extractCrdtFieldNames(patch.resourceSchema);\n }\n\n logDebug('syncRuntimeRoutingConfig', {\n resourceType: this.resourceType,\n resourceId: this._resourceId,\n hasUserId: patch.currentUserId.length > 0,\n didUpdateOperationPathKey,\n didUpdateReadOperationPathKey,\n didUpdateTransportAdapter,\n didUpdateConflictPolicy,\n didUpdateResourceSchema,\n crdtFieldCount: this._crdtFieldNames.size,\n });\n\n if (didUpdateOperationPathKey || didUpdateReadOperationPathKey) {\n this._invalidateSnapshot();\n }\n }\n\n // =============================================================================\n // PUBLIC API — State Management\n // =============================================================================\n\n /**\n * May be called multiple times (e.g., on refetch or WS reconnection).\n * Replaces _confirmedData and _version. Preserves _pendingFields.\n */\n setInitialState(\n data: Record<string, unknown>,\n version: number,\n _fieldMeta?: Record<string, FieldMetaEntry>,\n ): void {\n if (this._state === RMMState.DELETED) return;\n\n this._confirmedData = { ...data };\n this._version = version;\n this._clearAuthoritativeRecoveryTimer();\n this._allowSettledSelfEventRepair = false;\n const rawMeta = _fieldMeta ?? (data._field_meta as Record<string, FieldMetaEntry> | undefined);\n this._fieldMeta = rawMeta != null ? sanitizeFieldMeta(rawMeta) : null;\n this._invalidateSnapshot();\n\n logDebug('setInitialState', {\n resourceId: this._resourceId,\n version,\n fieldCount: Object.keys(data).length,\n pendingFieldCount: this._pendingFields.size,\n hasFieldMeta: this._fieldMeta !== null,\n });\n }\n\n // =============================================================================\n // PUBLIC API — Mutations\n // =============================================================================\n\n /**\n * Queue a mutation. Returns a Promise that resolves with MutationResult on\n * completion (success or server error). Rejects only for cancellation\n * (MutationCancelledError) or deletion (ResourceDeletedError).\n *\n * For HIGH-priority mutations (submit/draft/publish), all pending LOW fields\n * are merged in and the accumulator is cleared.\n */\n queueMutation(\n fields: Record<string, unknown>,\n options?: {\n type?: MutationQueueEntry['type'];\n priority?: MutationPriority;\n source?: MutationSource;\n signal?: AbortSignal;\n transportOverride?: MutationQueueEntry['transportOverride'];\n },\n ): Promise<MutationResult> {\n if (this._state === RMMState.DELETED) {\n logDebug('queueMutation: rejected — resource deleted', { resourceId: this._resourceId });\n return Promise.reject(new ResourceDeletedError());\n }\n\n const priority = options?.priority ?? MutationPriority.LOW;\n const type = options?.type ?? MutationType.AUTOSAVE;\n const source = options?.source ?? DEFAULT_AUTOSAVE_SOURCE;\n\n if (this._queue.length >= this._backpressure.maxQueueDepth && priority <= MutationPriority.LOW) {\n logDebug('queueMutation: rejected — backpressure', {\n queueDepth: this._queue.length,\n maxDepth: this._backpressure.maxQueueDepth,\n });\n return Promise.reject(new BackpressureRejectedError());\n }\n\n logDebug('queueMutation', {\n type,\n priority,\n source: source.subscriberId,\n fields: Object.keys(fields),\n state: this._state,\n queueDepth: this._queue.length,\n pendingFieldCount: this._pendingFields.size,\n });\n\n return new Promise<MutationResult>((resolve, reject) => {\n const entry: MutationQueueEntry = {\n id: `mut_${++this._mutationIdCounter}`,\n type,\n fields: { ...fields },\n priority,\n source,\n resolve,\n reject,\n signal: options?.signal,\n transportOverride: options?.transportOverride,\n };\n\n if (priority >= MutationPriority.HIGH) {\n for (const [key, value] of this._pendingFields) {\n if (!(key in entry.fields)) {\n entry.fields[key] = value;\n }\n }\n this._pendingFields.clear();\n // Record timestamps for CRDT fields in the submit that weren't already timestamped\n for (const key of Object.keys(entry.fields)) {\n if (this._isCrdtManagedField(key) && !this._pendingFieldTimestamps.has(key)) {\n this._pendingFieldTimestamps.set(key, this._getAdjustedTimestamp());\n }\n }\n } else {\n for (const [key, value] of Object.entries(fields)) {\n this._pendingFields.set(key, value);\n if (this._isCrdtManagedField(key)) {\n this._pendingFieldTimestamps.set(key, this._getAdjustedTimestamp());\n }\n }\n }\n\n this._queue.push(entry);\n this._queue.sort((a, b) => b.priority - a.priority);\n\n if (this._queue.length > 1) {\n this._autoCoalesceQueue();\n }\n\n this._transition({ type: TransitionEventType.QUEUE_MUTATION });\n this._processQueue();\n });\n }\n\n /**\n * Fire-and-forget convenience for autosave.\n * Errors are observable via snapshot.lastEvent, not via Promise.\n */\n autosave(fields: Record<string, unknown>): void {\n this.queueMutation(fields, {\n type: MutationType.AUTOSAVE,\n priority: MutationPriority.LOW,\n source: DEFAULT_AUTOSAVE_SOURCE,\n }).catch(() => {\n // Swallowed — errors delivered via lastEvent\n });\n }\n\n /**\n * Queue all accumulated pending fields as a single mutation.\n * Returns null if no pending fields exist.\n */\n flushPendingFields(options?: {\n priority?: MutationPriority;\n source?: MutationSource;\n signal?: AbortSignal;\n }): Promise<MutationResult | null> {\n if (this._pendingFields.size === 0) return Promise.resolve(null);\n\n const fields: Record<string, unknown> = {};\n for (const [key, value] of this._pendingFields) {\n fields[key] = value;\n }\n\n return this.queueMutation(fields, {\n type: MutationType.AUTOSAVE,\n priority: options?.priority ?? MutationPriority.NORMAL,\n source: options?.source ?? DEFAULT_AUTOSAVE_SOURCE,\n signal: options?.signal,\n });\n }\n\n /**\n * Cancel all pending and in-flight mutations. Rejects Promises with\n * MutationCancelledError. Aborts in-flight via AbortController.\n * Pending field accumulator is preserved (hasUnsavedChanges stays true).\n */\n cancelPendingMutations(source?: MutationSource): void {\n if (this._state === RMMState.DELETED) return;\n\n logDebug('cancelPendingMutations', {\n source: source?.subscriberId,\n queueDepth: this._queue.length,\n hasActiveMutation: this._activeMutation !== null,\n pendingFieldCount: this._pendingFields.size,\n });\n\n if (this._retryTimer) {\n clearTimeout(this._retryTimer);\n this._retryTimer = null;\n }\n\n if (this._activeMutation) {\n this._activeMutation.abortController.abort();\n this._activeMutation.entry.reject(new MutationCancelledError(source));\n this._activeMutation = null;\n }\n\n for (const entry of this._queue) {\n entry.reject(new MutationCancelledError(source));\n }\n this._queue = [];\n this._deferredSelfEvents = [];\n this._pendingFieldTimestamps.clear();\n\n this._transition({ type: TransitionEventType.CANCEL });\n }\n\n /**\n * Transition out of CONFLICT state. Typically called by the consumer after\n * showing a conflict banner and resetting the form to remote data.\n */\n acknowledgeConflict(): void {\n if (this._state !== RMMState.CONFLICT) return;\n logDebug('acknowledgeConflict', { resourceId: this._resourceId });\n this._transition({ type: TransitionEventType.CONFLICT_ACKNOWLEDGED });\n this._processQueue();\n }\n\n // =============================================================================\n // PUBLIC API — Remote Events\n // =============================================================================\n\n /**\n * Whether an incoming remote update is THIS tab's OWN echo (so it should be\n * deferred/discarded rather than applied).\n *\n * The signal is the **server version**, not the user id. Server `_version`s\n * are a monotonic, per-resource counter: the version produced by one tab's\n * mutation is globally unique, so `_producedVersions` (the versions THIS\n * manager's own confirmed mutations minted) identifies this tab's echoes\n * exactly. A change from ANOTHER tab — even the SAME user — carries a version\n * this tab never produced, so it is (correctly) foreign and gets applied.\n *\n * WHY NOT `initiatorUserId === currentUserId` (the previous check): that\n * treated EVERY same-user tab as \"self\" and silently discarded cross-tab\n * updates — the multi-tab-stale bug (two tabs of one user never see each\n * other's edits; the receiver logged `self-event discarded`).\n *\n * Fail-open: if a produced version was never recorded (e.g. the HTTP response\n * was lost but the echo arrived), the echo is treated as foreign and APPLIED\n * — harmless, since it carries the authoritative value the tab would have\n * confirmed anyway (and the bridge's field-diff skips it when it's a no-op).\n */\n private _isOwnEcho(version: number): boolean {\n return this._producedVersions.has(version);\n }\n\n /**\n * Record a server version this manager's own mutation just minted, so a later\n * WebSocket echo of that same version is recognised as this tab's own and not\n * re-applied. Bounded (FIFO) — only recent self-versions can still be in\n * flight over the wire; older ones are pruned.\n */\n private _recordProducedVersion(version: number | undefined): void {\n if (version == null) return;\n this._producedVersions.add(version);\n if (this._producedVersions.size > PRODUCED_VERSIONS_MAX) {\n // Sets preserve insertion order → the first key is the oldest.\n const oldest = this._producedVersions.values().next().value;\n if (oldest !== undefined) this._producedVersions.delete(oldest);\n }\n }\n\n /**\n * Apply a remote update from another client (typically via WebSocket).\n *\n * Self-event handling: an echo of a version THIS tab produced (see\n * {@link _isOwnEcho}) is deferred while a mutation is in-flight (so the\n * canonical HTTP/read-back path settles confirmed truth first) and otherwise\n * discarded (the HTTP response already applied it). An update from ANOTHER tab\n * — even the same user — carries a version this tab never produced, so it is\n * foreign and applied.\n *\n * Silent merge when no pending field overlap. Falls through to conflictPolicy\n * when overlap exists.\n */\n applyRemoteUpdate(\n changedFields: Record<string, unknown>,\n version: number,\n initiatorUserId?: string,\n _fieldMeta?: Record<string, FieldMetaEntry>,\n ): void {\n if (this._state === RMMState.DELETED) return;\n\n if (this._isOwnEcho(version)) {\n if (this._activeMutation !== null) {\n // This tab's own echo, deferred while the matching mutation is still in\n // flight so the canonical HTTP/read-back path settles confirmed truth\n // first.\n logDebug('applyRemoteUpdate: own-echo deferred (mutation in-flight)', {\n version,\n activeMutationId: this._activeMutation.entry.id,\n });\n this._deferredSelfEvents.push({ changedFields, version, initiatorUserId, fieldMeta: _fieldMeta });\n return;\n }\n if (this._allowSettledSelfEventRepair) {\n // If the immediate authoritative read-back missed, one later settled\n // own-echo may repair confirmed truth instead of being discarded.\n this._clearAuthoritativeRecoveryTimer();\n this._allowSettledSelfEventRepair = false;\n logDebug('applyRemoteUpdate: accepting settled own-echo after canonical read-back miss', { version });\n this._applyRemoteUpdateInternal(changedFields, version, initiatorUserId, _fieldMeta, true);\n return;\n }\n logDebug('applyRemoteUpdate: own-echo discarded (no in-flight mutation)', { version });\n return;\n }\n\n // In-flight race guard (complements the version-correlated self-check above).\n // While a mutation is in flight the version WE are about to produce is not\n // yet known — `_isOwnEcho` cannot recognise this tab's own echo until the\n // HTTP response records the produced version. An echo from the CURRENT user\n // arriving in that window is EITHER (a) this tab's own echo racing ahead of\n // its HTTP response, OR (b) a concurrent commit from ANOTHER tab of the same\n // user. Defer either way; once our mutation settles,\n // `_processDeferredSelfEvents(producedVersion)` discards the deferred event\n // whose version matches ours (own echo) and applies the rest as remote\n // changes — so the same-user-other-tab case (b) still lands (the multi-tab\n // fix), just after our own mutation settles.\n //\n // Without this, an own echo that beats the HTTP response is treated as a\n // foreign change and spuriously CONFLICTS with the in-flight pending fields,\n // cancelling a mutation that actually succeeded. User-id here is only a\n // \"defer for now\" heuristic — version correlation still makes the final\n // discard-vs-apply decision, so it never mis-discards another tab's change.\n if (\n this._activeMutation !== null\n && initiatorUserId !== undefined\n && initiatorUserId === this._config.currentUserId\n ) {\n logDebug('applyRemoteUpdate: same-user echo deferred (mutation in-flight, version not yet known)', {\n version,\n activeMutationId: this._activeMutation.entry.id,\n });\n this._deferredSelfEvents.push({ changedFields, version, initiatorUserId, fieldMeta: _fieldMeta });\n return;\n }\n\n this._applyRemoteUpdateInternal(changedFields, version, initiatorUserId, _fieldMeta);\n }\n\n /**\n * Transition to DELETED from any state. Aborts in-flight, rejects all queued\n * Promises with ResourceDeletedError.\n */\n handleDeletion(reason: DeletionReason, deletedBy?: string): void {\n logDebug('handleDeletion', { reason, deletedBy, resourceId: this._resourceId });\n this._transition({ type: TransitionEventType.DELETE, reason, deletedBy });\n }\n\n // =============================================================================\n // PUBLIC API — Snapshot (for useSyncExternalStore)\n // =============================================================================\n\n subscribe(callback: () => void): () => void {\n this._snapshotListeners.add(callback);\n return () => {\n this._snapshotListeners.delete(callback);\n };\n }\n\n /**\n * Returns a referentially stable snapshot. Same object reference when\n * state hasn't changed — useSyncExternalStore won't trigger re-render.\n */\n getSnapshot(): RMMSnapshot {\n if (this._cachedSnapshot && this._cachedSnapshotVersion === this._snapshotVersion) {\n return this._cachedSnapshot;\n }\n\n const optimisticData = this._getOptimisticData();\n const pendingFieldNames = Array.from(this._pendingFields.keys());\n const pendingFieldValues: Record<string, unknown> = {};\n for (const [key, value] of this._pendingFields) {\n pendingFieldValues[key] = value;\n }\n\n this._cachedSnapshot = {\n state: this._state,\n version: this._version,\n confirmedData: this._confirmedData,\n optimisticData,\n pendingFieldNames,\n pendingFieldValues,\n isSaving: this._state === RMMState.SAVING,\n isDeleted: this._state === RMMState.DELETED,\n hasUnsavedChanges:\n this._pendingFields.size > 0 || this._queue.length > 0 || this._activeMutation !== null,\n error: this._lastError,\n queueDepth: this._queue.length,\n lastEvent: this._lastEvent,\n };\n\n this._cachedSnapshotVersion = this._snapshotVersion;\n return this._cachedSnapshot;\n }\n\n // =============================================================================\n // PUBLIC API — Lifecycle\n // =============================================================================\n\n /**\n * Flush pending fields, wait for in-flight to complete, then clean up.\n * Called by the registry when refCount reaches zero after DESTROY_DELAY_MS.\n *\n * Bounded flush loop: fields folded back into _pendingFields by mid-ladder\n * paths (a VALIDATION failure, a superseded retry) may reappear after the\n * first flush completes, so we re-check up to 3 times. A retry-EXHAUSTED\n * flush no longer re-queues — terminal failure reverts to confirmed state —\n * so exhaustion simply exits this loop with nothing pending.\n */\n async destroy(): Promise<void> {\n logDebug('destroy: starting', {\n resourceId: this._resourceId,\n pendingFieldCount: this._pendingFields.size,\n queueDepth: this._queue.length,\n hasActiveMutation: this._activeMutation !== null,\n });\n\n let flushAttempts = 0;\n while (this._pendingFields.size > 0 && flushAttempts++ < 3) {\n try {\n await this.flushPendingFields();\n } catch (err) {\n logDebug('destroy: flushPendingFields failed', {\n resourceId: this._resourceId,\n attempt: flushAttempts,\n error: err instanceof Error ? err.message : String(err),\n });\n break;\n }\n }\n\n if (this._pendingFields.size > 0) {\n logDebug('destroy: completing with pending fields remaining (flush exhausted or failed)', {\n resourceId: this._resourceId,\n pendingFieldCount: this._pendingFields.size,\n });\n }\n\n if (this._activeMutation || this._queue.length > 0) {\n logDebug('destroy: waiting for drain', { queueDepth: this._queue.length });\n await new Promise<void>((resolve) => {\n this._onDrainCallbacks.push(resolve);\n });\n }\n\n this._clearTimers();\n this._clearAuthoritativeRecoveryTimer();\n this._snapshotListeners.clear();\n logDebug('destroy: complete', { resourceId: this._resourceId });\n }\n\n // =============================================================================\n // INTERNAL — State Machine\n // =============================================================================\n\n /**\n * Single dispatch method for all state transitions. Structured for future\n * XState v5 migration: guards are pure checks, side effects grouped as\n * actions, no ad-hoc state assignments outside this method.\n */\n private _transition(event: TransitionEvent): void {\n const prevState = this._state;\n\n switch (event.type) {\n case TransitionEventType.QUEUE_MUTATION:\n if (this._state === RMMState.IDLE) {\n this._state = RMMState.QUEUED;\n } else if (this._state === RMMState.ERROR) {\n // A fresh mutation supersedes one that is failing/erroring. The\n // original `!_retryTimer` arm already resumed the queue once retries\n // were exhausted (or a retry was mid-flight, timer already null);\n // this branch additionally BREAKS a still-pending retry so the newest\n // user edit is not held hostage by the retry ladder.\n //\n // Without this, an edit queued while the active mutation is WAITING to\n // retry a transient/server error (e.g. a backend blip or a dev\n // restart-window 503 that the browser surfaces as a CORS-less network\n // error) fires no request at all — `_processQueue` early-returns while\n // state is ERROR — until the ladder exhausts (several seconds). To the\n // user that reads as \"the second edit silently did nothing\".\n //\n // Fold the superseded mutation's in-flight fields back into the\n // pending batch (newest edit wins on overlap — the `!has` guard — so\n // nothing is lost), cancel the pending retry, and reject its promise\n // as cancelled so its autosave quietly returns to idle while THIS\n // fresh mutation reports the real save state. Mirrors the field\n // preservation already done on the retry-exhausted path.\n if (this._retryTimer && this._activeMutation) {\n this._clearTimers();\n const superseded = this._activeMutation;\n for (const [field, value] of Object.entries(superseded.savingFields)) {\n if (!this._pendingFields.has(field)) {\n this._pendingFields.set(field, value);\n }\n }\n superseded.abortController.abort();\n this._activeMutation = null;\n superseded.entry.reject(new MutationCancelledError(superseded.entry.source));\n }\n this._state = RMMState.QUEUED;\n }\n this._invalidateSnapshot();\n return;\n\n case TransitionEventType.START_SAVING:\n if (this._state === RMMState.QUEUED) {\n this._state = RMMState.SAVING;\n this._lastError = null;\n this._startBackpressureTimers();\n }\n break;\n\n case TransitionEventType.SAVE_SUCCESS: {\n this._state =\n this._queue.length > 0 || this._pendingFields.size > 0 ? RMMState.QUEUED : RMMState.IDLE;\n this._lastError = null;\n this._clearTimers();\n\n if (event.result.data) {\n this._mergeResponseDataIntoConfirmed(event.result.data);\n }\n this._applyConfirmedClears(event.clearedFields, event.result.data);\n if (event.result.newVersion !== undefined) {\n this._version = event.result.newVersion;\n }\n\n this._lastEvent = {\n type: RMMEventType.MUTATION_RESULT,\n result: {\n success: true,\n savedFields: event.savedFields,\n newVersion: event.result.newVersion,\n responseData: event.result.data,\n },\n source: event.source,\n id: ++this._eventCounter,\n };\n break;\n }\n\n case TransitionEventType.SAVE_ERROR: {\n const errorType = event.result.error?.type;\n const mutationError: MutationError = event.result.error\n ? {\n type: event.result.error.type,\n status: event.result.error.status,\n validationErrors: event.result.error.validationErrors,\n message: event.result.error.message,\n conflictDetails: event.result.error.conflictDetails,\n }\n : { type: MutationErrorType.SERVER, message: 'Unknown error' };\n\n this._lastError = mutationError;\n\n // --- Conflict (409) ---\n if (errorType === MutationErrorType.CONFLICT) {\n this._clearTimers();\n this._state = RMMState.CONFLICT;\n\n const allDiscardedFields = [...new Set([\n ...event.savedFields,\n ...this._pendingFields.keys(),\n ])];\n\n for (const entry of this._queue) {\n entry.reject(new MutationCancelledError());\n }\n this._queue = [];\n this._pendingFields.clear();\n this._pendingFieldTimestamps.clear();\n this._deferredSelfEvents = [];\n\n const cd = mutationError.conflictDetails;\n const serverSlice = cd?.currentValues;\n const currentData =\n serverSlice && Object.keys(serverSlice).length > 0\n ? { ...(this._confirmedData ?? {}), ...serverSlice }\n : (this._confirmedData ?? {});\n const currentVersion = cd?.currentVersion ?? this._version ?? 0;\n\n this._confirmedData = { ...currentData };\n this._version = currentVersion;\n\n this._lastEvent = {\n type: RMMEventType.CONFLICT_RESET,\n discardedFields: allDiscardedFields,\n reason: ConflictReason.VERSION_CONFLICT,\n currentData,\n currentVersion,\n conflictDetails: cd,\n id: ++this._eventCounter,\n };\n break;\n }\n\n // --- Abort (no retry, no lastEvent — communicated via Promise rejection) ---\n if (errorType === MutationErrorType.ABORT) {\n this._clearTimers();\n const nextState =\n this._queue.length > 0 || this._pendingFields.size > 0 ? RMMState.QUEUED : RMMState.IDLE;\n this._state = nextState;\n if (nextState === RMMState.IDLE) {\n this._lastError = null;\n }\n break;\n }\n\n // --- Validation / Not Found (no retry, with lastEvent) ---\n if (errorType === MutationErrorType.VALIDATION || errorType === MutationErrorType.NOT_FOUND) {\n this._clearTimers();\n\n if (errorType === MutationErrorType.VALIDATION && this._activeMutation) {\n for (const field of event.savedFields) {\n if (!this._pendingFields.has(field)) {\n this._pendingFields.set(field, this._activeMutation.savingFields[field]);\n }\n }\n }\n\n this._lastEvent = {\n type: RMMEventType.MUTATION_RESULT,\n result: {\n success: false,\n savedFields: event.savedFields,\n error: mutationError,\n retriesRemaining: 0,\n },\n source: event.source,\n id: ++this._eventCounter,\n };\n\n this._state =\n this._queue.length > 0 || this._pendingFields.size > 0 ? RMMState.QUEUED : RMMState.IDLE;\n break;\n }\n\n // --- Transient / Server (may retry) ---\n const retryCount = this._activeMutation?.retryCount ?? 0;\n const maxRetries =\n errorType === MutationErrorType.TRANSIENT\n ? this._retryDelays.length\n : errorType === MutationErrorType.SERVER\n ? 1\n : 0;\n\n if (retryCount < maxRetries) {\n const delay =\n errorType === MutationErrorType.TRANSIENT\n ? this._retryDelays[retryCount]\n : this._serverRetryDelay;\n\n this._state = RMMState.ERROR;\n\n this._lastEvent = {\n type: RMMEventType.MUTATION_RESULT,\n result: {\n success: false,\n savedFields: event.savedFields,\n error: mutationError,\n retriesRemaining: maxRetries - retryCount,\n },\n source: event.source,\n id: ++this._eventCounter,\n };\n\n this._retryTimer = setTimeout(() => {\n this._retryTimer = null;\n if (this._state !== RMMState.ERROR || !this._activeMutation) return;\n this._activeMutation.retryCount++;\n logDebug('retry: attempt', {\n mutationId: this._activeMutation.entry.id,\n retryCount: this._activeMutation.retryCount,\n maxRetries,\n delayMs: delay,\n });\n this._transition({ type: TransitionEventType.RETRY });\n this._executeTransport(this._activeMutation);\n }, delay);\n break;\n }\n\n // --- Retry exhausted — TERMINAL failure: revert + surface (audit B1) ---\n //\n // The ladder is spent and the write is NOT persisted. The previous\n // behaviour re-queued the failed values into `_pendingFields`, which\n // kept `optimisticData` rendering them as \"saved\" forever while the\n // transport's `silent: true` suppressed every toast — a silent write\n // loss (checklist edits surviving on screen and vanishing on reload).\n //\n // Terminal contract, mirroring CONFLICT_DETECTED's reset shape:\n // 1. REVERT — drop the failed values (and anything queued behind them\n // on the same dead backend) so `optimisticData` falls back to\n // `confirmedData` and the UI stops claiming the save happened.\n // 2. EVENT — emit a MUTATION_RESULT failure (`retriesRemaining: 0`) so\n // subscribers (forms/displayers) observe the terminal failure and\n // drop their own optimistic UI.\n // 3. NOTIFY — emit a user-visible resource error notification; the\n // transport's `silent: true` only suppresses the per-attempt global\n // toasts, so without this the terminal failure had NO user signal.\n //\n // Rejected alternative — keep re-queueing and let a later mutation\n // retry: with the backend down every later attempt exhausts the same\n // way, so the \"eventual save\" never comes and the lie compounds.\n // CONFLICT semantics are untouched (handled above).\n this._clearTimers();\n\n const terminalDiscardedFields = [...new Set([\n ...event.savedFields,\n ...this._pendingFields.keys(),\n ])];\n\n for (const entry of this._queue) {\n entry.reject(new MutationCancelledError());\n }\n this._queue = [];\n this._pendingFields.clear();\n this._pendingFieldTimestamps.clear();\n this._deferredSelfEvents = [];\n\n this._lastEvent = {\n type: RMMEventType.MUTATION_RESULT,\n result: {\n success: false,\n savedFields: event.savedFields,\n error: mutationError,\n retriesRemaining: 0,\n },\n source: event.source,\n id: ++this._eventCounter,\n };\n\n this._state = RMMState.IDLE;\n\n this._emitTerminalMutationFailureNotification(mutationError, terminalDiscardedFields);\n break;\n }\n\n case TransitionEventType.RETRY:\n if (this._state === RMMState.ERROR) {\n this._state = RMMState.SAVING;\n }\n break;\n\n case TransitionEventType.CONFLICT_DETECTED: {\n this._clearTimers();\n this._state = RMMState.CONFLICT;\n\n if (this._activeMutation) {\n this._activeMutation.abortController.abort();\n this._activeMutation.entry.reject(new MutationCancelledError());\n this._activeMutation = null;\n }\n\n for (const entry of this._queue) {\n entry.reject(new MutationCancelledError());\n }\n this._queue = [];\n this._pendingFields.clear();\n this._pendingFieldTimestamps.clear();\n this._deferredSelfEvents = [];\n\n this._confirmedData = { ...event.currentData };\n this._version = event.currentVersion;\n\n this._lastEvent = {\n type: RMMEventType.CONFLICT_RESET,\n discardedFields: event.discardedFields,\n reason: event.reason,\n currentData: event.currentData,\n currentVersion: event.currentVersion,\n conflictDetails: event.conflictDetails,\n id: ++this._eventCounter,\n };\n break;\n }\n\n case TransitionEventType.CONFLICT_ACKNOWLEDGED:\n if (this._state === RMMState.CONFLICT) {\n this._state = this._queue.length > 0 ? RMMState.QUEUED : RMMState.IDLE;\n this._lastError = null;\n }\n break;\n\n case TransitionEventType.CANCEL:\n this._state = RMMState.IDLE;\n this._lastError = null;\n break;\n\n case TransitionEventType.DELETE: {\n this._clearTimers();\n\n if (this._activeMutation) {\n this._activeMutation.abortController.abort();\n this._activeMutation.entry.reject(new ResourceDeletedError());\n this._activeMutation = null;\n }\n\n for (const entry of this._queue) {\n entry.reject(new ResourceDeletedError());\n }\n this._queue = [];\n this._pendingFields.clear();\n this._pendingFieldTimestamps.clear();\n this._deferredSelfEvents = [];\n\n this._state = RMMState.DELETED;\n\n this._lastEvent = {\n type: RMMEventType.RESOURCE_DELETED,\n reason: event.reason,\n deletedBy: event.deletedBy,\n id: ++this._eventCounter,\n };\n break;\n }\n\n case TransitionEventType.REMOTE_UPDATE:\n this._lastEvent = {\n type: RMMEventType.REMOTE_UPDATE,\n changedFields: event.changedFields,\n mergedFields: event.mergedFields,\n version: event.version,\n initiatorUserId: event.initiatorUserId,\n crdtResolutions: event.crdtResolutions,\n id: ++this._eventCounter,\n };\n break;\n }\n\n if (this._state !== prevState) {\n logDebug('_transition', {\n event: event.type,\n from: prevState,\n to: this._state,\n queueDepth: this._queue.length,\n pendingFieldCount: this._pendingFields.size,\n hasActiveMutation: this._activeMutation !== null,\n lastEventType: this._lastEvent?.type,\n });\n }\n\n this._invalidateSnapshot();\n }\n\n /**\n * Emit the user-visible notification for a TERMINAL mutation failure\n * (transient/server retry ladder exhausted).\n *\n * Why HERE and not in a React subscriber: the retry ladder can outlive the\n * surface that queued the mutation (registry-held instance, destroy-delayed),\n * and the notification invariant is \"every exhausted ladder surfaces exactly\n * one user-visible error\". Emitting from the single exhaustion site makes\n * that unbypassable for every creation path (hooks, registry, tests) instead\n * of hoping each consumer wires a handler. The transport's `silent: true`\n * suppresses only the per-attempt global error toasts; this is the one\n * deliberate terminal signal.\n *\n * Emission is best-effort and must never throw into the state machine.\n */\n private _emitTerminalMutationFailureNotification(error: MutationError, discardedFields: string[]): void {\n const operationPathKey = this._config.operationPathKey ?? this.resourceType;\n let operationPath: {\n operationIdentifier?: string;\n variantType?: string;\n isOperationDefault?: boolean;\n isBulkOperation?: boolean;\n variantKey?: string;\n } = {};\n try {\n operationPath = ResourcesConfig_OperationPathUtils.parseOperationPathKey(operationPathKey) as typeof operationPath;\n } catch {\n // A bare resourceType fallback key is not a parseable operation path —\n // notify with UPDATE-shaped defaults rather than dropping the signal.\n }\n\n try {\n frontendEventBus.emit(FrontendEvents.NOTIFY_RESOURCE_ERROR, {\n resourceType: this.resourceType,\n parentResourcesRequirements: [],\n operationIdentifier: String(operationPath.operationIdentifier ?? CoreResourceOperation.UPDATE),\n isOperationDefault: operationPath.isOperationDefault ?? true,\n isBulkOperation: operationPath.isBulkOperation ?? false,\n variantKey: operationPath.variantKey,\n operation: undefined,\n contextResourceIdentifiers: this._config.contextResourceIdentifiers ?? {},\n additionalContext: {\n error: error.message ?? 'Saving failed after retries',\n // TRANSIENT terminal failures are network-level (connection refused,\n // readiness gate gave up): route the toast copy through the\n // localized NETWORK error label. SERVER failures fall through to\n // the notification layer's default error message.\n errorCustomMessageReference:\n error.type === MutationErrorType.TRANSIENT ? ErrorCustomMessageReference.NETWORK : undefined,\n errorHttpStatus: error.status,\n mutationErrorType: error.type,\n discardedFields,\n },\n });\n } catch (emitError) {\n logDebug('_emitTerminalMutationFailureNotification: emit failed', {\n resourceId: this._resourceId,\n error: emitError instanceof Error ? emitError.message : String(emitError),\n });\n }\n }\n\n // =============================================================================\n // INTERNAL — Queue Processing\n // =============================================================================\n\n /**\n * Process the next mutation in the queue if no mutation is currently in-flight.\n * Uses move semantics: fields are moved from _pendingFields into savingFields.\n */\n private _processQueue(): void {\n if (this._activeMutation !== null) return;\n if (this._queue.length === 0) return;\n if (this._state === RMMState.CONFLICT || this._state === RMMState.DELETED || this._state === RMMState.ERROR) return;\n\n const entry = this._queue.shift()!;\n\n let savingFields: Record<string, unknown>;\n\n if (entry.type === MutationType.SUBMIT || entry.type === MutationType.DRAFT || entry.type === MutationType.PUBLISH) {\n savingFields = { ...entry.fields };\n this._pendingFields.clear();\n } else {\n savingFields = {};\n for (const key of Object.keys(entry.fields)) {\n if (this._pendingFields.has(key)) {\n savingFields[key] = this._pendingFields.get(key);\n this._pendingFields.delete(key);\n } else {\n savingFields[key] = entry.fields[key];\n }\n }\n }\n\n logDebug('_processQueue: dequeued', {\n mutationId: entry.id,\n type: entry.type,\n priority: entry.priority,\n savingFields: Object.keys(savingFields),\n remainingQueue: this._queue.length,\n remainingPending: this._pendingFields.size,\n });\n\n const abortController = new AbortController();\n\n // AbortSignal composition: wire caller's signal to our controller\n if (entry.signal) {\n if (entry.signal.aborted) {\n entry.reject(new MutationCancelledError(entry.source));\n this._processQueue();\n return;\n }\n entry.signal.addEventListener('abort', () => abortController.abort(), { once: true });\n }\n\n this._activeMutation = {\n entry,\n savingFields,\n abortController,\n retryCount: 0,\n };\n\n this._transition({ type: TransitionEventType.START_SAVING });\n this._executeTransport(this._activeMutation);\n }\n\n /**\n * Execute the transport adapter for a mutation. Captures `thisMutation`\n * reference before the async call to detect stale callbacks — if\n * cancelPendingMutations() runs during the await, the callback bails out.\n */\n private _executeTransport(mutation: ActiveMutation): void {\n const thisMutation = mutation;\n\n logDebug('_executeTransport: sending', {\n mutationId: mutation.entry.id,\n type: mutation.entry.type,\n fields: Object.keys(mutation.savingFields),\n version: this._version,\n retryCount: mutation.retryCount,\n });\n\n // Build field timestamps for CRDT fields being sent\n const fieldTimestamps: Record<string, number> = {};\n for (const field of Object.keys(mutation.savingFields)) {\n if (this._isCrdtManagedField(field)) {\n const ts = this._pendingFieldTimestamps.get(field);\n if (ts !== undefined) {\n fieldTimestamps[field] = ts;\n }\n }\n }\n\n const transportOverride = thisMutation.entry.transportOverride;\n const descriptor: OperationDescriptor = {\n operationPathKey: transportOverride?.operationPathKey ?? this._config.operationPathKey ?? this._config.resourceType,\n contextualParameters: transportOverride?.contextualParameters ?? this._config.contextualParameters,\n parentResourcesRequirements: transportOverride?.parentResourcesRequirements ?? this._config.parentResourcesRequirements,\n requestData: transportOverride?.requestData ?? mutation.savingFields,\n expectedVersion: this._version,\n signal: mutation.abortController.signal,\n fieldTimestamps:\n Object.keys(fieldTimestamps).length > 0\n ? fieldTimestamps\n : undefined,\n };\n\n this._config.transportAdapter.execute(descriptor).then(\n async (rawResult) => {\n if (this._activeMutation !== thisMutation) {\n logDebug('_executeTransport: stale callback — ignored', { mutationId: thisMutation.entry.id });\n return;\n }\n\n const savedFields = Object.keys(thisMutation.savingFields);\n const source = thisMutation.entry.source;\n const result = rawResult.status === OperationResultStatus.SUCCESS && transportOverride?.readBackOnSuccess\n ? await this._readBackConfirmedState(rawResult)\n : rawResult;\n\n if (result.status === OperationResultStatus.SUCCESS) {\n logDebug('_executeTransport: success', {\n mutationId: thisMutation.entry.id,\n savedFields,\n newVersion: result.newVersion,\n });\n\n // Store _fieldMeta from transport response (preserve null semantics)\n const rawTransportMeta = result.fieldMeta ?? result.data?._field_meta;\n if (rawTransportMeta != null) {\n this._fieldMeta = sanitizeFieldMeta(rawTransportMeta);\n }\n\n for (const field of savedFields) {\n this._pendingFieldTimestamps.delete(field);\n }\n\n // The fields this mutation explicitly CLEARED. Carried through to confirmed state because\n // the canonical read-back expresses a clear by OMITTING the key, which a merge cannot act\n // on — see `_applyConfirmedClears`.\n const clearedFields = Object.entries(thisMutation.savingFields)\n .filter(([, fieldValue]) => fieldValue === null)\n .map(([fieldName]) => fieldName);\n\n this._transition({ type: TransitionEventType.SAVE_SUCCESS, result, savedFields, clearedFields, source });\n this._activeMutation = null;\n // Remember the version THIS tab's mutation just minted, so its own\n // WebSocket echo is recognised (and skipped) while another tab's\n // change — carrying a version this tab never produced — is applied.\n this._recordProducedVersion(result.newVersion);\n this._processDeferredSelfEvents(result.newVersion);\n this._invalidateSnapshot();\n\n thisMutation.entry.resolve({\n success: true,\n savedFields,\n newVersion: result.newVersion,\n responseData: result.data,\n });\n\n this._processQueue();\n this._notifyDrained();\n } else {\n logDebug('_executeTransport: error', {\n mutationId: thisMutation.entry.id,\n errorType: result.error?.type,\n errorStatus: result.error?.status,\n errorMessage: result.error?.message,\n savedFields,\n });\n this._transition({ type: TransitionEventType.SAVE_ERROR, result, savedFields, source });\n\n if (this._state === RMMState.ERROR) {\n // Retry scheduled — mutation stays alive, don't resolve/reject yet\n } else if (this._state === RMMState.CONFLICT) {\n this._activeMutation = null;\n this._processDeferredSelfEvents(result.newVersion);\n this._invalidateSnapshot();\n thisMutation.entry.resolve({\n success: false,\n savedFields,\n error: {\n type: MutationErrorType.CONFLICT,\n conflictDetails: result.error?.conflictDetails,\n },\n });\n this._notifyDrained();\n } else if (result.error?.type === MutationErrorType.ABORT) {\n this._activeMutation = null;\n this._processDeferredSelfEvents(result.newVersion);\n this._invalidateSnapshot();\n thisMutation.entry.reject(new MutationCancelledError(thisMutation.entry.source));\n this._processQueue();\n this._notifyDrained();\n } else {\n this._activeMutation = null;\n this._processDeferredSelfEvents(result.newVersion);\n this._invalidateSnapshot();\n thisMutation.entry.resolve({\n success: false,\n savedFields,\n error: result.error\n ? {\n type: result.error.type,\n status: result.error.status,\n validationErrors: result.error.validationErrors,\n message: result.error.message,\n }\n : undefined,\n });\n this._processQueue();\n this._notifyDrained();\n }\n }\n },\n (error: unknown) => {\n if (this._activeMutation !== thisMutation) {\n logDebug('_executeTransport: stale rejection — ignored', { mutationId: thisMutation.entry.id });\n return;\n }\n\n const savedFields = Object.keys(thisMutation.savingFields);\n const source = thisMutation.entry.source;\n\n logDebug('_executeTransport: transport rejected', {\n mutationId: thisMutation.entry.id,\n error: error instanceof Error ? error.message : String(error),\n savedFields,\n });\n\n this._transition({\n type: TransitionEventType.SAVE_ERROR,\n result: {\n status: OperationResultStatus.ERROR,\n error: {\n type: MutationErrorType.TRANSIENT,\n message: error instanceof Error ? error.message : String(error),\n },\n },\n savedFields,\n source,\n });\n\n if (this._state === RMMState.ERROR) {\n // Retry scheduled — mutation stays alive\n } else {\n this._activeMutation = null;\n this._processDeferredSelfEvents(undefined);\n this._invalidateSnapshot();\n thisMutation.entry.resolve({\n success: false,\n savedFields,\n error: {\n type: MutationErrorType.TRANSIENT,\n message: error instanceof Error ? error.message : String(error),\n },\n });\n this._processQueue();\n this._notifyDrained();\n }\n },\n );\n }\n\n // =============================================================================\n // INTERNAL — Authoritative Refresh\n // =============================================================================\n\n private async _readBackConfirmedState(result: OperationResult): Promise<OperationResult> {\n const readOperationPathKey = this._config.readOperationPathKey;\n if (!readOperationPathKey) {\n return result;\n }\n\n // Successful mutations still prefer one canonical RAW reread before the\n // mutation result is promoted to confirmedData. That keeps mutation success\n // and websocket replay on the same authoritative read contract.\n const readResult = await this._config.transportAdapter.execute({\n operationPathKey: readOperationPathKey,\n contextualParameters: this._config.contextualParameters,\n parentResourcesRequirements: this._config.parentResourcesRequirements,\n dataMode: DataMode.RAW,\n signal: undefined,\n });\n\n if (readResult.status !== OperationResultStatus.SUCCESS) {\n this._allowSettledSelfEventRepair = true;\n this._scheduleAuthoritativeRecovery();\n // Keep the mutation marked successful, but strip read-shaped data/field\n // metadata so callers do not accidentally trust a partial mutation\n // response as canonical confirmed state.\n logDebug('_readBackConfirmedState: falling back to mutation response', {\n errorType: readResult.error?.type,\n errorStatus: readResult.error?.status,\n });\n return {\n ...result,\n data: undefined,\n fieldMeta: undefined,\n };\n }\n\n this._clearAuthoritativeRecoveryTimer();\n this._allowSettledSelfEventRepair = false;\n\n return {\n ...result,\n data: readResult.data,\n newVersion: readResult.newVersion ?? result.newVersion,\n fieldMeta: readResult.fieldMeta ?? result.fieldMeta,\n };\n }\n\n // =============================================================================\n // INTERNAL — Optimistic Data\n // =============================================================================\n\n /**\n * Merges transport success payload into `_confirmedData` using `deepSetByPath` per\n * entry so dotted keys and nested shapes match optimistic/remote merge semantics\n * (avoids shallow spread clobbering nested objects).\n */\n /**\n * Remove fields the caller CLEARED from confirmed state, which a merge structurally cannot do.\n *\n * `_mergeResponseDataIntoConfirmed` walks the response's own entries, so it can only ever ADD or\n * OVERWRITE. A cleared field is absent from the canonical read-back — that absence IS the server\n * telling us the field is gone — and an absent key overwrites nothing, so the stale value\n * survived in confirmed state and kept rendering until a full page reload. Live-observed on the\n * surface this contract was built for: the colour disappeared from storage and stayed on screen.\n *\n * Authority still rests with the server: a field is dropped only when the caller explicitly sent\n * `null` for it AND the response did not come back carrying a value. If the server echoes\n * something (a default, a computed value, a rejection of the clear), that echo wins.\n *\n * DOTTED paths are handled, not just top-level names. That is not theoretical tidiness: autosave\n * calls `triggerSave` with the field's RESOLVED name, which for a composite child is its absolute\n * dotted path (`address.city`), and that string is queued verbatim as the mutation key. A\n * top-level `delete next['address.city']` matched no key at all, so a cleared composite child was\n * silently exempt from the very correction this method exists to make.\n */\n private _applyConfirmedClears(\n clearedFields: string[] | undefined,\n responseData: Record<string, unknown> | undefined,\n ): void {\n if (!clearedFields?.length || !this._confirmedData) return;\n\n const next = structuredClone(this._confirmedData);\n for (const fieldName of clearedFields) {\n if (responseData && deepReadByPath(responseData, fieldName) !== undefined) continue;\n // `deepSetByPath` with `undefined` DELETES, and it normalises bracket notation first, so this\n // reaches a nested member as well as a top-level field.\n deepSetByPath(next, fieldName, undefined);\n }\n this._confirmedData = next;\n }\n\n private _mergeResponseDataIntoConfirmed(data: Record<string, unknown>): void {\n const base =\n this._confirmedData !== null ? structuredClone(this._confirmedData) : ({} as Record<string, unknown>);\n for (const [path, value] of Object.entries(data)) {\n deepSetByPath(base, path, value);\n }\n this._confirmedData = base;\n }\n\n /**\n * Path-aware deep merge of _confirmedData + in-flight savingFields + _pendingFields.\n * Uses deepSetByPath for nested paths (e.g., \"metadata.theme\" sets the nested property,\n * not a top-level key named \"metadata.theme\").\n */\n private _getOptimisticData(): Record<string, unknown> | null {\n if (!this._confirmedData) return null;\n\n if (this._pendingFields.size === 0 && !this._activeMutation) {\n return this._confirmedData;\n }\n\n if (this._optimisticDataVersion === this._snapshotVersion) {\n return this._cachedOptimisticData;\n }\n\n const result = structuredClone(this._confirmedData);\n\n if (this._activeMutation) {\n for (const [key, value] of Object.entries(this._activeMutation.savingFields)) {\n deepSetByPath(result, key, value);\n }\n }\n\n for (const [key, value] of this._pendingFields) {\n deepSetByPath(result, key, value);\n }\n\n this._cachedOptimisticData = result;\n this._optimisticDataVersion = this._snapshotVersion;\n return result;\n }\n\n // =============================================================================\n // INTERNAL — Snapshot Management\n // =============================================================================\n\n private _invalidateSnapshot(): void {\n this._snapshotVersion++;\n this._cachedSnapshot = null;\n for (const listener of this._snapshotListeners) {\n listener();\n }\n }\n\n /**\n * Internal merge logic shared by applyRemoteUpdate and _processDeferredSelfEvents.\n * Skips the self-event guard — callers are responsible for determining whether\n * the event should be processed.\n */\n private _applyRemoteUpdateInternal(\n changedFields: Record<string, unknown>,\n version: number,\n initiatorUserId: string,\n _fieldMeta?: Record<string, FieldMetaEntry>,\n acceptEqualVersion = false,\n ): void {\n if (this._state === RMMState.DELETED) return;\n\n const previousVersion = this._version;\n this._clearAuthoritativeRecoveryTimer();\n const localSubmittedBase = structuredClone(this._confirmedData ?? {});\n if (this._activeMutation) {\n for (const [field, value] of Object.entries(this._activeMutation.savingFields)) {\n deepSetByPath(localSubmittedBase, field, value);\n }\n }\n for (const [field, value] of this._pendingFields) {\n deepSetByPath(localSubmittedBase, field, value);\n }\n\n if (this._version !== null && (acceptEqualVersion ? version < this._version : version <= this._version)) {\n logDebug('_applyRemoteUpdateInternal: stale — ignored', {\n incomingVersion: version,\n currentVersion: this._version,\n });\n return;\n }\n\n const changedFieldNames = Object.keys(changedFields);\n const pendingFieldNames = [...this._pendingFields.keys()];\n const savingFieldNames = this._activeMutation\n ? Object.keys(this._activeMutation.savingFields)\n : [];\n const localDirtyFieldNames = [...new Set([...savingFieldNames, ...pendingFieldNames])];\n const overlapping = changedFieldNames.filter((remoteField) => (\n localDirtyFieldNames.some((localField) => rmmFieldPathsOverlap(remoteField, localField))\n ));\n\n logDebug('_applyRemoteUpdateInternal', {\n version,\n changedFields: changedFieldNames,\n overlappingFields: overlapping,\n initiatorUserId,\n state: this._state,\n });\n\n // --- Field-level merge (CRDT-aware) ---\n\n // Separate overlapping fields into CRDT and non-CRDT\n const crdtOverlap: string[] = [];\n const nonCrdtOverlap: string[] = [];\n for (const field of overlapping) {\n if (this._isCrdtManagedField(field)) {\n crdtOverlap.push(field);\n } else {\n nonCrdtOverlap.push(field);\n }\n }\n\n const mergedFields: string[] = [];\n const crdtResolutions: Record<string, CrdtResolutionWinner> = {};\n const updated = structuredClone(this._confirmedData ?? {});\n\n // Non-overlapping fields: always merge silently\n for (const field of changedFieldNames) {\n if (!overlapping.includes(field)) {\n deepSetByPath(updated, field, changedFields[field]);\n mergedFields.push(field);\n }\n }\n\n // CRDT overlapping fields: use shared LWW winner function\n for (const field of crdtOverlap) {\n const pendingConflictField = localDirtyFieldNames.find((localField) => rmmFieldPathsOverlap(field, localField));\n const remoteTs = _fieldMeta?.[field]?.ts ?? 0;\n const localTs = pendingConflictField\n ? this._pendingFieldTimestamps.get(pendingConflictField) ?? 0\n : 0;\n const winner = lwwFieldWinner(remoteTs, localTs);\n crdtResolutions[field] = winner;\n\n if (winner === CrdtResolutionWinner.INCOMING) {\n if (pendingConflictField) {\n this._pendingFields.delete(pendingConflictField);\n this._pendingFieldTimestamps.delete(pendingConflictField);\n }\n deepSetByPath(updated, field, changedFields[field]);\n mergedFields.push(field);\n logDebug('CRDT LWW: remote wins', { field, remoteTs, localTs });\n } else {\n logDebug('CRDT LWW: local wins (keep pending)', { field, remoteTs, localTs });\n }\n }\n\n this._confirmedData = updated;\n\n // Update field meta from remote (sanitize to guard against corrupted payloads)\n if (_fieldMeta != null) {\n this._fieldMeta = { ...sanitizeFieldMeta(this._fieldMeta), ...sanitizeFieldMeta(_fieldMeta) };\n }\n\n this._version = version;\n\n const hasCrdtResolutions = Object.keys(crdtResolutions).length > 0 ? crdtResolutions : undefined;\n\n // If all overlapping fields were resolved (no non-CRDT conflicts remain):\n if (nonCrdtOverlap.length === 0) {\n this._transition({\n type: TransitionEventType.REMOTE_UPDATE,\n changedFields: changedFieldNames,\n mergedFields,\n version,\n initiatorUserId,\n crdtResolutions: hasCrdtResolutions,\n });\n return;\n }\n\n // Non-CRDT overlap remains — fall through to conflictPolicy\n if (this._config.conflictPolicy.strategy === ConflictStrategy.LAST_WRITE_WINS) {\n this._transition({\n type: TransitionEventType.REMOTE_UPDATE,\n changedFields: changedFieldNames,\n mergedFields,\n version,\n initiatorUserId,\n crdtResolutions: hasCrdtResolutions,\n });\n return;\n }\n\n // accept-remote: transition to CONFLICT for non-CRDT overlap.\n // CRDT fields that local won must survive the conflict transition.\n const crdtWonEntries: Map<string, unknown> = new Map();\n const crdtWonTimestamps: Map<string, number> = new Map();\n for (const field of crdtOverlap) {\n const pendingConflictField = localDirtyFieldNames.find((localField) => rmmFieldPathsOverlap(field, localField));\n const localTs = pendingConflictField\n ? this._pendingFieldTimestamps.get(pendingConflictField) ?? 0\n : 0;\n const remoteTs = _fieldMeta?.[field]?.ts ?? 0;\n if (\n pendingConflictField\n && lwwFieldWinner(remoteTs, localTs) === CrdtResolutionWinner.EXISTING\n && this._pendingFields.has(pendingConflictField)\n ) {\n crdtWonEntries.set(pendingConflictField, this._pendingFields.get(pendingConflictField));\n const ts = this._pendingFieldTimestamps.get(pendingConflictField);\n if (ts !== undefined) crdtWonTimestamps.set(pendingConflictField, ts);\n }\n }\n\n const newData = structuredClone(this._confirmedData ?? {});\n for (const [field, value] of Object.entries(changedFields)) {\n deepSetByPath(newData, field, value);\n }\n\n const discardedFields = localDirtyFieldNames\n .filter((field) => !crdtWonEntries.has(field));\n const conflictDetails = {\n currentVersion: version,\n expectedVersion: previousVersion ?? version,\n conflictingFields: overlapping,\n currentValues: Object.fromEntries(\n overlapping.map((field) => [field, rmmReadPathValue(newData, field)]),\n ),\n submittedValues: Object.fromEntries(\n overlapping.map((field) => [field, rmmReadPathValue(localSubmittedBase, field)]),\n ),\n } satisfies NonNullable<MutationError['conflictDetails']>;\n\n this._transition({\n type: TransitionEventType.CONFLICT_DETECTED,\n discardedFields,\n reason: ConflictReason.REMOTE_UPDATE,\n currentData: newData,\n currentVersion: version,\n conflictDetails,\n });\n\n // Restore CRDT-won pending fields after the conflict transition\n for (const [field, value] of crdtWonEntries) {\n this._pendingFields.set(field, value);\n }\n for (const [field, ts] of crdtWonTimestamps) {\n this._pendingFieldTimestamps.set(field, ts);\n }\n }\n\n /**\n * Process deferred self-events after an HTTP response arrives.\n * - Version matches response → discard (same mutation, already handled)\n * - Version differs → process as genuine remote change (another tab/device saved)\n */\n private _processDeferredSelfEvents(responseVersion: number | undefined): void {\n if (this._deferredSelfEvents.length === 0) return;\n\n const deferred = this._deferredSelfEvents;\n this._deferredSelfEvents = [];\n\n for (const event of deferred) {\n if (responseVersion !== undefined && event.version === responseVersion) {\n if (this._allowSettledSelfEventRepair) {\n this._clearAuthoritativeRecoveryTimer();\n this._allowSettledSelfEventRepair = false;\n logDebug('_processDeferredSelfEvents: accepting deferred self-event after canonical read-back miss', {\n version: event.version,\n });\n this._applyRemoteUpdateInternal(\n event.changedFields,\n event.version,\n event.initiatorUserId,\n event.fieldMeta,\n true,\n );\n continue;\n }\n logDebug('_processDeferredSelfEvents: discarded (version matches response)', {\n version: event.version,\n });\n continue;\n }\n\n logDebug('_processDeferredSelfEvents: processing as remote change', {\n eventVersion: event.version,\n responseVersion,\n });\n this._applyRemoteUpdateInternal(event.changedFields, event.version, event.initiatorUserId, event.fieldMeta);\n }\n }\n\n // =============================================================================\n // INTERNAL — Timer Management\n // =============================================================================\n\n private _clearTimers(): void {\n if (this._retryTimer) {\n clearTimeout(this._retryTimer);\n this._retryTimer = null;\n }\n if (this._softTimer) {\n clearTimeout(this._softTimer);\n this._softTimer = null;\n }\n if (this._hardTimer) {\n clearTimeout(this._hardTimer);\n this._hardTimer = null;\n }\n }\n\n /**\n * Schedules one later canonical RAW reread after a successful mutation whose\n * immediate authoritative read-back failed. This keeps confirmed truth\n * canonical while avoiding total dependence on websocket self-repair delivery.\n */\n private _scheduleAuthoritativeRecovery(): void {\n if (this._authoritativeRecoveryTimer || this._state === RMMState.DELETED) {\n return;\n }\n\n this._authoritativeRecoveryTimer = setTimeout(() => {\n this._authoritativeRecoveryTimer = null;\n void this._retryAuthoritativeRecovery();\n }, this._serverRetryDelay);\n }\n\n private _clearAuthoritativeRecoveryTimer(): void {\n if (this._authoritativeRecoveryTimer) {\n clearTimeout(this._authoritativeRecoveryTimer);\n this._authoritativeRecoveryTimer = null;\n }\n }\n\n private async _retryAuthoritativeRecovery(): Promise<void> {\n if (this._state === RMMState.DELETED || !this._allowSettledSelfEventRepair) {\n return;\n }\n\n // This is the mutation-owned recovery path after a read-back miss. It is\n // intentionally separate from RMMWebSocketBridge refetches, which are\n // driven by websocket ingress and reconnection rather than mutation cleanup.\n const readOperationPathKey = this._config.readOperationPathKey;\n if (!readOperationPathKey) {\n return;\n }\n\n const readResult = await this._config.transportAdapter.execute({\n operationPathKey: readOperationPathKey,\n contextualParameters: this._config.contextualParameters,\n parentResourcesRequirements: this._config.parentResourcesRequirements,\n dataMode: DataMode.RAW,\n signal: undefined,\n });\n\n if (readResult.status !== OperationResultStatus.SUCCESS || !readResult.data) {\n logDebug('_retryAuthoritativeRecovery: canonical reread still unavailable', {\n errorType: readResult.error?.type,\n errorStatus: readResult.error?.status,\n });\n return;\n }\n\n const recoveredVersion = readResult.newVersion ?? this._version;\n if (recoveredVersion == null) {\n logDebug('_retryAuthoritativeRecovery: canonical reread missing version', {\n resourceId: this._resourceId,\n });\n return;\n }\n\n logDebug('_retryAuthoritativeRecovery: restored canonical confirmed state', {\n resourceId: this._resourceId,\n version: recoveredVersion,\n });\n this.setInitialState(readResult.data, recoveredVersion, readResult.fieldMeta);\n }\n\n /**\n * Start backpressure timers on first START_SAVING. Timers persist across retries\n * (measuring total elapsed time, not per-attempt). Only started if not already running.\n *\n * **Soft timeout:** Emits a non-success `MUTATION_RESULT` on `lastEvent` for UX/telemetry\n * only — it does **not** abort the transport; the request may still complete and produce\n * a subsequent event. Treat as \"slow operation\", not terminal failure.\n *\n * **Hard timeout:** Aborts via `AbortSignal` and rejects the mutation — terminal for\n * the in-flight operation.\n */\n private _startBackpressureTimers(): void {\n if (this._softTimer) return;\n\n this._softTimer = setTimeout(() => {\n this._softTimer = null;\n if (!this._activeMutation) return;\n\n logDebug('backpressure: soft timeout', {\n mutationId: this._activeMutation.entry.id,\n timeoutMs: this._backpressure.softTimeoutMs,\n });\n\n this._lastEvent = {\n type: RMMEventType.MUTATION_RESULT,\n result: {\n success: false,\n error: { type: MutationErrorType.TRANSIENT, message: 'Operation taking longer than expected' },\n },\n source: this._activeMutation.entry.source,\n id: ++this._eventCounter,\n };\n this._invalidateSnapshot();\n }, this._backpressure.softTimeoutMs);\n\n this._hardTimer = setTimeout(() => {\n this._hardTimer = null;\n this._clearTimers();\n\n logDebug('backpressure: hard timeout — aborting', {\n mutationId: this._activeMutation?.entry.id,\n timeoutMs: this._backpressure.hardTimeoutMs,\n });\n\n const source = this._activeMutation?.entry.source;\n\n if (this._activeMutation) {\n this._activeMutation.abortController.abort();\n this._activeMutation.entry.reject(\n new MutationCancelledError(this._activeMutation.entry.source),\n );\n this._activeMutation = null;\n }\n\n this._deferredSelfEvents = [];\n\n const nextState =\n this._queue.length > 0 || this._pendingFields.size > 0 ? RMMState.QUEUED : RMMState.IDLE;\n this._state = nextState;\n\n if (nextState === RMMState.IDLE) {\n this._lastError = null;\n } else {\n this._lastError = { type: MutationErrorType.TRANSIENT, message: 'Hard timeout exceeded' };\n }\n\n this._lastEvent = {\n type: RMMEventType.MUTATION_RESULT,\n result: {\n success: false,\n error: { type: MutationErrorType.TRANSIENT, message: 'Hard timeout exceeded' },\n retriesRemaining: 0,\n },\n source: source ?? DEFAULT_AUTOSAVE_SOURCE,\n id: ++this._eventCounter,\n };\n\n this._invalidateSnapshot();\n this._processQueue();\n this._notifyDrained();\n }, this._backpressure.hardTimeoutMs);\n }\n\n // =============================================================================\n // INTERNAL — Queue Coalescing\n // =============================================================================\n\n /**\n * Auto-coalesce when queue depth > 1: merge all entries into the highest-priority\n * survivor. Absorbed entries' Promises are chained to the survivor's resolution.\n */\n private _autoCoalesceQueue(): void {\n if (this._queue.length <= 1) return;\n if (this._queue.some((entry) => entry.transportOverride !== undefined)) {\n return;\n }\n\n let survivorIdx = 0;\n for (let i = 1; i < this._queue.length; i++) {\n if (this._queue[i].priority >= this._queue[survivorIdx].priority) {\n survivorIdx = i;\n }\n }\n const survivor = this._queue[survivorIdx];\n\n const absorbed: MutationQueueEntry[] = [];\n for (let i = 0; i < this._queue.length; i++) {\n if (i === survivorIdx) continue;\n const entry = this._queue[i];\n for (const [key, value] of Object.entries(entry.fields)) {\n if (!(key in survivor.fields)) {\n survivor.fields[key] = value;\n }\n }\n absorbed.push(entry);\n }\n\n logDebug('_autoCoalesceQueue', {\n survivorId: survivor.id,\n absorbedCount: absorbed.length,\n absorbedIds: absorbed.map((e) => e.id),\n mergedFieldCount: Object.keys(survivor.fields).length,\n });\n\n const originalResolve = survivor.resolve;\n const originalReject = survivor.reject;\n survivor.resolve = (result: MutationResult) => {\n originalResolve(result);\n for (const entry of absorbed) entry.resolve(result);\n };\n survivor.reject = (error: Error) => {\n originalReject(error);\n for (const entry of absorbed) entry.reject(error);\n };\n\n this._queue = [survivor];\n }\n\n // =============================================================================\n // INTERNAL — Destroy Support\n // =============================================================================\n\n private _notifyDrained(): void {\n if (this._activeMutation !== null || this._queue.length > 0) return;\n for (const cb of this._onDrainCallbacks) cb();\n this._onDrainCallbacks = [];\n }\n}\n"]}
|