@wildo-ai/saas-frontend-lib 1.1.2 → 1.1.4
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 +1 -1
- package/dist/esm/companion-exports.d.ts.map +1 -1
- package/dist/esm/companion-exports.js +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 +28 -3
- 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 +21 -4
- 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 +5 -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 +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 +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 +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 +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 +139 -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 +20 -0
- 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 +13 -1
- package/dist/esm/components/navigation/NavigationItemBadge.d.ts.map +1 -1
- package/dist/esm/components/navigation/NavigationItemBadge.js +31 -2
- 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 +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 +36 -9
- 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 +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 +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 +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 +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 +12 -0
- package/dist/esm/components/resources/skeleton/ResourceHeaderTitle.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/ResourceHeaderTitle.js +13 -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 +121 -0
- package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.d.ts.map +1 -0
- package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.js +386 -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 +56 -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 +32 -5
- 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 +9 -2
- 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 +16 -0
- 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 +17 -0
- 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 +233 -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 +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 +188 -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 +255 -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 +76 -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 +99 -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 +14 -14
- 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.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 +0 -49
- package/dist/esm/core/config/engine-settings-destinations.d.ts.map +1 -1
- package/dist/esm/core/config/engine-settings-destinations.js +102 -56
- 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 +23 -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 +22 -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 +8 -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 +77 -0
- package/dist/esm/core/external-providers/ProviderFilePickerHost.d.ts.map +1 -0
- package/dist/esm/core/external-providers/ProviderFilePickerHost.js +114 -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 +102 -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 +26 -2
- package/dist/esm/core/flows-actors/FlowsActorsContext.d.ts.map +1 -1
- package/dist/esm/core/flows-actors/FlowsActorsContext.js +60 -3
- 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 +32 -0
- package/dist/esm/core/i18n/I18nContext.d.ts.map +1 -1
- package/dist/esm/core/i18n/I18nContext.js +154 -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 +146 -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 +108 -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 +3 -2
- 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 +57 -4
- 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 +130 -37
- 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.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 +92 -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 +97 -13
- 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":"WebSocketContext.js","sourceRoot":"","sources":["../../../../../../src/core/requests/websockets/WebSocketContext.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { createContext, useState, ReactNode, useEffect, useRef, useCallback, useMemo } from 'react';\nimport { io, Socket } from 'socket.io-client';\nimport axios from 'axios';\nimport { WINDOW_EVENTS_SLUGS } from '~wildo-frontend-lib/core/commons/window-event.frontend.schemas';\nimport { errorManagement } from '~wildo-frontend-lib/core/errors/error-management.frontend.service';\nimport { ResourceOperationRiskLevel, WildoHeaderKeys } from '@wildo-ai/saas-models';\nimport {\n CoreWebSocketEvent,\n CoreWebSocketConnectionErrorCode,\n WS_ResourceSubscribePayload,\n WS_ResourceEditingPayload,\n WS_ResourceCustomEventPayload,\n WS_ResourceNotificationPayload,\n WS_ResourceUpdatedPayload,\n WS_ResourceSubscribedPayload,\n WS_ResourceEditingResultPayload,\n WS_BadgeUpdatePayload,\n WS_BadgeGetRequest,\n WS_BadgeGetAllRequest,\n WS_BadgeGetAllResponse,\n WS_AuthRefreshPayload,\n WS_OrganizationSwitchPayload,\n WS_SystemErrorPayload,\n buildResourceRoomName,\n buildScopeRoomName,\n safeValidateWebSocketPayload,\n WebSocketEventSchemas,\n} from '@wildo-ai/saas-models';\nimport { fullJitterBackoffMs } from '~wildo-frontend-lib/core/requests/network-backoff.frontend.utils';\nimport { getClientInstanceId } from '~wildo-frontend-lib/core/requests/client-instance-id.frontend.service';\nimport { envLoader } from '~wildo-frontend-lib/core/runtime/env-variable-loader.frontend.service';\nimport { LoggerFrontendService } from '~wildo-frontend-lib/core/monitoring/logger.frontend.service';\nimport { normalizeContextResourceIdentifiersForTransport } from '~wildo-frontend-lib/core/resources/context-resource-identifiers.frontend.utils';\nimport { decodeJwtPayload } from '~wildo-frontend-lib/core/security/jwt.frontend.utils';\n\n/**\n * Read the `exp` (expiry, epoch seconds) claim from a JWT access token.\n * Returns `undefined` when the token is absent, malformed, or carries no\n * numeric `exp` — callers treat that as \"freshness unknown\".\n */\nfunction readAccessTokenExp(token: string | undefined): number | undefined {\n if (!token) {\n return undefined;\n }\n try {\n const { exp } = decodeJwtPayload<{ exp?: number }>(token);\n return typeof exp === 'number' ? exp : undefined;\n } catch {\n return undefined;\n }\n}\n\n/**\n * Choose the access token that expires LATER between the one already stored\n * in the credential ref and an incoming one from a `connect()` config.\n *\n * `connect()` seeds the handshake credential ref from its config token. But\n * `refreshAuth` can store a rotated (fresher) token into that same ref BEFORE\n * `connect()` runs — e.g. the access token is refreshed mid-session-restore\n * and only then does the WebSocket connect. Blindly overwriting with the\n * config token would REGRESS the ref to the older, possibly-expired token and\n * the handshake would be rejected with \"Authentication failed\". The primary\n * fix lives at the caller (it now passes the freshest token), but this guard\n * makes the invariant — \"the ref never moves to an earlier-expiring token\" —\n * hold for ANY caller.\n *\n * The stored token is kept ONLY when it is PROVABLY fresher (both tokens\n * decode to a numeric `exp` and the stored one is later). When freshness\n * can't be compared, the incoming config token wins, since it is the caller's\n * explicit connection intent (and may legitimately belong to a new session —\n * a different user/org — whose token need not out-live the previous one).\n */\nfunction pickFresherAccessToken(\n storedToken: string | undefined,\n incomingToken: string | undefined,\n): string | undefined {\n // Only ever OVERRIDE the caller's intent when we can PROVE the stored token\n // outlives the incoming one. In every other case (either token absent, or\n // freshness not comparable) the incoming config token wins — preserving the\n // original `token: config.token` seeding semantics exactly, including a\n // deliberate token-less connect that must NOT resurrect a prior session's\n // credential.\n if (!storedToken || !incomingToken) {\n return incomingToken;\n }\n const storedExp = readAccessTokenExp(storedToken);\n const incomingExp = readAccessTokenExp(incomingToken);\n if (storedExp !== undefined && incomingExp !== undefined && storedExp > incomingExp) {\n return storedToken;\n }\n return incomingToken;\n}\n\n/**\n * Ceiling on consecutive WS-initiated token renewals that mint a fresh token but\n * still fail to yield a validated connection. Once hit, the WS layer stops\n * requesting renewals until the server accepts a credential again (which resets\n * the streak). Protects against a mint-succeeds-but-server-rejects loop — most\n * acutely on the live `AUTH_REFRESH_FAILED` path, where the server's rejection is\n * immediate (no reconnection backoff to space the retries out). Sized generously\n * so ordinary clock-skew / one-off races self-heal well within it.\n */\nconst MAX_CONSECUTIVE_WS_AUTH_RENEWALS = 5;\n\n/**\n * WebSocket Context\n * Manages Socket.IO connections and real-time communication\n * Integrates with the EventBus for event-driven architecture\n */\n\nexport enum WebSocketStatus {\n DISCONNECTED = 'disconnected',\n CONNECTING = 'connecting',\n CONNECTED = 'connected',\n ERROR = 'error',\n RECONNECTING = 'reconnecting'\n}\n\ntype ContextResourceIdentifiersInput = Record<string, string | { fieldIdentifier?: string; resourceId?: string }>;\n\nfunction normalizeContextResourceIdentifiers(\n contextResourceIdentifiers: ContextResourceIdentifiersInput | undefined,\n): Record<string, string> {\n return normalizeContextResourceIdentifiersForTransport(contextResourceIdentifiers);\n}\n\n/**\n * Order-independent content key for a normalized context-identifiers map. Two maps\n * that produce the same key yield a byte-identical `resource:subscribe` payload on\n * the server, so re-emitting for an already-claimed room is a server-side no-op.\n * Used by `claimResourceRoom` to skip redundant re-subscriptions.\n */\nfunction buildNormalizedContextKey(context: Record<string, string> | undefined): string {\n if (!context) return '';\n return Object.keys(context)\n .sort()\n .map((key) => `${key}=${context[key]}`)\n .join('&');\n}\n\n/**\n * Content-equality for the rendered subscribed-rooms list.\n *\n * `syncSubscribedRoomsFromClaims` rebuilds this array from the room-claims map on\n * every claim/release — including idempotent re-claims that change nothing. Without\n * this gate it would `setSubscribedRooms` a brand-new array reference each call,\n * re-rendering every `useWebSocket()` consumer (`subscribedRooms` is a dependency of\n * the context `value` memo) and, when the triggering claim originates from a\n * render-phase RMM acquisition, helping sustain a paced re-render loop. Compares the\n * stable scalar fields plus an order-independent context key per room; room order is\n * the claims-map insertion order, which is stable across pure re-syncs.\n */\nfunction areSubscribedRoomsEqual(a: SubscribedRoom[], b: SubscribedRoom[]): boolean {\n if (a === b) return true;\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n const left = a[i];\n const right = b[i];\n if (\n left.roomName !== right.roomName\n || left.resourceType !== right.resourceType\n || left.resourceId !== right.resourceId\n || left.scopeKey !== right.scopeKey\n || left.scopeId !== right.scopeId\n || buildNormalizedContextKey(left.contextResourceIdentifiers) !== buildNormalizedContextKey(right.contextResourceIdentifiers)\n ) {\n return false;\n }\n }\n return true;\n}\n\nexport interface WebSocketConfig {\n url: string;\n token?: string;\n organizationId?: string;\n consumableToken?: string;\n autoReconnect?: boolean;\n reconnectInterval?: number;\n maxReconnectAttempts?: number;\n /**\n * Invoked when the server rejects the handshake for an AUTHENTICATION reason\n * (`connect_error` carrying `data.code === AUTHENTICATION_FAILED`) — i.e. the\n * access token this socket presented is expired/invalid.\n *\n * The WebSocket layer deliberately does NOT know how to mint a token: the auth\n * layer (`AuthSessionContext.tokenRenewalHandler`) owns the resilient refresh\n * (cross-tab Web-Lock dedup, transient-vs-authoritative classification, dev\n * leniency) and, on success, calls `refreshAuth()` to seed the fresh token and\n * revive this socket. This callback is the WS layer's request for that renewal.\n *\n * Without it, a backgrounded/unfocused tab whose access token expires keeps\n * replaying the expired token on every reconnect (no HTTP traffic flows to\n * trigger a reactive refresh), so real-time background jobs stall until the\n * user refocuses the window. See `AuthSessionContext.connectWebSocket`.\n *\n * May be async; the WS layer holds an in-flight guard until the returned\n * promise settles so an in-flight renewal is never requested twice.\n */\n onAuthenticationError?: () => void | Promise<unknown>;\n}\n\nexport interface SubscribedRoom {\n roomName: string;\n resourceType: string;\n resourceId?: string;\n scopeKey?: string;\n scopeId?: string;\n /** Stored for re-subscription on reconnect */\n contextResourceIdentifiers: Record<string, string>;\n}\n\ninterface RoomClaim extends SubscribedRoom {\n ownerKeys: Set<string>;\n ownerContexts: Map<string, Record<string, string>>;\n editingUsers?: string[];\n}\n\nfunction roomMatchesOrganization(room: SubscribedRoom, organizationId?: string): boolean {\n if (!organizationId) {\n return false;\n }\n\n if (room.scopeId === organizationId) {\n return true;\n }\n\n return Object.values(room.contextResourceIdentifiers).includes(organizationId);\n}\n\nfunction isPlainContextObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction normalizeSystemErrorDetails(details: unknown): Record<string, unknown> {\n if (details == null) {\n return {};\n }\n\n if (isPlainContextObject(details)) {\n return details;\n }\n\n return { errorDetails: details };\n}\n\nexport interface WebSocketContextType {\n // State\n status: WebSocketStatus;\n connectionCount: number;\n isConnected: boolean;\n error: string | null;\n subscribedRooms: SubscribedRoom[];\n\n // Connection Actions\n connect: (config: WebSocketConfig) => void;\n disconnect: () => void;\n refreshAuth: (token: string) => void;\n switchOrganization: (organizationId: string, previousOrganizationId?: string) => void;\n\n // Event Subscription (for direct listening, separate from EventBus)\n on: <T = unknown>(event: string, handler: (payload: T) => void) => () => void;\n off: (event: string, handler: (...args: unknown[]) => void) => void;\n emit: <T = unknown>(event: string, payload: T) => void;\n\n // Resource Room Actions\n subscribeToResource: (params: {\n resourceType: string;\n resourceId?: string;\n scopeKey?: string;\n scopeId?: string;\n contextResourceIdentifiers: ContextResourceIdentifiersInput;\n }) => Promise<{ success: boolean; editingUsers?: string[] }>;\n claimResourceRoom: (params: {\n ownerKey: string;\n resourceType: string;\n resourceId?: string;\n scopeKey?: string;\n scopeId?: string;\n contextResourceIdentifiers: ContextResourceIdentifiersInput;\n }) => Promise<{ success: boolean; editingUsers?: string[] }>;\n unsubscribeFromResource: (params: {\n resourceType: string;\n resourceId?: string;\n scopeKey?: string;\n scopeId?: string;\n contextResourceIdentifiers: ContextResourceIdentifiersInput;\n }) => Promise<void>;\n releaseResourceRoom: (params: {\n ownerKey: string;\n resourceType: string;\n resourceId?: string;\n scopeKey?: string;\n scopeId?: string;\n contextResourceIdentifiers: ContextResourceIdentifiersInput;\n }) => Promise<void>;\n\n // Editing State Actions\n startEditing: (params: {\n resourceType: string;\n resourceId: string;\n contextResourceIdentifiers: ContextResourceIdentifiersInput;\n }) => Promise<boolean>;\n stopEditing: (params: {\n resourceType: string;\n resourceId: string;\n }) => void;\n\n // Custom Collaboration Events\n sendCustomEvent: (params: {\n resourceType: string;\n resourceId: string;\n eventName: string;\n data?: unknown;\n contextResourceIdentifiers: ContextResourceIdentifiersInput;\n includeSelf?: boolean;\n }) => void;\n\n // Badge Actions\n getBadge: (identifier: string, scope: string, scopeId: string) => Promise<number>;\n getAllBadges: (scope: string, scopeId: string) => Promise<WS_BadgeGetAllResponse>;\n\n // Helpers\n getConnectionInfo: () => {\n status: WebSocketStatus;\n url: string | null;\n connectedAt: Date | null;\n };\n}\n\n/**\n * WebSocket Context\n * Exported for use in separate hook file (Fast Refresh compatibility)\n * @internal - Use useWebSocket() hook instead of accessing this directly\n */\nexport const WebSocketContext: React.Context<WebSocketContextType | undefined> = createContext<WebSocketContextType | undefined>(undefined);\n\n/**\n * Structured logger for WebSocket connectivity. Connection churn (reconnection\n * attempts, transient drops) is reported HERE — once per outage — instead of\n * through the global error/toast pipeline, so it lands in observability (the\n * Pino→OTLP bridge) without spamming the user with a Sonner toast per attempt.\n * The ambient connection state is surfaced by the status bar via\n * `useWebSocket().status`; only a terminal give-up (`reconnect_failed`) or an\n * actionable server signal (rate limit) still raises a user-facing notification.\n */\nconst wsConnectivityLogger = LoggerFrontendService.getLogger();\n\nexport const WebSocketProvider: React.FC<{ children: ReactNode }> = ({ children }) => {\n const [status, setStatus] = useState<WebSocketStatus>(WebSocketStatus.DISCONNECTED);\n const [connectionCount, setConnectionCount] = useState(0);\n const [error, setError] = useState<string | null>(null);\n const [subscribedRooms, setSubscribedRooms] = useState<SubscribedRoom[]>([]);\n\n const socketRef = useRef<Socket | null>(null);\n const configRef = useRef<WebSocketConfig | null>(null);\n /**\n * Single source of truth for the credentials the Socket.IO handshake sends.\n *\n * The Socket.IO `auth` option is read through a callback (see\n * `performActualConnect`) that pulls from this ref on EVERY connection AND\n * reconnection attempt. That is what lets a token rotated mid-session (or\n * while the socket is down) reach the next handshake — the access token is\n * short-lived and expires routinely, so a value frozen at `io()` time goes\n * stale and the server rejects the reconnect with \"Authentication failed\".\n *\n * `refreshAuth` updates this ref UNCONDITIONALLY (even when disconnected), so\n * the freshest token is always what the next (re)connect presents. The live\n * `AUTH_REFRESH` emit is an optimization on top, for the already-connected\n * case, to avoid a reconnect round-trip.\n */\n const authStateRef = useRef<{ token?: string; consumableToken?: string; organizationId?: string }>({});\n // The current session's auth-renewal request handler (from the connect config).\n // Called when the handshake is rejected for an authentication reason so the\n // auth layer can refresh the access token and revive this socket. Cleared on\n // `disconnect()` so a torn-down session can never trigger a renewal.\n const authErrorHandlerRef = useRef<(() => void | Promise<unknown>) | null>(null);\n // Guards against firing a renewal request while a prior one is still settling.\n // `connect_error` can fire repeatedly on a dead socket; the underlying\n // `tokenRenewalHandler` already dedups in-flight refreshes, but this keeps the\n // WS layer from queuing redundant calls between reconnection attempts.\n const authRenewalInFlightRef = useRef(false);\n // Loop breaker for the pathological case where renewal keeps SUCCEEDING (a\n // fresh token is minted each time) yet the server still rejects it — a\n // mint-vs-validate disagreement, not a transient outage. Counts consecutive\n // renewals that produced a token but did NOT lead to a validated connection;\n // reset to 0 whenever the server accepts the credential (`connect` or\n // `SYSTEM_TOKEN_REFRESHED`). A transient/authoritative refresh FAILURE does not\n // count (the auth layer already classifies it, and a long backend outage must\n // still renew once the backend returns), so this never suppresses legitimate\n // recovery. See `MAX_CONSECUTIVE_WS_AUTH_RENEWALS`.\n const authRenewalStreakRef = useRef(0);\n const reconnectTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const reconnectAttemptsRef = useRef(0);\n // Backoff counter for the connectivity SUPERVISOR's watchdog probes (see the\n // supervisor effect near the bottom). Distinct from `reconnectAttemptsRef`,\n // which tracks Socket.IO's own in-cycle reconnection attempts: this one paces\n // the manual revival attempts that happen AFTER Socket.IO has given up. Reset\n // to 0 on any successful (re)connect so the next outage starts probing quickly.\n const revivalAttemptRef = useRef(0);\n const connectedAtRef = useRef<Date | null>(null);\n const roomClaimsRef = useRef<Map<string, RoomClaim>>(new Map());\n const eventListenersRef = useRef<Map<string, Set<(...args: unknown[]) => void>>>(new Map());\n const eventListenerWrappersRef = useRef<Map<string, Map<(...args: unknown[]) => void, (...args: unknown[]) => void>>>(new Map());\n const connectRequestIdRef = useRef(0);\n const connectKeyRef = useRef<string | null>(null);\n const connectInFlightRef = useRef(false);\n // Anti-noise: true once the CURRENT outage has been reported (structured log +\n // status change). Guards against emitting one report per reconnection attempt —\n // the whole point of not toasting connection churn. Reset on (re)connect so a\n // later outage reports again.\n const outageReportedRef = useRef(false);\n\n /**\n * Build room name from parameters\n */\n const buildRoomName = useCallback((params: {\n resourceType: string;\n resourceId?: string;\n scopeKey?: string;\n scopeId?: string;\n }): string => {\n if (params.resourceId) {\n return buildResourceRoomName(params.resourceType, params.resourceId);\n }\n if (params.scopeKey && params.scopeId) {\n return buildScopeRoomName(params.resourceType, params.scopeKey, params.scopeId);\n }\n throw new Error('Must provide either resourceId or both scopeKey and scopeId');\n }, []);\n\n const syncSubscribedRoomsFromClaims = useCallback(() => {\n const nextRooms: SubscribedRoom[] = Array.from(roomClaimsRef.current.values(), (room) => ({\n roomName: room.roomName,\n resourceType: room.resourceType,\n resourceId: room.resourceId,\n scopeKey: room.scopeKey,\n scopeId: room.scopeId,\n contextResourceIdentifiers: room.contextResourceIdentifiers,\n }));\n // Value-equality gate: only commit a new array when the room set actually\n // changed by content. The claim/release paths call this on every acquisition\n // (including idempotent re-claims), so an ungated `setSubscribedRooms` would\n // mint a fresh array each time, churn the context `value` memo, and re-render\n // every `useWebSocket()` consumer — and feed the render-phase RMM-acquisition\n // re-render loop. Returning `prev` when unchanged lets React bail the update.\n setSubscribedRooms((prev) => (areSubscribedRoomsEqual(prev, nextRooms) ? prev : nextRooms));\n }, []);\n\n const getSocketListener = useCallback(\n (event: string, handler: (...args: unknown[]) => void): ((...args: unknown[]) => void) => {\n const wrappers = eventListenerWrappersRef.current.get(event) ?? new Map();\n eventListenerWrappersRef.current.set(event, wrappers);\n\n const existingWrapper = wrappers.get(handler);\n if (existingWrapper) {\n return existingWrapper;\n }\n\n const wrappedHandler = (payload: unknown): void => {\n if (event in WebSocketEventSchemas) {\n const validationResult = safeValidateWebSocketPayload(\n event as keyof typeof WebSocketEventSchemas,\n payload,\n );\n\n if ('data' in validationResult) {\n handler(validationResult.data);\n return;\n }\n\n console.warn('Dropped invalid websocket payload at client ingress boundary', {\n event,\n issues: validationResult.error.issues,\n });\n return;\n }\n\n handler(payload);\n };\n\n wrappers.set(handler, wrappedHandler);\n return wrappedHandler;\n },\n [],\n );\n\n const attachRegisteredEventListeners = useCallback((socket: Socket): void => {\n for (const [event, handlers] of eventListenersRef.current.entries()) {\n for (const handler of handlers) {\n socket.on(event, getSocketListener(event, handler));\n }\n }\n }, [getSocketListener]);\n\n const buildConnectKey = useCallback((config: WebSocketConfig): string => JSON.stringify({\n url: config.url,\n token: config.token ?? null,\n organizationId: config.organizationId ?? null,\n consumableToken: config.consumableToken ?? null,\n }), []);\n\n /**\n * Convert WebSocket URL to HTTP URL for readiness check\n * ws:// -> http://, wss:// -> https://\n */\n const wsUrlToHttpUrl = useCallback((wsUrl: string): string => {\n return wsUrl.replace(/^ws/, 'http');\n }, []);\n\n /**\n * Wait for API readiness before WebSocket connection\n * Uses exponential backoff: 2^attempts * 100ms, capped at 10s\n * Has a maximum wait time of 30s before proceeding anyway\n * @returns true if API is ready, false if we timed out (still proceeds with connection)\n */\n const waitForApiReadiness = useCallback(async (wsUrl: string): Promise<boolean> => {\n const httpUrl = wsUrlToHttpUrl(wsUrl);\n const healthUrl = `${httpUrl}/health/ready`;\n \n const BASE_DELAY_MS = 100;\n const MAX_DELAY_MS = 10000;\n const MAX_WAIT_TIME_MS = 30000; // Maximum time to wait before proceeding anyway\n \n const startTime = Date.now();\n let attempt = 0;\n\n console.log('WebSocket: Waiting for API readiness...', { healthUrl });\n\n while (true) {\n try {\n const response = await axios.get(healthUrl, {\n timeout: 5000,\n validateStatus: () => true, // Don't throw on non-2xx\n });\n\n if (response.status === 200 && response.data?.status === 'healthy') {\n console.log('WebSocket: API is ready', { healthUrl, attempts: attempt + 1 });\n return true;\n }\n } catch (error) {\n // Network error, CORS error, timeout - all treated the same\n }\n\n // Check if we've exceeded maximum wait time\n const elapsedTime = Date.now() - startTime;\n if (elapsedTime >= MAX_WAIT_TIME_MS) {\n console.warn('WebSocket: API readiness check timed out, proceeding with connection anyway', {\n healthUrl,\n elapsedMs: elapsedTime,\n attempts: attempt + 1,\n });\n return false;\n }\n\n // Jittered exponential backoff (AWS \"full jitter\") — see\n // network-backoff.frontend.utils. Deterministic backoff would have every\n // client poll /health/ready in lockstep after a shared outage and then all\n // reconnect on the same tick; jitter spreads that load.\n const delay = fullJitterBackoffMs(attempt, BASE_DELAY_MS, MAX_DELAY_MS);\n\n console.warn(`WebSocket: API not ready (attempt ${attempt + 1}), retrying in ${delay}ms...`, {\n healthUrl,\n elapsedMs: elapsedTime,\n });\n\n await new Promise(resolve => setTimeout(resolve, delay));\n attempt++;\n }\n }, [wsUrlToHttpUrl]);\n\n /**\n * Ask the auth layer to renew the access token because the server rejected the\n * credential this socket presented — either at the handshake (`connect_error`\n * with `AUTHENTICATION_FAILED`) or during a live in-place refresh\n * (`SYSTEM_ERROR` / `AUTH_REFRESH_FAILED`). Shared by both paths so their\n * dedup + loop-protection behave identically.\n *\n * The WS layer never mints a token itself: `onAuthenticationError` runs\n * `AuthSessionContext.tokenRenewalHandler`, which performs the resilient\n * network refresh and, on success, seeds the fresh token back into this socket\n * (`refreshAuth`) — reviving a dead handshake or re-emitting `AUTH_REFRESH` on a\n * still-connected socket. This function only decides WHETHER to ask.\n *\n * Two guards:\n * - `authRenewalInFlightRef` — one request at a time; the repeated\n * `connect_error`s of a dead socket (or a burst of `AUTH_REFRESH_FAILED`)\n * never queue redundant calls. Held for the FULL renewal promise.\n * - `authRenewalStreakRef` / `MAX_CONSECUTIVE_WS_AUTH_RENEWALS` — stops a\n * mint-succeeds-but-server-still-rejects loop. Only SUCCESSFUL renewals that\n * didn't lead to a validated connection count; a validated credential\n * (`connect` / `SYSTEM_TOKEN_REFRESHED`) resets the streak, and a failed\n * refresh is decremented back out so a transient outage never trips the cap.\n */\n const requestAuthRenewal = useCallback((reason: string): void => {\n if (!authErrorHandlerRef.current || authRenewalInFlightRef.current) {\n return;\n }\n if (authRenewalStreakRef.current >= MAX_CONSECUTIVE_WS_AUTH_RENEWALS) {\n console.warn(\n `WebSocket: Suppressing token renewal (${reason}) — a freshly-minted token was rejected ${authRenewalStreakRef.current}× in a row; not looping the refresh endpoint`,\n );\n return;\n }\n console.log(`WebSocket: Requesting token renewal (${reason})`);\n authRenewalInFlightRef.current = true;\n authRenewalStreakRef.current += 1;\n Promise.resolve(authErrorHandlerRef.current())\n .catch(() => {\n // Transient (backend unreachable / 5xx) or authoritative (logout) refresh\n // failure — already classified/handled by the auth layer. It produced no\n // fresh token, so it can't sustain a rejection loop: undo the streak\n // increment so a later, genuinely-recoverable renewal is never blocked.\n authRenewalStreakRef.current = Math.max(0, authRenewalStreakRef.current - 1);\n })\n .finally(() => { authRenewalInFlightRef.current = false; });\n }, []);\n\n /**\n * Perform the Socket.IO connection\n */\n const performActualConnect = useCallback((config: WebSocketConfig): void => {\n // Socket.IO configuration optimized for Kubernetes/Traefik environments\n // - Start with polling, then upgrade to websocket (more reliable through proxies)\n // - Include token in both auth object and extraHeaders as fallback\n // - Longer timeout for initial connection through ingress\n const socketOptions: any = {\n // Dynamic auth callback — Socket.IO invokes this on every connection AND\n // reconnection attempt, so each handshake reads the LATEST token from\n // `authStateRef` rather than a value frozen at `io()` time. This is the\n // fix for token-expiry reconnect failures: when the access token rotates\n // mid-session (or while the socket is down), the next reconnect picks up\n // the fresh token instead of replaying the stale one and getting rejected\n // with \"Authentication failed\".\n //\n // The active-organization selector is validated server-side against the\n // user's verified memberships before seeding initiatorIds.organizationId,\n // so org-scoped resource subscriptions authorize correctly. A stale value\n // is ignored server-side (never trusted), and ORGANIZATION_SWITCH keeps\n // the server's active org in sync.\n auth: (cb: (data: Record<string, string>) => void) => {\n const { token, consumableToken, organizationId } = authStateRef.current;\n // Client-install id rides the `auth` payload rather than `extraHeaders` for two reasons:\n // `extraHeaders` is frozen for the manager's lifetime AND only applies to the polling\n // transport in browsers, whereas this callback re-runs on every connect/reconnect — so a\n // policy applied after the socket first connected is picked up on the next handshake, and a\n // withdrawn policy stops being sent. Undefined (the opt-out default) omits the key entirely.\n const clientInstanceId = getClientInstanceId();\n cb({\n ...(token ? { token } : {}),\n ...(consumableToken ? { consumableToken } : {}),\n ...(organizationId ? { organizationId } : {}),\n ...(clientInstanceId ? { clientInstanceId } : {}),\n // Origin SURFACE, alongside the install id. A socket has no per-message headers, so both\n // origin signals ride the handshake or the backend cannot attribute socket-originated audit\n // rows the way it attributes HTTP ones. Sending only one of the pair was an asymmetry, not a\n // decision. Read from `envLoader` (not React context) for the same reason as the HTTP client:\n // this callback runs outside the provider tree.\n frontendServiceName: envLoader.loadEnvironmentConfig().frontendServiceName,\n });\n },\n // Start with polling, then upgrade to websocket (better for Traefik/proxies)\n transports: ['polling', 'websocket'],\n reconnection: config.autoReconnect ?? true,\n // Base retry delay. Socket.IO grows it exponentially toward\n // `reconnectionDelayMax`; WITHOUT a max override Socket.IO caps growth at\n // its own 5000ms default, so a 5000ms base yielded a FLAT ~5s curve with no\n // growth. Base 1000 + max 30000 gives a real 1s→2s→4s→…→30s backoff.\n reconnectionDelay: config.reconnectInterval ?? 1000,\n reconnectionDelayMax: 30000,\n // Socket.IO's built-in ± jitter applied to each delay (0.5 = ±50%). This\n // de-correlates the reconnect wave of N clients after a shared outage —\n // the same anti-thundering-herd goal as the HTTP layer's full-jitter policy\n // (see network-backoff.frontend.utils). Do NOT drop it to 0.\n randomizationFactor: 0.5,\n // Generous AUTOMATIC budget before the connectivity supervisor\n // (online / visibility / watchdog re-arm — see the supervisor effect) takes\n // over. With the exponential curve this spans ~minutes of automatic retries;\n // the supervisor then keeps the socket recoverable indefinitely, so a client\n // is NEVER left permanently dead once this budget is exhausted.\n reconnectionAttempts: config.maxReconnectAttempts ?? 15,\n // Longer timeout for Kubernetes ingress (Traefik may take time to upgrade)\n timeout: 30000,\n // Force new connection (don't reuse existing) - important for hot reload\n forceNew: true,\n // Upgrade timeout for polling -> websocket upgrade\n upgradeTimeout: 10000,\n };\n \n // Header fallback for proxies that prefer headers over the auth object.\n // NOTE: `extraHeaders` is static for the lifetime of the Socket.IO manager —\n // it canNOT track a rotating token across reconnects. We therefore do NOT\n // put the short-lived access token here (it would go stale and a reconnect\n // would replay an expired Bearer header); the dynamic `auth.token` callback\n // above is the authoritative, always-fresh credential and the server reads\n // it first. Only the non-rotating consumable token is carried as a header.\n if (config.consumableToken) {\n socketOptions.extraHeaders = {\n [WildoHeaderKeys.CONSUMABLE_TOKEN]: config.consumableToken,\n };\n }\n \n const socket = io(config.url, socketOptions);\n\n socketRef.current = socket;\n attachRegisteredEventListeners(socket);\n\n // Report a connectivity outage to observability exactly ONCE per outage\n // (not once per reconnection attempt). Keeps the signal in logs/OTLP without\n // the per-attempt Sonner-toast spam that this whole change removes. Message is\n // reason-neutral because not every outage auto-reconnects (io server\n // disconnect / terminal give-up do not).\n const reportOutageOnce = (reason: string): void => {\n if (outageReportedRef.current) return;\n outageReportedRef.current = true;\n wsConnectivityLogger.warn('WebSocket connectivity lost', {\n source: 'websocket',\n reason,\n });\n };\n\n socket.on('connect', () => {\n connectInFlightRef.current = false;\n setStatus(WebSocketStatus.CONNECTED);\n setConnectionCount(prev => prev + 1);\n setError(null);\n reconnectAttemptsRef.current = 0;\n revivalAttemptRef.current = 0;\n // A successful handshake means the current token is valid: re-arm the\n // renewal guards so a LATER expiry (this socket lives for hours) can\n // request a fresh renewal, and clear the minted-but-rejected streak.\n authRenewalInFlightRef.current = false;\n authRenewalStreakRef.current = 0;\n connectedAtRef.current = new Date();\n // Recovery: if we had reported an outage, log the recovery once and re-arm\n // the guard so a future outage reports again.\n if (outageReportedRef.current) {\n wsConnectivityLogger.info('WebSocket connectivity restored', { source: 'websocket' });\n outageReportedRef.current = false;\n }\n console.log('Socket.IO connected');\n\n for (const room of roomClaimsRef.current.values()) {\n socket.emit(CoreWebSocketEvent.RESOURCE_SUBSCRIBE, {\n resourceType: room.resourceType,\n resourceId: room.resourceId,\n scopeKey: room.scopeKey,\n scopeId: room.scopeId,\n contextResourceIdentifiers: room.contextResourceIdentifiers,\n } as WS_ResourceSubscribePayload);\n }\n });\n\n socket.on('disconnect', (reason) => {\n connectInFlightRef.current = false;\n setStatus(WebSocketStatus.DISCONNECTED);\n console.log('Socket.IO disconnected:', reason);\n\n // A disconnect is transient churn, NOT a user-facing error: Socket.IO will\n // auto-reconnect (for transport drops), and the status bar\n // (useWebSocket().status) already shows the DISCONNECTED/RECONNECTING state.\n // Report the outage ONCE to observability instead of firing a Sonner toast\n // per drop. If reconnection ultimately gives up, `reconnect_failed` sets the\n // terminal ERROR the notifier surfaces.\n //\n // SKIP `io client disconnect` — that reason means WE called\n // `socket.disconnect()` (logout / org teardown / the `disconnect()` method\n // below). It is intentional, not an outage. Today `disconnect()` calls\n // `removeAllListeners()` BEFORE `socket.disconnect()`, so this handler\n // wouldn't fire on that path anyway — but this skip is defense-in-depth: it\n // removes the load-bearing dependence on that ordering and also covers any\n // other client-initiated disconnect that leaves listeners attached. All\n // other reasons (transport close/error, ping timeout, io server disconnect)\n // are genuine drops worth reporting.\n if (reason !== 'io client disconnect') {\n reportOutageOnce(reason);\n }\n });\n\n socket.on(CoreWebSocketEvent.SYSTEM_TOKEN_REFRESHED, () => {\n console.log('WebSocket: Server accepted refreshed socket auth token');\n // The server validated the current credential: the streak of\n // minted-but-rejected renewals is broken, so re-arm the loop breaker for a\n // future expiry on this long-lived connection.\n authRenewalStreakRef.current = 0;\n });\n\n socket.on(CoreWebSocketEvent.SYSTEM_ERROR, (payload: WS_SystemErrorPayload) => {\n if (payload?.code === 'AUTH_REFRESH_FAILED') {\n // A live in-place `AUTH_REFRESH` emit was rejected — the token we believed\n // fresh did not validate (clock skew, a sub-second expiry race, or the\n // credential genuinely went stale on a long-lived connected socket while\n // no HTTP traffic refreshed it). Re-emitting the SAME token would just\n // fail again, so ask the auth layer for a genuinely fresh NETWORK token;\n // on success `refreshAuth` re-emits `AUTH_REFRESH` with it. The shared\n // loop breaker caps the mint-succeeds-but-server-still-rejects case (here\n // the rejection is immediate, with no reconnection backoff to space it).\n console.warn('WebSocket: Server rejected refreshed socket auth token', payload);\n requestAuthRenewal('live refresh rejected');\n return;\n }\n\n if (payload?.code === 'RATE_LIMIT_EXCEEDED') {\n const errorMessage = payload.message || 'Too many real-time requests. Please slow down.';\n const detailsContext = normalizeSystemErrorDetails(payload.details);\n console.warn('WebSocket: Rate limit exceeded', payload);\n setError(errorMessage);\n errorManagement.handleError(new Error(errorMessage), {\n source: 'websocket',\n riskLevel: ResourceOperationRiskLevel.MEDIUM,\n additionalContext: {\n ...detailsContext,\n errorCode: payload.code,\n },\n });\n }\n });\n\n socket.on('connect_error', (err) => {\n connectInFlightRef.current = false;\n console.error('Socket.IO connection error:', err.message);\n setError(err.message);\n\n // AUTH-rejection self-heal. A handshake refused because the presented\n // access token is expired/invalid carries `data.code ===\n // AUTHENTICATION_FAILED` (see the backend auth middleware). Ask the auth\n // layer to renew the token; on success its `refreshAuth` seeds the fresh\n // token into `authStateRef` and revives this socket, so the NEXT\n // reconnection attempt's dynamic-auth handshake succeeds — no HTTP traffic\n // or window refocus required. The `errData.code` check is the stable\n // contract; the message fallback keeps this working against a server that\n // predates the structured code.\n const errData = (err as { data?: { code?: unknown } }).data;\n const isAuthRejection = errData?.code === CoreWebSocketConnectionErrorCode.AUTHENTICATION_FAILED\n || err.message === 'Authentication failed';\n if (isAuthRejection) {\n requestAuthRenewal('handshake rejected');\n }\n // A failed ATTEMPT while we are already in a reconnection cycle\n // (`reconnectAttemptsRef > 0`) is expected churn — keep the status\n // RECONNECTING so downstream consumers (status bar, ConnectionStatusNotifier)\n // can distinguish \"still trying\" from a terminal give-up. Only an INITIAL\n // connection failure (no reconnect cycle yet) is surfaced as ERROR; the\n // terminal give-up is set by `reconnect_failed` below. This keeps ERROR a\n // clean signal for \"not connected AND not actively retrying\".\n setStatus(reconnectAttemptsRef.current > 0 ? WebSocketStatus.RECONNECTING : WebSocketStatus.ERROR);\n\n // Report the outage once to observability (not once per attempt — that was\n // the Sonner-toast spam this change removed). No per-attempt user toast.\n reportOutageOnce(`connect_error:${(err as { type?: string }).type ?? err.message}`);\n });\n\n socket.io.on('reconnect_attempt', (attempt) => {\n reconnectAttemptsRef.current = attempt;\n setStatus(WebSocketStatus.RECONNECTING);\n console.log(`Socket.IO reconnection attempt ${attempt}`);\n });\n\n socket.io.on('reconnect', (attempt) => {\n console.log(`Socket.IO reconnected after ${attempt} attempts`);\n setStatus(WebSocketStatus.CONNECTED);\n setError(null);\n reconnectAttemptsRef.current = 0;\n revivalAttemptRef.current = 0;\n });\n\n socket.io.on('reconnect_failed', () => {\n console.error('Socket.IO reconnection failed');\n const errorMessage = 'Failed to reconnect after maximum attempts';\n setError(errorMessage);\n // Terminal give-up → ERROR. This is the single source of the user-facing\n // \"connection lost\" notification, owned by ConnectionStatusNotifier (which\n // debounces the whole outage into ONE persistent, self-dismissing notice).\n // We no longer fire errorManagement.handleError here — that produced a\n // second, redundant toast on top of the notifier and the (former) per-attempt\n // toasts. The outage was already reported once to observability via\n // reportOutageOnce; log the terminal transition at that same tier.\n setStatus(WebSocketStatus.ERROR);\n wsConnectivityLogger.warn('WebSocket reconnection gave up after maximum attempts', {\n source: 'websocket',\n reconnectAttempts: reconnectAttemptsRef.current,\n });\n });\n }, [attachRegisteredEventListeners, requestAuthRenewal]);\n\n /**\n * Perform readiness check and then connect to WebSocket\n */\n const performConnectWithReadinessCheck = useCallback(async (\n config: WebSocketConfig,\n requestId: number,\n connectKey: string,\n ): Promise<void> => {\n // Wait for API to be ready (with timeout - will proceed anyway after 30s)\n await waitForApiReadiness(config.url);\n\n if (connectRequestIdRef.current !== requestId || connectKeyRef.current !== connectKey) {\n console.log('WebSocket: Skipping stale connect attempt after readiness check');\n return;\n }\n \n // Connect to WebSocket\n performActualConnect(config);\n }, [waitForApiReadiness, performActualConnect]);\n\n /**\n * Connect to WebSocket server using Socket.IO\n */\n const connect = useCallback((config: WebSocketConfig): void => {\n // Validate URL before attempting connection\n if (!config.url) {\n setError('WebSocket URL is not available');\n setStatus(WebSocketStatus.ERROR);\n console.error('WebSocket: Cannot connect - URL is required');\n return;\n }\n\n const connectKey = buildConnectKey(config);\n const sameConnectionRequest = (\n connectKeyRef.current === connectKey\n && (\n connectInFlightRef.current\n || status === WebSocketStatus.CONNECTING\n || status === WebSocketStatus.CONNECTED\n || status === WebSocketStatus.RECONNECTING\n )\n );\n\n if (sameConnectionRequest) {\n console.log('WebSocket: Reusing active connect lifecycle for identical config');\n return;\n }\n\n // Disconnect any existing socket before connecting (handles hot reload scenario)\n // This ensures we don't have stale connections or duplicate connections\n if (socketRef.current) {\n if (socketRef.current.connected) {\n console.log('Disconnecting existing WebSocket connection before reconnecting');\n }\n socketRef.current.disconnect();\n socketRef.current.removeAllListeners();\n socketRef.current = null;\n }\n\n connectRequestIdRef.current += 1;\n connectKeyRef.current = connectKey;\n connectInFlightRef.current = true;\n configRef.current = config;\n // Register (or clear) this session's auth-renewal request handler. Stored in\n // a ref rather than closed over so the long-lived `connect_error` listener\n // always calls the CURRENT session's handler, and a reconnect that reuses the\n // socket never invokes a stale one.\n authErrorHandlerRef.current = config.onAuthenticationError ?? null;\n // Seed the credential source of truth the handshake callback reads from.\n // A `refreshAuth` that arrives between here and the actual `io()` call (the\n // readiness-check window) will overwrite `token` in place, so the eventual\n // handshake still presents the freshest token rather than this snapshot.\n //\n // Freshness guard: `refreshAuth` may have ALREADY stored a rotated token\n // into `authStateRef` BEFORE this connect (e.g. the access token was\n // refreshed during session restore, then the socket connects). Reseeding\n // blindly from `config.token` would regress the ref to the older token and\n // the handshake would be rejected. `pickFresherAccessToken` keeps the\n // stored token only when it provably outlives the config token; otherwise\n // the config token (the caller's explicit intent) wins.\n const seededToken = pickFresherAccessToken(authStateRef.current.token, config.token);\n if (seededToken !== config.token) {\n console.log('WebSocket: Keeping already-stored fresher access token over the staler connect config token');\n }\n authStateRef.current = {\n token: seededToken,\n consumableToken: config.consumableToken,\n organizationId: config.organizationId,\n };\n setStatus(WebSocketStatus.CONNECTING);\n setError(null);\n\n // Perform readiness check then connect (async, fires and forgets)\n performConnectWithReadinessCheck(config, connectRequestIdRef.current, connectKey).catch((err) => {\n console.error('WebSocket: Connection setup failed', err);\n setError('WebSocket connection setup failed');\n setStatus(WebSocketStatus.ERROR);\n });\n }, [buildConnectKey, performConnectWithReadinessCheck, status]);\n\n /**\n * Disconnect from WebSocket server\n */\n const disconnect = useCallback((): void => {\n connectRequestIdRef.current += 1;\n connectKeyRef.current = null;\n connectInFlightRef.current = false;\n reconnectAttemptsRef.current = 0;\n // Re-arm the once-per-outage report guard: without this, a socket that had an\n // outage (guard = true) then was torn down here and later revived for a NEW\n // session would suppress that session's first outage report. Recovery via the\n // `connect` handler also re-arms it, but an explicit disconnect may never\n // reconnect on the same socket.\n outageReportedRef.current = false;\n\n if (reconnectTimeoutRef.current) {\n clearTimeout(reconnectTimeoutRef.current);\n reconnectTimeoutRef.current = null;\n }\n\n if (socketRef.current) {\n socketRef.current.removeAllListeners();\n socketRef.current.disconnect();\n socketRef.current = null;\n }\n\n setStatus(WebSocketStatus.DISCONNECTED);\n roomClaimsRef.current.clear();\n setSubscribedRooms([]);\n connectedAtRef.current = null;\n // Clear the stored credentials so a later, unrelated reconnect can never\n // present a token from a session that was explicitly torn down (logout /\n // org teardown). A fresh `connect()` reseeds `authStateRef`.\n authStateRef.current = {};\n // Drop the renewal handler + guards: a torn-down session must never trigger a\n // token refresh. A fresh `connect()` re-registers the current session's.\n authErrorHandlerRef.current = null;\n authRenewalInFlightRef.current = false;\n authRenewalStreakRef.current = 0;\n }, []);\n\n /**\n * Refresh authentication token\n */\n const refreshAuth = useCallback((token: string): void => {\n // ALWAYS persist the rotated token first, regardless of connection state.\n // This is the credential the handshake callback presents on the next\n // (re)connection, so even if the socket is currently down the fresh token\n // is what the eventual reconnect will use. Skipping this on a disconnected\n // socket (the old behavior) dropped the token on the floor and left\n // auto-reconnect replaying the stale, now-expired one forever.\n authStateRef.current = { ...authStateRef.current, token };\n if (configRef.current) {\n configRef.current = { ...configRef.current, token };\n }\n\n const socket = socketRef.current;\n\n if (socket?.connected) {\n // Live path: refresh in place without tearing down the connection.\n console.log('WebSocket: Refreshing socket auth with renewed access token');\n socket.emit(CoreWebSocketEvent.AUTH_REFRESH, { token } as WS_AuthRefreshPayload);\n return;\n }\n\n // Disconnected. The fresh token is already stored for the next handshake.\n // If a socket exists but is NOT actively trying to reconnect (its\n // reconnection budget was exhausted, e.g. after repeated auth rejections on\n // the stale token), kick a fresh connect so it actually retries — now with\n // the renewed token. If it IS still reconnecting (`socket.active`), the next\n // scheduled attempt will read the updated token automatically.\n if (socket && !socket.active) {\n console.log('WebSocket: Reviving idle socket to reconnect with renewed access token');\n socket.connect();\n return;\n }\n\n console.log('WebSocket: Stored renewed access token for next socket handshake');\n }, []);\n\n /**\n * Revive a socket that is neither connected nor actively retrying.\n *\n * This is the resilience floor beneath Socket.IO's own reconnection budget.\n * Socket.IO gives up PERMANENTLY once `reconnectionAttempts` is exhausted\n * (`reconnect_failed` → ERROR); after that the socket sits dead forever unless\n * something re-opens it. The browser's connectivity signals (the `online`\n * event, a tab becoming visible again after mobile background suspension) and\n * the watchdog poll all funnel through here to re-arm the manager with\n * `socket.connect()` — the same revival `refreshAuth` already performs for its\n * idle-socket case.\n *\n * No-ops (so it is safe to call liberally) when:\n * - there is no active connection intent (`connectKeyRef` null — logged out or\n * intentionally disconnected), so a torn-down session is never resurrected;\n * - the socket is already connected OR already mid-retry (`socket.active`), so\n * Socket.IO's in-progress reconnection cycle is never interrupted.\n *\n * Deliberately does NOT touch `status`: letting the socket's own lifecycle\n * events drive it keeps the outage state steady (ERROR) across silent revival\n * probes instead of flapping ERROR↔RECONNECTING on every failed attempt.\n */\n const attemptRevival = useCallback((): void => {\n if (!connectKeyRef.current) {\n return;\n }\n const socket = socketRef.current;\n if (!socket) {\n // Intent remains but the socket was fully torn down — do a fresh connect.\n if (configRef.current) {\n connect(configRef.current);\n }\n return;\n }\n if (socket.connected || socket.active) {\n return;\n }\n // Dead socket with a live intent: reset the in-cycle attempt counter so a\n // subsequent failed probe reports as ERROR (not RECONNECTING), then re-open\n // the manager that had given up.\n reconnectAttemptsRef.current = 0;\n console.log('WebSocket: Reviving dead socket after connectivity signal');\n socket.connect();\n }, [connect]);\n\n // Hold the latest `attemptRevival` in a ref so the connectivity-supervisor\n // effect can register its listeners ONCE (empty deps) without re-subscribing on\n // every render as the callback identity changes.\n const attemptRevivalRef = useRef(attemptRevival);\n attemptRevivalRef.current = attemptRevival;\n\n /**\n * Connectivity supervisor — guarantees a client is never permanently dead.\n *\n * Three re-arm triggers, all routed through `attemptRevival` (which no-ops when\n * the socket is healthy, already retrying, or there is no connection intent):\n *\n * 1. **`online` event** — the OS network interface returned (Wi-Fi reconnect,\n * laptop wake, VPN up). Instant revival, no wait.\n * 2. **Page Visibility** — a backgrounded tab became visible again. Mobile\n * browsers freeze timers and drop sockets in the background, so the socket is\n * frequently dead on resume with no `online` event to announce it.\n * 3. **Watchdog poll** — a jittered, self-scheduling timer. `navigator.onLine`\n * only reflects the LOCAL interface, so a backend restart / proxy hiccup that\n * outlives Socket.IO's automatic budget fires NO `online` event; the watchdog\n * is the backstop that still recovers it. Its backoff grows (full jitter,\n * capped) while the socket stays dead and resets on a real connect, so a\n * fleet of clients de-correlates instead of stampeding a recovering backend.\n *\n * Mount-once (empty deps); every callback/state is read through a ref so the\n * listeners are never re-registered and the backoff counter survives renders.\n */\n useEffect(() => {\n const handleOnline = (): void => attemptRevivalRef.current();\n const handleVisibility = (): void => {\n if (document.visibilityState === 'visible') {\n attemptRevivalRef.current();\n }\n };\n\n window.addEventListener('online', handleOnline);\n document.addEventListener('visibilitychange', handleVisibility);\n\n // Watchdog pacing. While healthy we poll lazily (just to notice a silent\n // death); while dead we probe on a growing jittered backoff.\n const WATCHDOG_HEALTHY_POLL_MS = 15000;\n const WATCHDOG_BASE_MS = 2000;\n const WATCHDOG_MAX_MS = 30000;\n const WATCHDOG_MIN_GAP_MS = 500;\n\n let watchdogTimer: ReturnType<typeof setTimeout> | null = null;\n const scheduleWatchdog = (delay: number): void => {\n watchdogTimer = setTimeout(tick, delay);\n };\n function tick(): void {\n const socket = socketRef.current;\n // \"Healthy\" for the watchdog = connected, already retrying, OR no active\n // connection intent (logged out / intentionally disconnected).\n const healthy = !connectKeyRef.current || !!socket?.connected || !!socket?.active;\n if (healthy) {\n // Reset the backoff so the NEXT outage starts probing quickly again.\n revivalAttemptRef.current = 0;\n scheduleWatchdog(WATCHDOG_HEALTHY_POLL_MS);\n return;\n }\n // Dead with a live intent → revive, then back off (jittered) before the\n // next probe so N clients de-correlate on a recovering backend.\n attemptRevivalRef.current();\n const backoff = Math.max(\n WATCHDOG_MIN_GAP_MS,\n fullJitterBackoffMs(revivalAttemptRef.current, WATCHDOG_BASE_MS, WATCHDOG_MAX_MS),\n );\n revivalAttemptRef.current += 1;\n scheduleWatchdog(backoff);\n }\n scheduleWatchdog(WATCHDOG_HEALTHY_POLL_MS);\n\n return () => {\n window.removeEventListener('online', handleOnline);\n document.removeEventListener('visibilitychange', handleVisibility);\n if (watchdogTimer) {\n clearTimeout(watchdogTimer);\n }\n };\n // Mount-only by design; all dependencies are accessed through refs.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n /**\n * Listen to socket events directly\n */\n const on = useCallback(<T = unknown>(event: string, handler: (payload: T) => void): (() => void) => {\n const typedHandler = handler as (...args: unknown[]) => void;\n const handlers = eventListenersRef.current.get(event) ?? new Set<(...args: unknown[]) => void>();\n const hadHandler = handlers.has(typedHandler);\n handlers.add(typedHandler);\n eventListenersRef.current.set(event, handlers);\n\n if (!hadHandler && socketRef.current) {\n socketRef.current.on(event, getSocketListener(event, typedHandler));\n }\n\n return () => {\n eventListenersRef.current.get(event)?.delete(typedHandler);\n if (eventListenersRef.current.get(event)?.size === 0) {\n eventListenersRef.current.delete(event);\n }\n const wrappedHandler = eventListenerWrappersRef.current.get(event)?.get(typedHandler);\n if (wrappedHandler) {\n socketRef.current?.off(event, wrappedHandler);\n eventListenerWrappersRef.current.get(event)?.delete(typedHandler);\n }\n if (eventListenerWrappersRef.current.get(event)?.size === 0) {\n eventListenerWrappersRef.current.delete(event);\n }\n };\n }, [getSocketListener]);\n\n /**\n * Remove event listener\n */\n const off = useCallback((event: string, handler: (...args: unknown[]) => void): void => {\n eventListenersRef.current.get(event)?.delete(handler);\n if (eventListenersRef.current.get(event)?.size === 0) {\n eventListenersRef.current.delete(event);\n }\n const wrappedHandler = eventListenerWrappersRef.current.get(event)?.get(handler);\n if (wrappedHandler) {\n socketRef.current?.off(event, wrappedHandler);\n eventListenerWrappersRef.current.get(event)?.delete(handler);\n }\n if (eventListenerWrappersRef.current.get(event)?.size === 0) {\n eventListenerWrappersRef.current.delete(event);\n }\n }, []);\n\n /**\n * Emit event to server\n */\n const emit = useCallback(<T = unknown>(event: string, payload: T): void => {\n if (!socketRef.current?.connected) {\n console.warn('Cannot emit: not connected');\n return;\n }\n socketRef.current.emit(event, payload);\n }, []);\n\n const requestResourceRoomSubscription = useCallback(async (params: {\n resourceType: string;\n resourceId?: string;\n scopeKey?: string;\n scopeId?: string;\n contextResourceIdentifiers: ContextResourceIdentifiersInput;\n }): Promise<{ success: boolean; editingUsers?: string[] }> => {\n if (!socketRef.current?.connected) {\n console.warn('Cannot subscribe: not connected');\n return { success: false };\n }\n\n return new Promise((resolve) => {\n const roomName = buildRoomName(params);\n let resolved = false;\n\n socketRef.current!.emit(CoreWebSocketEvent.RESOURCE_SUBSCRIBE, {\n resourceType: params.resourceType,\n resourceId: params.resourceId,\n scopeKey: params.scopeKey,\n scopeId: params.scopeId,\n contextResourceIdentifiers: params.contextResourceIdentifiers,\n } as WS_ResourceSubscribePayload);\n\n const handleSubscribed = (response: WS_ResourceSubscribedPayload) => {\n if (response.roomName === roomName && !resolved) {\n resolved = true;\n socketRef.current!.off(CoreWebSocketEvent.RESOURCE_SUBSCRIBED, handleSubscribed);\n resolve({\n success: response.success,\n editingUsers: response.editingUsers,\n });\n }\n };\n\n socketRef.current!.on(CoreWebSocketEvent.RESOURCE_SUBSCRIBED, handleSubscribed);\n\n setTimeout(() => {\n if (!resolved) {\n resolved = true;\n socketRef.current?.off(CoreWebSocketEvent.RESOURCE_SUBSCRIBED, handleSubscribed);\n resolve({ success: false });\n }\n }, 10000);\n });\n }, [buildRoomName]);\n\n /**\n * Subscribe to a resource room\n * Returns success status and current editing users (for single resource subscriptions)\n */\n const claimResourceRoom = useCallback(async (params: {\n ownerKey: string;\n resourceType: string;\n resourceId?: string;\n scopeKey?: string;\n scopeId?: string;\n contextResourceIdentifiers: ContextResourceIdentifiersInput;\n }): Promise<{ success: boolean; editingUsers?: string[] }> => {\n const roomName = buildRoomName(params);\n const contextResourceIdentifiers = normalizeContextResourceIdentifiers(params.contextResourceIdentifiers);\n const existing = roomClaimsRef.current.get(roomName);\n if (existing) {\n const hadOwner = existing.ownerKeys.has(params.ownerKey);\n const previousOwnerContext = existing.ownerContexts.get(params.ownerKey);\n const previousSharedContext = existing.contextResourceIdentifiers;\n\n // Idempotency guard: if this owner already holds the room and the room's\n // wire context is byte-identical to what was last sent, the server already\n // has this exact subscription. Re-emitting `resource:subscribe` would be a\n // server-side no-op and only burns the per-socket subscribe rate-limit\n // budget — this is the mechanism behind the Settings-surface flood, where an\n // upstream effect re-claims every commit with an unchanged context. We\n // compare against the *shared* room context (what was last put on the wire),\n // so a genuine context change by this or any owner still re-emits.\n const contextUnchanged =\n buildNormalizedContextKey(previousSharedContext) === buildNormalizedContextKey(contextResourceIdentifiers);\n\n if (hadOwner && contextUnchanged && socketRef.current?.connected) {\n // Owner already registered + wire context unchanged ⇒ the server already\n // holds this exact subscription. Keep this owner's local context pointer\n // fresh, but skip the redundant `resource:subscribe` emit. The shared\n // context already equals the incoming one (that is what `contextUnchanged`\n // asserts), and the room is already in the subscribed set, so no re-sync\n // is needed.\n existing.ownerContexts.set(params.ownerKey, contextResourceIdentifiers);\n return { success: true, editingUsers: existing.editingUsers };\n }\n\n existing.ownerKeys.add(params.ownerKey);\n existing.ownerContexts.set(params.ownerKey, contextResourceIdentifiers);\n existing.contextResourceIdentifiers = contextResourceIdentifiers;\n\n if (socketRef.current?.connected) {\n const refreshedSubscription = await requestResourceRoomSubscription({\n resourceType: existing.resourceType,\n resourceId: existing.resourceId,\n scopeKey: existing.scopeKey,\n scopeId: existing.scopeId,\n contextResourceIdentifiers,\n });\n if (refreshedSubscription.success) {\n existing.editingUsers = refreshedSubscription.editingUsers;\n syncSubscribedRoomsFromClaims();\n return {\n success: true,\n editingUsers: existing.editingUsers,\n };\n }\n\n if (hadOwner && previousOwnerContext) {\n existing.ownerContexts.set(params.ownerKey, previousOwnerContext);\n } else {\n existing.ownerKeys.delete(params.ownerKey);\n existing.ownerContexts.delete(params.ownerKey);\n }\n existing.contextResourceIdentifiers = previousSharedContext;\n syncSubscribedRoomsFromClaims();\n return refreshedSubscription;\n }\n\n syncSubscribedRoomsFromClaims();\n return { success: true, editingUsers: existing.editingUsers };\n }\n\n if (!socketRef.current?.connected) {\n roomClaimsRef.current.set(roomName, {\n roomName,\n resourceType: params.resourceType,\n resourceId: params.resourceId,\n scopeKey: params.scopeKey,\n scopeId: params.scopeId,\n contextResourceIdentifiers,\n ownerKeys: new Set([params.ownerKey]),\n ownerContexts: new Map([[params.ownerKey, contextResourceIdentifiers]]),\n });\n syncSubscribedRoomsFromClaims();\n return { success: false };\n }\n\n const result = await requestResourceRoomSubscription({\n ...params,\n contextResourceIdentifiers,\n });\n if (!result.success) {\n return result;\n }\n\n roomClaimsRef.current.set(roomName, {\n roomName,\n resourceType: params.resourceType,\n resourceId: params.resourceId,\n scopeKey: params.scopeKey,\n scopeId: params.scopeId,\n contextResourceIdentifiers,\n ownerKeys: new Set([params.ownerKey]),\n ownerContexts: new Map([[params.ownerKey, contextResourceIdentifiers]]),\n editingUsers: result.editingUsers,\n });\n syncSubscribedRoomsFromClaims();\n return result;\n }, [buildRoomName, requestResourceRoomSubscription, syncSubscribedRoomsFromClaims]);\n\n const subscribeToResource = useCallback(async (params: {\n resourceType: string;\n resourceId?: string;\n scopeKey?: string;\n scopeId?: string;\n contextResourceIdentifiers: ContextResourceIdentifiersInput;\n }): Promise<{ success: boolean; editingUsers?: string[] }> => {\n const roomName = buildRoomName(params);\n return claimResourceRoom({\n ...params,\n ownerKey: `legacy:${roomName}`,\n });\n }, [buildRoomName, claimResourceRoom]);\n\n /**\n * Unsubscribe from a resource room\n */\n const releaseResourceRoom = useCallback(async (params: {\n ownerKey: string;\n resourceType: string;\n resourceId?: string;\n scopeKey?: string;\n scopeId?: string;\n contextResourceIdentifiers: ContextResourceIdentifiersInput;\n }): Promise<void> => {\n const roomName = buildRoomName(params);\n const contextResourceIdentifiers = normalizeContextResourceIdentifiers(params.contextResourceIdentifiers);\n const existing = roomClaimsRef.current.get(roomName);\n if (!existing) {\n return;\n }\n\n existing.ownerKeys.delete(params.ownerKey);\n existing.ownerContexts.delete(params.ownerKey);\n if (existing.ownerKeys.size > 0) {\n const survivingContext = existing.ownerContexts.values().next().value;\n if (survivingContext) {\n existing.contextResourceIdentifiers = survivingContext;\n if (socketRef.current?.connected) {\n const refreshedSubscription = await requestResourceRoomSubscription({\n resourceType: existing.resourceType,\n resourceId: existing.resourceId,\n scopeKey: existing.scopeKey,\n scopeId: existing.scopeId,\n contextResourceIdentifiers: survivingContext,\n });\n if (refreshedSubscription.success) {\n existing.editingUsers = refreshedSubscription.editingUsers;\n }\n }\n }\n syncSubscribedRoomsFromClaims();\n return;\n }\n\n roomClaimsRef.current.delete(roomName);\n syncSubscribedRoomsFromClaims();\n\n if (!socketRef.current?.connected) {\n return;\n }\n\n socketRef.current.emit(CoreWebSocketEvent.RESOURCE_UNSUBSCRIBE, {\n resourceType: params.resourceType,\n resourceId: params.resourceId,\n scopeKey: params.scopeKey,\n scopeId: params.scopeId,\n contextResourceIdentifiers,\n } as WS_ResourceSubscribePayload);\n }, [buildRoomName, syncSubscribedRoomsFromClaims]);\n\n const unsubscribeFromResource = useCallback(async (params: {\n resourceType: string;\n resourceId?: string;\n scopeKey?: string;\n scopeId?: string;\n contextResourceIdentifiers: ContextResourceIdentifiersInput;\n }): Promise<void> => {\n const roomName = buildRoomName(params);\n await releaseResourceRoom({\n ...params,\n ownerKey: `legacy:${roomName}`,\n });\n }, [buildRoomName, releaseResourceRoom]);\n\n /**\n * Switch organization context\n */\n const switchOrganization = useCallback((organizationId: string, previousOrganizationId?: string): void => {\n if (!socketRef.current?.connected) {\n console.warn('Cannot switch organization: not connected');\n return;\n }\n\n socketRef.current.emit(CoreWebSocketEvent.ORGANIZATION_SWITCH, {\n organizationId,\n previousOrganizationId,\n } as WS_OrganizationSwitchPayload);\n\n if (!previousOrganizationId) {\n return;\n }\n\n const roomsToRelease = Array.from(roomClaimsRef.current.values())\n .filter((room) => roomMatchesOrganization(room, previousOrganizationId))\n .flatMap((room) => Array.from(room.ownerKeys).map((ownerKey) => ({\n ownerKey,\n resourceType: room.resourceType,\n resourceId: room.resourceId,\n scopeKey: room.scopeKey,\n scopeId: room.scopeId,\n contextResourceIdentifiers: room.ownerContexts.get(ownerKey) ?? room.contextResourceIdentifiers,\n })));\n\n void Promise.all(roomsToRelease.map((room) => releaseResourceRoom(room)));\n }, [releaseResourceRoom]);\n\n /**\n * Start editing a resource (acquire lock)\n */\n const startEditing = useCallback(async (params: {\n resourceType: string;\n resourceId: string;\n contextResourceIdentifiers: ContextResourceIdentifiersInput;\n }): Promise<boolean> => {\n if (!socketRef.current?.connected) {\n console.warn('Cannot start editing: not connected');\n return false;\n }\n\n return new Promise((resolve) => {\n let resolved = false;\n \n socketRef.current!.emit(CoreWebSocketEvent.RESOURCE_EDITING_START, {\n resourceType: params.resourceType,\n resourceId: params.resourceId,\n contextResourceIdentifiers: normalizeContextResourceIdentifiers(params.contextResourceIdentifiers),\n timestamp: new Date(),\n } as WS_ResourceEditingPayload);\n\n const handleResult = (response: WS_ResourceEditingResultPayload) => {\n if (response.resourceType === params.resourceType && response.resourceId === params.resourceId && !resolved) {\n resolved = true;\n socketRef.current!.off(CoreWebSocketEvent.RESOURCE_EDITING_STARTED, handleResult);\n socketRef.current!.off(CoreWebSocketEvent.RESOURCE_EDITING_ERROR, handleResult);\n resolve(response.success);\n }\n };\n\n socketRef.current!.on(CoreWebSocketEvent.RESOURCE_EDITING_STARTED, handleResult);\n socketRef.current!.on(CoreWebSocketEvent.RESOURCE_EDITING_ERROR, handleResult);\n\n // Timeout after 10 seconds\n setTimeout(() => {\n if (!resolved) {\n resolved = true;\n socketRef.current?.off(CoreWebSocketEvent.RESOURCE_EDITING_STARTED, handleResult);\n socketRef.current?.off(CoreWebSocketEvent.RESOURCE_EDITING_ERROR, handleResult);\n resolve(false);\n }\n }, 10000);\n });\n }, []);\n\n /**\n * Stop editing a resource (release lock)\n */\n const stopEditing = useCallback((params: {\n resourceType: string;\n resourceId: string;\n }): void => {\n if (!socketRef.current?.connected) {\n return;\n }\n\n socketRef.current.emit(CoreWebSocketEvent.RESOURCE_EDITING_END, {\n resourceType: params.resourceType,\n resourceId: params.resourceId,\n timestamp: new Date(),\n } as WS_ResourceEditingPayload);\n }, []);\n\n /**\n * Send custom collaboration event\n */\n const sendCustomEvent = useCallback((params: {\n resourceType: string;\n resourceId: string;\n eventName: string;\n data?: unknown;\n contextResourceIdentifiers: ContextResourceIdentifiersInput;\n includeSelf?: boolean;\n }): void => {\n if (!socketRef.current?.connected) {\n console.warn('Cannot send custom event: not connected');\n return;\n }\n\n socketRef.current.emit(CoreWebSocketEvent.RESOURCE_CUSTOM, {\n resourceType: params.resourceType,\n resourceId: params.resourceId,\n eventName: params.eventName,\n data: params.data,\n contextResourceIdentifiers: normalizeContextResourceIdentifiers(params.contextResourceIdentifiers),\n includeSelf: params.includeSelf,\n timestamp: new Date(),\n } as WS_ResourceCustomEventPayload);\n }, []);\n\n /**\n * Get a specific badge count\n */\n const getBadge = useCallback(async (identifier: string, scope: string, scopeId: string): Promise<number> => {\n if (!socketRef.current?.connected) {\n return 0;\n }\n\n return new Promise((resolve) => {\n let resolved = false;\n \n const timeoutId = setTimeout(() => {\n if (!resolved) {\n resolved = true;\n resolve(0);\n }\n }, 5000);\n \n socketRef.current!.emit(CoreWebSocketEvent.BADGE_GET, {\n identifier,\n scope,\n scopeId,\n } as WS_BadgeGetRequest, (response: { count: number }) => {\n if (!resolved) {\n resolved = true;\n clearTimeout(timeoutId);\n resolve(response?.count ?? 0);\n }\n });\n });\n }, []);\n\n /**\n * Get all badges for a scope\n */\n const getAllBadges = useCallback(async (scope: string, scopeId: string): Promise<WS_BadgeGetAllResponse> => {\n if (!socketRef.current?.connected) {\n return [];\n }\n\n return new Promise((resolve) => {\n let resolved = false;\n \n const timeoutId = setTimeout(() => {\n if (!resolved) {\n resolved = true;\n resolve([]);\n }\n }, 5000);\n \n socketRef.current!.emit(CoreWebSocketEvent.BADGE_GET_ALL, {\n scope,\n scopeId,\n } as WS_BadgeGetAllRequest, (response: WS_BadgeGetAllResponse) => {\n if (!resolved) {\n resolved = true;\n clearTimeout(timeoutId);\n resolve(response ?? []);\n }\n });\n });\n }, []);\n\n /**\n * Get connection information\n */\n const getConnectionInfo = useCallback(() => ({\n status,\n url: configRef.current?.url || null,\n connectedAt: connectedAtRef.current\n }), [status]);\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n disconnect();\n };\n }, [disconnect]);\n\n const value: WebSocketContextType = useMemo(() => ({\n // State\n status,\n connectionCount,\n isConnected: status === WebSocketStatus.CONNECTED,\n error,\n subscribedRooms,\n\n // Connection Actions\n connect,\n disconnect,\n refreshAuth,\n switchOrganization,\n\n // Event Subscription\n on,\n off,\n emit,\n\n // Resource Room Actions\n subscribeToResource,\n claimResourceRoom,\n unsubscribeFromResource,\n releaseResourceRoom,\n\n // Editing State Actions\n startEditing,\n stopEditing,\n\n // Custom Collaboration Events\n sendCustomEvent,\n\n // Badge Actions\n getBadge,\n getAllBadges,\n\n // Helpers\n getConnectionInfo\n }), [\n status,\n connectionCount,\n error,\n subscribedRooms,\n connect,\n disconnect,\n refreshAuth,\n switchOrganization,\n on,\n off,\n emit,\n subscribeToResource,\n claimResourceRoom,\n unsubscribeFromResource,\n releaseResourceRoom,\n startEditing,\n stopEditing,\n sendCustomEvent,\n getBadge,\n getAllBadges,\n getConnectionInfo,\n ]);\n\n return <WebSocketContext.Provider value={value}>{children}</WebSocketContext.Provider>;\n};\n\n// useWebSocket hook is now in separate file: ./useWebSocket.ts\n// This separation is required for React Fast Refresh compatibility\n"]}
|
|
1
|
+
{"version":3,"file":"WebSocketContext.js","sourceRoot":"","sources":["../../../../../src/core/requests/websockets/WebSocketContext.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { createContext, useState, ReactNode, useEffect, useRef, useCallback, useMemo } from 'react';\nimport { io, Socket } from 'socket.io-client';\nimport axios from 'axios';\nimport { WINDOW_EVENTS_SLUGS } from '~wildo-frontend-lib/core/commons/window-event.frontend.schemas';\nimport { errorManagement } from '~wildo-frontend-lib/core/errors/error-management.frontend.service';\nimport { ResourceOperationRiskLevel, WildoHeaderKeys } from '@wildo-ai/saas-models';\nimport {\n CoreWebSocketEvent,\n CoreWebSocketConnectionErrorCode,\n WS_ResourceSubscribePayload,\n WS_ResourceEditingPayload,\n WS_ResourceCustomEventPayload,\n WS_ResourceNotificationPayload,\n WS_ResourceUpdatedPayload,\n WS_ResourceSubscribedPayload,\n WS_ResourceEditingResultPayload,\n WS_BadgeUpdatePayload,\n WS_BadgeGetRequest,\n WS_BadgeGetAllRequest,\n WS_BadgeGetAllResponse,\n WS_AuthRefreshPayload,\n WS_OrganizationSwitchPayload,\n WS_SystemErrorPayload,\n buildResourceRoomName,\n buildScopeRoomName,\n safeValidateWebSocketPayload,\n WebSocketEventSchemas,\n} from '@wildo-ai/saas-models';\nimport { fullJitterBackoffMs } from '~wildo-frontend-lib/core/requests/network-backoff.frontend.utils';\nimport { getClientInstanceId } from '~wildo-frontend-lib/core/requests/client-instance-id.frontend.service';\nimport { envLoader } from '~wildo-frontend-lib/core/runtime/env-variable-loader.frontend.service';\nimport { LoggerFrontendService } from '~wildo-frontend-lib/core/monitoring/logger.frontend.service';\nimport { normalizeContextResourceIdentifiersForTransport } from '~wildo-frontend-lib/core/resources/context-resource-identifiers.frontend.utils';\nimport { decodeJwtPayload } from '~wildo-frontend-lib/core/security/jwt.frontend.utils';\n\n/**\n * Read the `exp` (expiry, epoch seconds) claim from a JWT access token.\n * Returns `undefined` when the token is absent, malformed, or carries no\n * numeric `exp` — callers treat that as \"freshness unknown\".\n */\nfunction readAccessTokenExp(token: string | undefined): number | undefined {\n if (!token) {\n return undefined;\n }\n try {\n const { exp } = decodeJwtPayload<{ exp?: number }>(token);\n return typeof exp === 'number' ? exp : undefined;\n } catch {\n return undefined;\n }\n}\n\n/**\n * Choose the access token that expires LATER between the one already stored\n * in the credential ref and an incoming one from a `connect()` config.\n *\n * `connect()` seeds the handshake credential ref from its config token. But\n * `refreshAuth` can store a rotated (fresher) token into that same ref BEFORE\n * `connect()` runs — e.g. the access token is refreshed mid-session-restore\n * and only then does the WebSocket connect. Blindly overwriting with the\n * config token would REGRESS the ref to the older, possibly-expired token and\n * the handshake would be rejected with \"Authentication failed\". The primary\n * fix lives at the caller (it now passes the freshest token), but this guard\n * makes the invariant — \"the ref never moves to an earlier-expiring token\" —\n * hold for ANY caller.\n *\n * The stored token is kept ONLY when it is PROVABLY fresher (both tokens\n * decode to a numeric `exp` and the stored one is later). When freshness\n * can't be compared, the incoming config token wins, since it is the caller's\n * explicit connection intent (and may legitimately belong to a new session —\n * a different user/org — whose token need not out-live the previous one).\n */\nfunction pickFresherAccessToken(\n storedToken: string | undefined,\n incomingToken: string | undefined,\n): string | undefined {\n // Only ever OVERRIDE the caller's intent when we can PROVE the stored token\n // outlives the incoming one. In every other case (either token absent, or\n // freshness not comparable) the incoming config token wins — preserving the\n // original `token: config.token` seeding semantics exactly, including a\n // deliberate token-less connect that must NOT resurrect a prior session's\n // credential.\n if (!storedToken || !incomingToken) {\n return incomingToken;\n }\n const storedExp = readAccessTokenExp(storedToken);\n const incomingExp = readAccessTokenExp(incomingToken);\n if (storedExp !== undefined && incomingExp !== undefined && storedExp > incomingExp) {\n return storedToken;\n }\n return incomingToken;\n}\n\n/**\n * Ceiling on consecutive WS-initiated token renewals that mint a fresh token but\n * still fail to yield a validated connection. Once hit, the WS layer stops\n * requesting renewals until the server accepts a credential again (which resets\n * the streak). Protects against a mint-succeeds-but-server-rejects loop — most\n * acutely on the live `AUTH_REFRESH_FAILED` path, where the server's rejection is\n * immediate (no reconnection backoff to space the retries out). Sized generously\n * so ordinary clock-skew / one-off races self-heal well within it.\n */\nconst MAX_CONSECUTIVE_WS_AUTH_RENEWALS = 5;\n\n/**\n * WebSocket Context\n * Manages Socket.IO connections and real-time communication\n * Integrates with the EventBus for event-driven architecture\n */\n\nexport enum WebSocketStatus {\n DISCONNECTED = 'disconnected',\n CONNECTING = 'connecting',\n CONNECTED = 'connected',\n ERROR = 'error',\n RECONNECTING = 'reconnecting'\n}\n\ntype ContextResourceIdentifiersInput = Record<string, string | { fieldIdentifier?: string; resourceId?: string }>;\n\nfunction normalizeContextResourceIdentifiers(\n contextResourceIdentifiers: ContextResourceIdentifiersInput | undefined,\n): Record<string, string> {\n return normalizeContextResourceIdentifiersForTransport(contextResourceIdentifiers);\n}\n\n/**\n * Order-independent content key for a normalized context-identifiers map. Two maps\n * that produce the same key yield a byte-identical `resource:subscribe` payload on\n * the server, so re-emitting for an already-claimed room is a server-side no-op.\n * Used by `claimResourceRoom` to skip redundant re-subscriptions.\n */\nfunction buildNormalizedContextKey(context: Record<string, string> | undefined): string {\n if (!context) return '';\n return Object.keys(context)\n .sort()\n .map((key) => `${key}=${context[key]}`)\n .join('&');\n}\n\n/**\n * Content-equality for the rendered subscribed-rooms list.\n *\n * `syncSubscribedRoomsFromClaims` rebuilds this array from the room-claims map on\n * every claim/release — including idempotent re-claims that change nothing. Without\n * this gate it would `setSubscribedRooms` a brand-new array reference each call,\n * re-rendering every `useWebSocket()` consumer (`subscribedRooms` is a dependency of\n * the context `value` memo) and, when the triggering claim originates from a\n * render-phase RMM acquisition, helping sustain a paced re-render loop. Compares the\n * stable scalar fields plus an order-independent context key per room; room order is\n * the claims-map insertion order, which is stable across pure re-syncs.\n */\nfunction areSubscribedRoomsEqual(a: SubscribedRoom[], b: SubscribedRoom[]): boolean {\n if (a === b) return true;\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n const left = a[i];\n const right = b[i];\n if (\n left.roomName !== right.roomName\n || left.resourceType !== right.resourceType\n || left.resourceId !== right.resourceId\n || left.scopeKey !== right.scopeKey\n || left.scopeId !== right.scopeId\n || buildNormalizedContextKey(left.contextResourceIdentifiers) !== buildNormalizedContextKey(right.contextResourceIdentifiers)\n ) {\n return false;\n }\n }\n return true;\n}\n\nexport interface WebSocketConfig {\n url: string;\n token?: string;\n organizationId?: string;\n consumableToken?: string;\n autoReconnect?: boolean;\n reconnectInterval?: number;\n maxReconnectAttempts?: number;\n /**\n * Invoked when the server rejects the handshake for an AUTHENTICATION reason\n * (`connect_error` carrying `data.code === AUTHENTICATION_FAILED`) — i.e. the\n * access token this socket presented is expired/invalid.\n *\n * The WebSocket layer deliberately does NOT know how to mint a token: the auth\n * layer (`AuthSessionContext.tokenRenewalHandler`) owns the resilient refresh\n * (cross-tab Web-Lock dedup, transient-vs-authoritative classification, dev\n * leniency) and, on success, calls `refreshAuth()` to seed the fresh token and\n * revive this socket. This callback is the WS layer's request for that renewal.\n *\n * Without it, a backgrounded/unfocused tab whose access token expires keeps\n * replaying the expired token on every reconnect (no HTTP traffic flows to\n * trigger a reactive refresh), so real-time background jobs stall until the\n * user refocuses the window. See `AuthSessionContext.connectWebSocket`.\n *\n * May be async; the WS layer holds an in-flight guard until the returned\n * promise settles so an in-flight renewal is never requested twice.\n */\n onAuthenticationError?: () => void | Promise<unknown>;\n}\n\nexport interface SubscribedRoom {\n roomName: string;\n resourceType: string;\n resourceId?: string;\n scopeKey?: string;\n scopeId?: string;\n /** Stored for re-subscription on reconnect */\n contextResourceIdentifiers: Record<string, string>;\n}\n\ninterface RoomClaim extends SubscribedRoom {\n ownerKeys: Set<string>;\n ownerContexts: Map<string, Record<string, string>>;\n editingUsers?: string[];\n}\n\nfunction roomMatchesOrganization(room: SubscribedRoom, organizationId?: string): boolean {\n if (!organizationId) {\n return false;\n }\n\n if (room.scopeId === organizationId) {\n return true;\n }\n\n return Object.values(room.contextResourceIdentifiers).includes(organizationId);\n}\n\nfunction isPlainContextObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction normalizeSystemErrorDetails(details: unknown): Record<string, unknown> {\n if (details == null) {\n return {};\n }\n\n if (isPlainContextObject(details)) {\n return details;\n }\n\n return { errorDetails: details };\n}\n\nexport interface WebSocketContextType {\n // State\n status: WebSocketStatus;\n connectionCount: number;\n isConnected: boolean;\n error: string | null;\n subscribedRooms: SubscribedRoom[];\n\n // Connection Actions\n connect: (config: WebSocketConfig) => void;\n disconnect: () => void;\n refreshAuth: (token: string) => void;\n switchOrganization: (organizationId: string, previousOrganizationId?: string) => void;\n\n // Event Subscription (for direct listening, separate from EventBus)\n on: <T = unknown>(event: string, handler: (payload: T) => void) => () => void;\n off: (event: string, handler: (...args: unknown[]) => void) => void;\n emit: <T = unknown>(event: string, payload: T) => void;\n\n // Resource Room Actions\n subscribeToResource: (params: {\n resourceType: string;\n resourceId?: string;\n scopeKey?: string;\n scopeId?: string;\n contextResourceIdentifiers: ContextResourceIdentifiersInput;\n }) => Promise<{ success: boolean; editingUsers?: string[] }>;\n claimResourceRoom: (params: {\n ownerKey: string;\n resourceType: string;\n resourceId?: string;\n scopeKey?: string;\n scopeId?: string;\n contextResourceIdentifiers: ContextResourceIdentifiersInput;\n }) => Promise<{ success: boolean; editingUsers?: string[] }>;\n unsubscribeFromResource: (params: {\n resourceType: string;\n resourceId?: string;\n scopeKey?: string;\n scopeId?: string;\n contextResourceIdentifiers: ContextResourceIdentifiersInput;\n }) => Promise<void>;\n releaseResourceRoom: (params: {\n ownerKey: string;\n resourceType: string;\n resourceId?: string;\n scopeKey?: string;\n scopeId?: string;\n contextResourceIdentifiers: ContextResourceIdentifiersInput;\n }) => Promise<void>;\n\n // Editing State Actions\n startEditing: (params: {\n resourceType: string;\n resourceId: string;\n contextResourceIdentifiers: ContextResourceIdentifiersInput;\n }) => Promise<boolean>;\n stopEditing: (params: {\n resourceType: string;\n resourceId: string;\n }) => void;\n\n // Custom Collaboration Events\n sendCustomEvent: (params: {\n resourceType: string;\n resourceId: string;\n eventName: string;\n data?: unknown;\n contextResourceIdentifiers: ContextResourceIdentifiersInput;\n includeSelf?: boolean;\n }) => void;\n\n // Badge Actions\n getBadge: (identifier: string, scope: string, scopeId: string) => Promise<number>;\n getAllBadges: (scope: string, scopeId: string) => Promise<WS_BadgeGetAllResponse>;\n\n // Helpers\n getConnectionInfo: () => {\n status: WebSocketStatus;\n url: string | null;\n connectedAt: Date | null;\n };\n}\n\n/**\n * WebSocket Context\n * Exported for use in separate hook file (Fast Refresh compatibility)\n * @internal - Use useWebSocket() hook instead of accessing this directly\n */\nexport const WebSocketContext: React.Context<WebSocketContextType | undefined> = createContext<WebSocketContextType | undefined>(undefined);\n\n/**\n * Structured logger for WebSocket connectivity. Connection churn (reconnection\n * attempts, transient drops) is reported HERE — once per outage — instead of\n * through the global error/toast pipeline, so it lands in observability (the\n * Pino→OTLP bridge) without spamming the user with a Sonner toast per attempt.\n * The ambient connection state is surfaced by the status bar via\n * `useWebSocket().status`; only a terminal give-up (`reconnect_failed`) or an\n * actionable server signal (rate limit) still raises a user-facing notification.\n */\nconst wsConnectivityLogger = LoggerFrontendService.getLogger();\n\nexport const WebSocketProvider: React.FC<{ children: ReactNode }> = ({ children }) => {\n const [status, setStatus] = useState<WebSocketStatus>(WebSocketStatus.DISCONNECTED);\n const [connectionCount, setConnectionCount] = useState(0);\n const [error, setError] = useState<string | null>(null);\n const [subscribedRooms, setSubscribedRooms] = useState<SubscribedRoom[]>([]);\n\n const socketRef = useRef<Socket | null>(null);\n const configRef = useRef<WebSocketConfig | null>(null);\n /**\n * Single source of truth for the credentials the Socket.IO handshake sends.\n *\n * The Socket.IO `auth` option is read through a callback (see\n * `performActualConnect`) that pulls from this ref on EVERY connection AND\n * reconnection attempt. That is what lets a token rotated mid-session (or\n * while the socket is down) reach the next handshake — the access token is\n * short-lived and expires routinely, so a value frozen at `io()` time goes\n * stale and the server rejects the reconnect with \"Authentication failed\".\n *\n * `refreshAuth` updates this ref UNCONDITIONALLY (even when disconnected), so\n * the freshest token is always what the next (re)connect presents. The live\n * `AUTH_REFRESH` emit is an optimization on top, for the already-connected\n * case, to avoid a reconnect round-trip.\n */\n const authStateRef = useRef<{ token?: string; consumableToken?: string; organizationId?: string }>({});\n // The current session's auth-renewal request handler (from the connect config).\n // Called when the handshake is rejected for an authentication reason so the\n // auth layer can refresh the access token and revive this socket. Cleared on\n // `disconnect()` so a torn-down session can never trigger a renewal.\n const authErrorHandlerRef = useRef<(() => void | Promise<unknown>) | null>(null);\n // Guards against firing a renewal request while a prior one is still settling.\n // `connect_error` can fire repeatedly on a dead socket; the underlying\n // `tokenRenewalHandler` already dedups in-flight refreshes, but this keeps the\n // WS layer from queuing redundant calls between reconnection attempts.\n const authRenewalInFlightRef = useRef(false);\n // Loop breaker for the pathological case where renewal keeps SUCCEEDING (a\n // fresh token is minted each time) yet the server still rejects it — a\n // mint-vs-validate disagreement, not a transient outage. Counts consecutive\n // renewals that produced a token but did NOT lead to a validated connection;\n // reset to 0 whenever the server accepts the credential (`connect` or\n // `SYSTEM_TOKEN_REFRESHED`). A transient/authoritative refresh FAILURE does not\n // count (the auth layer already classifies it, and a long backend outage must\n // still renew once the backend returns), so this never suppresses legitimate\n // recovery. See `MAX_CONSECUTIVE_WS_AUTH_RENEWALS`.\n const authRenewalStreakRef = useRef(0);\n const reconnectTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const reconnectAttemptsRef = useRef(0);\n // Backoff counter for the connectivity SUPERVISOR's watchdog probes (see the\n // supervisor effect near the bottom). Distinct from `reconnectAttemptsRef`,\n // which tracks Socket.IO's own in-cycle reconnection attempts: this one paces\n // the manual revival attempts that happen AFTER Socket.IO has given up. Reset\n // to 0 on any successful (re)connect so the next outage starts probing quickly.\n const revivalAttemptRef = useRef(0);\n const connectedAtRef = useRef<Date | null>(null);\n const roomClaimsRef = useRef<Map<string, RoomClaim>>(new Map());\n const eventListenersRef = useRef<Map<string, Set<(...args: unknown[]) => void>>>(new Map());\n const eventListenerWrappersRef = useRef<Map<string, Map<(...args: unknown[]) => void, (...args: unknown[]) => void>>>(new Map());\n const connectRequestIdRef = useRef(0);\n const connectKeyRef = useRef<string | null>(null);\n const connectInFlightRef = useRef(false);\n // Anti-noise: true once the CURRENT outage has been reported (structured log +\n // status change). Guards against emitting one report per reconnection attempt —\n // the whole point of not toasting connection churn. Reset on (re)connect so a\n // later outage reports again.\n const outageReportedRef = useRef(false);\n\n /**\n * Build room name from parameters\n */\n const buildRoomName = useCallback((params: {\n resourceType: string;\n resourceId?: string;\n scopeKey?: string;\n scopeId?: string;\n }): string => {\n if (params.resourceId) {\n return buildResourceRoomName(params.resourceType, params.resourceId);\n }\n if (params.scopeKey && params.scopeId) {\n return buildScopeRoomName(params.resourceType, params.scopeKey, params.scopeId);\n }\n throw new Error('Must provide either resourceId or both scopeKey and scopeId');\n }, []);\n\n const syncSubscribedRoomsFromClaims = useCallback(() => {\n const nextRooms: SubscribedRoom[] = Array.from(roomClaimsRef.current.values(), (room) => ({\n roomName: room.roomName,\n resourceType: room.resourceType,\n resourceId: room.resourceId,\n scopeKey: room.scopeKey,\n scopeId: room.scopeId,\n contextResourceIdentifiers: room.contextResourceIdentifiers,\n }));\n // Value-equality gate: only commit a new array when the room set actually\n // changed by content. The claim/release paths call this on every acquisition\n // (including idempotent re-claims), so an ungated `setSubscribedRooms` would\n // mint a fresh array each time, churn the context `value` memo, and re-render\n // every `useWebSocket()` consumer — and feed the render-phase RMM-acquisition\n // re-render loop. Returning `prev` when unchanged lets React bail the update.\n setSubscribedRooms((prev) => (areSubscribedRoomsEqual(prev, nextRooms) ? prev : nextRooms));\n }, []);\n\n const getSocketListener = useCallback(\n (event: string, handler: (...args: unknown[]) => void): ((...args: unknown[]) => void) => {\n const wrappers = eventListenerWrappersRef.current.get(event) ?? new Map();\n eventListenerWrappersRef.current.set(event, wrappers);\n\n const existingWrapper = wrappers.get(handler);\n if (existingWrapper) {\n return existingWrapper;\n }\n\n const wrappedHandler = (payload: unknown): void => {\n if (event in WebSocketEventSchemas) {\n const validationResult = safeValidateWebSocketPayload(\n event as keyof typeof WebSocketEventSchemas,\n payload,\n );\n\n if ('data' in validationResult) {\n handler(validationResult.data);\n return;\n }\n\n console.warn('Dropped invalid websocket payload at client ingress boundary', {\n event,\n issues: validationResult.error.issues,\n });\n return;\n }\n\n handler(payload);\n };\n\n wrappers.set(handler, wrappedHandler);\n return wrappedHandler;\n },\n [],\n );\n\n const attachRegisteredEventListeners = useCallback((socket: Socket): void => {\n for (const [event, handlers] of eventListenersRef.current.entries()) {\n for (const handler of handlers) {\n socket.on(event, getSocketListener(event, handler));\n }\n }\n }, [getSocketListener]);\n\n const buildConnectKey = useCallback((config: WebSocketConfig): string => JSON.stringify({\n url: config.url,\n token: config.token ?? null,\n organizationId: config.organizationId ?? null,\n consumableToken: config.consumableToken ?? null,\n }), []);\n\n /**\n * Convert WebSocket URL to HTTP URL for readiness check\n * ws:// -> http://, wss:// -> https://\n */\n const wsUrlToHttpUrl = useCallback((wsUrl: string): string => {\n return wsUrl.replace(/^ws/, 'http');\n }, []);\n\n /**\n * Wait for API readiness before WebSocket connection\n * Uses exponential backoff: 2^attempts * 100ms, capped at 10s\n * Has a maximum wait time of 30s before proceeding anyway\n * @returns true if API is ready, false if we timed out (still proceeds with connection)\n */\n const waitForApiReadiness = useCallback(async (wsUrl: string): Promise<boolean> => {\n const httpUrl = wsUrlToHttpUrl(wsUrl);\n const healthUrl = `${httpUrl}/health/ready`;\n \n const BASE_DELAY_MS = 100;\n const MAX_DELAY_MS = 10000;\n const MAX_WAIT_TIME_MS = 30000; // Maximum time to wait before proceeding anyway\n \n const startTime = Date.now();\n let attempt = 0;\n\n console.log('WebSocket: Waiting for API readiness...', { healthUrl });\n\n while (true) {\n try {\n const response = await axios.get(healthUrl, {\n timeout: 5000,\n validateStatus: () => true, // Don't throw on non-2xx\n });\n\n if (response.status === 200 && response.data?.status === 'healthy') {\n console.log('WebSocket: API is ready', { healthUrl, attempts: attempt + 1 });\n return true;\n }\n } catch (error) {\n // Network error, CORS error, timeout - all treated the same\n }\n\n // Check if we've exceeded maximum wait time\n const elapsedTime = Date.now() - startTime;\n if (elapsedTime >= MAX_WAIT_TIME_MS) {\n console.warn('WebSocket: API readiness check timed out, proceeding with connection anyway', {\n healthUrl,\n elapsedMs: elapsedTime,\n attempts: attempt + 1,\n });\n return false;\n }\n\n // Jittered exponential backoff (AWS \"full jitter\") — see\n // network-backoff.frontend.utils. Deterministic backoff would have every\n // client poll /health/ready in lockstep after a shared outage and then all\n // reconnect on the same tick; jitter spreads that load.\n const delay = fullJitterBackoffMs(attempt, BASE_DELAY_MS, MAX_DELAY_MS);\n\n console.warn(`WebSocket: API not ready (attempt ${attempt + 1}), retrying in ${delay}ms...`, {\n healthUrl,\n elapsedMs: elapsedTime,\n });\n\n await new Promise(resolve => setTimeout(resolve, delay));\n attempt++;\n }\n }, [wsUrlToHttpUrl]);\n\n /**\n * Ask the auth layer to renew the access token because the server rejected the\n * credential this socket presented — either at the handshake (`connect_error`\n * with `AUTHENTICATION_FAILED`) or during a live in-place refresh\n * (`SYSTEM_ERROR` / `AUTH_REFRESH_FAILED`). Shared by both paths so their\n * dedup + loop-protection behave identically.\n *\n * The WS layer never mints a token itself: `onAuthenticationError` runs\n * `AuthSessionContext.tokenRenewalHandler`, which performs the resilient\n * network refresh and, on success, seeds the fresh token back into this socket\n * (`refreshAuth`) — reviving a dead handshake or re-emitting `AUTH_REFRESH` on a\n * still-connected socket. This function only decides WHETHER to ask.\n *\n * Two guards:\n * - `authRenewalInFlightRef` — one request at a time; the repeated\n * `connect_error`s of a dead socket (or a burst of `AUTH_REFRESH_FAILED`)\n * never queue redundant calls. Held for the FULL renewal promise.\n * - `authRenewalStreakRef` / `MAX_CONSECUTIVE_WS_AUTH_RENEWALS` — stops a\n * mint-succeeds-but-server-still-rejects loop. Only SUCCESSFUL renewals that\n * didn't lead to a validated connection count; a validated credential\n * (`connect` / `SYSTEM_TOKEN_REFRESHED`) resets the streak, and a failed\n * refresh is decremented back out so a transient outage never trips the cap.\n */\n const requestAuthRenewal = useCallback((reason: string): void => {\n if (!authErrorHandlerRef.current || authRenewalInFlightRef.current) {\n return;\n }\n if (authRenewalStreakRef.current >= MAX_CONSECUTIVE_WS_AUTH_RENEWALS) {\n console.warn(\n `WebSocket: Suppressing token renewal (${reason}) — a freshly-minted token was rejected ${authRenewalStreakRef.current}× in a row; not looping the refresh endpoint`,\n );\n return;\n }\n console.log(`WebSocket: Requesting token renewal (${reason})`);\n authRenewalInFlightRef.current = true;\n authRenewalStreakRef.current += 1;\n Promise.resolve(authErrorHandlerRef.current())\n .catch(() => {\n // Transient (backend unreachable / 5xx) or authoritative (logout) refresh\n // failure — already classified/handled by the auth layer. It produced no\n // fresh token, so it can't sustain a rejection loop: undo the streak\n // increment so a later, genuinely-recoverable renewal is never blocked.\n authRenewalStreakRef.current = Math.max(0, authRenewalStreakRef.current - 1);\n })\n .finally(() => { authRenewalInFlightRef.current = false; });\n }, []);\n\n /**\n * Perform the Socket.IO connection\n */\n const performActualConnect = useCallback((config: WebSocketConfig): void => {\n // Socket.IO configuration optimized for Kubernetes/Traefik environments\n // - Start with polling, then upgrade to websocket (more reliable through proxies)\n // - Include token in both auth object and extraHeaders as fallback\n // - Longer timeout for initial connection through ingress\n const socketOptions: any = {\n // Dynamic auth callback — Socket.IO invokes this on every connection AND\n // reconnection attempt, so each handshake reads the LATEST token from\n // `authStateRef` rather than a value frozen at `io()` time. This is the\n // fix for token-expiry reconnect failures: when the access token rotates\n // mid-session (or while the socket is down), the next reconnect picks up\n // the fresh token instead of replaying the stale one and getting rejected\n // with \"Authentication failed\".\n //\n // The active-organization selector is validated server-side against the\n // user's verified memberships before seeding initiatorIds.organizationId,\n // so org-scoped resource subscriptions authorize correctly. A stale value\n // is ignored server-side (never trusted), and ORGANIZATION_SWITCH keeps\n // the server's active org in sync.\n auth: (cb: (data: Record<string, string>) => void) => {\n const { token, consumableToken, organizationId } = authStateRef.current;\n // Client-install id rides the `auth` payload rather than `extraHeaders` for two reasons:\n // `extraHeaders` is frozen for the manager's lifetime AND only applies to the polling\n // transport in browsers, whereas this callback re-runs on every connect/reconnect — so a\n // policy applied after the socket first connected is picked up on the next handshake, and a\n // withdrawn policy stops being sent. Undefined (the opt-out default) omits the key entirely.\n const clientInstanceId = getClientInstanceId();\n cb({\n ...(token ? { token } : {}),\n ...(consumableToken ? { consumableToken } : {}),\n ...(organizationId ? { organizationId } : {}),\n ...(clientInstanceId ? { clientInstanceId } : {}),\n // Origin SURFACE, alongside the install id. A socket has no per-message headers, so both\n // origin signals ride the handshake or the backend cannot attribute socket-originated audit\n // rows the way it attributes HTTP ones. Sending only one of the pair was an asymmetry, not a\n // decision. Read from `envLoader` (not React context) for the same reason as the HTTP client:\n // this callback runs outside the provider tree.\n frontendServiceName: envLoader.loadEnvironmentConfig().frontendServiceName,\n });\n },\n // Start with polling, then upgrade to websocket (better for Traefik/proxies)\n transports: ['polling', 'websocket'],\n reconnection: config.autoReconnect ?? true,\n // Base retry delay. Socket.IO grows it exponentially toward\n // `reconnectionDelayMax`; WITHOUT a max override Socket.IO caps growth at\n // its own 5000ms default, so a 5000ms base yielded a FLAT ~5s curve with no\n // growth. Base 1000 + max 30000 gives a real 1s→2s→4s→…→30s backoff.\n reconnectionDelay: config.reconnectInterval ?? 1000,\n reconnectionDelayMax: 30000,\n // Socket.IO's built-in ± jitter applied to each delay (0.5 = ±50%). This\n // de-correlates the reconnect wave of N clients after a shared outage —\n // the same anti-thundering-herd goal as the HTTP layer's full-jitter policy\n // (see network-backoff.frontend.utils). Do NOT drop it to 0.\n randomizationFactor: 0.5,\n // Generous AUTOMATIC budget before the connectivity supervisor\n // (online / visibility / watchdog re-arm — see the supervisor effect) takes\n // over. With the exponential curve this spans ~minutes of automatic retries;\n // the supervisor then keeps the socket recoverable indefinitely, so a client\n // is NEVER left permanently dead once this budget is exhausted.\n reconnectionAttempts: config.maxReconnectAttempts ?? 15,\n // Longer timeout for Kubernetes ingress (Traefik may take time to upgrade)\n timeout: 30000,\n // Force new connection (don't reuse existing) - important for hot reload\n forceNew: true,\n // Upgrade timeout for polling -> websocket upgrade\n upgradeTimeout: 10000,\n };\n \n // Header fallback for proxies that prefer headers over the auth object.\n // NOTE: `extraHeaders` is static for the lifetime of the Socket.IO manager —\n // it canNOT track a rotating token across reconnects. We therefore do NOT\n // put the short-lived access token here (it would go stale and a reconnect\n // would replay an expired Bearer header); the dynamic `auth.token` callback\n // above is the authoritative, always-fresh credential and the server reads\n // it first. Only the non-rotating consumable token is carried as a header.\n if (config.consumableToken) {\n socketOptions.extraHeaders = {\n [WildoHeaderKeys.CONSUMABLE_TOKEN]: config.consumableToken,\n };\n }\n \n const socket = io(config.url, socketOptions);\n\n socketRef.current = socket;\n attachRegisteredEventListeners(socket);\n\n // Report a connectivity outage to observability exactly ONCE per outage\n // (not once per reconnection attempt). Keeps the signal in logs/OTLP without\n // the per-attempt Sonner-toast spam that this whole change removes. Message is\n // reason-neutral because not every outage auto-reconnects (io server\n // disconnect / terminal give-up do not).\n const reportOutageOnce = (reason: string): void => {\n if (outageReportedRef.current) return;\n outageReportedRef.current = true;\n wsConnectivityLogger.warn('WebSocket connectivity lost', {\n source: 'websocket',\n reason,\n });\n };\n\n socket.on('connect', () => {\n connectInFlightRef.current = false;\n setStatus(WebSocketStatus.CONNECTED);\n setConnectionCount(prev => prev + 1);\n setError(null);\n reconnectAttemptsRef.current = 0;\n revivalAttemptRef.current = 0;\n // A successful handshake means the current token is valid: re-arm the\n // renewal guards so a LATER expiry (this socket lives for hours) can\n // request a fresh renewal, and clear the minted-but-rejected streak.\n authRenewalInFlightRef.current = false;\n authRenewalStreakRef.current = 0;\n connectedAtRef.current = new Date();\n // Recovery: if we had reported an outage, log the recovery once and re-arm\n // the guard so a future outage reports again.\n if (outageReportedRef.current) {\n wsConnectivityLogger.info('WebSocket connectivity restored', { source: 'websocket' });\n outageReportedRef.current = false;\n }\n console.log('Socket.IO connected');\n\n for (const room of roomClaimsRef.current.values()) {\n socket.emit(CoreWebSocketEvent.RESOURCE_SUBSCRIBE, {\n resourceType: room.resourceType,\n resourceId: room.resourceId,\n scopeKey: room.scopeKey,\n scopeId: room.scopeId,\n contextResourceIdentifiers: room.contextResourceIdentifiers,\n } as WS_ResourceSubscribePayload);\n }\n });\n\n socket.on('disconnect', (reason) => {\n connectInFlightRef.current = false;\n setStatus(WebSocketStatus.DISCONNECTED);\n console.log('Socket.IO disconnected:', reason);\n\n // A disconnect is transient churn, NOT a user-facing error: Socket.IO will\n // auto-reconnect (for transport drops), and the status bar\n // (useWebSocket().status) already shows the DISCONNECTED/RECONNECTING state.\n // Report the outage ONCE to observability instead of firing a Sonner toast\n // per drop. If reconnection ultimately gives up, `reconnect_failed` sets the\n // terminal ERROR the notifier surfaces.\n //\n // SKIP `io client disconnect` — that reason means WE called\n // `socket.disconnect()` (logout / org teardown / the `disconnect()` method\n // below). It is intentional, not an outage. Today `disconnect()` calls\n // `removeAllListeners()` BEFORE `socket.disconnect()`, so this handler\n // wouldn't fire on that path anyway — but this skip is defense-in-depth: it\n // removes the load-bearing dependence on that ordering and also covers any\n // other client-initiated disconnect that leaves listeners attached. All\n // other reasons (transport close/error, ping timeout, io server disconnect)\n // are genuine drops worth reporting.\n if (reason !== 'io client disconnect') {\n reportOutageOnce(reason);\n }\n });\n\n socket.on(CoreWebSocketEvent.SYSTEM_TOKEN_REFRESHED, () => {\n console.log('WebSocket: Server accepted refreshed socket auth token');\n // The server validated the current credential: the streak of\n // minted-but-rejected renewals is broken, so re-arm the loop breaker for a\n // future expiry on this long-lived connection.\n authRenewalStreakRef.current = 0;\n });\n\n socket.on(CoreWebSocketEvent.SYSTEM_ERROR, (payload: WS_SystemErrorPayload) => {\n if (payload?.code === 'AUTH_REFRESH_FAILED') {\n // A live in-place `AUTH_REFRESH` emit was rejected — the token we believed\n // fresh did not validate (clock skew, a sub-second expiry race, or the\n // credential genuinely went stale on a long-lived connected socket while\n // no HTTP traffic refreshed it). Re-emitting the SAME token would just\n // fail again, so ask the auth layer for a genuinely fresh NETWORK token;\n // on success `refreshAuth` re-emits `AUTH_REFRESH` with it. The shared\n // loop breaker caps the mint-succeeds-but-server-still-rejects case (here\n // the rejection is immediate, with no reconnection backoff to space it).\n console.warn('WebSocket: Server rejected refreshed socket auth token', payload);\n requestAuthRenewal('live refresh rejected');\n return;\n }\n\n if (payload?.code === 'RATE_LIMIT_EXCEEDED') {\n const errorMessage = payload.message || 'Too many real-time requests. Please slow down.';\n const detailsContext = normalizeSystemErrorDetails(payload.details);\n console.warn('WebSocket: Rate limit exceeded', payload);\n setError(errorMessage);\n errorManagement.handleError(new Error(errorMessage), {\n source: 'websocket',\n riskLevel: ResourceOperationRiskLevel.MEDIUM,\n additionalContext: {\n ...detailsContext,\n errorCode: payload.code,\n },\n });\n }\n });\n\n socket.on('connect_error', (err) => {\n connectInFlightRef.current = false;\n console.error('Socket.IO connection error:', err.message);\n setError(err.message);\n\n // AUTH-rejection self-heal. A handshake refused because the presented\n // access token is expired/invalid carries `data.code ===\n // AUTHENTICATION_FAILED` (see the backend auth middleware). Ask the auth\n // layer to renew the token; on success its `refreshAuth` seeds the fresh\n // token into `authStateRef` and revives this socket, so the NEXT\n // reconnection attempt's dynamic-auth handshake succeeds — no HTTP traffic\n // or window refocus required. The `errData.code` check is the stable\n // contract; the message fallback keeps this working against a server that\n // predates the structured code.\n const errData = (err as { data?: { code?: unknown } }).data;\n const isAuthRejection = errData?.code === CoreWebSocketConnectionErrorCode.AUTHENTICATION_FAILED\n || err.message === 'Authentication failed';\n if (isAuthRejection) {\n requestAuthRenewal('handshake rejected');\n }\n // A failed ATTEMPT while we are already in a reconnection cycle\n // (`reconnectAttemptsRef > 0`) is expected churn — keep the status\n // RECONNECTING so downstream consumers (status bar, ConnectionStatusNotifier)\n // can distinguish \"still trying\" from a terminal give-up. Only an INITIAL\n // connection failure (no reconnect cycle yet) is surfaced as ERROR; the\n // terminal give-up is set by `reconnect_failed` below. This keeps ERROR a\n // clean signal for \"not connected AND not actively retrying\".\n setStatus(reconnectAttemptsRef.current > 0 ? WebSocketStatus.RECONNECTING : WebSocketStatus.ERROR);\n\n // Report the outage once to observability (not once per attempt — that was\n // the Sonner-toast spam this change removed). No per-attempt user toast.\n reportOutageOnce(`connect_error:${(err as { type?: string }).type ?? err.message}`);\n });\n\n socket.io.on('reconnect_attempt', (attempt) => {\n reconnectAttemptsRef.current = attempt;\n setStatus(WebSocketStatus.RECONNECTING);\n console.log(`Socket.IO reconnection attempt ${attempt}`);\n });\n\n socket.io.on('reconnect', (attempt) => {\n console.log(`Socket.IO reconnected after ${attempt} attempts`);\n setStatus(WebSocketStatus.CONNECTED);\n setError(null);\n reconnectAttemptsRef.current = 0;\n revivalAttemptRef.current = 0;\n });\n\n socket.io.on('reconnect_failed', () => {\n console.error('Socket.IO reconnection failed');\n const errorMessage = 'Failed to reconnect after maximum attempts';\n setError(errorMessage);\n // Terminal give-up → ERROR. This is the single source of the user-facing\n // \"connection lost\" notification, owned by ConnectionStatusNotifier (which\n // debounces the whole outage into ONE persistent, self-dismissing notice).\n // We no longer fire errorManagement.handleError here — that produced a\n // second, redundant toast on top of the notifier and the (former) per-attempt\n // toasts. The outage was already reported once to observability via\n // reportOutageOnce; log the terminal transition at that same tier.\n setStatus(WebSocketStatus.ERROR);\n wsConnectivityLogger.warn('WebSocket reconnection gave up after maximum attempts', {\n source: 'websocket',\n reconnectAttempts: reconnectAttemptsRef.current,\n });\n });\n }, [attachRegisteredEventListeners, requestAuthRenewal]);\n\n /**\n * Perform readiness check and then connect to WebSocket\n */\n const performConnectWithReadinessCheck = useCallback(async (\n config: WebSocketConfig,\n requestId: number,\n connectKey: string,\n ): Promise<void> => {\n // Wait for API to be ready (with timeout - will proceed anyway after 30s)\n await waitForApiReadiness(config.url);\n\n if (connectRequestIdRef.current !== requestId || connectKeyRef.current !== connectKey) {\n console.log('WebSocket: Skipping stale connect attempt after readiness check');\n return;\n }\n \n // Connect to WebSocket\n performActualConnect(config);\n }, [waitForApiReadiness, performActualConnect]);\n\n /**\n * Connect to WebSocket server using Socket.IO\n */\n const connect = useCallback((config: WebSocketConfig): void => {\n // Validate URL before attempting connection\n if (!config.url) {\n setError('WebSocket URL is not available');\n setStatus(WebSocketStatus.ERROR);\n console.error('WebSocket: Cannot connect - URL is required');\n return;\n }\n\n const connectKey = buildConnectKey(config);\n const sameConnectionRequest = (\n connectKeyRef.current === connectKey\n && (\n connectInFlightRef.current\n || status === WebSocketStatus.CONNECTING\n || status === WebSocketStatus.CONNECTED\n || status === WebSocketStatus.RECONNECTING\n )\n );\n\n if (sameConnectionRequest) {\n console.log('WebSocket: Reusing active connect lifecycle for identical config');\n return;\n }\n\n // Disconnect any existing socket before connecting (handles hot reload scenario)\n // This ensures we don't have stale connections or duplicate connections\n if (socketRef.current) {\n if (socketRef.current.connected) {\n console.log('Disconnecting existing WebSocket connection before reconnecting');\n }\n socketRef.current.disconnect();\n socketRef.current.removeAllListeners();\n socketRef.current = null;\n }\n\n connectRequestIdRef.current += 1;\n connectKeyRef.current = connectKey;\n connectInFlightRef.current = true;\n configRef.current = config;\n // Register (or clear) this session's auth-renewal request handler. Stored in\n // a ref rather than closed over so the long-lived `connect_error` listener\n // always calls the CURRENT session's handler, and a reconnect that reuses the\n // socket never invokes a stale one.\n authErrorHandlerRef.current = config.onAuthenticationError ?? null;\n // Seed the credential source of truth the handshake callback reads from.\n // A `refreshAuth` that arrives between here and the actual `io()` call (the\n // readiness-check window) will overwrite `token` in place, so the eventual\n // handshake still presents the freshest token rather than this snapshot.\n //\n // Freshness guard: `refreshAuth` may have ALREADY stored a rotated token\n // into `authStateRef` BEFORE this connect (e.g. the access token was\n // refreshed during session restore, then the socket connects). Reseeding\n // blindly from `config.token` would regress the ref to the older token and\n // the handshake would be rejected. `pickFresherAccessToken` keeps the\n // stored token only when it provably outlives the config token; otherwise\n // the config token (the caller's explicit intent) wins.\n const seededToken = pickFresherAccessToken(authStateRef.current.token, config.token);\n if (seededToken !== config.token) {\n console.log('WebSocket: Keeping already-stored fresher access token over the staler connect config token');\n }\n authStateRef.current = {\n token: seededToken,\n consumableToken: config.consumableToken,\n organizationId: config.organizationId,\n };\n setStatus(WebSocketStatus.CONNECTING);\n setError(null);\n\n // Perform readiness check then connect (async, fires and forgets)\n performConnectWithReadinessCheck(config, connectRequestIdRef.current, connectKey).catch((err) => {\n console.error('WebSocket: Connection setup failed', err);\n setError('WebSocket connection setup failed');\n setStatus(WebSocketStatus.ERROR);\n });\n }, [buildConnectKey, performConnectWithReadinessCheck, status]);\n\n /**\n * Disconnect from WebSocket server\n */\n const disconnect = useCallback((): void => {\n connectRequestIdRef.current += 1;\n connectKeyRef.current = null;\n connectInFlightRef.current = false;\n reconnectAttemptsRef.current = 0;\n // Re-arm the once-per-outage report guard: without this, a socket that had an\n // outage (guard = true) then was torn down here and later revived for a NEW\n // session would suppress that session's first outage report. Recovery via the\n // `connect` handler also re-arms it, but an explicit disconnect may never\n // reconnect on the same socket.\n outageReportedRef.current = false;\n\n if (reconnectTimeoutRef.current) {\n clearTimeout(reconnectTimeoutRef.current);\n reconnectTimeoutRef.current = null;\n }\n\n if (socketRef.current) {\n socketRef.current.removeAllListeners();\n socketRef.current.disconnect();\n socketRef.current = null;\n }\n\n setStatus(WebSocketStatus.DISCONNECTED);\n roomClaimsRef.current.clear();\n setSubscribedRooms([]);\n connectedAtRef.current = null;\n // Clear the stored credentials so a later, unrelated reconnect can never\n // present a token from a session that was explicitly torn down (logout /\n // org teardown). A fresh `connect()` reseeds `authStateRef`.\n authStateRef.current = {};\n // Drop the renewal handler + guards: a torn-down session must never trigger a\n // token refresh. A fresh `connect()` re-registers the current session's.\n authErrorHandlerRef.current = null;\n authRenewalInFlightRef.current = false;\n authRenewalStreakRef.current = 0;\n }, []);\n\n /**\n * Refresh authentication token\n */\n const refreshAuth = useCallback((token: string): void => {\n // ALWAYS persist the rotated token first, regardless of connection state.\n // This is the credential the handshake callback presents on the next\n // (re)connection, so even if the socket is currently down the fresh token\n // is what the eventual reconnect will use. Skipping this on a disconnected\n // socket (the old behavior) dropped the token on the floor and left\n // auto-reconnect replaying the stale, now-expired one forever.\n authStateRef.current = { ...authStateRef.current, token };\n if (configRef.current) {\n configRef.current = { ...configRef.current, token };\n }\n\n const socket = socketRef.current;\n\n if (socket?.connected) {\n // Live path: refresh in place without tearing down the connection.\n console.log('WebSocket: Refreshing socket auth with renewed access token');\n socket.emit(CoreWebSocketEvent.AUTH_REFRESH, { token } as WS_AuthRefreshPayload);\n return;\n }\n\n // Disconnected. The fresh token is already stored for the next handshake.\n // If a socket exists but is NOT actively trying to reconnect (its\n // reconnection budget was exhausted, e.g. after repeated auth rejections on\n // the stale token), kick a fresh connect so it actually retries — now with\n // the renewed token. If it IS still reconnecting (`socket.active`), the next\n // scheduled attempt will read the updated token automatically.\n if (socket && !socket.active) {\n console.log('WebSocket: Reviving idle socket to reconnect with renewed access token');\n socket.connect();\n return;\n }\n\n console.log('WebSocket: Stored renewed access token for next socket handshake');\n }, []);\n\n /**\n * Revive a socket that is neither connected nor actively retrying.\n *\n * This is the resilience floor beneath Socket.IO's own reconnection budget.\n * Socket.IO gives up PERMANENTLY once `reconnectionAttempts` is exhausted\n * (`reconnect_failed` → ERROR); after that the socket sits dead forever unless\n * something re-opens it. The browser's connectivity signals (the `online`\n * event, a tab becoming visible again after mobile background suspension) and\n * the watchdog poll all funnel through here to re-arm the manager with\n * `socket.connect()` — the same revival `refreshAuth` already performs for its\n * idle-socket case.\n *\n * No-ops (so it is safe to call liberally) when:\n * - there is no active connection intent (`connectKeyRef` null — logged out or\n * intentionally disconnected), so a torn-down session is never resurrected;\n * - the socket is already connected OR already mid-retry (`socket.active`), so\n * Socket.IO's in-progress reconnection cycle is never interrupted.\n *\n * Deliberately does NOT touch `status`: letting the socket's own lifecycle\n * events drive it keeps the outage state steady (ERROR) across silent revival\n * probes instead of flapping ERROR↔RECONNECTING on every failed attempt.\n */\n const attemptRevival = useCallback((): void => {\n if (!connectKeyRef.current) {\n return;\n }\n const socket = socketRef.current;\n if (!socket) {\n // Intent remains but the socket was fully torn down — do a fresh connect.\n if (configRef.current) {\n connect(configRef.current);\n }\n return;\n }\n if (socket.connected || socket.active) {\n return;\n }\n // Dead socket with a live intent: reset the in-cycle attempt counter so a\n // subsequent failed probe reports as ERROR (not RECONNECTING), then re-open\n // the manager that had given up.\n reconnectAttemptsRef.current = 0;\n console.log('WebSocket: Reviving dead socket after connectivity signal');\n socket.connect();\n }, [connect]);\n\n // Hold the latest `attemptRevival` in a ref so the connectivity-supervisor\n // effect can register its listeners ONCE (empty deps) without re-subscribing on\n // every render as the callback identity changes.\n const attemptRevivalRef = useRef(attemptRevival);\n attemptRevivalRef.current = attemptRevival;\n\n /**\n * Connectivity supervisor — guarantees a client is never permanently dead.\n *\n * Three re-arm triggers, all routed through `attemptRevival` (which no-ops when\n * the socket is healthy, already retrying, or there is no connection intent):\n *\n * 1. **`online` event** — the OS network interface returned (Wi-Fi reconnect,\n * laptop wake, VPN up). Instant revival, no wait.\n * 2. **Page Visibility** — a backgrounded tab became visible again. Mobile\n * browsers freeze timers and drop sockets in the background, so the socket is\n * frequently dead on resume with no `online` event to announce it.\n * 3. **Watchdog poll** — a jittered, self-scheduling timer. `navigator.onLine`\n * only reflects the LOCAL interface, so a backend restart / proxy hiccup that\n * outlives Socket.IO's automatic budget fires NO `online` event; the watchdog\n * is the backstop that still recovers it. Its backoff grows (full jitter,\n * capped) while the socket stays dead and resets on a real connect, so a\n * fleet of clients de-correlates instead of stampeding a recovering backend.\n *\n * Mount-once (empty deps); every callback/state is read through a ref so the\n * listeners are never re-registered and the backoff counter survives renders.\n */\n useEffect(() => {\n const handleOnline = (): void => attemptRevivalRef.current();\n const handleVisibility = (): void => {\n if (document.visibilityState === 'visible') {\n attemptRevivalRef.current();\n }\n };\n\n window.addEventListener('online', handleOnline);\n document.addEventListener('visibilitychange', handleVisibility);\n\n // Watchdog pacing. While healthy we poll lazily (just to notice a silent\n // death); while dead we probe on a growing jittered backoff.\n const WATCHDOG_HEALTHY_POLL_MS = 15000;\n const WATCHDOG_BASE_MS = 2000;\n const WATCHDOG_MAX_MS = 30000;\n const WATCHDOG_MIN_GAP_MS = 500;\n\n let watchdogTimer: ReturnType<typeof setTimeout> | null = null;\n const scheduleWatchdog = (delay: number): void => {\n watchdogTimer = setTimeout(tick, delay);\n };\n function tick(): void {\n const socket = socketRef.current;\n // \"Healthy\" for the watchdog = connected, already retrying, OR no active\n // connection intent (logged out / intentionally disconnected).\n const healthy = !connectKeyRef.current || !!socket?.connected || !!socket?.active;\n if (healthy) {\n // Reset the backoff so the NEXT outage starts probing quickly again.\n revivalAttemptRef.current = 0;\n scheduleWatchdog(WATCHDOG_HEALTHY_POLL_MS);\n return;\n }\n // Dead with a live intent → revive, then back off (jittered) before the\n // next probe so N clients de-correlate on a recovering backend.\n attemptRevivalRef.current();\n const backoff = Math.max(\n WATCHDOG_MIN_GAP_MS,\n fullJitterBackoffMs(revivalAttemptRef.current, WATCHDOG_BASE_MS, WATCHDOG_MAX_MS),\n );\n revivalAttemptRef.current += 1;\n scheduleWatchdog(backoff);\n }\n scheduleWatchdog(WATCHDOG_HEALTHY_POLL_MS);\n\n return () => {\n window.removeEventListener('online', handleOnline);\n document.removeEventListener('visibilitychange', handleVisibility);\n if (watchdogTimer) {\n clearTimeout(watchdogTimer);\n }\n };\n // Mount-only by design; all dependencies are accessed through refs.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n /**\n * Listen to socket events directly\n */\n const on = useCallback(<T = unknown>(event: string, handler: (payload: T) => void): (() => void) => {\n const typedHandler = handler as (...args: unknown[]) => void;\n const handlers = eventListenersRef.current.get(event) ?? new Set<(...args: unknown[]) => void>();\n const hadHandler = handlers.has(typedHandler);\n handlers.add(typedHandler);\n eventListenersRef.current.set(event, handlers);\n\n if (!hadHandler && socketRef.current) {\n socketRef.current.on(event, getSocketListener(event, typedHandler));\n }\n\n return () => {\n eventListenersRef.current.get(event)?.delete(typedHandler);\n if (eventListenersRef.current.get(event)?.size === 0) {\n eventListenersRef.current.delete(event);\n }\n const wrappedHandler = eventListenerWrappersRef.current.get(event)?.get(typedHandler);\n if (wrappedHandler) {\n socketRef.current?.off(event, wrappedHandler);\n eventListenerWrappersRef.current.get(event)?.delete(typedHandler);\n }\n if (eventListenerWrappersRef.current.get(event)?.size === 0) {\n eventListenerWrappersRef.current.delete(event);\n }\n };\n }, [getSocketListener]);\n\n /**\n * Remove event listener\n */\n const off = useCallback((event: string, handler: (...args: unknown[]) => void): void => {\n eventListenersRef.current.get(event)?.delete(handler);\n if (eventListenersRef.current.get(event)?.size === 0) {\n eventListenersRef.current.delete(event);\n }\n const wrappedHandler = eventListenerWrappersRef.current.get(event)?.get(handler);\n if (wrappedHandler) {\n socketRef.current?.off(event, wrappedHandler);\n eventListenerWrappersRef.current.get(event)?.delete(handler);\n }\n if (eventListenerWrappersRef.current.get(event)?.size === 0) {\n eventListenerWrappersRef.current.delete(event);\n }\n }, []);\n\n /**\n * Emit event to server\n */\n const emit = useCallback(<T = unknown>(event: string, payload: T): void => {\n if (!socketRef.current?.connected) {\n console.warn('Cannot emit: not connected');\n return;\n }\n socketRef.current.emit(event, payload);\n }, []);\n\n const requestResourceRoomSubscription = useCallback(async (params: {\n resourceType: string;\n resourceId?: string;\n scopeKey?: string;\n scopeId?: string;\n contextResourceIdentifiers: ContextResourceIdentifiersInput;\n }): Promise<{ success: boolean; editingUsers?: string[] }> => {\n if (!socketRef.current?.connected) {\n console.warn('Cannot subscribe: not connected');\n return { success: false };\n }\n\n return new Promise((resolve) => {\n const roomName = buildRoomName(params);\n let resolved = false;\n\n socketRef.current!.emit(CoreWebSocketEvent.RESOURCE_SUBSCRIBE, {\n resourceType: params.resourceType,\n resourceId: params.resourceId,\n scopeKey: params.scopeKey,\n scopeId: params.scopeId,\n contextResourceIdentifiers: params.contextResourceIdentifiers,\n } as WS_ResourceSubscribePayload);\n\n const handleSubscribed = (response: WS_ResourceSubscribedPayload) => {\n if (response.roomName === roomName && !resolved) {\n resolved = true;\n socketRef.current!.off(CoreWebSocketEvent.RESOURCE_SUBSCRIBED, handleSubscribed);\n resolve({\n success: response.success,\n editingUsers: response.editingUsers,\n });\n }\n };\n\n socketRef.current!.on(CoreWebSocketEvent.RESOURCE_SUBSCRIBED, handleSubscribed);\n\n setTimeout(() => {\n if (!resolved) {\n resolved = true;\n socketRef.current?.off(CoreWebSocketEvent.RESOURCE_SUBSCRIBED, handleSubscribed);\n resolve({ success: false });\n }\n }, 10000);\n });\n }, [buildRoomName]);\n\n /**\n * Subscribe to a resource room\n * Returns success status and current editing users (for single resource subscriptions)\n */\n const claimResourceRoom = useCallback(async (params: {\n ownerKey: string;\n resourceType: string;\n resourceId?: string;\n scopeKey?: string;\n scopeId?: string;\n contextResourceIdentifiers: ContextResourceIdentifiersInput;\n }): Promise<{ success: boolean; editingUsers?: string[] }> => {\n const roomName = buildRoomName(params);\n const contextResourceIdentifiers = normalizeContextResourceIdentifiers(params.contextResourceIdentifiers);\n const existing = roomClaimsRef.current.get(roomName);\n if (existing) {\n const hadOwner = existing.ownerKeys.has(params.ownerKey);\n const previousOwnerContext = existing.ownerContexts.get(params.ownerKey);\n const previousSharedContext = existing.contextResourceIdentifiers;\n\n // Idempotency guard: if this owner already holds the room and the room's\n // wire context is byte-identical to what was last sent, the server already\n // has this exact subscription. Re-emitting `resource:subscribe` would be a\n // server-side no-op and only burns the per-socket subscribe rate-limit\n // budget — this is the mechanism behind the Settings-surface flood, where an\n // upstream effect re-claims every commit with an unchanged context. We\n // compare against the *shared* room context (what was last put on the wire),\n // so a genuine context change by this or any owner still re-emits.\n const contextUnchanged =\n buildNormalizedContextKey(previousSharedContext) === buildNormalizedContextKey(contextResourceIdentifiers);\n\n if (hadOwner && contextUnchanged && socketRef.current?.connected) {\n // Owner already registered + wire context unchanged ⇒ the server already\n // holds this exact subscription. Keep this owner's local context pointer\n // fresh, but skip the redundant `resource:subscribe` emit. The shared\n // context already equals the incoming one (that is what `contextUnchanged`\n // asserts), and the room is already in the subscribed set, so no re-sync\n // is needed.\n existing.ownerContexts.set(params.ownerKey, contextResourceIdentifiers);\n return { success: true, editingUsers: existing.editingUsers };\n }\n\n existing.ownerKeys.add(params.ownerKey);\n existing.ownerContexts.set(params.ownerKey, contextResourceIdentifiers);\n existing.contextResourceIdentifiers = contextResourceIdentifiers;\n\n if (socketRef.current?.connected) {\n const refreshedSubscription = await requestResourceRoomSubscription({\n resourceType: existing.resourceType,\n resourceId: existing.resourceId,\n scopeKey: existing.scopeKey,\n scopeId: existing.scopeId,\n contextResourceIdentifiers,\n });\n if (refreshedSubscription.success) {\n existing.editingUsers = refreshedSubscription.editingUsers;\n syncSubscribedRoomsFromClaims();\n return {\n success: true,\n editingUsers: existing.editingUsers,\n };\n }\n\n if (hadOwner && previousOwnerContext) {\n existing.ownerContexts.set(params.ownerKey, previousOwnerContext);\n } else {\n existing.ownerKeys.delete(params.ownerKey);\n existing.ownerContexts.delete(params.ownerKey);\n }\n existing.contextResourceIdentifiers = previousSharedContext;\n syncSubscribedRoomsFromClaims();\n return refreshedSubscription;\n }\n\n syncSubscribedRoomsFromClaims();\n return { success: true, editingUsers: existing.editingUsers };\n }\n\n if (!socketRef.current?.connected) {\n roomClaimsRef.current.set(roomName, {\n roomName,\n resourceType: params.resourceType,\n resourceId: params.resourceId,\n scopeKey: params.scopeKey,\n scopeId: params.scopeId,\n contextResourceIdentifiers,\n ownerKeys: new Set([params.ownerKey]),\n ownerContexts: new Map([[params.ownerKey, contextResourceIdentifiers]]),\n });\n syncSubscribedRoomsFromClaims();\n return { success: false };\n }\n\n const result = await requestResourceRoomSubscription({\n ...params,\n contextResourceIdentifiers,\n });\n if (!result.success) {\n return result;\n }\n\n roomClaimsRef.current.set(roomName, {\n roomName,\n resourceType: params.resourceType,\n resourceId: params.resourceId,\n scopeKey: params.scopeKey,\n scopeId: params.scopeId,\n contextResourceIdentifiers,\n ownerKeys: new Set([params.ownerKey]),\n ownerContexts: new Map([[params.ownerKey, contextResourceIdentifiers]]),\n editingUsers: result.editingUsers,\n });\n syncSubscribedRoomsFromClaims();\n return result;\n }, [buildRoomName, requestResourceRoomSubscription, syncSubscribedRoomsFromClaims]);\n\n const subscribeToResource = useCallback(async (params: {\n resourceType: string;\n resourceId?: string;\n scopeKey?: string;\n scopeId?: string;\n contextResourceIdentifiers: ContextResourceIdentifiersInput;\n }): Promise<{ success: boolean; editingUsers?: string[] }> => {\n const roomName = buildRoomName(params);\n return claimResourceRoom({\n ...params,\n ownerKey: `legacy:${roomName}`,\n });\n }, [buildRoomName, claimResourceRoom]);\n\n /**\n * Unsubscribe from a resource room\n */\n const releaseResourceRoom = useCallback(async (params: {\n ownerKey: string;\n resourceType: string;\n resourceId?: string;\n scopeKey?: string;\n scopeId?: string;\n contextResourceIdentifiers: ContextResourceIdentifiersInput;\n }): Promise<void> => {\n const roomName = buildRoomName(params);\n const contextResourceIdentifiers = normalizeContextResourceIdentifiers(params.contextResourceIdentifiers);\n const existing = roomClaimsRef.current.get(roomName);\n if (!existing) {\n return;\n }\n\n existing.ownerKeys.delete(params.ownerKey);\n existing.ownerContexts.delete(params.ownerKey);\n if (existing.ownerKeys.size > 0) {\n const survivingContext = existing.ownerContexts.values().next().value;\n if (survivingContext) {\n existing.contextResourceIdentifiers = survivingContext;\n if (socketRef.current?.connected) {\n const refreshedSubscription = await requestResourceRoomSubscription({\n resourceType: existing.resourceType,\n resourceId: existing.resourceId,\n scopeKey: existing.scopeKey,\n scopeId: existing.scopeId,\n contextResourceIdentifiers: survivingContext,\n });\n if (refreshedSubscription.success) {\n existing.editingUsers = refreshedSubscription.editingUsers;\n }\n }\n }\n syncSubscribedRoomsFromClaims();\n return;\n }\n\n roomClaimsRef.current.delete(roomName);\n syncSubscribedRoomsFromClaims();\n\n if (!socketRef.current?.connected) {\n return;\n }\n\n socketRef.current.emit(CoreWebSocketEvent.RESOURCE_UNSUBSCRIBE, {\n resourceType: params.resourceType,\n resourceId: params.resourceId,\n scopeKey: params.scopeKey,\n scopeId: params.scopeId,\n contextResourceIdentifiers,\n } as WS_ResourceSubscribePayload);\n }, [buildRoomName, syncSubscribedRoomsFromClaims]);\n\n const unsubscribeFromResource = useCallback(async (params: {\n resourceType: string;\n resourceId?: string;\n scopeKey?: string;\n scopeId?: string;\n contextResourceIdentifiers: ContextResourceIdentifiersInput;\n }): Promise<void> => {\n const roomName = buildRoomName(params);\n await releaseResourceRoom({\n ...params,\n ownerKey: `legacy:${roomName}`,\n });\n }, [buildRoomName, releaseResourceRoom]);\n\n /**\n * Switch organization context\n */\n const switchOrganization = useCallback((organizationId: string, previousOrganizationId?: string): void => {\n if (!socketRef.current?.connected) {\n console.warn('Cannot switch organization: not connected');\n return;\n }\n\n socketRef.current.emit(CoreWebSocketEvent.ORGANIZATION_SWITCH, {\n organizationId,\n previousOrganizationId,\n } as WS_OrganizationSwitchPayload);\n\n if (!previousOrganizationId) {\n return;\n }\n\n const roomsToRelease = Array.from(roomClaimsRef.current.values())\n .filter((room) => roomMatchesOrganization(room, previousOrganizationId))\n .flatMap((room) => Array.from(room.ownerKeys).map((ownerKey) => ({\n ownerKey,\n resourceType: room.resourceType,\n resourceId: room.resourceId,\n scopeKey: room.scopeKey,\n scopeId: room.scopeId,\n contextResourceIdentifiers: room.ownerContexts.get(ownerKey) ?? room.contextResourceIdentifiers,\n })));\n\n void Promise.all(roomsToRelease.map((room) => releaseResourceRoom(room)));\n }, [releaseResourceRoom]);\n\n /**\n * Start editing a resource (acquire lock)\n */\n const startEditing = useCallback(async (params: {\n resourceType: string;\n resourceId: string;\n contextResourceIdentifiers: ContextResourceIdentifiersInput;\n }): Promise<boolean> => {\n if (!socketRef.current?.connected) {\n console.warn('Cannot start editing: not connected');\n return false;\n }\n\n return new Promise((resolve) => {\n let resolved = false;\n \n socketRef.current!.emit(CoreWebSocketEvent.RESOURCE_EDITING_START, {\n resourceType: params.resourceType,\n resourceId: params.resourceId,\n contextResourceIdentifiers: normalizeContextResourceIdentifiers(params.contextResourceIdentifiers),\n timestamp: new Date(),\n } as WS_ResourceEditingPayload);\n\n const handleResult = (response: WS_ResourceEditingResultPayload) => {\n if (response.resourceType === params.resourceType && response.resourceId === params.resourceId && !resolved) {\n resolved = true;\n socketRef.current!.off(CoreWebSocketEvent.RESOURCE_EDITING_STARTED, handleResult);\n socketRef.current!.off(CoreWebSocketEvent.RESOURCE_EDITING_ERROR, handleResult);\n resolve(response.success);\n }\n };\n\n socketRef.current!.on(CoreWebSocketEvent.RESOURCE_EDITING_STARTED, handleResult);\n socketRef.current!.on(CoreWebSocketEvent.RESOURCE_EDITING_ERROR, handleResult);\n\n // Timeout after 10 seconds\n setTimeout(() => {\n if (!resolved) {\n resolved = true;\n socketRef.current?.off(CoreWebSocketEvent.RESOURCE_EDITING_STARTED, handleResult);\n socketRef.current?.off(CoreWebSocketEvent.RESOURCE_EDITING_ERROR, handleResult);\n resolve(false);\n }\n }, 10000);\n });\n }, []);\n\n /**\n * Stop editing a resource (release lock)\n */\n const stopEditing = useCallback((params: {\n resourceType: string;\n resourceId: string;\n }): void => {\n if (!socketRef.current?.connected) {\n return;\n }\n\n socketRef.current.emit(CoreWebSocketEvent.RESOURCE_EDITING_END, {\n resourceType: params.resourceType,\n resourceId: params.resourceId,\n timestamp: new Date(),\n } as WS_ResourceEditingPayload);\n }, []);\n\n /**\n * Send custom collaboration event\n */\n const sendCustomEvent = useCallback((params: {\n resourceType: string;\n resourceId: string;\n eventName: string;\n data?: unknown;\n contextResourceIdentifiers: ContextResourceIdentifiersInput;\n includeSelf?: boolean;\n }): void => {\n if (!socketRef.current?.connected) {\n console.warn('Cannot send custom event: not connected');\n return;\n }\n\n socketRef.current.emit(CoreWebSocketEvent.RESOURCE_CUSTOM, {\n resourceType: params.resourceType,\n resourceId: params.resourceId,\n eventName: params.eventName,\n data: params.data,\n contextResourceIdentifiers: normalizeContextResourceIdentifiers(params.contextResourceIdentifiers),\n includeSelf: params.includeSelf,\n timestamp: new Date(),\n } as WS_ResourceCustomEventPayload);\n }, []);\n\n /**\n * Get a specific badge count\n */\n const getBadge = useCallback(async (identifier: string, scope: string, scopeId: string): Promise<number> => {\n if (!socketRef.current?.connected) {\n return 0;\n }\n\n return new Promise((resolve) => {\n let resolved = false;\n \n const timeoutId = setTimeout(() => {\n if (!resolved) {\n resolved = true;\n resolve(0);\n }\n }, 5000);\n \n socketRef.current!.emit(CoreWebSocketEvent.BADGE_GET, {\n identifier,\n scope,\n scopeId,\n } as WS_BadgeGetRequest, (response: { count: number }) => {\n if (!resolved) {\n resolved = true;\n clearTimeout(timeoutId);\n resolve(response?.count ?? 0);\n }\n });\n });\n }, []);\n\n /**\n * Get all badges for a scope\n */\n const getAllBadges = useCallback(async (scope: string, scopeId: string): Promise<WS_BadgeGetAllResponse> => {\n if (!socketRef.current?.connected) {\n return [];\n }\n\n return new Promise((resolve) => {\n let resolved = false;\n \n const timeoutId = setTimeout(() => {\n if (!resolved) {\n resolved = true;\n resolve([]);\n }\n }, 5000);\n \n socketRef.current!.emit(CoreWebSocketEvent.BADGE_GET_ALL, {\n scope,\n scopeId,\n } as WS_BadgeGetAllRequest, (response: WS_BadgeGetAllResponse) => {\n if (!resolved) {\n resolved = true;\n clearTimeout(timeoutId);\n resolve(response ?? []);\n }\n });\n });\n }, []);\n\n /**\n * Get connection information\n */\n const getConnectionInfo = useCallback(() => ({\n status,\n url: configRef.current?.url || null,\n connectedAt: connectedAtRef.current\n }), [status]);\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n disconnect();\n };\n }, [disconnect]);\n\n const value: WebSocketContextType = useMemo(() => ({\n // State\n status,\n connectionCount,\n isConnected: status === WebSocketStatus.CONNECTED,\n error,\n subscribedRooms,\n\n // Connection Actions\n connect,\n disconnect,\n refreshAuth,\n switchOrganization,\n\n // Event Subscription\n on,\n off,\n emit,\n\n // Resource Room Actions\n subscribeToResource,\n claimResourceRoom,\n unsubscribeFromResource,\n releaseResourceRoom,\n\n // Editing State Actions\n startEditing,\n stopEditing,\n\n // Custom Collaboration Events\n sendCustomEvent,\n\n // Badge Actions\n getBadge,\n getAllBadges,\n\n // Helpers\n getConnectionInfo\n }), [\n status,\n connectionCount,\n error,\n subscribedRooms,\n connect,\n disconnect,\n refreshAuth,\n switchOrganization,\n on,\n off,\n emit,\n subscribeToResource,\n claimResourceRoom,\n unsubscribeFromResource,\n releaseResourceRoom,\n startEditing,\n stopEditing,\n sendCustomEvent,\n getBadge,\n getAllBadges,\n getConnectionInfo,\n ]);\n\n return <WebSocketContext.Provider value={value}>{children}</WebSocketContext.Provider>;\n};\n\n// useWebSocket hook is now in separate file: ./useWebSocket.ts\n// This separation is required for React Fast Refresh compatibility\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebSocketEventBridge.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"WebSocketEventBridge.d.ts","sourceRoot":"","sources":["../../../../../src/core/requests/websockets/WebSocketEventBridge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6B,MAAM,OAAO,CAAC;AAiDlD;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAokBxC,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
|