@wildo-ai/saas-frontend-lib 1.1.5 → 1.1.7

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.
Files changed (2312) hide show
  1. package/dist/esm/browser-bootstrap/theme-bootstrap.d.ts.map +1 -1
  2. package/dist/esm/browser-bootstrap/theme-bootstrap.js.map +1 -1
  3. package/dist/esm/browser-bootstrap.exports.d.ts.map +1 -1
  4. package/dist/esm/browser-bootstrap.exports.js.map +1 -1
  5. package/dist/esm/companion-exports.d.ts.map +1 -1
  6. package/dist/esm/companion-exports.js.map +1 -1
  7. package/dist/esm/companion-runtime-exports.d.ts.map +1 -1
  8. package/dist/esm/companion-runtime-exports.js.map +1 -1
  9. package/dist/esm/components/actions/action-bar.d.ts +15 -0
  10. package/dist/esm/components/actions/action-bar.d.ts.map +1 -1
  11. package/dist/esm/components/actions/action-bar.js +15 -0
  12. package/dist/esm/components/actions/action-bar.js.map +1 -1
  13. package/dist/esm/components/actions/action-button.d.ts.map +1 -1
  14. package/dist/esm/components/actions/action-button.js.map +1 -1
  15. package/dist/esm/components/actions/button-group.d.ts.map +1 -1
  16. package/dist/esm/components/actions/button-group.js.map +1 -1
  17. package/dist/esm/components/actions/button.d.ts.map +1 -1
  18. package/dist/esm/components/actions/button.js.map +1 -1
  19. package/dist/esm/components/ai-elements/artifacts/artifact-browser.types.d.ts.map +1 -1
  20. package/dist/esm/components/ai-elements/artifacts/artifact-browser.types.js.map +1 -1
  21. package/dist/esm/components/ai-elements/artifacts/artifact-list.d.ts.map +1 -1
  22. package/dist/esm/components/ai-elements/artifacts/artifact-list.js.map +1 -1
  23. package/dist/esm/components/ai-elements/artifacts/artifact.d.ts.map +1 -1
  24. package/dist/esm/components/ai-elements/artifacts/artifact.js.map +1 -1
  25. package/dist/esm/components/ai-elements/artifacts/code-block.d.ts.map +1 -1
  26. package/dist/esm/components/ai-elements/artifacts/code-block.js.map +1 -1
  27. package/dist/esm/components/ai-elements/artifacts/diff-block.d.ts.map +1 -1
  28. package/dist/esm/components/ai-elements/artifacts/diff-block.js.map +1 -1
  29. package/dist/esm/components/ai-elements/artifacts/image.d.ts.map +1 -1
  30. package/dist/esm/components/ai-elements/artifacts/image.js.map +1 -1
  31. package/dist/esm/components/ai-elements/artifacts/unified-diff.utils.d.ts.map +1 -1
  32. package/dist/esm/components/ai-elements/artifacts/unified-diff.utils.js.map +1 -1
  33. package/dist/esm/components/ai-elements/artifacts/web-preview.d.ts.map +1 -1
  34. package/dist/esm/components/ai-elements/artifacts/web-preview.js.map +1 -1
  35. package/dist/esm/components/ai-elements/chat/conversation.d.ts.map +1 -1
  36. package/dist/esm/components/ai-elements/chat/conversation.js.map +1 -1
  37. package/dist/esm/components/ai-elements/chat/message.d.ts.map +1 -1
  38. package/dist/esm/components/ai-elements/chat/message.js.map +1 -1
  39. package/dist/esm/components/ai-elements/chat/prompt-input.d.ts.map +1 -1
  40. package/dist/esm/components/ai-elements/chat/prompt-input.js.map +1 -1
  41. package/dist/esm/components/ai-elements/chat/sources.d.ts.map +1 -1
  42. package/dist/esm/components/ai-elements/chat/sources.js.map +1 -1
  43. package/dist/esm/components/ai-elements/chat/suggestion.d.ts.map +1 -1
  44. package/dist/esm/components/ai-elements/chat/suggestion.js.map +1 -1
  45. package/dist/esm/components/ai-elements/decision/approval.d.ts +97 -7
  46. package/dist/esm/components/ai-elements/decision/approval.d.ts.map +1 -1
  47. package/dist/esm/components/ai-elements/decision/approval.js.map +1 -1
  48. package/dist/esm/components/ai-elements/execution/confirmation.d.ts.map +1 -1
  49. package/dist/esm/components/ai-elements/execution/confirmation.js.map +1 -1
  50. package/dist/esm/components/ai-elements/execution/queue.d.ts.map +1 -1
  51. package/dist/esm/components/ai-elements/execution/queue.js.map +1 -1
  52. package/dist/esm/components/ai-elements/execution/task.d.ts.map +1 -1
  53. package/dist/esm/components/ai-elements/execution/task.js.map +1 -1
  54. package/dist/esm/components/ai-elements/execution/tool.d.ts.map +1 -1
  55. package/dist/esm/components/ai-elements/execution/tool.js.map +1 -1
  56. package/dist/esm/components/ai-elements/graph/canvas.d.ts.map +1 -1
  57. package/dist/esm/components/ai-elements/graph/canvas.js.map +1 -1
  58. package/dist/esm/components/ai-elements/graph/connection.d.ts.map +1 -1
  59. package/dist/esm/components/ai-elements/graph/connection.js.map +1 -1
  60. package/dist/esm/components/ai-elements/graph/controls.d.ts.map +1 -1
  61. package/dist/esm/components/ai-elements/graph/controls.js.map +1 -1
  62. package/dist/esm/components/ai-elements/graph/edge.d.ts.map +1 -1
  63. package/dist/esm/components/ai-elements/graph/edge.js.map +1 -1
  64. package/dist/esm/components/ai-elements/graph/node.d.ts.map +1 -1
  65. package/dist/esm/components/ai-elements/graph/node.js.map +1 -1
  66. package/dist/esm/components/ai-elements/graph/panel.d.ts.map +1 -1
  67. package/dist/esm/components/ai-elements/graph/panel.js.map +1 -1
  68. package/dist/esm/components/ai-elements/graph/toolbar.d.ts.map +1 -1
  69. package/dist/esm/components/ai-elements/graph/toolbar.js.map +1 -1
  70. package/dist/esm/components/ai-elements/meta/agent-wrappers.d.ts.map +1 -1
  71. package/dist/esm/components/ai-elements/meta/agent-wrappers.js.map +1 -1
  72. package/dist/esm/components/ai-elements/meta/context.d.ts.map +1 -1
  73. package/dist/esm/components/ai-elements/meta/context.js.map +1 -1
  74. package/dist/esm/components/ai-elements/meta/model-selector.d.ts.map +1 -1
  75. package/dist/esm/components/ai-elements/meta/model-selector.js.map +1 -1
  76. package/dist/esm/components/ai-elements/meta/open-in-chat.d.ts.map +1 -1
  77. package/dist/esm/components/ai-elements/meta/open-in-chat.js.map +1 -1
  78. package/dist/esm/components/ai-elements/shared/loader.d.ts.map +1 -1
  79. package/dist/esm/components/ai-elements/shared/loader.js.map +1 -1
  80. package/dist/esm/components/ai-elements/shared/shimmer.d.ts.map +1 -1
  81. package/dist/esm/components/ai-elements/shared/shimmer.js.map +1 -1
  82. package/dist/esm/components/ai-elements/stream/execution-stream.d.ts.map +1 -1
  83. package/dist/esm/components/ai-elements/stream/execution-stream.js.map +1 -1
  84. package/dist/esm/components/ai-elements/trace/chain-of-thought.d.ts.map +1 -1
  85. package/dist/esm/components/ai-elements/trace/chain-of-thought.js.map +1 -1
  86. package/dist/esm/components/ai-elements/trace/checkpoint.d.ts.map +1 -1
  87. package/dist/esm/components/ai-elements/trace/checkpoint.js.map +1 -1
  88. package/dist/esm/components/ai-elements/trace/inline-citation.d.ts.map +1 -1
  89. package/dist/esm/components/ai-elements/trace/inline-citation.js.map +1 -1
  90. package/dist/esm/components/ai-elements/trace/plan.d.ts.map +1 -1
  91. package/dist/esm/components/ai-elements/trace/plan.js.map +1 -1
  92. package/dist/esm/components/ai-elements/trace/reasoning.d.ts.map +1 -1
  93. package/dist/esm/components/ai-elements/trace/reasoning.js.map +1 -1
  94. package/dist/esm/components/app/AppLayout_AuthenticatedRoute.d.ts.map +1 -1
  95. package/dist/esm/components/app/AppLayout_AuthenticatedRoute.js +8 -3
  96. package/dist/esm/components/app/AppLayout_AuthenticatedRoute.js.map +1 -1
  97. package/dist/esm/components/app/AppLayout_ConsentGate.d.ts.map +1 -1
  98. package/dist/esm/components/app/AppLayout_ConsentGate.js.map +1 -1
  99. package/dist/esm/components/app/AppLayout_ConsentGate.labels.d.ts.map +1 -1
  100. package/dist/esm/components/app/AppLayout_ConsentGate.labels.js.map +1 -1
  101. package/dist/esm/components/app/AppLayout_DocumentAcceptanceGate.d.ts.map +1 -1
  102. package/dist/esm/components/app/AppLayout_DocumentAcceptanceGate.js.map +1 -1
  103. package/dist/esm/components/app/AppLayout_DocumentAcceptanceGate.labels.d.ts.map +1 -1
  104. package/dist/esm/components/app/AppLayout_DocumentAcceptanceGate.labels.js.map +1 -1
  105. package/dist/esm/components/app/AppLayout_ErrorBoundary.d.ts.map +1 -1
  106. package/dist/esm/components/app/AppLayout_ErrorBoundary.js.map +1 -1
  107. package/dist/esm/components/app/AppLayout_ErrorBoundary.labels.d.ts.map +1 -1
  108. package/dist/esm/components/app/AppLayout_ErrorBoundary.labels.js.map +1 -1
  109. package/dist/esm/components/app/AppLayout_Home.d.ts.map +1 -1
  110. package/dist/esm/components/app/AppLayout_Home.js.map +1 -1
  111. package/dist/esm/components/app/AppLayout_Home.labels.d.ts.map +1 -1
  112. package/dist/esm/components/app/AppLayout_Home.labels.js.map +1 -1
  113. package/dist/esm/components/app/AppLayout_MainContainer.d.ts.map +1 -1
  114. package/dist/esm/components/app/AppLayout_MainContainer.js.map +1 -1
  115. package/dist/esm/components/app/AppLayout_NotificationCenter.d.ts.map +1 -1
  116. package/dist/esm/components/app/AppLayout_NotificationCenter.js.map +1 -1
  117. package/dist/esm/components/app/AppLayout_RouterErrorBoundary.d.ts.map +1 -1
  118. package/dist/esm/components/app/AppLayout_RouterErrorBoundary.js.map +1 -1
  119. package/dist/esm/components/app/AppLayout_RouterErrorBoundary.labels.d.ts.map +1 -1
  120. package/dist/esm/components/app/AppLayout_RouterErrorBoundary.labels.js.map +1 -1
  121. package/dist/esm/components/app/AppPage_Home.d.ts.map +1 -1
  122. package/dist/esm/components/app/AppPage_Home.js.map +1 -1
  123. package/dist/esm/components/app/PublicLayout_MainContainer.d.ts.map +1 -1
  124. package/dist/esm/components/app/PublicLayout_MainContainer.js.map +1 -1
  125. package/dist/esm/components/app/PublicLayout_StaticContentContainer.d.ts.map +1 -1
  126. package/dist/esm/components/app/PublicLayout_StaticContentContainer.js.map +1 -1
  127. package/dist/esm/components/app/PublicLayout_StaticContentContainer.labels.d.ts.map +1 -1
  128. package/dist/esm/components/app/PublicLayout_StaticContentContainer.labels.js.map +1 -1
  129. package/dist/esm/components/app/PublicLayout_Terms.d.ts.map +1 -1
  130. package/dist/esm/components/app/PublicLayout_Terms.js.map +1 -1
  131. package/dist/esm/components/app/PublicLayout_Terms.labels.d.ts.map +1 -1
  132. package/dist/esm/components/app/PublicLayout_Terms.labels.js.map +1 -1
  133. package/dist/esm/components/auth/Auth_AuthCallback.d.ts.map +1 -1
  134. package/dist/esm/components/auth/Auth_AuthCallback.js.map +1 -1
  135. package/dist/esm/components/auth/Auth_AuthCallback.labels.d.ts.map +1 -1
  136. package/dist/esm/components/auth/Auth_AuthCallback.labels.js.map +1 -1
  137. package/dist/esm/components/auth/Auth_ConfirmEmail.d.ts.map +1 -1
  138. package/dist/esm/components/auth/Auth_ConfirmEmail.js.map +1 -1
  139. package/dist/esm/components/auth/Auth_ConfirmEmail.labels.d.ts.map +1 -1
  140. package/dist/esm/components/auth/Auth_ConfirmEmail.labels.js.map +1 -1
  141. package/dist/esm/components/auth/Auth_EnrollmentRequired.d.ts.map +1 -1
  142. package/dist/esm/components/auth/Auth_EnrollmentRequired.js +5 -1
  143. package/dist/esm/components/auth/Auth_EnrollmentRequired.js.map +1 -1
  144. package/dist/esm/components/auth/Auth_EnrollmentRequired.labels.d.ts.map +1 -1
  145. package/dist/esm/components/auth/Auth_EnrollmentRequired.labels.js.map +1 -1
  146. package/dist/esm/components/auth/Auth_Invitation.d.ts.map +1 -1
  147. package/dist/esm/components/auth/Auth_Invitation.js.map +1 -1
  148. package/dist/esm/components/auth/Auth_Invitation.labels.d.ts.map +1 -1
  149. package/dist/esm/components/auth/Auth_Invitation.labels.js.map +1 -1
  150. package/dist/esm/components/auth/Auth_MagicLinkVerify.d.ts.map +1 -1
  151. package/dist/esm/components/auth/Auth_MagicLinkVerify.js.map +1 -1
  152. package/dist/esm/components/auth/Auth_MagicLinkVerify.labels.d.ts.map +1 -1
  153. package/dist/esm/components/auth/Auth_MagicLinkVerify.labels.js.map +1 -1
  154. package/dist/esm/components/auth/Auth_Main.d.ts.map +1 -1
  155. package/dist/esm/components/auth/Auth_Main.js +1 -4
  156. package/dist/esm/components/auth/Auth_Main.js.map +1 -1
  157. package/dist/esm/components/auth/Auth_Main.labels.d.ts.map +1 -1
  158. package/dist/esm/components/auth/Auth_Main.labels.js.map +1 -1
  159. package/dist/esm/components/auth/Auth_MfaChallenge.d.ts.map +1 -1
  160. package/dist/esm/components/auth/Auth_MfaChallenge.js.map +1 -1
  161. package/dist/esm/components/auth/Auth_MfaChallenge.labels.d.ts.map +1 -1
  162. package/dist/esm/components/auth/Auth_MfaChallenge.labels.js.map +1 -1
  163. package/dist/esm/components/auth/Auth_OAuthConsent.d.ts.map +1 -1
  164. package/dist/esm/components/auth/Auth_OAuthConsent.js.map +1 -1
  165. package/dist/esm/components/auth/Auth_OAuthConsent.labels.d.ts.map +1 -1
  166. package/dist/esm/components/auth/Auth_OAuthConsent.labels.js.map +1 -1
  167. package/dist/esm/components/auth/Auth_OAuthLoggedOut.d.ts.map +1 -1
  168. package/dist/esm/components/auth/Auth_OAuthLoggedOut.js.map +1 -1
  169. package/dist/esm/components/auth/Auth_OAuthLoggedOut.labels.d.ts.map +1 -1
  170. package/dist/esm/components/auth/Auth_OAuthLoggedOut.labels.js.map +1 -1
  171. package/dist/esm/components/auth/Auth_OAuthLogoutConfirm.d.ts.map +1 -1
  172. package/dist/esm/components/auth/Auth_OAuthLogoutConfirm.js.map +1 -1
  173. package/dist/esm/components/auth/Auth_OAuthLogoutConfirm.labels.d.ts.map +1 -1
  174. package/dist/esm/components/auth/Auth_OAuthLogoutConfirm.labels.js.map +1 -1
  175. package/dist/esm/components/auth/Auth_OneOffSession.d.ts.map +1 -1
  176. package/dist/esm/components/auth/Auth_OneOffSession.js.map +1 -1
  177. package/dist/esm/components/auth/Auth_OneOffSession.labels.d.ts.map +1 -1
  178. package/dist/esm/components/auth/Auth_OneOffSession.labels.js.map +1 -1
  179. package/dist/esm/components/auth/Auth_OrganizationOnboarding.d.ts.map +1 -1
  180. package/dist/esm/components/auth/Auth_OrganizationOnboarding.js.map +1 -1
  181. package/dist/esm/components/auth/Auth_OrganizationOnboarding.labels.d.ts.map +1 -1
  182. package/dist/esm/components/auth/Auth_OrganizationOnboarding.labels.js.map +1 -1
  183. package/dist/esm/components/auth/Auth_PasswordLost.d.ts.map +1 -1
  184. package/dist/esm/components/auth/Auth_PasswordLost.js.map +1 -1
  185. package/dist/esm/components/auth/Auth_PasswordLost.labels.d.ts.map +1 -1
  186. package/dist/esm/components/auth/Auth_PasswordLost.labels.js.map +1 -1
  187. package/dist/esm/components/auth/Auth_Register.d.ts.map +1 -1
  188. package/dist/esm/components/auth/Auth_Register.js +1 -3
  189. package/dist/esm/components/auth/Auth_Register.js.map +1 -1
  190. package/dist/esm/components/auth/Auth_Register.labels.d.ts.map +1 -1
  191. package/dist/esm/components/auth/Auth_Register.labels.js.map +1 -1
  192. package/dist/esm/components/auth/StepUpAuthDialog.d.ts +7 -0
  193. package/dist/esm/components/auth/StepUpAuthDialog.d.ts.map +1 -1
  194. package/dist/esm/components/auth/StepUpAuthDialog.js +13 -7
  195. package/dist/esm/components/auth/StepUpAuthDialog.js.map +1 -1
  196. package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.d.ts.map +1 -1
  197. package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.js +32 -33
  198. package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.js.map +1 -1
  199. package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.labels.d.ts.map +1 -1
  200. package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.labels.js +18 -20
  201. package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.labels.js.map +1 -1
  202. package/dist/esm/components/auth/admin-config/ResourceLayoutPreset_Create_SamlWizard.d.ts.map +1 -1
  203. package/dist/esm/components/auth/admin-config/ResourceLayoutPreset_Create_SamlWizard.js.map +1 -1
  204. package/dist/esm/components/auth/admin-config/ResourceLayoutPreset_Read_SsoSaml.d.ts.map +1 -1
  205. package/dist/esm/components/auth/admin-config/ResourceLayoutPreset_Read_SsoSaml.js.map +1 -1
  206. package/dist/esm/components/auth/admin-config/SsoConnectionSamlReadSection.d.ts.map +1 -1
  207. package/dist/esm/components/auth/admin-config/SsoConnectionSamlReadSection.js.map +1 -1
  208. package/dist/esm/components/auth/enrollment/PasskeyEnrollmentMethod.d.ts.map +1 -1
  209. package/dist/esm/components/auth/enrollment/PasskeyEnrollmentMethod.js.map +1 -1
  210. package/dist/esm/components/auth/enrollment/PhoneEnrollmentMethod.d.ts.map +1 -1
  211. package/dist/esm/components/auth/enrollment/PhoneEnrollmentMethod.js.map +1 -1
  212. package/dist/esm/components/auth/enrollment/TotpEnrollmentMethod.d.ts.map +1 -1
  213. package/dist/esm/components/auth/enrollment/TotpEnrollmentMethod.js.map +1 -1
  214. package/dist/esm/components/auth/enrollment/enrollment-method-components.d.ts.map +1 -1
  215. package/dist/esm/components/auth/enrollment/enrollment-method-components.js.map +1 -1
  216. package/dist/esm/components/auth/methods/EmailOtpAuthMethod.d.ts.map +1 -1
  217. package/dist/esm/components/auth/methods/EmailOtpAuthMethod.js.map +1 -1
  218. package/dist/esm/components/auth/methods/ExternalOAuth2AuthMethod.d.ts.map +1 -1
  219. package/dist/esm/components/auth/methods/ExternalOAuth2AuthMethod.js +2 -3
  220. package/dist/esm/components/auth/methods/ExternalOAuth2AuthMethod.js.map +1 -1
  221. package/dist/esm/components/auth/methods/MagicLinkAuthMethod.d.ts.map +1 -1
  222. package/dist/esm/components/auth/methods/MagicLinkAuthMethod.js.map +1 -1
  223. package/dist/esm/components/auth/methods/OrgOidcAuthMethod.d.ts.map +1 -1
  224. package/dist/esm/components/auth/methods/OrgOidcAuthMethod.js.map +1 -1
  225. package/dist/esm/components/auth/methods/OrgSamlAuthMethod.d.ts.map +1 -1
  226. package/dist/esm/components/auth/methods/OrgSamlAuthMethod.js.map +1 -1
  227. package/dist/esm/components/auth/methods/PasskeyAuthMethod.d.ts.map +1 -1
  228. package/dist/esm/components/auth/methods/PasskeyAuthMethod.js.map +1 -1
  229. package/dist/esm/components/auth/methods/PasswordAuthMethod.d.ts.map +1 -1
  230. package/dist/esm/components/auth/methods/PasswordAuthMethod.js.map +1 -1
  231. package/dist/esm/components/auth/methods/SmsOtpAuthMethod.d.ts.map +1 -1
  232. package/dist/esm/components/auth/methods/SmsOtpAuthMethod.js.map +1 -1
  233. package/dist/esm/components/auth/methods/TotpAuthMethod.d.ts.map +1 -1
  234. package/dist/esm/components/auth/methods/TotpAuthMethod.js.map +1 -1
  235. package/dist/esm/components/auth/methods/auth-method-components.d.ts.map +1 -1
  236. package/dist/esm/components/auth/methods/auth-method-components.js.map +1 -1
  237. package/dist/esm/components/auth/methods/auth-method-presentation.d.ts.map +1 -1
  238. package/dist/esm/components/auth/methods/auth-method-presentation.js.map +1 -1
  239. package/dist/esm/components/auth/pages/AuthPage_AuthCallback.d.ts.map +1 -1
  240. package/dist/esm/components/auth/pages/AuthPage_AuthCallback.js.map +1 -1
  241. package/dist/esm/components/auth/pages/AuthPage_AuthExchange.d.ts.map +1 -1
  242. package/dist/esm/components/auth/pages/AuthPage_AuthExchange.js.map +1 -1
  243. package/dist/esm/components/auth/pages/AuthPage_ConfirmEmail.d.ts.map +1 -1
  244. package/dist/esm/components/auth/pages/AuthPage_ConfirmEmail.js.map +1 -1
  245. package/dist/esm/components/auth/pages/AuthPage_EnrollmentRequired.d.ts.map +1 -1
  246. package/dist/esm/components/auth/pages/AuthPage_EnrollmentRequired.js.map +1 -1
  247. package/dist/esm/components/auth/pages/AuthPage_Invitation.d.ts.map +1 -1
  248. package/dist/esm/components/auth/pages/AuthPage_Invitation.js.map +1 -1
  249. package/dist/esm/components/auth/pages/AuthPage_MagicLinkVerify.d.ts.map +1 -1
  250. package/dist/esm/components/auth/pages/AuthPage_MagicLinkVerify.js.map +1 -1
  251. package/dist/esm/components/auth/pages/AuthPage_Main.d.ts.map +1 -1
  252. package/dist/esm/components/auth/pages/AuthPage_Main.js.map +1 -1
  253. package/dist/esm/components/auth/pages/AuthPage_MfaChallenge.d.ts.map +1 -1
  254. package/dist/esm/components/auth/pages/AuthPage_MfaChallenge.js.map +1 -1
  255. package/dist/esm/components/auth/pages/AuthPage_OAuthConsent.d.ts.map +1 -1
  256. package/dist/esm/components/auth/pages/AuthPage_OAuthConsent.js.map +1 -1
  257. package/dist/esm/components/auth/pages/AuthPage_OAuthLoggedOut.d.ts.map +1 -1
  258. package/dist/esm/components/auth/pages/AuthPage_OAuthLoggedOut.js.map +1 -1
  259. package/dist/esm/components/auth/pages/AuthPage_OAuthLogoutConfirm.d.ts.map +1 -1
  260. package/dist/esm/components/auth/pages/AuthPage_OAuthLogoutConfirm.js.map +1 -1
  261. package/dist/esm/components/auth/pages/AuthPage_OneOffSession.d.ts.map +1 -1
  262. package/dist/esm/components/auth/pages/AuthPage_OneOffSession.js.map +1 -1
  263. package/dist/esm/components/auth/pages/AuthPage_OrganizationOnboarding.d.ts.map +1 -1
  264. package/dist/esm/components/auth/pages/AuthPage_OrganizationOnboarding.js.map +1 -1
  265. package/dist/esm/components/auth/pages/AuthPage_PasswordLost.d.ts.map +1 -1
  266. package/dist/esm/components/auth/pages/AuthPage_PasswordLost.js.map +1 -1
  267. package/dist/esm/components/auth/pages/AuthPage_ReAuthenticationCallback.d.ts.map +1 -1
  268. package/dist/esm/components/auth/pages/AuthPage_ReAuthenticationCallback.js.map +1 -1
  269. package/dist/esm/components/auth/pages/AuthPage_Register.d.ts.map +1 -1
  270. package/dist/esm/components/auth/pages/AuthPage_Register.js.map +1 -1
  271. package/dist/esm/components/auth/utils/AuthMethodChoiceList.d.ts.map +1 -1
  272. package/dist/esm/components/auth/utils/AuthMethodChoiceList.js.map +1 -1
  273. package/dist/esm/components/auth/utils/AuthMethodIcon.d.ts.map +1 -1
  274. package/dist/esm/components/auth/utils/AuthMethodIcon.js.map +1 -1
  275. package/dist/esm/components/auth/utils/AuthSecondaryLink.d.ts.map +1 -1
  276. package/dist/esm/components/auth/utils/AuthSecondaryLink.js.map +1 -1
  277. package/dist/esm/components/auth/utils/AuthSingleFieldFormLayout.d.ts.map +1 -1
  278. package/dist/esm/components/auth/utils/AuthSingleFieldFormLayout.js.map +1 -1
  279. package/dist/esm/components/auth/utils/CredentialUsernameAutofillField.d.ts.map +1 -1
  280. package/dist/esm/components/auth/utils/CredentialUsernameAutofillField.js.map +1 -1
  281. package/dist/esm/components/auth/utils/LabeledDivider.d.ts.map +1 -1
  282. package/dist/esm/components/auth/utils/LabeledDivider.js.map +1 -1
  283. package/dist/esm/components/auth/utils/OAuthProvidersSection.d.ts.map +1 -1
  284. package/dist/esm/components/auth/utils/OAuthProvidersSection.js.map +1 -1
  285. package/dist/esm/components/auth/utils/PasswordStrengthIndicator.d.ts.map +1 -1
  286. package/dist/esm/components/auth/utils/PasswordStrengthIndicator.js.map +1 -1
  287. package/dist/esm/components/auth/utils/oauth-provider-display-label.frontend.utils.d.ts +13 -16
  288. package/dist/esm/components/auth/utils/oauth-provider-display-label.frontend.utils.d.ts.map +1 -1
  289. package/dist/esm/components/auth/utils/oauth-provider-display-label.frontend.utils.js +18 -15
  290. package/dist/esm/components/auth/utils/oauth-provider-display-label.frontend.utils.js.map +1 -1
  291. package/dist/esm/components/auth/utils/resolvePasswordViolationsToLabels.d.ts.map +1 -1
  292. package/dist/esm/components/auth/utils/resolvePasswordViolationsToLabels.js.map +1 -1
  293. package/dist/esm/components/auth/utils/useMfaContinuationNavigation.d.ts.map +1 -1
  294. package/dist/esm/components/auth/utils/useMfaContinuationNavigation.js.map +1 -1
  295. package/dist/esm/components/billing/billing-invoice-history.d.ts.map +1 -1
  296. package/dist/esm/components/billing/billing-invoice-history.js +2 -2
  297. package/dist/esm/components/billing/billing-invoice-history.js.map +1 -1
  298. package/dist/esm/components/billing/billing-plan-change-preview.d.ts.map +1 -1
  299. package/dist/esm/components/billing/billing-plan-change-preview.js.map +1 -1
  300. package/dist/esm/components/billing/billing-portal-link.d.ts.map +1 -1
  301. package/dist/esm/components/billing/billing-portal-link.js +2 -2
  302. package/dist/esm/components/billing/billing-portal-link.js.map +1 -1
  303. package/dist/esm/components/billing/billing-pricing-table.d.ts +33 -1
  304. package/dist/esm/components/billing/billing-pricing-table.d.ts.map +1 -1
  305. package/dist/esm/components/billing/billing-pricing-table.js +34 -5
  306. package/dist/esm/components/billing/billing-pricing-table.js.map +1 -1
  307. package/dist/esm/components/billing/billing-subscription-status.d.ts.map +1 -1
  308. package/dist/esm/components/billing/billing-subscription-status.js +2 -2
  309. package/dist/esm/components/billing/billing-subscription-status.js.map +1 -1
  310. package/dist/esm/components/billing/billing-usage-dashboard.d.ts +2 -0
  311. package/dist/esm/components/billing/billing-usage-dashboard.d.ts.map +1 -1
  312. package/dist/esm/components/billing/billing-usage-dashboard.js +1 -0
  313. package/dist/esm/components/billing/billing-usage-dashboard.js.map +1 -1
  314. package/dist/esm/components/compliance/GovernedDocumentAcceptanceControl.d.ts.map +1 -1
  315. package/dist/esm/components/compliance/GovernedDocumentAcceptanceControl.js.map +1 -1
  316. package/dist/esm/components/data-display/AutomaticDisplayer.d.ts.map +1 -1
  317. package/dist/esm/components/data-display/AutomaticDisplayer.js.map +1 -1
  318. package/dist/esm/components/data-display/DisplayContextKindContext.d.ts.map +1 -1
  319. package/dist/esm/components/data-display/DisplayContextKindContext.js.map +1 -1
  320. package/dist/esm/components/data-display/DisplayField.d.ts.map +1 -1
  321. package/dist/esm/components/data-display/DisplayField.js +15 -1
  322. package/dist/esm/components/data-display/DisplayField.js.map +1 -1
  323. package/dist/esm/components/data-display/DisplayFieldArray.d.ts.map +1 -1
  324. package/dist/esm/components/data-display/DisplayFieldArray.js +11 -0
  325. package/dist/esm/components/data-display/DisplayFieldArray.js.map +1 -1
  326. package/dist/esm/components/data-display/DisplayFieldEditable.d.ts.map +1 -1
  327. package/dist/esm/components/data-display/DisplayFieldEditable.js +2 -2
  328. package/dist/esm/components/data-display/DisplayFieldEditable.js.map +1 -1
  329. package/dist/esm/components/data-display/DisplayFieldEditableArray.d.ts +12 -2
  330. package/dist/esm/components/data-display/DisplayFieldEditableArray.d.ts.map +1 -1
  331. package/dist/esm/components/data-display/DisplayFieldEditableArray.js +3 -2
  332. package/dist/esm/components/data-display/DisplayFieldEditableArray.js.map +1 -1
  333. package/dist/esm/components/data-display/DisplayFieldReadOnly.d.ts.map +1 -1
  334. package/dist/esm/components/data-display/DisplayFieldReadOnly.js +2 -2
  335. package/dist/esm/components/data-display/DisplayFieldReadOnly.js.map +1 -1
  336. package/dist/esm/components/data-display/DisplayFieldReadOnlyArraySection.d.ts.map +1 -1
  337. package/dist/esm/components/data-display/DisplayFieldReadOnlyArraySection.js +8 -2
  338. package/dist/esm/components/data-display/DisplayFieldReadOnlyArraySection.js.map +1 -1
  339. package/dist/esm/components/data-display/DisplayTemplateContext.d.ts.map +1 -1
  340. package/dist/esm/components/data-display/DisplayTemplateContext.js.map +1 -1
  341. package/dist/esm/components/data-display/DisplayValueDispatcher.d.ts.map +1 -1
  342. package/dist/esm/components/data-display/DisplayValueDispatcher.js +18 -4
  343. package/dist/esm/components/data-display/DisplayValueDispatcher.js.map +1 -1
  344. package/dist/esm/components/data-display/ResourceAutomaticDisplayer.d.ts.map +1 -1
  345. package/dist/esm/components/data-display/ResourceAutomaticDisplayer.js +61 -3
  346. package/dist/esm/components/data-display/ResourceAutomaticDisplayer.js.map +1 -1
  347. package/dist/esm/components/data-display/ResourceSummaryDisplayer.d.ts +7 -5
  348. package/dist/esm/components/data-display/ResourceSummaryDisplayer.d.ts.map +1 -1
  349. package/dist/esm/components/data-display/ResourceSummaryDisplayer.js.map +1 -1
  350. package/dist/esm/components/data-display/SummaryContext.d.ts.map +1 -1
  351. package/dist/esm/components/data-display/SummaryContext.js.map +1 -1
  352. package/dist/esm/components/data-display/automatic-displayer.utils.d.ts.map +1 -1
  353. package/dist/esm/components/data-display/automatic-displayer.utils.js.map +1 -1
  354. package/dist/esm/components/data-display/avatar.d.ts.map +1 -1
  355. package/dist/esm/components/data-display/avatar.js.map +1 -1
  356. package/dist/esm/components/data-display/badge-tone.d.ts.map +1 -1
  357. package/dist/esm/components/data-display/badge-tone.js.map +1 -1
  358. package/dist/esm/components/data-display/badge.d.ts.map +1 -1
  359. package/dist/esm/components/data-display/badge.js.map +1 -1
  360. package/dist/esm/components/data-display/chart-echarts.d.ts.map +1 -1
  361. package/dist/esm/components/data-display/chart-echarts.js.map +1 -1
  362. package/dist/esm/components/data-display/chromes/DisplayChromeContext.d.ts.map +1 -1
  363. package/dist/esm/components/data-display/chromes/DisplayChromeContext.js.map +1 -1
  364. package/dist/esm/components/data-display/chromes/DisplayFieldChrome.d.ts +11 -1
  365. package/dist/esm/components/data-display/chromes/DisplayFieldChrome.d.ts.map +1 -1
  366. package/dist/esm/components/data-display/chromes/DisplayFieldChrome.js +36 -11
  367. package/dist/esm/components/data-display/chromes/DisplayFieldChrome.js.map +1 -1
  368. package/dist/esm/components/data-display/description-list.d.ts.map +1 -1
  369. package/dist/esm/components/data-display/description-list.js.map +1 -1
  370. package/dist/esm/components/data-display/display-field-resolution.utils.d.ts.map +1 -1
  371. package/dist/esm/components/data-display/display-field-resolution.utils.js.map +1 -1
  372. package/dist/esm/components/data-display/display-field-resolved-props.d.ts +6 -0
  373. package/dist/esm/components/data-display/display-field-resolved-props.d.ts.map +1 -1
  374. package/dist/esm/components/data-display/display-field-resolved-props.js.map +1 -1
  375. package/dist/esm/components/data-display/display-resource-link-trail.d.ts.map +1 -1
  376. package/dist/esm/components/data-display/display-resource-link-trail.js.map +1 -1
  377. package/dist/esm/components/data-display/duration.d.ts.map +1 -1
  378. package/dist/esm/components/data-display/duration.js.map +1 -1
  379. package/dist/esm/components/data-display/external-data-provenance/DisplayFieldProvenanceNote.d.ts +23 -0
  380. package/dist/esm/components/data-display/external-data-provenance/DisplayFieldProvenanceNote.d.ts.map +1 -0
  381. package/dist/esm/components/data-display/external-data-provenance/DisplayFieldProvenanceNote.js +35 -0
  382. package/dist/esm/components/data-display/external-data-provenance/DisplayFieldProvenanceNote.js.map +1 -0
  383. package/dist/esm/components/data-display/external-data-provenance/external-data-provenance.frontend.d.ts +47 -0
  384. package/dist/esm/components/data-display/external-data-provenance/external-data-provenance.frontend.d.ts.map +1 -0
  385. package/dist/esm/components/data-display/external-data-provenance/external-data-provenance.frontend.js +124 -0
  386. package/dist/esm/components/data-display/external-data-provenance/external-data-provenance.frontend.js.map +1 -0
  387. package/dist/esm/components/data-display/external-data-provenance/useExternalDataFieldProvenance.d.ts +8 -0
  388. package/dist/esm/components/data-display/external-data-provenance/useExternalDataFieldProvenance.d.ts.map +1 -0
  389. package/dist/esm/components/data-display/external-data-provenance/useExternalDataFieldProvenance.js +46 -0
  390. package/dist/esm/components/data-display/external-data-provenance/useExternalDataFieldProvenance.js.map +1 -0
  391. package/dist/esm/components/data-display/formatters/display-field-address.d.ts.map +1 -1
  392. package/dist/esm/components/data-display/formatters/display-field-address.js.map +1 -1
  393. package/dist/esm/components/data-display/formatters/display-field-bigdecimal.d.ts.map +1 -1
  394. package/dist/esm/components/data-display/formatters/display-field-bigdecimal.js.map +1 -1
  395. package/dist/esm/components/data-display/formatters/display-field-boolean.d.ts.map +1 -1
  396. package/dist/esm/components/data-display/formatters/display-field-boolean.js.map +1 -1
  397. package/dist/esm/components/data-display/formatters/display-field-code.d.ts.map +1 -1
  398. package/dist/esm/components/data-display/formatters/display-field-code.js.map +1 -1
  399. package/dist/esm/components/data-display/formatters/display-field-date.d.ts.map +1 -1
  400. package/dist/esm/components/data-display/formatters/display-field-date.js.map +1 -1
  401. package/dist/esm/components/data-display/formatters/display-field-datetime.d.ts.map +1 -1
  402. package/dist/esm/components/data-display/formatters/display-field-datetime.js.map +1 -1
  403. package/dist/esm/components/data-display/formatters/display-field-duration.d.ts.map +1 -1
  404. package/dist/esm/components/data-display/formatters/display-field-duration.js.map +1 -1
  405. package/dist/esm/components/data-display/formatters/display-field-enum.d.ts.map +1 -1
  406. package/dist/esm/components/data-display/formatters/display-field-enum.js.map +1 -1
  407. package/dist/esm/components/data-display/formatters/display-field-file-audio.d.ts.map +1 -1
  408. package/dist/esm/components/data-display/formatters/display-field-file-audio.js.map +1 -1
  409. package/dist/esm/components/data-display/formatters/display-field-file-document.d.ts.map +1 -1
  410. package/dist/esm/components/data-display/formatters/display-field-file-document.js.map +1 -1
  411. package/dist/esm/components/data-display/formatters/display-field-file-gallery.d.ts.map +1 -1
  412. package/dist/esm/components/data-display/formatters/display-field-file-gallery.js.map +1 -1
  413. package/dist/esm/components/data-display/formatters/display-field-file-image.d.ts.map +1 -1
  414. package/dist/esm/components/data-display/formatters/display-field-file-image.js.map +1 -1
  415. package/dist/esm/components/data-display/formatters/display-field-file-video.d.ts.map +1 -1
  416. package/dist/esm/components/data-display/formatters/display-field-file-video.js.map +1 -1
  417. package/dist/esm/components/data-display/formatters/display-field-file.d.ts.map +1 -1
  418. package/dist/esm/components/data-display/formatters/display-field-file.js.map +1 -1
  419. package/dist/esm/components/data-display/formatters/display-field-json.d.ts.map +1 -1
  420. package/dist/esm/components/data-display/formatters/display-field-json.js.map +1 -1
  421. package/dist/esm/components/data-display/formatters/display-field-money.d.ts.map +1 -1
  422. package/dist/esm/components/data-display/formatters/display-field-money.js.map +1 -1
  423. package/dist/esm/components/data-display/formatters/display-field-number.d.ts.map +1 -1
  424. package/dist/esm/components/data-display/formatters/display-field-number.js.map +1 -1
  425. package/dist/esm/components/data-display/formatters/display-field-phone.d.ts.map +1 -1
  426. package/dist/esm/components/data-display/formatters/display-field-phone.js.map +1 -1
  427. package/dist/esm/components/data-display/formatters/display-field-range-bigdecimal.d.ts.map +1 -1
  428. package/dist/esm/components/data-display/formatters/display-field-range-bigdecimal.js.map +1 -1
  429. package/dist/esm/components/data-display/formatters/display-field-range-date.d.ts.map +1 -1
  430. package/dist/esm/components/data-display/formatters/display-field-range-date.js.map +1 -1
  431. package/dist/esm/components/data-display/formatters/display-field-range-datetime.d.ts.map +1 -1
  432. package/dist/esm/components/data-display/formatters/display-field-range-datetime.js.map +1 -1
  433. package/dist/esm/components/data-display/formatters/display-field-range-money.d.ts.map +1 -1
  434. package/dist/esm/components/data-display/formatters/display-field-range-money.js.map +1 -1
  435. package/dist/esm/components/data-display/formatters/display-field-range-number.d.ts.map +1 -1
  436. package/dist/esm/components/data-display/formatters/display-field-range-number.js.map +1 -1
  437. package/dist/esm/components/data-display/formatters/display-field-range-time.d.ts.map +1 -1
  438. package/dist/esm/components/data-display/formatters/display-field-range-time.js.map +1 -1
  439. package/dist/esm/components/data-display/formatters/display-field-string.d.ts.map +1 -1
  440. package/dist/esm/components/data-display/formatters/display-field-string.js.map +1 -1
  441. package/dist/esm/components/data-display/formatters/display-field-time.d.ts.map +1 -1
  442. package/dist/esm/components/data-display/formatters/display-field-time.js.map +1 -1
  443. package/dist/esm/components/data-display/identifier.d.ts.map +1 -1
  444. package/dist/esm/components/data-display/identifier.js.map +1 -1
  445. package/dist/esm/components/data-display/kbd.d.ts.map +1 -1
  446. package/dist/esm/components/data-display/kbd.js.map +1 -1
  447. package/dist/esm/components/data-display/notification-indicator.d.ts.map +1 -1
  448. package/dist/esm/components/data-display/notification-indicator.js.map +1 -1
  449. package/dist/esm/components/data-display/timeline.d.ts.map +1 -1
  450. package/dist/esm/components/data-display/timeline.js.map +1 -1
  451. package/dist/esm/components/data-display/useFileActivation.d.ts.map +1 -1
  452. package/dist/esm/components/data-display/useFileActivation.js.map +1 -1
  453. package/dist/esm/components/feedback/celebration-overlay.d.ts.map +1 -1
  454. package/dist/esm/components/feedback/celebration-overlay.js.map +1 -1
  455. package/dist/esm/components/feedback/danger-zone.d.ts.map +1 -1
  456. package/dist/esm/components/feedback/danger-zone.js.map +1 -1
  457. package/dist/esm/components/feedback/empty-display-policy.utils.d.ts.map +1 -1
  458. package/dist/esm/components/feedback/empty-display-policy.utils.js.map +1 -1
  459. package/dist/esm/components/feedback/empty-state.d.ts.map +1 -1
  460. package/dist/esm/components/feedback/empty-state.js.map +1 -1
  461. package/dist/esm/components/feedback/error-display.d.ts.map +1 -1
  462. package/dist/esm/components/feedback/error-display.js.map +1 -1
  463. package/dist/esm/components/feedback/features/feature-limit-indicator.d.ts.map +1 -1
  464. package/dist/esm/components/feedback/features/feature-limit-indicator.js.map +1 -1
  465. package/dist/esm/components/feedback/features/feature-lock-badge.d.ts.map +1 -1
  466. package/dist/esm/components/feedback/features/feature-lock-badge.js.map +1 -1
  467. package/dist/esm/components/feedback/features/feature-unavailable-dialog.d.ts.map +1 -1
  468. package/dist/esm/components/feedback/features/feature-unavailable-dialog.js.map +1 -1
  469. package/dist/esm/components/feedback/features/feature-unavailable-prompt.d.ts.map +1 -1
  470. package/dist/esm/components/feedback/features/feature-unavailable-prompt.js.map +1 -1
  471. package/dist/esm/components/feedback/lazy-door-error-boundary.d.ts.map +1 -1
  472. package/dist/esm/components/feedback/lazy-door-error-boundary.js.map +1 -1
  473. package/dist/esm/components/feedback/loading-overlay.d.ts.map +1 -1
  474. package/dist/esm/components/feedback/loading-overlay.js.map +1 -1
  475. package/dist/esm/components/feedback/loading-spinner.d.ts.map +1 -1
  476. package/dist/esm/components/feedback/loading-spinner.js.map +1 -1
  477. package/dist/esm/components/feedback/notification-center.d.ts.map +1 -1
  478. package/dist/esm/components/feedback/notification-center.js.map +1 -1
  479. package/dist/esm/components/feedback/operations-confirm-critical.d.ts.map +1 -1
  480. package/dist/esm/components/feedback/operations-confirm-critical.js.map +1 -1
  481. package/dist/esm/components/feedback/progress.d.ts.map +1 -1
  482. package/dist/esm/components/feedback/progress.js.map +1 -1
  483. package/dist/esm/components/feedback/resource-empty-state.d.ts +21 -8
  484. package/dist/esm/components/feedback/resource-empty-state.d.ts.map +1 -1
  485. package/dist/esm/components/feedback/resource-empty-state.js +56 -26
  486. package/dist/esm/components/feedback/resource-empty-state.js.map +1 -1
  487. package/dist/esm/components/feedback/skeleton-text.d.ts.map +1 -1
  488. package/dist/esm/components/feedback/skeleton-text.js.map +1 -1
  489. package/dist/esm/components/feedback/skeleton.d.ts.map +1 -1
  490. package/dist/esm/components/feedback/skeleton.js.map +1 -1
  491. package/dist/esm/components/feedback/toast.d.ts.map +1 -1
  492. package/dist/esm/components/feedback/toast.js.map +1 -1
  493. package/dist/esm/components/files/Files_UploadGrantDrop.d.ts.map +1 -1
  494. package/dist/esm/components/files/Files_UploadGrantDrop.js.map +1 -1
  495. package/dist/esm/components/files/Files_UploadGrantDrop.labels.d.ts.map +1 -1
  496. package/dist/esm/components/files/Files_UploadGrantDrop.labels.js.map +1 -1
  497. package/dist/esm/components/files/pages/FilesPage_UploadGrant.d.ts.map +1 -1
  498. package/dist/esm/components/files/pages/FilesPage_UploadGrant.js.map +1 -1
  499. package/dist/esm/components/flows-actors/actor.d.ts.map +1 -1
  500. package/dist/esm/components/flows-actors/actor.js.map +1 -1
  501. package/dist/esm/components/flows-actors/actor.labels.d.ts.map +1 -1
  502. package/dist/esm/components/flows-actors/actor.labels.js.map +1 -1
  503. package/dist/esm/components/flows-actors/agent-config.d.ts.map +1 -1
  504. package/dist/esm/components/flows-actors/agent-config.js.map +1 -1
  505. package/dist/esm/components/flows-actors/agent-config.labels.d.ts.map +1 -1
  506. package/dist/esm/components/flows-actors/agent-config.labels.js.map +1 -1
  507. package/dist/esm/components/flows-actors/approval-modification-refusal.utils.d.ts.map +1 -1
  508. package/dist/esm/components/flows-actors/approval-modification-refusal.utils.js.map +1 -1
  509. package/dist/esm/components/flows-actors/approval.d.ts +29 -7
  510. package/dist/esm/components/flows-actors/approval.d.ts.map +1 -1
  511. package/dist/esm/components/flows-actors/approval.js +231 -101
  512. package/dist/esm/components/flows-actors/approval.js.map +1 -1
  513. package/dist/esm/components/flows-actors/approval.labels.d.ts.map +1 -1
  514. package/dist/esm/components/flows-actors/approval.labels.js +57 -0
  515. package/dist/esm/components/flows-actors/approval.labels.js.map +1 -1
  516. package/dist/esm/components/flows-actors/artifact-browser.d.ts.map +1 -1
  517. package/dist/esm/components/flows-actors/artifact-browser.js.map +1 -1
  518. package/dist/esm/components/flows-actors/artifact-browser.labels.d.ts.map +1 -1
  519. package/dist/esm/components/flows-actors/artifact-browser.labels.js.map +1 -1
  520. package/dist/esm/components/flows-actors/execution-plan.d.ts.map +1 -1
  521. package/dist/esm/components/flows-actors/execution-plan.js.map +1 -1
  522. package/dist/esm/components/flows-actors/execution-plan.labels.d.ts.map +1 -1
  523. package/dist/esm/components/flows-actors/execution-plan.labels.js.map +1 -1
  524. package/dist/esm/components/flows-actors/flow-execution.d.ts.map +1 -1
  525. package/dist/esm/components/flows-actors/flow-execution.js.map +1 -1
  526. package/dist/esm/components/flows-actors/flow-execution.labels.d.ts.map +1 -1
  527. package/dist/esm/components/flows-actors/flow-execution.labels.js.map +1 -1
  528. package/dist/esm/components/flows-actors/flow-node-badges.d.ts.map +1 -1
  529. package/dist/esm/components/flows-actors/flow-node-badges.js.map +1 -1
  530. package/dist/esm/components/flows-actors/flow-node.d.ts.map +1 -1
  531. package/dist/esm/components/flows-actors/flow-node.js.map +1 -1
  532. package/dist/esm/components/flows-actors/flow-node.labels.d.ts.map +1 -1
  533. package/dist/esm/components/flows-actors/flow-node.labels.js.map +1 -1
  534. package/dist/esm/components/flows-actors/flows-actors-graph-runtime.d.ts.map +1 -1
  535. package/dist/esm/components/flows-actors/flows-actors-graph-runtime.js.map +1 -1
  536. package/dist/esm/components/flows-actors/flows-actors-graph.lazy.d.ts.map +1 -1
  537. package/dist/esm/components/flows-actors/flows-actors-graph.lazy.js.map +1 -1
  538. package/dist/esm/components/flows-actors/flows-actors-ui.utils.d.ts.map +1 -1
  539. package/dist/esm/components/flows-actors/flows-actors-ui.utils.js.map +1 -1
  540. package/dist/esm/components/flows-actors/system-catalog.d.ts.map +1 -1
  541. package/dist/esm/components/flows-actors/system-catalog.js +4 -4
  542. package/dist/esm/components/flows-actors/system-catalog.js.map +1 -1
  543. package/dist/esm/components/flows-actors/system-catalog.labels.d.ts.map +1 -1
  544. package/dist/esm/components/flows-actors/system-catalog.labels.js +0 -5
  545. package/dist/esm/components/flows-actors/system-catalog.labels.js.map +1 -1
  546. package/dist/esm/components/flows-actors/task-detail.d.ts.map +1 -1
  547. package/dist/esm/components/flows-actors/task-detail.js.map +1 -1
  548. package/dist/esm/components/flows-actors/task-detail.labels.d.ts.map +1 -1
  549. package/dist/esm/components/flows-actors/task-detail.labels.js.map +1 -1
  550. package/dist/esm/components/flows-actors/task-memory.d.ts.map +1 -1
  551. package/dist/esm/components/flows-actors/task-memory.js.map +1 -1
  552. package/dist/esm/components/flows-actors/task-memory.labels.d.ts.map +1 -1
  553. package/dist/esm/components/flows-actors/task-memory.labels.js.map +1 -1
  554. package/dist/esm/components/form/Form.d.ts +2 -2
  555. package/dist/esm/components/form/Form.d.ts.map +1 -1
  556. package/dist/esm/components/form/Form.js +2 -2
  557. package/dist/esm/components/form/Form.js.map +1 -1
  558. package/dist/esm/components/form/automated/AutomatedArrayField.d.ts +28 -3
  559. package/dist/esm/components/form/automated/AutomatedArrayField.d.ts.map +1 -1
  560. package/dist/esm/components/form/automated/AutomatedArrayField.js +43 -14
  561. package/dist/esm/components/form/automated/AutomatedArrayField.js.map +1 -1
  562. package/dist/esm/components/form/automated/AutomatedForm.d.ts.map +1 -1
  563. package/dist/esm/components/form/automated/AutomatedForm.js.map +1 -1
  564. package/dist/esm/components/form/automated/AutosaveContext.d.ts.map +1 -1
  565. package/dist/esm/components/form/automated/AutosaveContext.js.map +1 -1
  566. package/dist/esm/components/form/automated/FormField.d.ts +3 -0
  567. package/dist/esm/components/form/automated/FormField.d.ts.map +1 -1
  568. package/dist/esm/components/form/automated/FormField.js +60 -21
  569. package/dist/esm/components/form/automated/FormField.js.map +1 -1
  570. package/dist/esm/components/form/automated/FormFieldArray.d.ts +6 -3
  571. package/dist/esm/components/form/automated/FormFieldArray.d.ts.map +1 -1
  572. package/dist/esm/components/form/automated/FormFieldArray.js +3 -2
  573. package/dist/esm/components/form/automated/FormFieldArray.js.map +1 -1
  574. package/dist/esm/components/form/automated/FormFieldComposite.d.ts.map +1 -1
  575. package/dist/esm/components/form/automated/FormFieldComposite.js.map +1 -1
  576. package/dist/esm/components/form/automated/FormFieldRecord.d.ts.map +1 -1
  577. package/dist/esm/components/form/automated/FormFieldRecord.js.map +1 -1
  578. package/dist/esm/components/form/automated/FormTemplateContext.d.ts.map +1 -1
  579. package/dist/esm/components/form/automated/FormTemplateContext.js.map +1 -1
  580. package/dist/esm/components/form/automated/GeneratedAssociationRelationshipField.d.ts.map +1 -1
  581. package/dist/esm/components/form/automated/GeneratedAssociationRelationshipField.js.map +1 -1
  582. package/dist/esm/components/form/automated/GeneratedReferenceRelationshipField.d.ts.map +1 -1
  583. package/dist/esm/components/form/automated/GeneratedReferenceRelationshipField.js.map +1 -1
  584. package/dist/esm/components/form/automated/ResourceAutomatedForm.d.ts +5 -4
  585. package/dist/esm/components/form/automated/ResourceAutomatedForm.d.ts.map +1 -1
  586. package/dist/esm/components/form/automated/ResourceAutomatedForm.js +148 -55
  587. package/dist/esm/components/form/automated/ResourceAutomatedForm.js.map +1 -1
  588. package/dist/esm/components/form/automated/ResourceFormActionsContext.d.ts +30 -0
  589. package/dist/esm/components/form/automated/ResourceFormActionsContext.d.ts.map +1 -1
  590. package/dist/esm/components/form/automated/ResourceFormActionsContext.js +30 -1
  591. package/dist/esm/components/form/automated/ResourceFormActionsContext.js.map +1 -1
  592. package/dist/esm/components/form/automated/TemplatePlacedFieldsContext.d.ts +79 -0
  593. package/dist/esm/components/form/automated/TemplatePlacedFieldsContext.d.ts.map +1 -0
  594. package/dist/esm/components/form/automated/TemplatePlacedFieldsContext.js +203 -0
  595. package/dist/esm/components/form/automated/TemplatePlacedFieldsContext.js.map +1 -0
  596. package/dist/esm/components/form/automated/automated-form-submit.utils.d.ts +12 -0
  597. package/dist/esm/components/form/automated/automated-form-submit.utils.d.ts.map +1 -1
  598. package/dist/esm/components/form/automated/automated-form-submit.utils.js +11 -0
  599. package/dist/esm/components/form/automated/automated-form-submit.utils.js.map +1 -1
  600. package/dist/esm/components/form/automated/autosave-derivation.frontend.utils.d.ts.map +1 -1
  601. package/dist/esm/components/form/automated/autosave-derivation.frontend.utils.js.map +1 -1
  602. package/dist/esm/components/form/automated/autosave-indicator.d.ts.map +1 -1
  603. package/dist/esm/components/form/automated/autosave-indicator.js.map +1 -1
  604. package/dist/esm/components/form/automated/autosave-indicator.utils.d.ts.map +1 -1
  605. package/dist/esm/components/form/automated/autosave-indicator.utils.js.map +1 -1
  606. package/dist/esm/components/form/automated/create-form-default-values.utils.d.ts.map +1 -1
  607. package/dist/esm/components/form/automated/create-form-default-values.utils.js.map +1 -1
  608. package/dist/esm/components/form/automated/field-clearing-rule.frontend.utils.d.ts.map +1 -1
  609. package/dist/esm/components/form/automated/field-clearing-rule.frontend.utils.js.map +1 -1
  610. package/dist/esm/components/form/automated/form-field-autocomplete.frontend.utils.d.ts.map +1 -1
  611. package/dist/esm/components/form/automated/form-field-autocomplete.frontend.utils.js.map +1 -1
  612. package/dist/esm/components/form/automated/generated-relationship-field.helpers.d.ts.map +1 -1
  613. package/dist/esm/components/form/automated/generated-relationship-field.helpers.js.map +1 -1
  614. package/dist/esm/components/form/automated/generated-relationship-field.hooks.d.ts.map +1 -1
  615. package/dist/esm/components/form/automated/generated-relationship-field.hooks.js.map +1 -1
  616. package/dist/esm/components/form/automated/generated-relationship-field.shared.d.ts.map +1 -1
  617. package/dist/esm/components/form/automated/generated-relationship-field.shared.js.map +1 -1
  618. package/dist/esm/components/form/automated/generated-relationship-field.utils.d.ts.map +1 -1
  619. package/dist/esm/components/form/automated/generated-relationship-field.utils.js.map +1 -1
  620. package/dist/esm/components/form/automated/useArrayItemAutosaveField.d.ts.map +1 -1
  621. package/dist/esm/components/form/automated/useArrayItemAutosaveField.js.map +1 -1
  622. package/dist/esm/components/form/chromes/FormChromeContext.d.ts.map +1 -1
  623. package/dist/esm/components/form/chromes/FormChromeContext.js.map +1 -1
  624. package/dist/esm/components/form/chromes/FormFieldChrome.d.ts.map +1 -1
  625. package/dist/esm/components/form/chromes/FormFieldChrome.js +2 -2
  626. package/dist/esm/components/form/chromes/FormFieldChrome.js.map +1 -1
  627. package/dist/esm/components/form/chromes/field.d.ts.map +1 -1
  628. package/dist/esm/components/form/chromes/field.js.map +1 -1
  629. package/dist/esm/components/form/chromes/form-primitives.d.ts.map +1 -1
  630. package/dist/esm/components/form/chromes/form-primitives.js.map +1 -1
  631. package/dist/esm/components/form/combobox.d.ts +7 -0
  632. package/dist/esm/components/form/combobox.d.ts.map +1 -1
  633. package/dist/esm/components/form/combobox.js.map +1 -1
  634. package/dist/esm/components/form/controls/boolean/checkbox.d.ts.map +1 -1
  635. package/dist/esm/components/form/controls/boolean/checkbox.js.map +1 -1
  636. package/dist/esm/components/form/controls/boolean/switch.d.ts.map +1 -1
  637. package/dist/esm/components/form/controls/boolean/switch.js.map +1 -1
  638. package/dist/esm/components/form/controls/boolean/toggle-group-boolean.d.ts.map +1 -1
  639. package/dist/esm/components/form/controls/boolean/toggle-group-boolean.js.map +1 -1
  640. package/dist/esm/components/form/controls/boolean/toggle.d.ts.map +1 -1
  641. package/dist/esm/components/form/controls/boolean/toggle.js.map +1 -1
  642. package/dist/esm/components/form/controls/date-time/calendar.d.ts.map +1 -1
  643. package/dist/esm/components/form/controls/date-time/calendar.js.map +1 -1
  644. package/dist/esm/components/form/controls/date-time/date-range-picker.d.ts.map +1 -1
  645. package/dist/esm/components/form/controls/date-time/date-range-picker.js.map +1 -1
  646. package/dist/esm/components/form/controls/date-time/datepicker.d.ts.map +1 -1
  647. package/dist/esm/components/form/controls/date-time/datepicker.js.map +1 -1
  648. package/dist/esm/components/form/controls/date-time/datetime-picker.d.ts.map +1 -1
  649. package/dist/esm/components/form/controls/date-time/datetime-picker.js.map +1 -1
  650. package/dist/esm/components/form/controls/date-time/datetime-range-picker.d.ts.map +1 -1
  651. package/dist/esm/components/form/controls/date-time/datetime-range-picker.js.map +1 -1
  652. package/dist/esm/components/form/controls/date-time/time-picker.d.ts.map +1 -1
  653. package/dist/esm/components/form/controls/date-time/time-picker.js.map +1 -1
  654. package/dist/esm/components/form/controls/date-time/time-range-picker.d.ts.map +1 -1
  655. package/dist/esm/components/form/controls/date-time/time-range-picker.js.map +1 -1
  656. package/dist/esm/components/form/controls/enum/radio.d.ts.map +1 -1
  657. package/dist/esm/components/form/controls/enum/radio.js.map +1 -1
  658. package/dist/esm/components/form/controls/enum/select-multiple.d.ts.map +1 -1
  659. package/dist/esm/components/form/controls/enum/select-multiple.js.map +1 -1
  660. package/dist/esm/components/form/controls/enum/select.d.ts.map +1 -1
  661. package/dist/esm/components/form/controls/enum/select.js.map +1 -1
  662. package/dist/esm/components/form/controls/enum/toggle-group.d.ts.map +1 -1
  663. package/dist/esm/components/form/controls/enum/toggle-group.js.map +1 -1
  664. package/dist/esm/components/form/controls/file/file-readiness.frontend.utils.d.ts.map +1 -1
  665. package/dist/esm/components/form/controls/file/file-readiness.frontend.utils.js.map +1 -1
  666. package/dist/esm/components/form/controls/file/file-upload.d.ts.map +1 -1
  667. package/dist/esm/components/form/controls/file/file-upload.js.map +1 -1
  668. package/dist/esm/components/form/controls/file/image-crop.d.ts.map +1 -1
  669. package/dist/esm/components/form/controls/file/image-crop.frontend.utils.d.ts.map +1 -1
  670. package/dist/esm/components/form/controls/file/image-crop.frontend.utils.js.map +1 -1
  671. package/dist/esm/components/form/controls/file/image-crop.js.map +1 -1
  672. package/dist/esm/components/form/controls/form-field-checkbox-group.d.ts.map +1 -1
  673. package/dist/esm/components/form/controls/form-field-checkbox-group.js +13 -0
  674. package/dist/esm/components/form/controls/form-field-checkbox-group.js.map +1 -1
  675. package/dist/esm/components/form/controls/input-group.d.ts.map +1 -1
  676. package/dist/esm/components/form/controls/input-group.js.map +1 -1
  677. package/dist/esm/components/form/controls/input.d.ts.map +1 -1
  678. package/dist/esm/components/form/controls/input.js.map +1 -1
  679. package/dist/esm/components/form/controls/number/slider.d.ts +1 -1
  680. package/dist/esm/components/form/controls/number/slider.d.ts.map +1 -1
  681. package/dist/esm/components/form/controls/number/slider.js.map +1 -1
  682. package/dist/esm/components/form/controls/string/color-input.d.ts.map +1 -1
  683. package/dist/esm/components/form/controls/string/color-input.js.map +1 -1
  684. package/dist/esm/components/form/controls/string/inline-edit-text.d.ts.map +1 -1
  685. package/dist/esm/components/form/controls/string/inline-edit-text.js.map +1 -1
  686. package/dist/esm/components/form/controls/string/input-otp.d.ts.map +1 -1
  687. package/dist/esm/components/form/controls/string/input-otp.js.map +1 -1
  688. package/dist/esm/components/form/controls/string/markdown-editor.d.ts.map +1 -1
  689. package/dist/esm/components/form/controls/string/markdown-editor.js.map +1 -1
  690. package/dist/esm/components/form/controls/string/markdown-editor.labels.d.ts.map +1 -1
  691. package/dist/esm/components/form/controls/string/markdown-editor.labels.js.map +1 -1
  692. package/dist/esm/components/form/controls/string/password-input.d.ts.map +1 -1
  693. package/dist/esm/components/form/controls/string/password-input.js.map +1 -1
  694. package/dist/esm/components/form/controls/string/textarea.d.ts.map +1 -1
  695. package/dist/esm/components/form/controls/string/textarea.js.map +1 -1
  696. package/dist/esm/components/form/feedback/RemoteChangeNotification.d.ts.map +1 -1
  697. package/dist/esm/components/form/feedback/RemoteChangeNotification.js.map +1 -1
  698. package/dist/esm/components/form/fields/accepted-file-kinds-description.frontend.utils.d.ts.map +1 -1
  699. package/dist/esm/components/form/fields/accepted-file-kinds-description.frontend.utils.js.map +1 -1
  700. package/dist/esm/components/form/fields/form-field-address.d.ts +58 -0
  701. package/dist/esm/components/form/fields/form-field-address.d.ts.map +1 -1
  702. package/dist/esm/components/form/fields/form-field-address.js +34 -6
  703. package/dist/esm/components/form/fields/form-field-address.js.map +1 -1
  704. package/dist/esm/components/form/fields/form-field-address.labels.d.ts.map +1 -1
  705. package/dist/esm/components/form/fields/form-field-address.labels.js +60 -1
  706. package/dist/esm/components/form/fields/form-field-address.labels.js.map +1 -1
  707. package/dist/esm/components/form/fields/form-field-bigdecimal.d.ts.map +1 -1
  708. package/dist/esm/components/form/fields/form-field-bigdecimal.js.map +1 -1
  709. package/dist/esm/components/form/fields/form-field-bigdecimal.labels.d.ts.map +1 -1
  710. package/dist/esm/components/form/fields/form-field-bigdecimal.labels.js.map +1 -1
  711. package/dist/esm/components/form/fields/form-field-boolean.d.ts.map +1 -1
  712. package/dist/esm/components/form/fields/form-field-boolean.js.map +1 -1
  713. package/dist/esm/components/form/fields/form-field-boolean.labels.d.ts.map +1 -1
  714. package/dist/esm/components/form/fields/form-field-boolean.labels.js.map +1 -1
  715. package/dist/esm/components/form/fields/form-field-code.d.ts.map +1 -1
  716. package/dist/esm/components/form/fields/form-field-code.js.map +1 -1
  717. package/dist/esm/components/form/fields/form-field-code.labels.d.ts.map +1 -1
  718. package/dist/esm/components/form/fields/form-field-code.labels.js.map +1 -1
  719. package/dist/esm/components/form/fields/form-field-date.d.ts.map +1 -1
  720. package/dist/esm/components/form/fields/form-field-date.js.map +1 -1
  721. package/dist/esm/components/form/fields/form-field-date.labels.d.ts.map +1 -1
  722. package/dist/esm/components/form/fields/form-field-date.labels.js.map +1 -1
  723. package/dist/esm/components/form/fields/form-field-datetime.d.ts.map +1 -1
  724. package/dist/esm/components/form/fields/form-field-datetime.js.map +1 -1
  725. package/dist/esm/components/form/fields/form-field-datetime.labels.d.ts.map +1 -1
  726. package/dist/esm/components/form/fields/form-field-datetime.labels.js.map +1 -1
  727. package/dist/esm/components/form/fields/form-field-duration.d.ts.map +1 -1
  728. package/dist/esm/components/form/fields/form-field-duration.js.map +1 -1
  729. package/dist/esm/components/form/fields/form-field-duration.labels.d.ts.map +1 -1
  730. package/dist/esm/components/form/fields/form-field-duration.labels.js.map +1 -1
  731. package/dist/esm/components/form/fields/form-field-enum.d.ts.map +1 -1
  732. package/dist/esm/components/form/fields/form-field-enum.js.map +1 -1
  733. package/dist/esm/components/form/fields/form-field-enum.labels.d.ts.map +1 -1
  734. package/dist/esm/components/form/fields/form-field-enum.labels.js.map +1 -1
  735. package/dist/esm/components/form/fields/form-field-file-provider-constraints.frontend.utils.d.ts.map +1 -1
  736. package/dist/esm/components/form/fields/form-field-file-provider-constraints.frontend.utils.js.map +1 -1
  737. package/dist/esm/components/form/fields/form-field-file.d.ts +0 -12
  738. package/dist/esm/components/form/fields/form-field-file.d.ts.map +1 -1
  739. package/dist/esm/components/form/fields/form-field-file.js +34 -13
  740. package/dist/esm/components/form/fields/form-field-file.js.map +1 -1
  741. package/dist/esm/components/form/fields/form-field-file.labels.d.ts.map +1 -1
  742. package/dist/esm/components/form/fields/form-field-file.labels.js +46 -0
  743. package/dist/esm/components/form/fields/form-field-file.labels.js.map +1 -1
  744. package/dist/esm/components/form/fields/form-field-money.d.ts.map +1 -1
  745. package/dist/esm/components/form/fields/form-field-money.js.map +1 -1
  746. package/dist/esm/components/form/fields/form-field-money.labels.d.ts.map +1 -1
  747. package/dist/esm/components/form/fields/form-field-money.labels.js.map +1 -1
  748. package/dist/esm/components/form/fields/form-field-number.d.ts.map +1 -1
  749. package/dist/esm/components/form/fields/form-field-number.js.map +1 -1
  750. package/dist/esm/components/form/fields/form-field-number.labels.d.ts.map +1 -1
  751. package/dist/esm/components/form/fields/form-field-number.labels.js.map +1 -1
  752. package/dist/esm/components/form/fields/form-field-phone.d.ts.map +1 -1
  753. package/dist/esm/components/form/fields/form-field-phone.js.map +1 -1
  754. package/dist/esm/components/form/fields/form-field-phone.labels.d.ts.map +1 -1
  755. package/dist/esm/components/form/fields/form-field-phone.labels.js.map +1 -1
  756. package/dist/esm/components/form/fields/form-field-range-bigdecimal.d.ts.map +1 -1
  757. package/dist/esm/components/form/fields/form-field-range-bigdecimal.js.map +1 -1
  758. package/dist/esm/components/form/fields/form-field-range-bigdecimal.labels.d.ts.map +1 -1
  759. package/dist/esm/components/form/fields/form-field-range-bigdecimal.labels.js.map +1 -1
  760. package/dist/esm/components/form/fields/form-field-range-date.d.ts.map +1 -1
  761. package/dist/esm/components/form/fields/form-field-range-date.js.map +1 -1
  762. package/dist/esm/components/form/fields/form-field-range-date.labels.d.ts.map +1 -1
  763. package/dist/esm/components/form/fields/form-field-range-date.labels.js.map +1 -1
  764. package/dist/esm/components/form/fields/form-field-range-datetime.d.ts.map +1 -1
  765. package/dist/esm/components/form/fields/form-field-range-datetime.js.map +1 -1
  766. package/dist/esm/components/form/fields/form-field-range-datetime.labels.d.ts.map +1 -1
  767. package/dist/esm/components/form/fields/form-field-range-datetime.labels.js.map +1 -1
  768. package/dist/esm/components/form/fields/form-field-range-money.d.ts.map +1 -1
  769. package/dist/esm/components/form/fields/form-field-range-money.js.map +1 -1
  770. package/dist/esm/components/form/fields/form-field-range-money.labels.d.ts.map +1 -1
  771. package/dist/esm/components/form/fields/form-field-range-money.labels.js.map +1 -1
  772. package/dist/esm/components/form/fields/form-field-range-number.d.ts.map +1 -1
  773. package/dist/esm/components/form/fields/form-field-range-number.js.map +1 -1
  774. package/dist/esm/components/form/fields/form-field-range-number.labels.d.ts.map +1 -1
  775. package/dist/esm/components/form/fields/form-field-range-number.labels.js.map +1 -1
  776. package/dist/esm/components/form/fields/form-field-range-time.d.ts.map +1 -1
  777. package/dist/esm/components/form/fields/form-field-range-time.js.map +1 -1
  778. package/dist/esm/components/form/fields/form-field-range-time.labels.d.ts.map +1 -1
  779. package/dist/esm/components/form/fields/form-field-range-time.labels.js.map +1 -1
  780. package/dist/esm/components/form/fields/form-field-string-organization-role.d.ts +73 -0
  781. package/dist/esm/components/form/fields/form-field-string-organization-role.d.ts.map +1 -0
  782. package/dist/esm/components/form/fields/form-field-string-organization-role.js +64 -0
  783. package/dist/esm/components/form/fields/form-field-string-organization-role.js.map +1 -0
  784. package/dist/esm/components/form/fields/form-field-string.d.ts.map +1 -1
  785. package/dist/esm/components/form/fields/form-field-string.js +8 -1
  786. package/dist/esm/components/form/fields/form-field-string.js.map +1 -1
  787. package/dist/esm/components/form/fields/form-field-string.labels.d.ts.map +1 -1
  788. package/dist/esm/components/form/fields/form-field-string.labels.js +4 -0
  789. package/dist/esm/components/form/fields/form-field-string.labels.js.map +1 -1
  790. package/dist/esm/components/form/fields/form-field-time.d.ts.map +1 -1
  791. package/dist/esm/components/form/fields/form-field-time.js.map +1 -1
  792. package/dist/esm/components/form/fields/form-field-time.labels.d.ts.map +1 -1
  793. package/dist/esm/components/form/fields/form-field-time.labels.js.map +1 -1
  794. package/dist/esm/components/form/fields/useFormField.d.ts.map +1 -1
  795. package/dist/esm/components/form/fields/useFormField.js.map +1 -1
  796. package/dist/esm/components/form/form-context.d.ts.map +1 -1
  797. package/dist/esm/components/form/form-context.js.map +1 -1
  798. package/dist/esm/components/form/form-context.utils.d.ts.map +1 -1
  799. package/dist/esm/components/form/form-context.utils.js.map +1 -1
  800. package/dist/esm/components/form/form-external-validation.d.ts.map +1 -1
  801. package/dist/esm/components/form/form-external-validation.js.map +1 -1
  802. package/dist/esm/components/form/form-field-types.d.ts.map +1 -1
  803. package/dist/esm/components/form/form-field-types.js.map +1 -1
  804. package/dist/esm/components/form/useFormSchemaContext.d.ts.map +1 -1
  805. package/dist/esm/components/form/useFormSchemaContext.js.map +1 -1
  806. package/dist/esm/components/form/validation-errors/FormErrorSummary.d.ts.map +1 -1
  807. package/dist/esm/components/form/validation-errors/FormErrorSummary.js +1 -1
  808. package/dist/esm/components/form/validation-errors/FormErrorSummary.js.map +1 -1
  809. package/dist/esm/components/form/validation-errors/form-error-extraction.utils.d.ts.map +1 -1
  810. package/dist/esm/components/form/validation-errors/form-error-extraction.utils.js.map +1 -1
  811. package/dist/esm/components/form/validation-errors/form-validation.d.ts.map +1 -1
  812. package/dist/esm/components/form/validation-errors/form-validation.js.map +1 -1
  813. package/dist/esm/components/form/validation-errors/getFieldError.d.ts.map +1 -1
  814. package/dist/esm/components/form/validation-errors/getFieldError.js.map +1 -1
  815. package/dist/esm/components/form/validation-errors/resolver-error-nesting.d.ts +31 -0
  816. package/dist/esm/components/form/validation-errors/resolver-error-nesting.d.ts.map +1 -0
  817. package/dist/esm/components/form/validation-errors/resolver-error-nesting.js +81 -0
  818. package/dist/esm/components/form/validation-errors/resolver-error-nesting.js.map +1 -0
  819. package/dist/esm/components/form/validation-errors/resource-error-notification-context.utils.d.ts +14 -1
  820. package/dist/esm/components/form/validation-errors/resource-error-notification-context.utils.d.ts.map +1 -1
  821. package/dist/esm/components/form/validation-errors/resource-error-notification-context.utils.js +14 -0
  822. package/dist/esm/components/form/validation-errors/resource-error-notification-context.utils.js.map +1 -1
  823. package/dist/esm/components/form/validation-errors/scroll-to-first-error.utils.d.ts.map +1 -1
  824. package/dist/esm/components/form/validation-errors/scroll-to-first-error.utils.js.map +1 -1
  825. package/dist/esm/components/form/validation-errors/unstarted-field-visit.d.ts.map +1 -1
  826. package/dist/esm/components/form/validation-errors/unstarted-field-visit.js.map +1 -1
  827. package/dist/esm/components/form/validation-errors/useFieldUniquenessValidation.d.ts.map +1 -1
  828. package/dist/esm/components/form/validation-errors/useFieldUniquenessValidation.js.map +1 -1
  829. package/dist/esm/components/form/validation-errors/useServerErrorInjection.d.ts.map +1 -1
  830. package/dist/esm/components/form/validation-errors/useServerErrorInjection.js.map +1 -1
  831. package/dist/esm/components/form/validation-errors/validate-field-url.frontend.d.ts.map +1 -1
  832. package/dist/esm/components/form/validation-errors/validate-field-url.frontend.js.map +1 -1
  833. package/dist/esm/components/form/validation-errors/zod-issue-resolver.d.ts +22 -0
  834. package/dist/esm/components/form/validation-errors/zod-issue-resolver.d.ts.map +1 -1
  835. package/dist/esm/components/form/validation-errors/zod-issue-resolver.js +1 -22
  836. package/dist/esm/components/form/validation-errors/zod-issue-resolver.js.map +1 -1
  837. package/dist/esm/components/layout/aspect-ratio.d.ts.map +1 -1
  838. package/dist/esm/components/layout/aspect-ratio.js.map +1 -1
  839. package/dist/esm/components/layout/carousel.d.ts.map +1 -1
  840. package/dist/esm/components/layout/carousel.js.map +1 -1
  841. package/dist/esm/components/layout/divider.d.ts.map +1 -1
  842. package/dist/esm/components/layout/divider.js.map +1 -1
  843. package/dist/esm/components/layout/resizable.d.ts +11 -0
  844. package/dist/esm/components/layout/resizable.d.ts.map +1 -1
  845. package/dist/esm/components/layout/resizable.js.map +1 -1
  846. package/dist/esm/components/layout/scroll-area.d.ts.map +1 -1
  847. package/dist/esm/components/layout/scroll-area.js.map +1 -1
  848. package/dist/esm/components/layout/separator.d.ts.map +1 -1
  849. package/dist/esm/components/layout/separator.js.map +1 -1
  850. package/dist/esm/components/navigation/NavigationItemBadge.d.ts.map +1 -1
  851. package/dist/esm/components/navigation/NavigationItemBadge.js.map +1 -1
  852. package/dist/esm/components/navigation/app-level/ApplicationLevel_ActivityBar.d.ts.map +1 -1
  853. package/dist/esm/components/navigation/app-level/ApplicationLevel_ActivityBar.js.map +1 -1
  854. package/dist/esm/components/navigation/app-level/ApplicationLevel_CommandMenu.d.ts.map +1 -1
  855. package/dist/esm/components/navigation/app-level/ApplicationLevel_CommandMenu.js.map +1 -1
  856. package/dist/esm/components/navigation/app-level/ApplicationLevel_ControlPanel.d.ts.map +1 -1
  857. package/dist/esm/components/navigation/app-level/ApplicationLevel_ControlPanel.js.map +1 -1
  858. package/dist/esm/components/navigation/app-level/ApplicationLevel_MenuBar.d.ts.map +1 -1
  859. package/dist/esm/components/navigation/app-level/ApplicationLevel_MenuBar.js.map +1 -1
  860. package/dist/esm/components/navigation/app-level/ApplicationLevel_MenuUserOrg.d.ts.map +1 -1
  861. package/dist/esm/components/navigation/app-level/ApplicationLevel_MenuUserOrg.js.map +1 -1
  862. package/dist/esm/components/navigation/app-level/ApplicationLevel_NavigationBack.d.ts +11 -1
  863. package/dist/esm/components/navigation/app-level/ApplicationLevel_NavigationBack.d.ts.map +1 -1
  864. package/dist/esm/components/navigation/app-level/ApplicationLevel_NavigationBack.js +15 -3
  865. package/dist/esm/components/navigation/app-level/ApplicationLevel_NavigationBack.js.map +1 -1
  866. package/dist/esm/components/navigation/app-level/ApplicationLevel_NotificationCenter.d.ts.map +1 -1
  867. package/dist/esm/components/navigation/app-level/ApplicationLevel_NotificationCenter.js.map +1 -1
  868. package/dist/esm/components/navigation/app-level/ApplicationLevel_QuickActionButton.d.ts.map +1 -1
  869. package/dist/esm/components/navigation/app-level/ApplicationLevel_QuickActionButton.js.map +1 -1
  870. package/dist/esm/components/navigation/app-level/ApplicationLevel_QuickSwitcher.d.ts.map +1 -1
  871. package/dist/esm/components/navigation/app-level/ApplicationLevel_QuickSwitcher.js.map +1 -1
  872. package/dist/esm/components/navigation/app-level/ApplicationLevel_Sidebar.d.ts.map +1 -1
  873. package/dist/esm/components/navigation/app-level/ApplicationLevel_Sidebar.js.map +1 -1
  874. package/dist/esm/components/navigation/app-level/ApplicationLevel_StatusBar.d.ts +2 -2
  875. package/dist/esm/components/navigation/app-level/ApplicationLevel_StatusBar.d.ts.map +1 -1
  876. package/dist/esm/components/navigation/app-level/ApplicationLevel_StatusBar.js.map +1 -1
  877. package/dist/esm/components/navigation/app-level/ApplicationLevel_Toolbar.d.ts.map +1 -1
  878. package/dist/esm/components/navigation/app-level/ApplicationLevel_Toolbar.js.map +1 -1
  879. package/dist/esm/components/navigation/app-level/ApplicationLevel_UtilityPanel.d.ts.map +1 -1
  880. package/dist/esm/components/navigation/app-level/ApplicationLevel_UtilityPanel.js.map +1 -1
  881. package/dist/esm/components/navigation/app-level/HostedComponentInteractionsProvider.d.ts +2 -2
  882. package/dist/esm/components/navigation/app-level/HostedComponentInteractionsProvider.d.ts.map +1 -1
  883. package/dist/esm/components/navigation/app-level/HostedComponentInteractionsProvider.js +2 -2
  884. package/dist/esm/components/navigation/app-level/HostedComponentInteractionsProvider.js.map +1 -1
  885. package/dist/esm/components/navigation/app-level/SidebarResourceBrowser.d.ts.map +1 -1
  886. package/dist/esm/components/navigation/app-level/SidebarResourceBrowser.js +18 -20
  887. package/dist/esm/components/navigation/app-level/SidebarResourceBrowser.js.map +1 -1
  888. package/dist/esm/components/navigation/app-level/component-props.application-level.frontend.schemas.d.ts.map +1 -1
  889. package/dist/esm/components/navigation/app-level/component-props.application-level.frontend.schemas.js.map +1 -1
  890. package/dist/esm/components/navigation/app-level/sidebar-resource-browser-empty-label.d.ts.map +1 -1
  891. package/dist/esm/components/navigation/app-level/sidebar-resource-browser-empty-label.js.map +1 -1
  892. package/dist/esm/components/navigation/app-level/useActivityBarBehavior.d.ts.map +1 -1
  893. package/dist/esm/components/navigation/app-level/useActivityBarBehavior.js.map +1 -1
  894. package/dist/esm/components/navigation/app-level/useCommandMenuBehavior.d.ts.map +1 -1
  895. package/dist/esm/components/navigation/app-level/useCommandMenuBehavior.js +7 -1
  896. package/dist/esm/components/navigation/app-level/useCommandMenuBehavior.js.map +1 -1
  897. package/dist/esm/components/navigation/app-level/useControlPanelBehavior.d.ts.map +1 -1
  898. package/dist/esm/components/navigation/app-level/useControlPanelBehavior.js.map +1 -1
  899. package/dist/esm/components/navigation/app-level/useMenuBarBehavior.d.ts.map +1 -1
  900. package/dist/esm/components/navigation/app-level/useMenuBarBehavior.js +4 -1
  901. package/dist/esm/components/navigation/app-level/useMenuBarBehavior.js.map +1 -1
  902. package/dist/esm/components/navigation/app-level/useMenuUserOrgBehavior.d.ts.map +1 -1
  903. package/dist/esm/components/navigation/app-level/useMenuUserOrgBehavior.js +18 -2
  904. package/dist/esm/components/navigation/app-level/useMenuUserOrgBehavior.js.map +1 -1
  905. package/dist/esm/components/navigation/app-level/useNavigationBehaviors.d.ts.map +1 -1
  906. package/dist/esm/components/navigation/app-level/useNavigationBehaviors.js.map +1 -1
  907. package/dist/esm/components/navigation/app-level/useNotificationCenterBehavior.d.ts.map +1 -1
  908. package/dist/esm/components/navigation/app-level/useNotificationCenterBehavior.js.map +1 -1
  909. package/dist/esm/components/navigation/app-level/useQuickActionButtonBehavior.d.ts.map +1 -1
  910. package/dist/esm/components/navigation/app-level/useQuickActionButtonBehavior.js.map +1 -1
  911. package/dist/esm/components/navigation/app-level/useQuickSwitcherBehavior.d.ts.map +1 -1
  912. package/dist/esm/components/navigation/app-level/useQuickSwitcherBehavior.js.map +1 -1
  913. package/dist/esm/components/navigation/app-level/useSidebarBehavior.d.ts.map +1 -1
  914. package/dist/esm/components/navigation/app-level/useSidebarBehavior.js +82 -10
  915. package/dist/esm/components/navigation/app-level/useSidebarBehavior.js.map +1 -1
  916. package/dist/esm/components/navigation/app-level/useStatusBarBehavior.d.ts +2 -2
  917. package/dist/esm/components/navigation/app-level/useStatusBarBehavior.d.ts.map +1 -1
  918. package/dist/esm/components/navigation/app-level/useStatusBarBehavior.js.map +1 -1
  919. package/dist/esm/components/navigation/app-level/useToolbarBehavior.d.ts.map +1 -1
  920. package/dist/esm/components/navigation/app-level/useToolbarBehavior.js.map +1 -1
  921. package/dist/esm/components/navigation/app-level/useUtilityPanelBehavior.d.ts.map +1 -1
  922. package/dist/esm/components/navigation/app-level/useUtilityPanelBehavior.js.map +1 -1
  923. package/dist/esm/components/navigation/breadcrumb.d.ts.map +1 -1
  924. package/dist/esm/components/navigation/breadcrumb.js.map +1 -1
  925. package/dist/esm/components/navigation/command.d.ts.map +1 -1
  926. package/dist/esm/components/navigation/command.js.map +1 -1
  927. package/dist/esm/components/navigation/menu-bar.d.ts.map +1 -1
  928. package/dist/esm/components/navigation/menu-bar.js.map +1 -1
  929. package/dist/esm/components/navigation/navbar.d.ts.map +1 -1
  930. package/dist/esm/components/navigation/navbar.js.map +1 -1
  931. package/dist/esm/components/navigation/sidebar.d.ts.map +1 -1
  932. package/dist/esm/components/navigation/sidebar.js.map +1 -1
  933. package/dist/esm/components/overlays/containers/OverlayContainer.d.ts.map +1 -1
  934. package/dist/esm/components/overlays/containers/OverlayContainer.js.map +1 -1
  935. package/dist/esm/components/overlays/containers/OverlayContainer.labels.d.ts.map +1 -1
  936. package/dist/esm/components/overlays/containers/OverlayContainer.labels.js.map +1 -1
  937. package/dist/esm/components/overlays/containers/alert-dialog.d.ts.map +1 -1
  938. package/dist/esm/components/overlays/containers/alert-dialog.js.map +1 -1
  939. package/dist/esm/components/overlays/containers/alert.d.ts.map +1 -1
  940. package/dist/esm/components/overlays/containers/alert.js.map +1 -1
  941. package/dist/esm/components/overlays/containers/dialog.d.ts.map +1 -1
  942. package/dist/esm/components/overlays/containers/dialog.js.map +1 -1
  943. package/dist/esm/components/overlays/containers/dialog.shared-types.d.ts.map +1 -1
  944. package/dist/esm/components/overlays/containers/dialog.shared-types.js.map +1 -1
  945. package/dist/esm/components/overlays/containers/drawer.d.ts.map +1 -1
  946. package/dist/esm/components/overlays/containers/drawer.js.map +1 -1
  947. package/dist/esm/components/overlays/containers/navigation-overlay-container.utils.d.ts.map +1 -1
  948. package/dist/esm/components/overlays/containers/navigation-overlay-container.utils.js.map +1 -1
  949. package/dist/esm/components/overlays/containers/overlay-container-mode-resolution.utils.d.ts.map +1 -1
  950. package/dist/esm/components/overlays/containers/overlay-container-mode-resolution.utils.js.map +1 -1
  951. package/dist/esm/components/overlays/containers/sheet.d.ts.map +1 -1
  952. package/dist/esm/components/overlays/containers/sheet.js.map +1 -1
  953. package/dist/esm/components/overlays/floating/context-menu.d.ts.map +1 -1
  954. package/dist/esm/components/overlays/floating/context-menu.js.map +1 -1
  955. package/dist/esm/components/overlays/floating/dropdown-menu.d.ts.map +1 -1
  956. package/dist/esm/components/overlays/floating/dropdown-menu.js.map +1 -1
  957. package/dist/esm/components/overlays/floating/hover-card.d.ts.map +1 -1
  958. package/dist/esm/components/overlays/floating/hover-card.js.map +1 -1
  959. package/dist/esm/components/overlays/floating/menu.shared-types.d.ts.map +1 -1
  960. package/dist/esm/components/overlays/floating/menu.shared-types.js.map +1 -1
  961. package/dist/esm/components/overlays/floating/popover.d.ts.map +1 -1
  962. package/dist/esm/components/overlays/floating/popover.js.map +1 -1
  963. package/dist/esm/components/overlays/floating/tooltip.d.ts.map +1 -1
  964. package/dist/esm/components/overlays/floating/tooltip.js.map +1 -1
  965. package/dist/esm/components/progression/ProgressionAchievementBadge.d.ts.map +1 -1
  966. package/dist/esm/components/progression/ProgressionAchievementBadge.js.map +1 -1
  967. package/dist/esm/components/progression/ProgressionAchievementBadge.labels.d.ts.map +1 -1
  968. package/dist/esm/components/progression/ProgressionAchievementBadge.labels.js.map +1 -1
  969. package/dist/esm/components/progression/ProgressionMilestoneTracker.d.ts.map +1 -1
  970. package/dist/esm/components/progression/ProgressionMilestoneTracker.js.map +1 -1
  971. package/dist/esm/components/progression/ProgressionMilestoneTracker.labels.d.ts.map +1 -1
  972. package/dist/esm/components/progression/ProgressionMilestoneTracker.labels.js.map +1 -1
  973. package/dist/esm/components/resources/CollectionSelectionControls.d.ts.map +1 -1
  974. package/dist/esm/components/resources/CollectionSelectionControls.js.map +1 -1
  975. package/dist/esm/components/resources/CollectionSelectionHeaderRail.d.ts.map +1 -1
  976. package/dist/esm/components/resources/CollectionSelectionHeaderRail.js.map +1 -1
  977. package/dist/esm/components/resources/EphemeralFieldsRevealDialog.d.ts.map +1 -1
  978. package/dist/esm/components/resources/EphemeralFieldsRevealDialog.js.map +1 -1
  979. package/dist/esm/components/resources/InlineSearchInput.d.ts.map +1 -1
  980. package/dist/esm/components/resources/InlineSearchInput.js.map +1 -1
  981. package/dist/esm/components/resources/ResourceCollectionBody_Table.d.ts.map +1 -1
  982. package/dist/esm/components/resources/ResourceCollectionBody_Table.js.map +1 -1
  983. package/dist/esm/components/resources/ResourceCollectionFilterPresets.d.ts.map +1 -1
  984. package/dist/esm/components/resources/ResourceCollectionFilterPresets.js.map +1 -1
  985. package/dist/esm/components/resources/ResourceCollectionQuickFilterTabs.d.ts.map +1 -1
  986. package/dist/esm/components/resources/ResourceCollectionQuickFilterTabs.js +8 -1
  987. package/dist/esm/components/resources/ResourceCollectionQuickFilterTabs.js.map +1 -1
  988. package/dist/esm/components/resources/ResourceCollectionToolbar.d.ts +8 -2
  989. package/dist/esm/components/resources/ResourceCollectionToolbar.d.ts.map +1 -1
  990. package/dist/esm/components/resources/ResourceCollectionToolbar.js +6 -2
  991. package/dist/esm/components/resources/ResourceCollectionToolbar.js.map +1 -1
  992. package/dist/esm/components/resources/ResourceInPlaceOperationRow.d.ts.map +1 -1
  993. package/dist/esm/components/resources/ResourceInPlaceOperationRow.js.map +1 -1
  994. package/dist/esm/components/resources/ResourceLayout_Action.d.ts.map +1 -1
  995. package/dist/esm/components/resources/ResourceLayout_Action.js.map +1 -1
  996. package/dist/esm/components/resources/ResourceLayout_Action.labels.d.ts.map +1 -1
  997. package/dist/esm/components/resources/ResourceLayout_Action.labels.js.map +1 -1
  998. package/dist/esm/components/resources/ResourceLayout_Breadcrumb.d.ts.map +1 -1
  999. package/dist/esm/components/resources/ResourceLayout_Breadcrumb.js +31 -16
  1000. package/dist/esm/components/resources/ResourceLayout_Breadcrumb.js.map +1 -1
  1001. package/dist/esm/components/resources/ResourceLayout_Breadcrumb.labels.d.ts.map +1 -1
  1002. package/dist/esm/components/resources/ResourceLayout_Breadcrumb.labels.js.map +1 -1
  1003. package/dist/esm/components/resources/ResourceLayout_CollectionActions.d.ts.map +1 -1
  1004. package/dist/esm/components/resources/ResourceLayout_CollectionActions.js.map +1 -1
  1005. package/dist/esm/components/resources/ResourceLayout_ContainerDialogs.d.ts.map +1 -1
  1006. package/dist/esm/components/resources/ResourceLayout_ContainerDialogs.js +23 -8
  1007. package/dist/esm/components/resources/ResourceLayout_ContainerDialogs.js.map +1 -1
  1008. package/dist/esm/components/resources/ResourceLayout_ContainerDialogs.labels.d.ts.map +1 -1
  1009. package/dist/esm/components/resources/ResourceLayout_ContainerDialogs.labels.js.map +1 -1
  1010. package/dist/esm/components/resources/ResourceLayout_ContainerNested.d.ts.map +1 -1
  1011. package/dist/esm/components/resources/ResourceLayout_ContainerNested.js +2 -2
  1012. package/dist/esm/components/resources/ResourceLayout_ContainerNested.js.map +1 -1
  1013. package/dist/esm/components/resources/ResourceLayout_ContainerNested.labels.d.ts.map +1 -1
  1014. package/dist/esm/components/resources/ResourceLayout_ContainerNested.labels.js.map +1 -1
  1015. package/dist/esm/components/resources/ResourceLayout_Create.d.ts.map +1 -1
  1016. package/dist/esm/components/resources/ResourceLayout_Create.js.map +1 -1
  1017. package/dist/esm/components/resources/ResourceLayout_Create.labels.d.ts.map +1 -1
  1018. package/dist/esm/components/resources/ResourceLayout_Create.labels.js.map +1 -1
  1019. package/dist/esm/components/resources/ResourceLayout_DangerZone.d.ts.map +1 -1
  1020. package/dist/esm/components/resources/ResourceLayout_DangerZone.js.map +1 -1
  1021. package/dist/esm/components/resources/ResourceLayout_DangerZone.labels.d.ts.map +1 -1
  1022. package/dist/esm/components/resources/ResourceLayout_DangerZone.labels.js.map +1 -1
  1023. package/dist/esm/components/resources/ResourceLayout_FilterChips.d.ts.map +1 -1
  1024. package/dist/esm/components/resources/ResourceLayout_FilterChips.js.map +1 -1
  1025. package/dist/esm/components/resources/ResourceLayout_Filters.d.ts.map +1 -1
  1026. package/dist/esm/components/resources/ResourceLayout_Filters.js.map +1 -1
  1027. package/dist/esm/components/resources/ResourceLayout_Filters.labels.d.ts.map +1 -1
  1028. package/dist/esm/components/resources/ResourceLayout_Filters.labels.js.map +1 -1
  1029. package/dist/esm/components/resources/ResourceLayout_FiltersControl.d.ts.map +1 -1
  1030. package/dist/esm/components/resources/ResourceLayout_FiltersControl.js.map +1 -1
  1031. package/dist/esm/components/resources/ResourceLayout_Header.d.ts +13 -0
  1032. package/dist/esm/components/resources/ResourceLayout_Header.d.ts.map +1 -1
  1033. package/dist/esm/components/resources/ResourceLayout_Header.js +55 -28
  1034. package/dist/esm/components/resources/ResourceLayout_Header.js.map +1 -1
  1035. package/dist/esm/components/resources/ResourceLayout_Header.labels.d.ts.map +1 -1
  1036. package/dist/esm/components/resources/ResourceLayout_Header.labels.js.map +1 -1
  1037. package/dist/esm/components/resources/ResourceLayout_InsertedViews.d.ts.map +1 -1
  1038. package/dist/esm/components/resources/ResourceLayout_InsertedViews.js.map +1 -1
  1039. package/dist/esm/components/resources/ResourceLayout_List.d.ts.map +1 -1
  1040. package/dist/esm/components/resources/ResourceLayout_List.js +41 -20
  1041. package/dist/esm/components/resources/ResourceLayout_List.js.map +1 -1
  1042. package/dist/esm/components/resources/ResourceLayout_List.labels.d.ts.map +1 -1
  1043. package/dist/esm/components/resources/ResourceLayout_List.labels.js +1 -2
  1044. package/dist/esm/components/resources/ResourceLayout_List.labels.js.map +1 -1
  1045. package/dist/esm/components/resources/ResourceLayout_List_Table.d.ts.map +1 -1
  1046. package/dist/esm/components/resources/ResourceLayout_List_Table.js.map +1 -1
  1047. package/dist/esm/components/resources/ResourceLayout_OperationBulk.d.ts.map +1 -1
  1048. package/dist/esm/components/resources/ResourceLayout_OperationBulk.js.map +1 -1
  1049. package/dist/esm/components/resources/ResourceLayout_OperationBulk.labels.d.ts.map +1 -1
  1050. package/dist/esm/components/resources/ResourceLayout_OperationBulk.labels.js.map +1 -1
  1051. package/dist/esm/components/resources/ResourceLayout_OperationsItems.d.ts.map +1 -1
  1052. package/dist/esm/components/resources/ResourceLayout_OperationsItems.js.map +1 -1
  1053. package/dist/esm/components/resources/ResourceLayout_OperationsItems.labels.d.ts.map +1 -1
  1054. package/dist/esm/components/resources/ResourceLayout_OperationsItems.labels.js.map +1 -1
  1055. package/dist/esm/components/resources/ResourceLayout_Pagination.d.ts.map +1 -1
  1056. package/dist/esm/components/resources/ResourceLayout_Pagination.js.map +1 -1
  1057. package/dist/esm/components/resources/ResourceLayout_Pagination.labels.d.ts.map +1 -1
  1058. package/dist/esm/components/resources/ResourceLayout_Pagination.labels.js.map +1 -1
  1059. package/dist/esm/components/resources/ResourceLayout_Read.d.ts +9 -4
  1060. package/dist/esm/components/resources/ResourceLayout_Read.d.ts.map +1 -1
  1061. package/dist/esm/components/resources/ResourceLayout_Read.js +30 -11
  1062. package/dist/esm/components/resources/ResourceLayout_Read.js.map +1 -1
  1063. package/dist/esm/components/resources/ResourceLayout_Read.labels.d.ts.map +1 -1
  1064. package/dist/esm/components/resources/ResourceLayout_Read.labels.js.map +1 -1
  1065. package/dist/esm/components/resources/ResourceLayout_ReadSummary.d.ts.map +1 -1
  1066. package/dist/esm/components/resources/ResourceLayout_ReadSummary.js +4 -2
  1067. package/dist/esm/components/resources/ResourceLayout_ReadSummary.js.map +1 -1
  1068. package/dist/esm/components/resources/ResourceLayout_ReadSummary.labels.d.ts.map +1 -1
  1069. package/dist/esm/components/resources/ResourceLayout_ReadSummary.labels.js.map +1 -1
  1070. package/dist/esm/components/resources/ResourceLayout_ReadSummary_TableRow.d.ts.map +1 -1
  1071. package/dist/esm/components/resources/ResourceLayout_ReadSummary_TableRow.js +6 -2
  1072. package/dist/esm/components/resources/ResourceLayout_ReadSummary_TableRow.js.map +1 -1
  1073. package/dist/esm/components/resources/ResourceLayout_Read_Expandable.d.ts.map +1 -1
  1074. package/dist/esm/components/resources/ResourceLayout_Read_Expandable.js.map +1 -1
  1075. package/dist/esm/components/resources/ResourceLayout_Search.d.ts.map +1 -1
  1076. package/dist/esm/components/resources/ResourceLayout_Search.js +30 -14
  1077. package/dist/esm/components/resources/ResourceLayout_Search.js.map +1 -1
  1078. package/dist/esm/components/resources/ResourceLayout_Search.labels.d.ts.map +1 -1
  1079. package/dist/esm/components/resources/ResourceLayout_Search.labels.js.map +1 -1
  1080. package/dist/esm/components/resources/ResourceLayout_Search_Table.d.ts.map +1 -1
  1081. package/dist/esm/components/resources/ResourceLayout_Search_Table.js.map +1 -1
  1082. package/dist/esm/components/resources/ResourceLayout_SemanticOperationFallback.d.ts.map +1 -1
  1083. package/dist/esm/components/resources/ResourceLayout_SemanticOperationFallback.js +14 -198
  1084. package/dist/esm/components/resources/ResourceLayout_SemanticOperationFallback.js.map +1 -1
  1085. package/dist/esm/components/resources/ResourceLayout_SortControl.d.ts.map +1 -1
  1086. package/dist/esm/components/resources/ResourceLayout_SortControl.js.map +1 -1
  1087. package/dist/esm/components/resources/ResourceLayout_Update.d.ts +2 -2
  1088. package/dist/esm/components/resources/ResourceLayout_Update.d.ts.map +1 -1
  1089. package/dist/esm/components/resources/ResourceLayout_Update.js +2 -2
  1090. package/dist/esm/components/resources/ResourceLayout_Update.js.map +1 -1
  1091. package/dist/esm/components/resources/ResourceLayout_Update.labels.d.ts.map +1 -1
  1092. package/dist/esm/components/resources/ResourceLayout_Update.labels.js.map +1 -1
  1093. package/dist/esm/components/resources/ResourceListItemRenderer.d.ts.map +1 -1
  1094. package/dist/esm/components/resources/ResourceListItemRenderer.js +69 -39
  1095. package/dist/esm/components/resources/ResourceListItemRenderer.js.map +1 -1
  1096. package/dist/esm/components/resources/ResourceOperationActionDropdown.d.ts +32 -0
  1097. package/dist/esm/components/resources/ResourceOperationActionDropdown.d.ts.map +1 -0
  1098. package/dist/esm/components/resources/ResourceOperationActionDropdown.js +130 -0
  1099. package/dist/esm/components/resources/ResourceOperationActionDropdown.js.map +1 -0
  1100. package/dist/esm/components/resources/ResourceOperationActionPopover.d.ts.map +1 -1
  1101. package/dist/esm/components/resources/ResourceOperationActionPopover.js.map +1 -1
  1102. package/dist/esm/components/resources/ResourceOperationDetachedHost.d.ts.map +1 -1
  1103. package/dist/esm/components/resources/ResourceOperationDetachedHost.js.map +1 -1
  1104. package/dist/esm/components/resources/ResourceOperationSurface.d.ts.map +1 -1
  1105. package/dist/esm/components/resources/ResourceOperationSurface.js.map +1 -1
  1106. package/dist/esm/components/resources/ResourceOwnedViewEmbeds.d.ts.map +1 -1
  1107. package/dist/esm/components/resources/ResourceOwnedViewEmbeds.js.map +1 -1
  1108. package/dist/esm/components/resources/ResourceViewModeToggle.d.ts.map +1 -1
  1109. package/dist/esm/components/resources/ResourceViewModeToggle.js.map +1 -1
  1110. package/dist/esm/components/resources/card-action-placement.utils.d.ts.map +1 -1
  1111. package/dist/esm/components/resources/card-action-placement.utils.js.map +1 -1
  1112. package/dist/esm/components/resources/collection-card-layout.utils.d.ts.map +1 -1
  1113. package/dist/esm/components/resources/collection-card-layout.utils.js.map +1 -1
  1114. package/dist/esm/components/resources/collection-create-placement.utils.d.ts +32 -0
  1115. package/dist/esm/components/resources/collection-create-placement.utils.d.ts.map +1 -0
  1116. package/dist/esm/components/resources/collection-create-placement.utils.js +37 -0
  1117. package/dist/esm/components/resources/collection-create-placement.utils.js.map +1 -0
  1118. package/dist/esm/components/resources/collection-view-mode.frontend.d.ts.map +1 -1
  1119. package/dist/esm/components/resources/collection-view-mode.frontend.js.map +1 -1
  1120. package/dist/esm/components/resources/component-props.resources-layout.frontend.schemas.d.ts.map +1 -1
  1121. package/dist/esm/components/resources/component-props.resources-layout.frontend.schemas.js.map +1 -1
  1122. package/dist/esm/components/resources/embeds/ComposedChildrenRegistry.d.ts.map +1 -1
  1123. package/dist/esm/components/resources/embeds/ComposedChildrenRegistry.js.map +1 -1
  1124. package/dist/esm/components/resources/embeds/EmbeddedResourceDescent.d.ts.map +1 -1
  1125. package/dist/esm/components/resources/embeds/EmbeddedResourceDescent.js.map +1 -1
  1126. package/dist/esm/components/resources/embeds/EmbeddedResourceHostContext.d.ts.map +1 -1
  1127. package/dist/esm/components/resources/embeds/EmbeddedResourceHostContext.js.map +1 -1
  1128. package/dist/esm/components/resources/embeds/RelatedResourcePreview.d.ts.map +1 -1
  1129. package/dist/esm/components/resources/embeds/RelatedResourcePreview.js +5 -1
  1130. package/dist/esm/components/resources/embeds/RelatedResourcePreview.js.map +1 -1
  1131. package/dist/esm/components/resources/embeds/RelatedResourceSections.d.ts +8 -1
  1132. package/dist/esm/components/resources/embeds/RelatedResourceSections.d.ts.map +1 -1
  1133. package/dist/esm/components/resources/embeds/RelatedResourceSections.js +49 -2
  1134. package/dist/esm/components/resources/embeds/RelatedResourceSections.js.map +1 -1
  1135. package/dist/esm/components/resources/embeds/ResourceEmbeds.d.ts +22 -0
  1136. package/dist/esm/components/resources/embeds/ResourceEmbeds.d.ts.map +1 -1
  1137. package/dist/esm/components/resources/embeds/ResourceEmbeds.js +85 -2
  1138. package/dist/esm/components/resources/embeds/ResourceEmbeds.js.map +1 -1
  1139. package/dist/esm/components/resources/embeds/child-operation-addressability.utils.d.ts.map +1 -1
  1140. package/dist/esm/components/resources/embeds/child-operation-addressability.utils.js.map +1 -1
  1141. package/dist/esm/components/resources/embeds/useEmbeddedResourceContext.d.ts.map +1 -1
  1142. package/dist/esm/components/resources/embeds/useEmbeddedResourceContext.js.map +1 -1
  1143. package/dist/esm/components/resources/inserted-resource-view.frontend.utils.d.ts.map +1 -1
  1144. package/dist/esm/components/resources/inserted-resource-view.frontend.utils.js.map +1 -1
  1145. package/dist/esm/components/resources/resource-operation-custom-view.contracts.d.ts.map +1 -1
  1146. package/dist/esm/components/resources/resource-operation-custom-view.contracts.js.map +1 -1
  1147. package/dist/esm/components/resources/resourceLayout.utils.d.ts +14 -0
  1148. package/dist/esm/components/resources/resourceLayout.utils.d.ts.map +1 -1
  1149. package/dist/esm/components/resources/resourceLayout.utils.js +22 -0
  1150. package/dist/esm/components/resources/resourceLayout.utils.js.map +1 -1
  1151. package/dist/esm/components/resources/skeleton/ArrayField.d.ts.map +1 -1
  1152. package/dist/esm/components/resources/skeleton/ArrayField.js +3 -0
  1153. package/dist/esm/components/resources/skeleton/ArrayField.js.map +1 -1
  1154. package/dist/esm/components/resources/skeleton/ArrayItemTemplate.d.ts.map +1 -1
  1155. package/dist/esm/components/resources/skeleton/ArrayItemTemplate.js.map +1 -1
  1156. package/dist/esm/components/resources/skeleton/DiscriminatorSwitch.d.ts.map +1 -1
  1157. package/dist/esm/components/resources/skeleton/DiscriminatorSwitch.js.map +1 -1
  1158. package/dist/esm/components/resources/skeleton/DisplayDiscriminatorSwitch.d.ts.map +1 -1
  1159. package/dist/esm/components/resources/skeleton/DisplayDiscriminatorSwitch.js.map +1 -1
  1160. package/dist/esm/components/resources/skeleton/DisplayLayout.d.ts.map +1 -1
  1161. package/dist/esm/components/resources/skeleton/DisplayLayout.js.map +1 -1
  1162. package/dist/esm/components/resources/skeleton/Divider.d.ts.map +1 -1
  1163. package/dist/esm/components/resources/skeleton/Divider.js.map +1 -1
  1164. package/dist/esm/components/resources/skeleton/FieldScopeContext.d.ts.map +1 -1
  1165. package/dist/esm/components/resources/skeleton/FieldScopeContext.js.map +1 -1
  1166. package/dist/esm/components/resources/skeleton/FormErrorSummarySlot.d.ts.map +1 -1
  1167. package/dist/esm/components/resources/skeleton/FormErrorSummarySlot.js.map +1 -1
  1168. package/dist/esm/components/resources/skeleton/FormLayout.d.ts.map +1 -1
  1169. package/dist/esm/components/resources/skeleton/FormLayout.js +33 -1
  1170. package/dist/esm/components/resources/skeleton/FormLayout.js.map +1 -1
  1171. package/dist/esm/components/resources/skeleton/FormLayoutSlotContext.d.ts.map +1 -1
  1172. package/dist/esm/components/resources/skeleton/FormLayoutSlotContext.js.map +1 -1
  1173. package/dist/esm/components/resources/skeleton/Group.d.ts.map +1 -1
  1174. package/dist/esm/components/resources/skeleton/Group.js.map +1 -1
  1175. package/dist/esm/components/resources/skeleton/ObjectScope.d.ts.map +1 -1
  1176. package/dist/esm/components/resources/skeleton/ObjectScope.js +3 -0
  1177. package/dist/esm/components/resources/skeleton/ObjectScope.js.map +1 -1
  1178. package/dist/esm/components/resources/skeleton/ResourceHeaderTitle.d.ts.map +1 -1
  1179. package/dist/esm/components/resources/skeleton/ResourceHeaderTitle.js.map +1 -1
  1180. package/dist/esm/components/resources/skeleton/Section.d.ts +12 -0
  1181. package/dist/esm/components/resources/skeleton/Section.d.ts.map +1 -1
  1182. package/dist/esm/components/resources/skeleton/Section.js +28 -2
  1183. package/dist/esm/components/resources/skeleton/Section.js.map +1 -1
  1184. package/dist/esm/components/resources/skeleton/Section.shared.d.ts.map +1 -1
  1185. package/dist/esm/components/resources/skeleton/Section.shared.js.map +1 -1
  1186. package/dist/esm/components/resources/skeleton/SectionFieldsContext.d.ts +70 -0
  1187. package/dist/esm/components/resources/skeleton/SectionFieldsContext.d.ts.map +1 -1
  1188. package/dist/esm/components/resources/skeleton/SectionFieldsContext.js +157 -1
  1189. package/dist/esm/components/resources/skeleton/SectionFieldsContext.js.map +1 -1
  1190. package/dist/esm/components/resources/skeleton/SectionHostHeadingContext.d.ts.map +1 -1
  1191. package/dist/esm/components/resources/skeleton/SectionHostHeadingContext.js.map +1 -1
  1192. package/dist/esm/components/resources/skeleton/SectionPresentationContext.d.ts.map +1 -1
  1193. package/dist/esm/components/resources/skeleton/SectionPresentationContext.js.map +1 -1
  1194. package/dist/esm/components/resources/skeleton/SubmitButton.d.ts.map +1 -1
  1195. package/dist/esm/components/resources/skeleton/SubmitButton.js.map +1 -1
  1196. package/dist/esm/components/resources/skeleton/SummaryHeader.d.ts.map +1 -1
  1197. package/dist/esm/components/resources/skeleton/SummaryHeader.js.map +1 -1
  1198. package/dist/esm/components/resources/skeleton/SummaryLayout.d.ts.map +1 -1
  1199. package/dist/esm/components/resources/skeleton/SummaryLayout.js.map +1 -1
  1200. package/dist/esm/components/resources/skeleton/SummaryMeta.d.ts.map +1 -1
  1201. package/dist/esm/components/resources/skeleton/SummaryMeta.js.map +1 -1
  1202. package/dist/esm/components/resources/skeleton/SummaryTitle.d.ts.map +1 -1
  1203. package/dist/esm/components/resources/skeleton/SummaryTitle.js.map +1 -1
  1204. package/dist/esm/components/resources/skeleton/WizardLayout.d.ts +6 -0
  1205. package/dist/esm/components/resources/skeleton/WizardLayout.d.ts.map +1 -1
  1206. package/dist/esm/components/resources/skeleton/WizardLayout.js +13 -2
  1207. package/dist/esm/components/resources/skeleton/WizardLayout.js.map +1 -1
  1208. package/dist/esm/components/resources/skeleton/WizardLayoutContext.d.ts.map +1 -1
  1209. package/dist/esm/components/resources/skeleton/WizardLayoutContext.js.map +1 -1
  1210. package/dist/esm/components/resources/skeleton/WizardStep.d.ts.map +1 -1
  1211. package/dist/esm/components/resources/skeleton/WizardStep.js +2 -1
  1212. package/dist/esm/components/resources/skeleton/WizardStep.js.map +1 -1
  1213. package/dist/esm/components/resources/skeleton/WizardStepFieldsContext.d.ts.map +1 -1
  1214. package/dist/esm/components/resources/skeleton/WizardStepFieldsContext.js.map +1 -1
  1215. package/dist/esm/components/resources/skeleton/section-consolidation.shared.d.ts.map +1 -1
  1216. package/dist/esm/components/resources/skeleton/section-consolidation.shared.js.map +1 -1
  1217. package/dist/esm/components/resources/skeleton/section-consolidation.utils.d.ts.map +1 -1
  1218. package/dist/esm/components/resources/skeleton/section-consolidation.utils.js.map +1 -1
  1219. package/dist/esm/components/resources/useInlineSearch.d.ts.map +1 -1
  1220. package/dist/esm/components/resources/useInlineSearch.js.map +1 -1
  1221. package/dist/esm/components/resources/useLongPress.d.ts.map +1 -1
  1222. package/dist/esm/components/resources/useLongPress.js.map +1 -1
  1223. package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldDisplayPreset_ResourceReference_Default.d.ts.map +1 -1
  1224. package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldDisplayPreset_ResourceReference_Default.js +61 -15
  1225. package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldDisplayPreset_ResourceReference_Default.js.map +1 -1
  1226. package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldEditPreset_ResourceReference_Default.d.ts.map +1 -1
  1227. package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldEditPreset_ResourceReference_Default.js.map +1 -1
  1228. package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldEditPreset_ResourceReference_Default.labels.d.ts.map +1 -1
  1229. package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldEditPreset_ResourceReference_Default.labels.js.map +1 -1
  1230. package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldEditPreset_ResourceReference_Search.d.ts.map +1 -1
  1231. package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldEditPreset_ResourceReference_Search.js.map +1 -1
  1232. package/dist/esm/components/resources-fields/resource-reference/ResourceFieldDisplay_ResourceReference.d.ts.map +1 -1
  1233. package/dist/esm/components/resources-fields/resource-reference/ResourceFieldDisplay_ResourceReference.js.map +1 -1
  1234. package/dist/esm/components/resources-fields/resource-reference/ResourceFieldEdit_ResourceReference.d.ts.map +1 -1
  1235. package/dist/esm/components/resources-fields/resource-reference/ResourceFieldEdit_ResourceReference.js.map +1 -1
  1236. package/dist/esm/components/resources-fields/resource-reference/resource-reference.shared.utils.d.ts +24 -2
  1237. package/dist/esm/components/resources-fields/resource-reference/resource-reference.shared.utils.d.ts.map +1 -1
  1238. package/dist/esm/components/resources-fields/resource-reference/resource-reference.shared.utils.js +69 -1
  1239. package/dist/esm/components/resources-fields/resource-reference/resource-reference.shared.utils.js.map +1 -1
  1240. package/dist/esm/components/resources-fields/resource-reference/useResourceSearch.d.ts.map +1 -1
  1241. package/dist/esm/components/resources-fields/resource-reference/useResourceSearch.js +18 -19
  1242. package/dist/esm/components/resources-fields/resource-reference/useResourceSearch.js.map +1 -1
  1243. package/dist/esm/components/sections/ContentSectionContainer.d.ts.map +1 -1
  1244. package/dist/esm/components/sections/ContentSectionContainer.js +5 -4
  1245. package/dist/esm/components/sections/ContentSectionContainer.js.map +1 -1
  1246. package/dist/esm/components/sections/ContentSectionContainer.labels.d.ts.map +1 -1
  1247. package/dist/esm/components/sections/ContentSectionContainer.labels.js.map +1 -1
  1248. package/dist/esm/components/sections/accordion.d.ts.map +1 -1
  1249. package/dist/esm/components/sections/accordion.js.map +1 -1
  1250. package/dist/esm/components/sections/card.d.ts.map +1 -1
  1251. package/dist/esm/components/sections/card.js.map +1 -1
  1252. package/dist/esm/components/sections/collapsible.d.ts.map +1 -1
  1253. package/dist/esm/components/sections/collapsible.js.map +1 -1
  1254. package/dist/esm/components/sections/content-section.d.ts.map +1 -1
  1255. package/dist/esm/components/sections/content-section.js.map +1 -1
  1256. package/dist/esm/components/sections/pagination.d.ts.map +1 -1
  1257. package/dist/esm/components/sections/pagination.js.map +1 -1
  1258. package/dist/esm/components/sections/section-grouping.shared.d.ts.map +1 -1
  1259. package/dist/esm/components/sections/section-grouping.shared.js.map +1 -1
  1260. package/dist/esm/components/sections/stacked-layout.d.ts.map +1 -1
  1261. package/dist/esm/components/sections/stacked-layout.js.map +1 -1
  1262. package/dist/esm/components/sections/stepper.d.ts +5 -0
  1263. package/dist/esm/components/sections/stepper.d.ts.map +1 -1
  1264. package/dist/esm/components/sections/stepper.js.map +1 -1
  1265. package/dist/esm/components/sections/surface.d.ts.map +1 -1
  1266. package/dist/esm/components/sections/surface.js +12 -3
  1267. package/dist/esm/components/sections/surface.js.map +1 -1
  1268. package/dist/esm/components/sections/table.d.ts.map +1 -1
  1269. package/dist/esm/components/sections/table.js.map +1 -1
  1270. package/dist/esm/components/sections/tabs.d.ts.map +1 -1
  1271. package/dist/esm/components/sections/tabs.js.map +1 -1
  1272. package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.d.ts +43 -0
  1273. package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.d.ts.map +1 -0
  1274. package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.js +129 -0
  1275. package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.js.map +1 -0
  1276. package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.labels.d.ts +3 -0
  1277. package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.labels.d.ts.map +1 -0
  1278. package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.labels.js +34 -0
  1279. package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.labels.js.map +1 -0
  1280. package/dist/esm/components/settings/AppPage_AppearanceSettings.d.ts.map +1 -1
  1281. package/dist/esm/components/settings/AppPage_AppearanceSettings.js +9 -11
  1282. package/dist/esm/components/settings/AppPage_AppearanceSettings.js.map +1 -1
  1283. package/dist/esm/components/settings/AppPage_AppearanceSettings.labels.d.ts.map +1 -1
  1284. package/dist/esm/components/settings/AppPage_AppearanceSettings.labels.js +3 -2
  1285. package/dist/esm/components/settings/AppPage_AppearanceSettings.labels.js.map +1 -1
  1286. package/dist/esm/components/settings/AppPage_BillingSettings.d.ts +4 -2
  1287. package/dist/esm/components/settings/AppPage_BillingSettings.d.ts.map +1 -1
  1288. package/dist/esm/components/settings/AppPage_BillingSettings.js +21 -3
  1289. package/dist/esm/components/settings/AppPage_BillingSettings.js.map +1 -1
  1290. package/dist/esm/components/settings/AppPage_BillingSettings.labels.d.ts.map +1 -1
  1291. package/dist/esm/components/settings/AppPage_BillingSettings.labels.js +5 -10
  1292. package/dist/esm/components/settings/AppPage_BillingSettings.labels.js.map +1 -1
  1293. package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.d.ts +58 -0
  1294. package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.d.ts.map +1 -1
  1295. package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.js +243 -40
  1296. package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.js.map +1 -1
  1297. package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.labels.d.ts.map +1 -1
  1298. package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.labels.js +67 -6
  1299. package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.labels.js.map +1 -1
  1300. package/dist/esm/components/settings/AppPage_InvitationsSettings.d.ts.map +1 -1
  1301. package/dist/esm/components/settings/AppPage_InvitationsSettings.js +19 -11
  1302. package/dist/esm/components/settings/AppPage_InvitationsSettings.js.map +1 -1
  1303. package/dist/esm/components/settings/AppPage_InvitationsSettings.labels.d.ts.map +1 -1
  1304. package/dist/esm/components/settings/AppPage_InvitationsSettings.labels.js +4 -2
  1305. package/dist/esm/components/settings/AppPage_InvitationsSettings.labels.js.map +1 -1
  1306. package/dist/esm/components/settings/SettingsHub.d.ts.map +1 -1
  1307. package/dist/esm/components/settings/SettingsHub.js +3 -0
  1308. package/dist/esm/components/settings/SettingsHub.js.map +1 -1
  1309. package/dist/esm/components/settings/SettingsHub.labels.d.ts.map +1 -1
  1310. package/dist/esm/components/settings/SettingsHub.labels.js.map +1 -1
  1311. package/dist/esm/components/settings/SettingsResourceOperationPanel.d.ts.map +1 -1
  1312. package/dist/esm/components/settings/SettingsResourceOperationPanel.js +16 -1
  1313. package/dist/esm/components/settings/SettingsResourceOperationPanel.js.map +1 -1
  1314. package/dist/esm/components/settings/SettingsSectionNavigationHost.d.ts.map +1 -1
  1315. package/dist/esm/components/settings/SettingsSectionNavigationHost.js.map +1 -1
  1316. package/dist/esm/components/settings/useOwnerProviderConnections.d.ts +59 -0
  1317. package/dist/esm/components/settings/useOwnerProviderConnections.d.ts.map +1 -0
  1318. package/dist/esm/components/settings/useOwnerProviderConnections.js +136 -0
  1319. package/dist/esm/components/settings/useOwnerProviderConnections.js.map +1 -0
  1320. package/dist/esm/components/typography/heading.d.ts.map +1 -1
  1321. package/dist/esm/components/typography/heading.js.map +1 -1
  1322. package/dist/esm/components/typography/label.d.ts.map +1 -1
  1323. package/dist/esm/components/typography/label.js.map +1 -1
  1324. package/dist/esm/components/typography/link.d.ts.map +1 -1
  1325. package/dist/esm/components/typography/link.js.map +1 -1
  1326. package/dist/esm/components/typography/text.d.ts.map +1 -1
  1327. package/dist/esm/components/typography/text.js.map +1 -1
  1328. package/dist/esm/components/typography/truncated-text.d.ts.map +1 -1
  1329. package/dist/esm/components/typography/truncated-text.js.map +1 -1
  1330. package/dist/esm/components/views/ViewLayout_Header.d.ts.map +1 -1
  1331. package/dist/esm/components/views/ViewLayout_Header.js.map +1 -1
  1332. package/dist/esm/components/views/ViewNotFound.d.ts.map +1 -1
  1333. package/dist/esm/components/views/ViewNotFound.js.map +1 -1
  1334. package/dist/esm/components/views/ViewNotFound.labels.d.ts.map +1 -1
  1335. package/dist/esm/components/views/ViewNotFound.labels.js.map +1 -1
  1336. package/dist/esm/components/views/chart-view/ChartEmptyState.d.ts.map +1 -1
  1337. package/dist/esm/components/views/chart-view/ChartEmptyState.js.map +1 -1
  1338. package/dist/esm/components/views/chart-view/ChartErrorState.d.ts.map +1 -1
  1339. package/dist/esm/components/views/chart-view/ChartErrorState.js.map +1 -1
  1340. package/dist/esm/components/views/chart-view/ChartLoadingSkeleton.d.ts.map +1 -1
  1341. package/dist/esm/components/views/chart-view/ChartLoadingSkeleton.js.map +1 -1
  1342. package/dist/esm/components/views/chart-view/ChartView.d.ts.map +1 -1
  1343. package/dist/esm/components/views/chart-view/ChartView.js.map +1 -1
  1344. package/dist/esm/components/views/chart-view/ChartView.labels.d.ts.map +1 -1
  1345. package/dist/esm/components/views/chart-view/ChartView.labels.js.map +1 -1
  1346. package/dist/esm/components/views/chart-view/ChartView.lazy.d.ts.map +1 -1
  1347. package/dist/esm/components/views/chart-view/ChartView.lazy.js.map +1 -1
  1348. package/dist/esm/components/views/chart-view/ChartWidget.d.ts.map +1 -1
  1349. package/dist/esm/components/views/chart-view/ChartWidget.js.map +1 -1
  1350. package/dist/esm/components/views/chart-view/ChartWidget.labels.d.ts.map +1 -1
  1351. package/dist/esm/components/views/chart-view/ChartWidget.labels.js.map +1 -1
  1352. package/dist/esm/components/views/chart-view/WildoEChart.d.ts.map +1 -1
  1353. package/dist/esm/components/views/chart-view/WildoEChart.js.map +1 -1
  1354. package/dist/esm/components/views/chart-view/chart-export.utils.d.ts.map +1 -1
  1355. package/dist/esm/components/views/chart-view/chart-export.utils.js.map +1 -1
  1356. package/dist/esm/components/views/chart-view/chart-runtime.utils.d.ts.map +1 -1
  1357. package/dist/esm/components/views/chart-view/chart-runtime.utils.js.map +1 -1
  1358. package/dist/esm/components/views/chart-view/chart-theme-bridge.d.ts.map +1 -1
  1359. package/dist/esm/components/views/chart-view/chart-theme-bridge.js.map +1 -1
  1360. package/dist/esm/components/views/chart-view/chart-view.utils.d.ts +5 -0
  1361. package/dist/esm/components/views/chart-view/chart-view.utils.d.ts.map +1 -1
  1362. package/dist/esm/components/views/chart-view/chart-view.utils.js +5 -0
  1363. package/dist/esm/components/views/chart-view/chart-view.utils.js.map +1 -1
  1364. package/dist/esm/components/views/chart-view/dev/ChartView.example.d.ts.map +1 -1
  1365. package/dist/esm/components/views/chart-view/dev/ChartView.example.js.map +1 -1
  1366. package/dist/esm/components/views/chart-view/echarts-setup.d.ts.map +1 -1
  1367. package/dist/esm/components/views/chart-view/echarts-setup.js.map +1 -1
  1368. package/dist/esm/components/views/chart-view/enum-color-bridge.d.ts.map +1 -1
  1369. package/dist/esm/components/views/chart-view/enum-color-bridge.js.map +1 -1
  1370. package/dist/esm/components/views/chart-view/option-builder/builder-utils.d.ts.map +1 -1
  1371. package/dist/esm/components/views/chart-view/option-builder/builder-utils.js.map +1 -1
  1372. package/dist/esm/components/views/chart-view/option-builder/builders/bar-family.builder.d.ts.map +1 -1
  1373. package/dist/esm/components/views/chart-view/option-builder/builders/bar-family.builder.js.map +1 -1
  1374. package/dist/esm/components/views/chart-view/option-builder/builders/composed.builder.d.ts.map +1 -1
  1375. package/dist/esm/components/views/chart-view/option-builder/builders/composed.builder.js.map +1 -1
  1376. package/dist/esm/components/views/chart-view/option-builder/builders/funnel.builder.d.ts.map +1 -1
  1377. package/dist/esm/components/views/chart-view/option-builder/builders/funnel.builder.js.map +1 -1
  1378. package/dist/esm/components/views/chart-view/option-builder/builders/gauge.builder.d.ts.map +1 -1
  1379. package/dist/esm/components/views/chart-view/option-builder/builders/gauge.builder.js.map +1 -1
  1380. package/dist/esm/components/views/chart-view/option-builder/builders/heatmap.builder.d.ts.map +1 -1
  1381. package/dist/esm/components/views/chart-view/option-builder/builders/heatmap.builder.js.map +1 -1
  1382. package/dist/esm/components/views/chart-view/option-builder/builders/hierarchical-family.builder.d.ts.map +1 -1
  1383. package/dist/esm/components/views/chart-view/option-builder/builders/hierarchical-family.builder.js.map +1 -1
  1384. package/dist/esm/components/views/chart-view/option-builder/builders/line-family.builder.d.ts.map +1 -1
  1385. package/dist/esm/components/views/chart-view/option-builder/builders/line-family.builder.js.map +1 -1
  1386. package/dist/esm/components/views/chart-view/option-builder/builders/parallel.builder.d.ts.map +1 -1
  1387. package/dist/esm/components/views/chart-view/option-builder/builders/parallel.builder.js.map +1 -1
  1388. package/dist/esm/components/views/chart-view/option-builder/builders/pie-family.builder.d.ts.map +1 -1
  1389. package/dist/esm/components/views/chart-view/option-builder/builders/pie-family.builder.js.map +1 -1
  1390. package/dist/esm/components/views/chart-view/option-builder/builders/radar.builder.d.ts.map +1 -1
  1391. package/dist/esm/components/views/chart-view/option-builder/builders/radar.builder.js.map +1 -1
  1392. package/dist/esm/components/views/chart-view/option-builder/builders/sankey.builder.d.ts.map +1 -1
  1393. package/dist/esm/components/views/chart-view/option-builder/builders/sankey.builder.js.map +1 -1
  1394. package/dist/esm/components/views/chart-view/option-builder/builders/scatter-family.builder.d.ts.map +1 -1
  1395. package/dist/esm/components/views/chart-view/option-builder/builders/scatter-family.builder.js.map +1 -1
  1396. package/dist/esm/components/views/chart-view/option-builder/builders/statistical-family.builder.d.ts.map +1 -1
  1397. package/dist/esm/components/views/chart-view/option-builder/builders/statistical-family.builder.js.map +1 -1
  1398. package/dist/esm/components/views/chart-view/option-builder/chart-type-builder.interface.d.ts.map +1 -1
  1399. package/dist/esm/components/views/chart-view/option-builder/chart-type-builder.interface.js.map +1 -1
  1400. package/dist/esm/components/views/chart-view/option-builder/echarts-option-builder.d.ts.map +1 -1
  1401. package/dist/esm/components/views/chart-view/option-builder/echarts-option-builder.js.map +1 -1
  1402. package/dist/esm/components/views/chart-view/useResourceChartData.d.ts +50 -0
  1403. package/dist/esm/components/views/chart-view/useResourceChartData.d.ts.map +1 -0
  1404. package/dist/esm/components/views/chart-view/useResourceChartData.js +72 -0
  1405. package/dist/esm/components/views/chart-view/useResourceChartData.js.map +1 -0
  1406. package/dist/esm/components/views/composite-view/CompositeLayout.d.ts.map +1 -1
  1407. package/dist/esm/components/views/composite-view/CompositeLayout.js +2 -1
  1408. package/dist/esm/components/views/composite-view/CompositeLayout.js.map +1 -1
  1409. package/dist/esm/components/views/composite-view/CompositeView.d.ts.map +1 -1
  1410. package/dist/esm/components/views/composite-view/CompositeView.js.map +1 -1
  1411. package/dist/esm/components/views/composite-view/CompositeViewContext.d.ts.map +1 -1
  1412. package/dist/esm/components/views/composite-view/CompositeViewContext.js.map +1 -1
  1413. package/dist/esm/components/views/composite-view/useCompositeResourceOperationContextBuilder.d.ts.map +1 -1
  1414. package/dist/esm/components/views/composite-view/useCompositeResourceOperationContextBuilder.js.map +1 -1
  1415. package/dist/esm/components/views/composite-view/useHostRecordDerivedParentContext.d.ts.map +1 -1
  1416. package/dist/esm/components/views/composite-view/useHostRecordDerivedParentContext.js.map +1 -1
  1417. package/dist/esm/components/views/execution-view/ExecutionView.d.ts.map +1 -1
  1418. package/dist/esm/components/views/execution-view/ExecutionView.js.map +1 -1
  1419. package/dist/esm/components/views/execution-view/ExecutionView.labels.d.ts.map +1 -1
  1420. package/dist/esm/components/views/execution-view/ExecutionView.labels.js.map +1 -1
  1421. package/dist/esm/components/views/flows-actors-view/FlowsActorsView.d.ts.map +1 -1
  1422. package/dist/esm/components/views/flows-actors-view/FlowsActorsView.js.map +1 -1
  1423. package/dist/esm/components/views/flows-actors-view/FlowsActorsView.labels.d.ts.map +1 -1
  1424. package/dist/esm/components/views/flows-actors-view/FlowsActorsView.labels.js.map +1 -1
  1425. package/dist/esm/components/views/full-custom-view/FullCustomView.d.ts.map +1 -1
  1426. package/dist/esm/components/views/full-custom-view/FullCustomView.js.map +1 -1
  1427. package/dist/esm/components/views/onboarding-view/OnboardingView.d.ts.map +1 -1
  1428. package/dist/esm/components/views/onboarding-view/OnboardingView.js.map +1 -1
  1429. package/dist/esm/components/views/onboarding-view/OnboardingView.labels.d.ts.map +1 -1
  1430. package/dist/esm/components/views/onboarding-view/OnboardingView.labels.js.map +1 -1
  1431. package/dist/esm/components/views/onboarding-view/onboarding-view.utils.d.ts.map +1 -1
  1432. package/dist/esm/components/views/onboarding-view/onboarding-view.utils.js.map +1 -1
  1433. package/dist/esm/core/app-shell/AppShellBuildingBlocks.d.ts +89 -0
  1434. package/dist/esm/core/app-shell/AppShellBuildingBlocks.d.ts.map +1 -0
  1435. package/dist/esm/core/app-shell/AppShellBuildingBlocks.js +190 -0
  1436. package/dist/esm/core/app-shell/AppShellBuildingBlocks.js.map +1 -0
  1437. package/dist/esm/core/app-shell/PortalContainerContext.d.ts +5 -2
  1438. package/dist/esm/core/app-shell/PortalContainerContext.d.ts.map +1 -1
  1439. package/dist/esm/core/app-shell/PortalContainerContext.js +5 -2
  1440. package/dist/esm/core/app-shell/PortalContainerContext.js.map +1 -1
  1441. package/dist/esm/core/app-shell/app-shell.schemas.d.ts +18 -9
  1442. package/dist/esm/core/app-shell/app-shell.schemas.d.ts.map +1 -1
  1443. package/dist/esm/core/app-shell/app-shell.schemas.js +1 -0
  1444. package/dist/esm/core/app-shell/app-shell.schemas.js.map +1 -1
  1445. package/dist/esm/core/app-shell/app-shell.utils.d.ts.map +1 -1
  1446. package/dist/esm/core/app-shell/app-shell.utils.js.map +1 -1
  1447. package/dist/esm/core/app-shell/hosted-components.utils.d.ts.map +1 -1
  1448. package/dist/esm/core/app-shell/hosted-components.utils.js.map +1 -1
  1449. package/dist/esm/core/app-shell/useAppShellLayout.d.ts +10 -0
  1450. package/dist/esm/core/app-shell/useAppShellLayout.d.ts.map +1 -1
  1451. package/dist/esm/core/app-shell/useAppShellLayout.js +28 -5
  1452. package/dist/esm/core/app-shell/useAppShellLayout.js.map +1 -1
  1453. package/dist/esm/core/app-shell/usePublicShellLayout.d.ts.map +1 -1
  1454. package/dist/esm/core/app-shell/usePublicShellLayout.js +38 -0
  1455. package/dist/esm/core/app-shell/usePublicShellLayout.js.map +1 -1
  1456. package/dist/esm/core/automated-layout/automated-layout.frontend.schemas.d.ts.map +1 -1
  1457. package/dist/esm/core/automated-layout/automated-layout.frontend.schemas.js.map +1 -1
  1458. package/dist/esm/core/automated-layout/automated-layout.frontend.utils.d.ts +15 -1
  1459. package/dist/esm/core/automated-layout/automated-layout.frontend.utils.d.ts.map +1 -1
  1460. package/dist/esm/core/automated-layout/automated-layout.frontend.utils.js +47 -13
  1461. package/dist/esm/core/automated-layout/automated-layout.frontend.utils.js.map +1 -1
  1462. package/dist/esm/core/automated-layout/composite-value-defaults.frontend.utils.d.ts.map +1 -1
  1463. package/dist/esm/core/automated-layout/composite-value-defaults.frontend.utils.js.map +1 -1
  1464. package/dist/esm/core/automated-layout/default-layout-generator.frontend.utils.d.ts.map +1 -1
  1465. package/dist/esm/core/automated-layout/default-layout-generator.frontend.utils.js.map +1 -1
  1466. package/dist/esm/core/billing/BillingContext.d.ts +25 -2
  1467. package/dist/esm/core/billing/BillingContext.d.ts.map +1 -1
  1468. package/dist/esm/core/billing/BillingContext.js +16 -25
  1469. package/dist/esm/core/billing/BillingContext.js.map +1 -1
  1470. package/dist/esm/core/billing/BillingErrorNotifier.d.ts.map +1 -1
  1471. package/dist/esm/core/billing/BillingErrorNotifier.js.map +1 -1
  1472. package/dist/esm/core/billing/billing-launcher.d.ts.map +1 -1
  1473. package/dist/esm/core/billing/billing-launcher.js.map +1 -1
  1474. package/dist/esm/core/billing/billing-provider-display.frontend.utils.d.ts +11 -3
  1475. package/dist/esm/core/billing/billing-provider-display.frontend.utils.d.ts.map +1 -1
  1476. package/dist/esm/core/billing/billing-provider-display.frontend.utils.js +14 -8
  1477. package/dist/esm/core/billing/billing-provider-display.frontend.utils.js.map +1 -1
  1478. package/dist/esm/core/billing/useBilling.d.ts.map +1 -1
  1479. package/dist/esm/core/billing/useBilling.js.map +1 -1
  1480. package/dist/esm/core/billing/useBillingAction.d.ts.map +1 -1
  1481. package/dist/esm/core/billing/useBillingAction.js.map +1 -1
  1482. package/dist/esm/core/billing/useBillingPlanChange.d.ts.map +1 -1
  1483. package/dist/esm/core/billing/useBillingPlanChange.js +2 -0
  1484. package/dist/esm/core/billing/useBillingPlanChange.js.map +1 -1
  1485. package/dist/esm/core/billing/useSafeBillingActionExecutor.d.ts.map +1 -1
  1486. package/dist/esm/core/billing/useSafeBillingActionExecutor.js.map +1 -1
  1487. package/dist/esm/core/branding/useBrandIdentity.d.ts.map +1 -1
  1488. package/dist/esm/core/branding/useBrandIdentity.js.map +1 -1
  1489. package/dist/esm/core/branding/useBrandPresentation.d.ts.map +1 -1
  1490. package/dist/esm/core/branding/useBrandPresentation.js.map +1 -1
  1491. package/dist/esm/core/commons/devices.frontend.schemas.d.ts.map +1 -1
  1492. package/dist/esm/core/commons/devices.frontend.schemas.js.map +1 -1
  1493. package/dist/esm/core/commons/local-storage.frontend.schemas.d.ts.map +1 -1
  1494. package/dist/esm/core/commons/local-storage.frontend.schemas.js.map +1 -1
  1495. package/dist/esm/core/commons/window-event.frontend.schemas.d.ts.map +1 -1
  1496. package/dist/esm/core/commons/window-event.frontend.schemas.js.map +1 -1
  1497. package/dist/esm/core/companion/companion-exports.frontend.definitions.d.ts.map +1 -1
  1498. package/dist/esm/core/companion/companion-exports.frontend.definitions.js.map +1 -1
  1499. package/dist/esm/core/components-registry/ComponentNotInjected.d.ts.map +1 -1
  1500. package/dist/esm/core/components-registry/ComponentNotInjected.js.map +1 -1
  1501. package/dist/esm/core/components-registry/assert-registry-completeness.frontend.helper.d.ts.map +1 -1
  1502. package/dist/esm/core/components-registry/assert-registry-completeness.frontend.helper.js +1 -0
  1503. package/dist/esm/core/components-registry/assert-registry-completeness.frontend.helper.js.map +1 -1
  1504. package/dist/esm/core/components-registry/component-registry-loader.frontend.service.d.ts.map +1 -1
  1505. package/dist/esm/core/components-registry/component-registry-loader.frontend.service.js.map +1 -1
  1506. package/dist/esm/core/components-registry/component-registry.frontend.schemas.d.ts.map +1 -1
  1507. package/dist/esm/core/components-registry/component-registry.frontend.schemas.js.map +1 -1
  1508. package/dist/esm/core/components-registry/component-registry.frontend.service.d.ts.map +1 -1
  1509. package/dist/esm/core/components-registry/component-registry.frontend.service.js.map +1 -1
  1510. package/dist/esm/core/components-registry/component-resolver.frontend.helper.d.ts.map +1 -1
  1511. package/dist/esm/core/components-registry/component-resolver.frontend.helper.js.map +1 -1
  1512. package/dist/esm/core/components-registry/provider-component-registry.frontend.service.d.ts +29 -229
  1513. package/dist/esm/core/components-registry/provider-component-registry.frontend.service.d.ts.map +1 -1
  1514. package/dist/esm/core/components-registry/provider-component-registry.frontend.service.js +29 -327
  1515. package/dist/esm/core/components-registry/provider-component-registry.frontend.service.js.map +1 -1
  1516. package/dist/esm/core/components-registry/register-framework-layouts.d.ts.map +1 -1
  1517. package/dist/esm/core/components-registry/register-framework-layouts.js.map +1 -1
  1518. package/dist/esm/core/components-registry/useProviderComponent.frontend.hooks.d.ts +17 -27
  1519. package/dist/esm/core/components-registry/useProviderComponent.frontend.hooks.d.ts.map +1 -1
  1520. package/dist/esm/core/components-registry/useProviderComponent.frontend.hooks.js +28 -48
  1521. package/dist/esm/core/components-registry/useProviderComponent.frontend.hooks.js.map +1 -1
  1522. package/dist/esm/core/config/app-configuration-frontend.schemas.d.ts +21 -11
  1523. package/dist/esm/core/config/app-configuration-frontend.schemas.d.ts.map +1 -1
  1524. package/dist/esm/core/config/app-configuration-frontend.schemas.js +4 -4
  1525. package/dist/esm/core/config/app-configuration-frontend.schemas.js.map +1 -1
  1526. package/dist/esm/core/config/app-level-components.frontend.schemas.d.ts +17 -0
  1527. package/dist/esm/core/config/app-level-components.frontend.schemas.d.ts.map +1 -1
  1528. package/dist/esm/core/config/app-level-components.frontend.schemas.js +17 -0
  1529. package/dist/esm/core/config/app-level-components.frontend.schemas.js.map +1 -1
  1530. package/dist/esm/core/config/chart-view.frontend.schemas.d.ts +10 -10
  1531. package/dist/esm/core/config/chart-view.frontend.schemas.d.ts.map +1 -1
  1532. package/dist/esm/core/config/chart-view.frontend.schemas.js.map +1 -1
  1533. package/dist/esm/core/config/composite-view.schemas.d.ts +4 -4
  1534. package/dist/esm/core/config/composite-view.schemas.d.ts.map +1 -1
  1535. package/dist/esm/core/config/composite-view.schemas.js.map +1 -1
  1536. package/dist/esm/core/config/config-merge-utilities.d.ts.map +1 -1
  1537. package/dist/esm/core/config/config-merge-utilities.js.map +1 -1
  1538. package/dist/esm/core/config/engine-settings-destinations.d.ts.map +1 -1
  1539. package/dist/esm/core/config/engine-settings-destinations.js +221 -6
  1540. package/dist/esm/core/config/engine-settings-destinations.js.map +1 -1
  1541. package/dist/esm/core/config/execution-view.schemas.d.ts.map +1 -1
  1542. package/dist/esm/core/config/execution-view.schemas.js.map +1 -1
  1543. package/dist/esm/core/config/flows-actors-view.schemas.d.ts.map +1 -1
  1544. package/dist/esm/core/config/flows-actors-view.schemas.js.map +1 -1
  1545. package/dist/esm/core/config/full-custom-view.schemas.d.ts.map +1 -1
  1546. package/dist/esm/core/config/full-custom-view.schemas.js.map +1 -1
  1547. package/dist/esm/core/config/inserted-view-launcher.schemas.d.ts.map +1 -1
  1548. package/dist/esm/core/config/inserted-view-launcher.schemas.js.map +1 -1
  1549. package/dist/esm/core/config/inserted-view.frontend.schemas.d.ts.map +1 -1
  1550. package/dist/esm/core/config/inserted-view.frontend.schemas.js.map +1 -1
  1551. package/dist/esm/core/config/launcher-items.frontend.schemas.d.ts +8 -0
  1552. package/dist/esm/core/config/launcher-items.frontend.schemas.d.ts.map +1 -1
  1553. package/dist/esm/core/config/launcher-items.frontend.schemas.js +1 -0
  1554. package/dist/esm/core/config/launcher-items.frontend.schemas.js.map +1 -1
  1555. package/dist/esm/core/config/onboarding-view.frontend.schemas.d.ts.map +1 -1
  1556. package/dist/esm/core/config/onboarding-view.frontend.schemas.js.map +1 -1
  1557. package/dist/esm/core/config/resource-owned-view-resolution.frontend.utils.d.ts.map +1 -1
  1558. package/dist/esm/core/config/resource-owned-view-resolution.frontend.utils.js.map +1 -1
  1559. package/dist/esm/core/config/settings-hub-gating.frontend.utils.d.ts.map +1 -1
  1560. package/dist/esm/core/config/settings-hub-gating.frontend.utils.js.map +1 -1
  1561. package/dist/esm/core/config/settings-hub-presentation.frontend.utils.d.ts.map +1 -1
  1562. package/dist/esm/core/config/settings-hub-presentation.frontend.utils.js.map +1 -1
  1563. package/dist/esm/core/config/settings-hub.frontend.schemas.d.ts +10 -1
  1564. package/dist/esm/core/config/settings-hub.frontend.schemas.d.ts.map +1 -1
  1565. package/dist/esm/core/config/settings-hub.frontend.schemas.js +9 -0
  1566. package/dist/esm/core/config/settings-hub.frontend.schemas.js.map +1 -1
  1567. package/dist/esm/core/config/useSettingsHubConfig.d.ts.map +1 -1
  1568. package/dist/esm/core/config/useSettingsHubConfig.js.map +1 -1
  1569. package/dist/esm/core/config/useVisibleSettingsHubConfig.d.ts.map +1 -1
  1570. package/dist/esm/core/config/useVisibleSettingsHubConfig.js.map +1 -1
  1571. package/dist/esm/core/config/verify-feature-references.frontend.d.ts.map +1 -1
  1572. package/dist/esm/core/config/verify-feature-references.frontend.js.map +1 -1
  1573. package/dist/esm/core/config/verify-launcher-content.d.ts.map +1 -1
  1574. package/dist/esm/core/config/verify-launcher-content.js +30 -19
  1575. package/dist/esm/core/config/verify-launcher-content.js.map +1 -1
  1576. package/dist/esm/core/config/verify-settings-hub-content.d.ts.map +1 -1
  1577. package/dist/esm/core/config/verify-settings-hub-content.js.map +1 -1
  1578. package/dist/esm/core/config/view-label-declaration.schemas.d.ts.map +1 -1
  1579. package/dist/esm/core/config/view-label-declaration.schemas.js.map +1 -1
  1580. package/dist/esm/core/config/views-frontend.schemas.d.ts.map +1 -1
  1581. package/dist/esm/core/config/views-frontend.schemas.js.map +1 -1
  1582. package/dist/esm/core/enums/common-enum-registry.d.ts.map +1 -1
  1583. package/dist/esm/core/enums/common-enum-registry.js.map +1 -1
  1584. package/dist/esm/core/errors/ErrorBoundary.d.ts.map +1 -1
  1585. package/dist/esm/core/errors/ErrorBoundary.js.map +1 -1
  1586. package/dist/esm/core/errors/ErrorContext.d.ts.map +1 -1
  1587. package/dist/esm/core/errors/ErrorContext.js +9 -1
  1588. package/dist/esm/core/errors/ErrorContext.js.map +1 -1
  1589. package/dist/esm/core/errors/ErrorModalContent.d.ts.map +1 -1
  1590. package/dist/esm/core/errors/ErrorModalContent.js.map +1 -1
  1591. package/dist/esm/core/errors/GlobalErrorHandler.d.ts.map +1 -1
  1592. package/dist/esm/core/errors/GlobalErrorHandler.js +5 -4
  1593. package/dist/esm/core/errors/GlobalErrorHandler.js.map +1 -1
  1594. package/dist/esm/core/errors/RouterErrorBoundary.d.ts.map +1 -1
  1595. package/dist/esm/core/errors/RouterErrorBoundary.js +1 -1
  1596. package/dist/esm/core/errors/RouterErrorBoundary.js.map +1 -1
  1597. package/dist/esm/core/errors/error-management.frontend.service.d.ts.map +1 -1
  1598. package/dist/esm/core/errors/error-management.frontend.service.js.map +1 -1
  1599. package/dist/esm/core/errors/errors-builder.frontend.services.d.ts +2 -2
  1600. package/dist/esm/core/errors/errors-builder.frontend.services.d.ts.map +1 -1
  1601. package/dist/esm/core/errors/errors-builder.frontend.services.js +4 -4
  1602. package/dist/esm/core/errors/errors-builder.frontend.services.js.map +1 -1
  1603. package/dist/esm/core/errors/errors.frontend.schemas.d.ts.map +1 -1
  1604. package/dist/esm/core/errors/errors.frontend.schemas.js.map +1 -1
  1605. package/dist/esm/core/errors/http-error-behavior.frontend.schemas.d.ts.map +1 -1
  1606. package/dist/esm/core/errors/http-error-behavior.frontend.schemas.js.map +1 -1
  1607. package/dist/esm/core/errors/useError.d.ts.map +1 -1
  1608. package/dist/esm/core/errors/useError.js.map +1 -1
  1609. package/dist/esm/core/errors/useUserFacingErrorMessage.d.ts.map +1 -1
  1610. package/dist/esm/core/errors/useUserFacingErrorMessage.js.map +1 -1
  1611. package/dist/esm/core/errors/user-facing-error-message.frontend.utils.d.ts.map +1 -1
  1612. package/dist/esm/core/errors/user-facing-error-message.frontend.utils.js +1 -1
  1613. package/dist/esm/core/errors/user-facing-error-message.frontend.utils.js.map +1 -1
  1614. package/dist/esm/core/errors/withErrorBoundary.d.ts.map +1 -1
  1615. package/dist/esm/core/errors/withErrorBoundary.js.map +1 -1
  1616. package/dist/esm/core/events/EventBusContext.d.ts.map +1 -1
  1617. package/dist/esm/core/events/EventBusContext.js.map +1 -1
  1618. package/dist/esm/core/events/NotificationContext.d.ts.map +1 -1
  1619. package/dist/esm/core/events/NotificationContext.js +23 -5
  1620. package/dist/esm/core/events/NotificationContext.js.map +1 -1
  1621. package/dist/esm/core/events/event-bus.frontend.service.d.ts.map +1 -1
  1622. package/dist/esm/core/events/event-bus.frontend.service.js.map +1 -1
  1623. package/dist/esm/core/events/events.frontend.schemas.d.ts +110 -43
  1624. package/dist/esm/core/events/events.frontend.schemas.d.ts.map +1 -1
  1625. package/dist/esm/core/events/events.frontend.schemas.js +89 -15
  1626. package/dist/esm/core/events/events.frontend.schemas.js.map +1 -1
  1627. package/dist/esm/core/events/notification-display-policy.frontend.schemas.d.ts.map +1 -1
  1628. package/dist/esm/core/events/notification-display-policy.frontend.schemas.js.map +1 -1
  1629. package/dist/esm/core/events/toast.d.ts.map +1 -1
  1630. package/dist/esm/core/events/toast.js.map +1 -1
  1631. package/dist/esm/core/events/useEventBus.d.ts.map +1 -1
  1632. package/dist/esm/core/events/useEventBus.js.map +1 -1
  1633. package/dist/esm/core/events/useNotification.d.ts.map +1 -1
  1634. package/dist/esm/core/events/useNotification.js.map +1 -1
  1635. package/dist/esm/core/execution/ExecutionDirtyMarkerScopeContext.d.ts.map +1 -1
  1636. package/dist/esm/core/execution/ExecutionDirtyMarkerScopeContext.js.map +1 -1
  1637. package/dist/esm/core/execution/ExecutionRuntimeContext.d.ts.map +1 -1
  1638. package/dist/esm/core/execution/ExecutionRuntimeContext.js.map +1 -1
  1639. package/dist/esm/core/execution/execution-anchor.utils.d.ts.map +1 -1
  1640. package/dist/esm/core/execution/execution-anchor.utils.js.map +1 -1
  1641. package/dist/esm/core/execution/execution-dirty-markers.utils.d.ts.map +1 -1
  1642. package/dist/esm/core/execution/execution-dirty-markers.utils.js.map +1 -1
  1643. package/dist/esm/core/execution/execution-failure-handling.utils.d.ts.map +1 -1
  1644. package/dist/esm/core/execution/execution-failure-handling.utils.js.map +1 -1
  1645. package/dist/esm/core/execution/execution-outcome-emission.utils.d.ts.map +1 -1
  1646. package/dist/esm/core/execution/execution-outcome-emission.utils.js.map +1 -1
  1647. package/dist/esm/core/execution/execution-participation.utils.d.ts.map +1 -1
  1648. package/dist/esm/core/execution/execution-participation.utils.js.map +1 -1
  1649. package/dist/esm/core/execution/useExecution.d.ts.map +1 -1
  1650. package/dist/esm/core/execution/useExecution.js.map +1 -1
  1651. package/dist/esm/core/execution/useExecutionDirtyBridge.d.ts.map +1 -1
  1652. package/dist/esm/core/execution/useExecutionDirtyBridge.js.map +1 -1
  1653. package/dist/esm/core/execution/useExecutionParticipationDataPrefetch.d.ts.map +1 -1
  1654. package/dist/esm/core/execution/useExecutionParticipationDataPrefetch.js.map +1 -1
  1655. package/dist/esm/core/execution/useExecutionParticipationPrefetch.d.ts.map +1 -1
  1656. package/dist/esm/core/execution/useExecutionParticipationPrefetch.js.map +1 -1
  1657. package/dist/esm/core/execution/useExecutionParticipationRMM.d.ts +2 -0
  1658. package/dist/esm/core/execution/useExecutionParticipationRMM.d.ts.map +1 -1
  1659. package/dist/esm/core/execution/useExecutionParticipationRMM.js +2 -1
  1660. package/dist/esm/core/execution/useExecutionParticipationRMM.js.map +1 -1
  1661. package/dist/esm/core/execution/useExecutionResourceOperationContextBuilder.d.ts.map +1 -1
  1662. package/dist/esm/core/execution/useExecutionResourceOperationContextBuilder.js.map +1 -1
  1663. package/dist/esm/core/execution/useExecutionResourceOperationSurface.d.ts +1 -1
  1664. package/dist/esm/core/execution/useExecutionResourceOperationSurface.d.ts.map +1 -1
  1665. package/dist/esm/core/execution/useExecutionResourceOperationSurface.js +5 -2
  1666. package/dist/esm/core/execution/useExecutionResourceOperationSurface.js.map +1 -1
  1667. package/dist/esm/core/external-providers/ConsentBasedProviderSdks.d.ts +63 -0
  1668. package/dist/esm/core/external-providers/ConsentBasedProviderSdks.d.ts.map +1 -0
  1669. package/dist/esm/core/external-providers/ConsentBasedProviderSdks.js +131 -0
  1670. package/dist/esm/core/external-providers/ConsentBasedProviderSdks.js.map +1 -0
  1671. package/dist/esm/core/external-providers/ProviderAddressLookupCombobox.d.ts +61 -0
  1672. package/dist/esm/core/external-providers/ProviderAddressLookupCombobox.d.ts.map +1 -0
  1673. package/dist/esm/core/external-providers/ProviderAddressLookupCombobox.js +178 -0
  1674. package/dist/esm/core/external-providers/ProviderAddressLookupCombobox.js.map +1 -0
  1675. package/dist/esm/core/external-providers/ProviderAddressLookupHost.d.ts +52 -0
  1676. package/dist/esm/core/external-providers/ProviderAddressLookupHost.d.ts.map +1 -0
  1677. package/dist/esm/core/external-providers/ProviderAddressLookupHost.js +144 -0
  1678. package/dist/esm/core/external-providers/ProviderAddressLookupHost.js.map +1 -0
  1679. package/dist/esm/core/external-providers/ProviderFilePickerHost.d.ts +22 -1
  1680. package/dist/esm/core/external-providers/ProviderFilePickerHost.d.ts.map +1 -1
  1681. package/dist/esm/core/external-providers/ProviderFilePickerHost.js +23 -3
  1682. package/dist/esm/core/external-providers/ProviderFilePickerHost.js.map +1 -1
  1683. package/dist/esm/core/external-providers/frontend-provider-display-label.frontend.utils.d.ts.map +1 -1
  1684. package/dist/esm/core/external-providers/frontend-provider-display-label.frontend.utils.js.map +1 -1
  1685. package/dist/esm/core/external-providers/frontend-provider-registry.frontend.service.d.ts.map +1 -1
  1686. package/dist/esm/core/external-providers/frontend-provider-registry.frontend.service.js.map +1 -1
  1687. package/dist/esm/core/external-providers/provider-address-lookup-selection.frontend.utils.d.ts +55 -0
  1688. package/dist/esm/core/external-providers/provider-address-lookup-selection.frontend.utils.d.ts.map +1 -0
  1689. package/dist/esm/core/external-providers/provider-address-lookup-selection.frontend.utils.js +65 -0
  1690. package/dist/esm/core/external-providers/provider-address-lookup-selection.frontend.utils.js.map +1 -0
  1691. package/dist/esm/core/external-providers/provider-file-selection.frontend.utils.d.ts.map +1 -1
  1692. package/dist/esm/core/external-providers/provider-file-selection.frontend.utils.js.map +1 -1
  1693. package/dist/esm/core/external-providers/provider-scope-reauthorization-offers.frontend.d.ts +63 -0
  1694. package/dist/esm/core/external-providers/provider-scope-reauthorization-offers.frontend.d.ts.map +1 -0
  1695. package/dist/esm/core/external-providers/provider-scope-reauthorization-offers.frontend.js +100 -0
  1696. package/dist/esm/core/external-providers/provider-scope-reauthorization-offers.frontend.js.map +1 -0
  1697. package/dist/esm/core/features/FeatureGate.d.ts.map +1 -1
  1698. package/dist/esm/core/features/FeatureGate.js.map +1 -1
  1699. package/dist/esm/core/features/FeatureRouteGuard.d.ts.map +1 -1
  1700. package/dist/esm/core/features/FeatureRouteGuard.js.map +1 -1
  1701. package/dist/esm/core/features/FeaturesContext.d.ts.map +1 -1
  1702. package/dist/esm/core/features/FeaturesContext.js.map +1 -1
  1703. package/dist/esm/core/features/feature-gate-surface.example.d.ts.map +1 -1
  1704. package/dist/esm/core/features/feature-gate-surface.example.js.map +1 -1
  1705. package/dist/esm/core/features/feature-unavailability.frontend.utils.d.ts.map +1 -1
  1706. package/dist/esm/core/features/feature-unavailability.frontend.utils.js.map +1 -1
  1707. package/dist/esm/core/features/useFeatureAvailability.d.ts.map +1 -1
  1708. package/dist/esm/core/features/useFeatureAvailability.js.map +1 -1
  1709. package/dist/esm/core/features/useFeatureGate.d.ts.map +1 -1
  1710. package/dist/esm/core/features/useFeatureGate.js.map +1 -1
  1711. package/dist/esm/core/features/useFeatures.d.ts.map +1 -1
  1712. package/dist/esm/core/features/useFeatures.js.map +1 -1
  1713. package/dist/esm/core/features/useOperationFeatureAvailability.d.ts.map +1 -1
  1714. package/dist/esm/core/features/useOperationFeatureAvailability.js.map +1 -1
  1715. package/dist/esm/core/flows-actors/FlowsActorsContext.d.ts +45 -7
  1716. package/dist/esm/core/flows-actors/FlowsActorsContext.d.ts.map +1 -1
  1717. package/dist/esm/core/flows-actors/FlowsActorsContext.js +112 -28
  1718. package/dist/esm/core/flows-actors/FlowsActorsContext.js.map +1 -1
  1719. package/dist/esm/core/flows-actors/useFlowsActors.d.ts.map +1 -1
  1720. package/dist/esm/core/flows-actors/useFlowsActors.js.map +1 -1
  1721. package/dist/esm/core/flows-actors/usePendingDecisions.d.ts +32 -0
  1722. package/dist/esm/core/flows-actors/usePendingDecisions.d.ts.map +1 -0
  1723. package/dist/esm/core/flows-actors/usePendingDecisions.js +91 -0
  1724. package/dist/esm/core/flows-actors/usePendingDecisions.js.map +1 -0
  1725. package/dist/esm/core/guidance/GuidanceContext.d.ts.map +1 -1
  1726. package/dist/esm/core/guidance/GuidanceContext.js.map +1 -1
  1727. package/dist/esm/core/guidance/GuidanceRenderer.d.ts.map +1 -1
  1728. package/dist/esm/core/guidance/GuidanceRenderer.js +3 -2
  1729. package/dist/esm/core/guidance/GuidanceRenderer.js.map +1 -1
  1730. package/dist/esm/core/guidance/guidance-audience.frontend.utils.d.ts.map +1 -1
  1731. package/dist/esm/core/guidance/guidance-audience.frontend.utils.js.map +1 -1
  1732. package/dist/esm/core/guidance/guidance-resource-compiler.shared.utils.d.ts.map +1 -1
  1733. package/dist/esm/core/guidance/guidance-resource-compiler.shared.utils.js.map +1 -1
  1734. package/dist/esm/core/guidance/renderers/GuidanceAnnouncement.d.ts.map +1 -1
  1735. package/dist/esm/core/guidance/renderers/GuidanceAnnouncement.js.map +1 -1
  1736. package/dist/esm/core/guidance/renderers/GuidanceAnnouncement.labels.d.ts.map +1 -1
  1737. package/dist/esm/core/guidance/renderers/GuidanceAnnouncement.labels.js.map +1 -1
  1738. package/dist/esm/core/guidance/renderers/GuidanceBadge.d.ts.map +1 -1
  1739. package/dist/esm/core/guidance/renderers/GuidanceBadge.js.map +1 -1
  1740. package/dist/esm/core/guidance/renderers/GuidanceBadge.labels.d.ts.map +1 -1
  1741. package/dist/esm/core/guidance/renderers/GuidanceBadge.labels.js.map +1 -1
  1742. package/dist/esm/core/guidance/renderers/GuidanceBanner.d.ts.map +1 -1
  1743. package/dist/esm/core/guidance/renderers/GuidanceBanner.js.map +1 -1
  1744. package/dist/esm/core/guidance/renderers/GuidanceBanner.labels.d.ts.map +1 -1
  1745. package/dist/esm/core/guidance/renderers/GuidanceBanner.labels.js.map +1 -1
  1746. package/dist/esm/core/guidance/renderers/GuidanceCard.d.ts.map +1 -1
  1747. package/dist/esm/core/guidance/renderers/GuidanceCard.js.map +1 -1
  1748. package/dist/esm/core/guidance/renderers/GuidanceCard.labels.d.ts.map +1 -1
  1749. package/dist/esm/core/guidance/renderers/GuidanceCard.labels.js.map +1 -1
  1750. package/dist/esm/core/guidance/renderers/GuidanceChecklist.d.ts.map +1 -1
  1751. package/dist/esm/core/guidance/renderers/GuidanceChecklist.js.map +1 -1
  1752. package/dist/esm/core/guidance/renderers/GuidanceChecklist.labels.d.ts.map +1 -1
  1753. package/dist/esm/core/guidance/renderers/GuidanceChecklist.labels.js.map +1 -1
  1754. package/dist/esm/core/guidance/renderers/GuidanceChecklistItem.d.ts.map +1 -1
  1755. package/dist/esm/core/guidance/renderers/GuidanceChecklistItem.js.map +1 -1
  1756. package/dist/esm/core/guidance/renderers/GuidanceChecklistItem.labels.d.ts.map +1 -1
  1757. package/dist/esm/core/guidance/renderers/GuidanceChecklistItem.labels.js.map +1 -1
  1758. package/dist/esm/core/guidance/renderers/GuidanceModal.d.ts.map +1 -1
  1759. package/dist/esm/core/guidance/renderers/GuidanceModal.js.map +1 -1
  1760. package/dist/esm/core/guidance/renderers/GuidanceModal.labels.d.ts.map +1 -1
  1761. package/dist/esm/core/guidance/renderers/GuidanceModal.labels.js.map +1 -1
  1762. package/dist/esm/core/guidance/renderers/GuidanceSurvey.d.ts.map +1 -1
  1763. package/dist/esm/core/guidance/renderers/GuidanceSurvey.js.map +1 -1
  1764. package/dist/esm/core/guidance/renderers/GuidanceSurvey.labels.d.ts.map +1 -1
  1765. package/dist/esm/core/guidance/renderers/GuidanceSurvey.labels.js.map +1 -1
  1766. package/dist/esm/core/guidance/renderers/GuidanceTooltip.d.ts.map +1 -1
  1767. package/dist/esm/core/guidance/renderers/GuidanceTooltip.js.map +1 -1
  1768. package/dist/esm/core/guidance/renderers/GuidanceTooltip.labels.d.ts.map +1 -1
  1769. package/dist/esm/core/guidance/renderers/GuidanceTooltip.labels.js.map +1 -1
  1770. package/dist/esm/core/guidance/renderers/GuidanceTour.d.ts.map +1 -1
  1771. package/dist/esm/core/guidance/renderers/GuidanceTour.js.map +1 -1
  1772. package/dist/esm/core/guidance/renderers/GuidanceTour.labels.d.ts.map +1 -1
  1773. package/dist/esm/core/guidance/renderers/GuidanceTour.labels.js.map +1 -1
  1774. package/dist/esm/core/guidance/useGuidance.d.ts.map +1 -1
  1775. package/dist/esm/core/guidance/useGuidance.js.map +1 -1
  1776. package/dist/esm/core/hotkey/DefaultHotkeyHandler.d.ts.map +1 -1
  1777. package/dist/esm/core/hotkey/DefaultHotkeyHandler.js.map +1 -1
  1778. package/dist/esm/core/hotkey/HotkeyRegistryContext.d.ts.map +1 -1
  1779. package/dist/esm/core/hotkey/HotkeyRegistryContext.js.map +1 -1
  1780. package/dist/esm/core/hotkey/HotkeyShortcutsHelpDialog.d.ts.map +1 -1
  1781. package/dist/esm/core/hotkey/HotkeyShortcutsHelpDialog.js.map +1 -1
  1782. package/dist/esm/core/hotkey/hotkey-registry.frontend.schemas.d.ts.map +1 -1
  1783. package/dist/esm/core/hotkey/hotkey-registry.frontend.schemas.js.map +1 -1
  1784. package/dist/esm/core/hotkey/merge-hotkey-emit-shortcuts.d.ts.map +1 -1
  1785. package/dist/esm/core/hotkey/merge-hotkey-emit-shortcuts.js.map +1 -1
  1786. package/dist/esm/core/hotkey/useHotkey.d.ts.map +1 -1
  1787. package/dist/esm/core/hotkey/useHotkey.js.map +1 -1
  1788. package/dist/esm/core/i18n/I18nContext.d.ts +22 -8
  1789. package/dist/esm/core/i18n/I18nContext.d.ts.map +1 -1
  1790. package/dist/esm/core/i18n/I18nContext.js +21 -9
  1791. package/dist/esm/core/i18n/I18nContext.js.map +1 -1
  1792. package/dist/esm/core/i18n/component-label-resolution.utils.d.ts +5 -3
  1793. package/dist/esm/core/i18n/component-label-resolution.utils.d.ts.map +1 -1
  1794. package/dist/esm/core/i18n/component-label-resolution.utils.js +5 -3
  1795. package/dist/esm/core/i18n/component-label-resolution.utils.js.map +1 -1
  1796. package/dist/esm/core/i18n/operation-title-resolution.utils.d.ts.map +1 -1
  1797. package/dist/esm/core/i18n/operation-title-resolution.utils.js.map +1 -1
  1798. package/dist/esm/core/i18n/regional-preference-resolution.frontend.utils.d.ts.map +1 -1
  1799. package/dist/esm/core/i18n/regional-preference-resolution.frontend.utils.js.map +1 -1
  1800. package/dist/esm/core/i18n/useI18n.d.ts +2 -1
  1801. package/dist/esm/core/i18n/useI18n.d.ts.map +1 -1
  1802. package/dist/esm/core/i18n/useI18n.js +2 -1
  1803. package/dist/esm/core/i18n/useI18n.js.map +1 -1
  1804. package/dist/esm/core/icons/IconRegistryBridge.d.ts.map +1 -1
  1805. package/dist/esm/core/icons/IconRegistryBridge.js.map +1 -1
  1806. package/dist/esm/core/icons/IconRegistryContext.d.ts.map +1 -1
  1807. package/dist/esm/core/icons/IconRegistryContext.js.map +1 -1
  1808. package/dist/esm/core/icons/icon-registry.frontend.definitions.d.ts.map +1 -1
  1809. package/dist/esm/core/icons/icon-registry.frontend.definitions.js.map +1 -1
  1810. package/dist/esm/core/icons/icon-registry.frontend.schemas.d.ts.map +1 -1
  1811. package/dist/esm/core/icons/icon-registry.frontend.schemas.js.map +1 -1
  1812. package/dist/esm/core/icons/useIconRegistry.d.ts.map +1 -1
  1813. package/dist/esm/core/icons/useIconRegistry.js.map +1 -1
  1814. package/dist/esm/core/loading/AppLoadingGate.d.ts.map +1 -1
  1815. package/dist/esm/core/loading/AppLoadingGate.js.map +1 -1
  1816. package/dist/esm/core/loading/LoadingBarrier.d.ts.map +1 -1
  1817. package/dist/esm/core/loading/LoadingBarrier.js.map +1 -1
  1818. package/dist/esm/core/loading/LoadingContext.d.ts.map +1 -1
  1819. package/dist/esm/core/loading/LoadingContext.js +7 -1
  1820. package/dist/esm/core/loading/LoadingContext.js.map +1 -1
  1821. package/dist/esm/core/loading/LoadingGate.d.ts.map +1 -1
  1822. package/dist/esm/core/loading/LoadingGate.js +19 -1
  1823. package/dist/esm/core/loading/LoadingGate.js.map +1 -1
  1824. package/dist/esm/core/loading/loading-policy.frontend.schemas.d.ts.map +1 -1
  1825. package/dist/esm/core/loading/loading-policy.frontend.schemas.js.map +1 -1
  1826. package/dist/esm/core/loading/loading-scope.frontend.utils.d.ts.map +1 -1
  1827. package/dist/esm/core/loading/loading-scope.frontend.utils.js.map +1 -1
  1828. package/dist/esm/core/loading/loading-types.frontend.schemas.d.ts.map +1 -1
  1829. package/dist/esm/core/loading/loading-types.frontend.schemas.js.map +1 -1
  1830. package/dist/esm/core/loading/resolveLoadingPolicy.d.ts.map +1 -1
  1831. package/dist/esm/core/loading/resolveLoadingPolicy.js.map +1 -1
  1832. package/dist/esm/core/loading/useAppLoading.d.ts.map +1 -1
  1833. package/dist/esm/core/loading/useAppLoading.js.map +1 -1
  1834. package/dist/esm/core/loading/useComponentLoading.d.ts.map +1 -1
  1835. package/dist/esm/core/loading/useComponentLoading.js.map +1 -1
  1836. package/dist/esm/core/loading/useEmitLoadingScope.d.ts.map +1 -1
  1837. package/dist/esm/core/loading/useEmitLoadingScope.js.map +1 -1
  1838. package/dist/esm/core/loading/useLoading.d.ts.map +1 -1
  1839. package/dist/esm/core/loading/useLoading.js.map +1 -1
  1840. package/dist/esm/core/mode/AppModeContext.d.ts.map +1 -1
  1841. package/dist/esm/core/mode/AppModeContext.js.map +1 -1
  1842. package/dist/esm/core/mode/section-visibility.d.ts.map +1 -1
  1843. package/dist/esm/core/mode/section-visibility.js.map +1 -1
  1844. package/dist/esm/core/monitoring/analytics/AnalyticsContext.d.ts +15 -2
  1845. package/dist/esm/core/monitoring/analytics/AnalyticsContext.d.ts.map +1 -1
  1846. package/dist/esm/core/monitoring/analytics/AnalyticsContext.js +183 -20
  1847. package/dist/esm/core/monitoring/analytics/AnalyticsContext.js.map +1 -1
  1848. package/dist/esm/core/monitoring/analytics/AnalyticsEventBridge.d.ts.map +1 -1
  1849. package/dist/esm/core/monitoring/analytics/AnalyticsEventBridge.js +2 -2
  1850. package/dist/esm/core/monitoring/analytics/AnalyticsEventBridge.js.map +1 -1
  1851. package/dist/esm/core/monitoring/analytics/AnalyticsScopeBridge.d.ts.map +1 -1
  1852. package/dist/esm/core/monitoring/analytics/AnalyticsScopeBridge.js.map +1 -1
  1853. package/dist/esm/core/monitoring/analytics/analytics-provider-registry.frontend.service.d.ts +7 -15
  1854. package/dist/esm/core/monitoring/analytics/analytics-provider-registry.frontend.service.d.ts.map +1 -1
  1855. package/dist/esm/core/monitoring/analytics/analytics-provider-registry.frontend.service.js +8 -26
  1856. package/dist/esm/core/monitoring/analytics/analytics-provider-registry.frontend.service.js.map +1 -1
  1857. package/dist/esm/core/monitoring/analytics/analytics-provider.frontend.interface.d.ts +12 -3
  1858. package/dist/esm/core/monitoring/analytics/analytics-provider.frontend.interface.d.ts.map +1 -1
  1859. package/dist/esm/core/monitoring/analytics/analytics-provider.frontend.interface.js +3 -2
  1860. package/dist/esm/core/monitoring/analytics/analytics-provider.frontend.interface.js.map +1 -1
  1861. package/dist/esm/core/monitoring/analytics/providers/backend-proxy-analytics.provider.d.ts +42 -0
  1862. package/dist/esm/core/monitoring/analytics/providers/backend-proxy-analytics.provider.d.ts.map +1 -1
  1863. package/dist/esm/core/monitoring/analytics/providers/backend-proxy-analytics.provider.js +89 -5
  1864. package/dist/esm/core/monitoring/analytics/providers/backend-proxy-analytics.provider.js.map +1 -1
  1865. package/dist/esm/core/monitoring/analytics/providers/console-analytics.provider.d.ts +2 -0
  1866. package/dist/esm/core/monitoring/analytics/providers/console-analytics.provider.d.ts.map +1 -1
  1867. package/dist/esm/core/monitoring/analytics/providers/console-analytics.provider.js +2 -0
  1868. package/dist/esm/core/monitoring/analytics/providers/console-analytics.provider.js.map +1 -1
  1869. package/dist/esm/core/monitoring/analytics/useAnalytics.d.ts.map +1 -1
  1870. package/dist/esm/core/monitoring/analytics/useAnalytics.js.map +1 -1
  1871. package/dist/esm/core/monitoring/error-monitoring-bridge.frontend.service.d.ts.map +1 -1
  1872. package/dist/esm/core/monitoring/error-monitoring-bridge.frontend.service.js.map +1 -1
  1873. package/dist/esm/core/monitoring/logger.frontend.service.d.ts.map +1 -1
  1874. package/dist/esm/core/monitoring/logger.frontend.service.js.map +1 -1
  1875. package/dist/esm/core/navigation/NavigationContentAreas.d.ts +78 -0
  1876. package/dist/esm/core/navigation/NavigationContentAreas.d.ts.map +1 -1
  1877. package/dist/esm/core/navigation/NavigationContentAreas.js +264 -16
  1878. package/dist/esm/core/navigation/NavigationContentAreas.js.map +1 -1
  1879. package/dist/esm/core/navigation/NavigationContext.d.ts +8 -0
  1880. package/dist/esm/core/navigation/NavigationContext.d.ts.map +1 -1
  1881. package/dist/esm/core/navigation/NavigationContext.js +137 -30
  1882. package/dist/esm/core/navigation/NavigationContext.js.map +1 -1
  1883. package/dist/esm/core/navigation/NavigationRequestBridge.d.ts.map +1 -1
  1884. package/dist/esm/core/navigation/NavigationRequestBridge.js.map +1 -1
  1885. package/dist/esm/core/navigation/hosted-pane.constants.d.ts.map +1 -1
  1886. package/dist/esm/core/navigation/hosted-pane.constants.js.map +1 -1
  1887. package/dist/esm/core/navigation/launcher-resolution.d.ts +2 -0
  1888. package/dist/esm/core/navigation/launcher-resolution.d.ts.map +1 -1
  1889. package/dist/esm/core/navigation/launcher-resolution.js +1 -0
  1890. package/dist/esm/core/navigation/launcher-resolution.js.map +1 -1
  1891. package/dist/esm/core/navigation/launcher-runtime-availability.d.ts.map +1 -1
  1892. package/dist/esm/core/navigation/launcher-runtime-availability.js.map +1 -1
  1893. package/dist/esm/core/navigation/navigation-cascade.d.ts +46 -0
  1894. package/dist/esm/core/navigation/navigation-cascade.d.ts.map +1 -0
  1895. package/dist/esm/core/navigation/navigation-cascade.js +222 -0
  1896. package/dist/esm/core/navigation/navigation-cascade.js.map +1 -0
  1897. package/dist/esm/core/navigation/navigation-clean-break.frontend.utils.d.ts.map +1 -1
  1898. package/dist/esm/core/navigation/navigation-clean-break.frontend.utils.js +21 -2
  1899. package/dist/esm/core/navigation/navigation-clean-break.frontend.utils.js.map +1 -1
  1900. package/dist/esm/core/navigation/navigation-controller-internals.d.ts +71 -0
  1901. package/dist/esm/core/navigation/navigation-controller-internals.d.ts.map +1 -0
  1902. package/dist/esm/core/navigation/navigation-controller-internals.js +84 -0
  1903. package/dist/esm/core/navigation/navigation-controller-internals.js.map +1 -0
  1904. package/dist/esm/core/navigation/navigation-policy-resolver.service.d.ts +86 -2
  1905. package/dist/esm/core/navigation/navigation-policy-resolver.service.d.ts.map +1 -1
  1906. package/dist/esm/core/navigation/navigation-policy-resolver.service.js +242 -124
  1907. package/dist/esm/core/navigation/navigation-policy-resolver.service.js.map +1 -1
  1908. package/dist/esm/core/navigation/navigation.schemas.d.ts +170 -8
  1909. package/dist/esm/core/navigation/navigation.schemas.d.ts.map +1 -1
  1910. package/dist/esm/core/navigation/navigation.schemas.js +121 -2
  1911. package/dist/esm/core/navigation/navigation.schemas.js.map +1 -1
  1912. package/dist/esm/core/navigation/navigation.utils.d.ts +102 -6
  1913. package/dist/esm/core/navigation/navigation.utils.d.ts.map +1 -1
  1914. package/dist/esm/core/navigation/navigation.utils.js +283 -34
  1915. package/dist/esm/core/navigation/navigation.utils.js.map +1 -1
  1916. package/dist/esm/core/navigation/primary-destination-layout.d.ts.map +1 -1
  1917. package/dist/esm/core/navigation/primary-destination-layout.js.map +1 -1
  1918. package/dist/esm/core/navigation/split-fit.d.ts.map +1 -1
  1919. package/dist/esm/core/navigation/split-fit.js.map +1 -1
  1920. package/dist/esm/core/navigation/useLauncherResolutionContext.d.ts.map +1 -1
  1921. package/dist/esm/core/navigation/useLauncherResolutionContext.js.map +1 -1
  1922. package/dist/esm/core/navigation/useNavigationController.d.ts +28 -157
  1923. package/dist/esm/core/navigation/useNavigationController.d.ts.map +1 -1
  1924. package/dist/esm/core/navigation/useNavigationController.js +211 -1189
  1925. package/dist/esm/core/navigation/useNavigationController.js.map +1 -1
  1926. package/dist/esm/core/navigation/useNavigationRouterSync.d.ts +174 -0
  1927. package/dist/esm/core/navigation/useNavigationRouterSync.d.ts.map +1 -0
  1928. package/dist/esm/core/navigation/useNavigationRouterSync.js +977 -0
  1929. package/dist/esm/core/navigation/useNavigationRouterSync.js.map +1 -0
  1930. package/dist/esm/core/navigation/useNavigationState.d.ts.map +1 -1
  1931. package/dist/esm/core/navigation/useNavigationState.js.map +1 -1
  1932. package/dist/esm/core/navigation/useOverlayTitle.d.ts +13 -1
  1933. package/dist/esm/core/navigation/useOverlayTitle.d.ts.map +1 -1
  1934. package/dist/esm/core/navigation/useOverlayTitle.js +15 -10
  1935. package/dist/esm/core/navigation/useOverlayTitle.js.map +1 -1
  1936. package/dist/esm/core/navigation/useResponsiveZoneMigration.d.ts +43 -0
  1937. package/dist/esm/core/navigation/useResponsiveZoneMigration.d.ts.map +1 -0
  1938. package/dist/esm/core/navigation/useResponsiveZoneMigration.js +44 -0
  1939. package/dist/esm/core/navigation/useResponsiveZoneMigration.js.map +1 -0
  1940. package/dist/esm/core/navigation/useSynchronousBrowserLocation.d.ts.map +1 -1
  1941. package/dist/esm/core/navigation/useSynchronousBrowserLocation.js.map +1 -1
  1942. package/dist/esm/core/navigation/useTransactionAwareSyncRetry.d.ts.map +1 -1
  1943. package/dist/esm/core/navigation/useTransactionAwareSyncRetry.js.map +1 -1
  1944. package/dist/esm/core/navigation/view-title-resolution.d.ts.map +1 -1
  1945. package/dist/esm/core/navigation/view-title-resolution.js.map +1 -1
  1946. package/dist/esm/core/navigation/zone-collapse-migration.d.ts +83 -0
  1947. package/dist/esm/core/navigation/zone-collapse-migration.d.ts.map +1 -0
  1948. package/dist/esm/core/navigation/zone-collapse-migration.js +116 -0
  1949. package/dist/esm/core/navigation/zone-collapse-migration.js.map +1 -0
  1950. package/dist/esm/core/navigation/zone-collapse.d.ts +51 -0
  1951. package/dist/esm/core/navigation/zone-collapse.d.ts.map +1 -0
  1952. package/dist/esm/core/navigation/zone-collapse.js +59 -0
  1953. package/dist/esm/core/navigation/zone-collapse.js.map +1 -0
  1954. package/dist/esm/core/navigation/zone-content-geometry.d.ts.map +1 -1
  1955. package/dist/esm/core/navigation/zone-content-geometry.js.map +1 -1
  1956. package/dist/esm/core/navigation/zone-emphasis.d.ts +3 -0
  1957. package/dist/esm/core/navigation/zone-emphasis.d.ts.map +1 -1
  1958. package/dist/esm/core/navigation/zone-emphasis.js +26 -4
  1959. package/dist/esm/core/navigation/zone-emphasis.js.map +1 -1
  1960. package/dist/esm/core/navigation/zone-empty-behavior.d.ts.map +1 -1
  1961. package/dist/esm/core/navigation/zone-empty-behavior.js.map +1 -1
  1962. package/dist/esm/core/navigation/zone-visible-entry.d.ts +22 -0
  1963. package/dist/esm/core/navigation/zone-visible-entry.d.ts.map +1 -1
  1964. package/dist/esm/core/navigation/zone-visible-entry.js +25 -0
  1965. package/dist/esm/core/navigation/zone-visible-entry.js.map +1 -1
  1966. package/dist/esm/core/requests/api-readiness-checker.frontend.service.d.ts.map +1 -1
  1967. package/dist/esm/core/requests/api-readiness-checker.frontend.service.js.map +1 -1
  1968. package/dist/esm/core/requests/auth-refresh-resilience.frontend.d.ts.map +1 -1
  1969. package/dist/esm/core/requests/auth-refresh-resilience.frontend.js.map +1 -1
  1970. package/dist/esm/core/requests/client-instance-id.frontend.service.d.ts.map +1 -1
  1971. package/dist/esm/core/requests/client-instance-id.frontend.service.js.map +1 -1
  1972. package/dist/esm/core/requests/network-backoff.frontend.utils.d.ts.map +1 -1
  1973. package/dist/esm/core/requests/network-backoff.frontend.utils.js.map +1 -1
  1974. package/dist/esm/core/requests/offline-replay-policy.frontend.d.ts.map +1 -1
  1975. package/dist/esm/core/requests/offline-replay-policy.frontend.js.map +1 -1
  1976. package/dist/esm/core/requests/request-cancellation.frontend.utils.d.ts.map +1 -1
  1977. package/dist/esm/core/requests/request-cancellation.frontend.utils.js.map +1 -1
  1978. package/dist/esm/core/requests/websockets/ConnectionStatusNotifier.d.ts.map +1 -1
  1979. package/dist/esm/core/requests/websockets/ConnectionStatusNotifier.js.map +1 -1
  1980. package/dist/esm/core/requests/websockets/WebSocketContext.d.ts.map +1 -1
  1981. package/dist/esm/core/requests/websockets/WebSocketContext.js +53 -18
  1982. package/dist/esm/core/requests/websockets/WebSocketContext.js.map +1 -1
  1983. package/dist/esm/core/requests/websockets/WebSocketEventBridge.d.ts.map +1 -1
  1984. package/dist/esm/core/requests/websockets/WebSocketEventBridge.js +3 -1
  1985. package/dist/esm/core/requests/websockets/WebSocketEventBridge.js.map +1 -1
  1986. package/dist/esm/core/requests/websockets/useNotificationBadges.d.ts +22 -0
  1987. package/dist/esm/core/requests/websockets/useNotificationBadges.d.ts.map +1 -1
  1988. package/dist/esm/core/requests/websockets/useNotificationBadges.js +72 -3
  1989. package/dist/esm/core/requests/websockets/useNotificationBadges.js.map +1 -1
  1990. package/dist/esm/core/requests/websockets/usePublishNotificationBadgeCount.d.ts +28 -0
  1991. package/dist/esm/core/requests/websockets/usePublishNotificationBadgeCount.d.ts.map +1 -0
  1992. package/dist/esm/core/requests/websockets/usePublishNotificationBadgeCount.js +86 -0
  1993. package/dist/esm/core/requests/websockets/usePublishNotificationBadgeCount.js.map +1 -0
  1994. package/dist/esm/core/requests/websockets/useResourceRoom.d.ts.map +1 -1
  1995. package/dist/esm/core/requests/websockets/useResourceRoom.js.map +1 -1
  1996. package/dist/esm/core/requests/websockets/useWebSocket.d.ts.map +1 -1
  1997. package/dist/esm/core/requests/websockets/useWebSocket.js.map +1 -1
  1998. package/dist/esm/core/requests/websockets/websocket-resource-validation.frontend.service.d.ts.map +1 -1
  1999. package/dist/esm/core/requests/websockets/websocket-resource-validation.frontend.service.js.map +1 -1
  2000. package/dist/esm/core/requests/wildo-http-client-manual-calls.frontend.service.d.ts +38 -3
  2001. package/dist/esm/core/requests/wildo-http-client-manual-calls.frontend.service.d.ts.map +1 -1
  2002. package/dist/esm/core/requests/wildo-http-client-manual-calls.frontend.service.js +57 -2
  2003. package/dist/esm/core/requests/wildo-http-client-manual-calls.frontend.service.js.map +1 -1
  2004. package/dist/esm/core/requests/wildo-http-client-resources.frontend.service.d.ts.map +1 -1
  2005. package/dist/esm/core/requests/wildo-http-client-resources.frontend.service.js +4 -2
  2006. package/dist/esm/core/requests/wildo-http-client-resources.frontend.service.js.map +1 -1
  2007. package/dist/esm/core/requests/wildo-http-client.frontend.service.d.ts +30 -1
  2008. package/dist/esm/core/requests/wildo-http-client.frontend.service.d.ts.map +1 -1
  2009. package/dist/esm/core/requests/wildo-http-client.frontend.service.js +47 -4
  2010. package/dist/esm/core/requests/wildo-http-client.frontend.service.js.map +1 -1
  2011. package/dist/esm/core/resources/ResourceOperationViewContext.d.ts.map +1 -1
  2012. package/dist/esm/core/resources/ResourceOperationViewContext.js.map +1 -1
  2013. package/dist/esm/core/resources/ResourceOperationViewProvider.d.ts.map +1 -1
  2014. package/dist/esm/core/resources/ResourceOperationViewProvider.js.map +1 -1
  2015. package/dist/esm/core/resources/ResourceReadCacheBridge.d.ts.map +1 -1
  2016. package/dist/esm/core/resources/ResourceReadCacheBridge.js.map +1 -1
  2017. package/dist/esm/core/resources/ResourceRegistryContext.d.ts.map +1 -1
  2018. package/dist/esm/core/resources/ResourceRegistryContext.js +22 -1
  2019. package/dist/esm/core/resources/ResourceRegistryContext.js.map +1 -1
  2020. package/dist/esm/core/resources/ScopedResourceRegistryProvider.d.ts.map +1 -1
  2021. package/dist/esm/core/resources/ScopedResourceRegistryProvider.js.map +1 -1
  2022. package/dist/esm/core/resources/bulk-failure-grouping.frontend.utils.d.ts.map +1 -1
  2023. package/dist/esm/core/resources/bulk-failure-grouping.frontend.utils.js.map +1 -1
  2024. package/dist/esm/core/resources/collection-export-url.frontend.utils.d.ts.map +1 -1
  2025. package/dist/esm/core/resources/collection-export-url.frontend.utils.js.map +1 -1
  2026. package/dist/esm/core/resources/collection-filter-presets.frontend.utils.d.ts.map +1 -1
  2027. package/dist/esm/core/resources/collection-filter-presets.frontend.utils.js.map +1 -1
  2028. package/dist/esm/core/resources/context-resource-identifiers.frontend.utils.d.ts.map +1 -1
  2029. package/dist/esm/core/resources/context-resource-identifiers.frontend.utils.js +1 -1
  2030. package/dist/esm/core/resources/context-resource-identifiers.frontend.utils.js.map +1 -1
  2031. package/dist/esm/core/resources/ephemeral-fields.utils.d.ts.map +1 -1
  2032. package/dist/esm/core/resources/ephemeral-fields.utils.js.map +1 -1
  2033. package/dist/esm/core/resources/file-serve-url.frontend.utils.d.ts.map +1 -1
  2034. package/dist/esm/core/resources/file-serve-url.frontend.utils.js.map +1 -1
  2035. package/dist/esm/core/resources/frontend-resource.utils.d.ts +22 -1
  2036. package/dist/esm/core/resources/frontend-resource.utils.d.ts.map +1 -1
  2037. package/dist/esm/core/resources/frontend-resource.utils.js +25 -2
  2038. package/dist/esm/core/resources/frontend-resource.utils.js.map +1 -1
  2039. package/dist/esm/core/resources/hooks/useOperationEnabled.d.ts.map +1 -1
  2040. package/dist/esm/core/resources/hooks/useOperationEnabled.js.map +1 -1
  2041. package/dist/esm/core/resources/in-place/InPlaceOperationContext.d.ts.map +1 -1
  2042. package/dist/esm/core/resources/in-place/InPlaceOperationContext.js.map +1 -1
  2043. package/dist/esm/core/resources/operation-initiator-satisfaction.frontend.utils.d.ts.map +1 -1
  2044. package/dist/esm/core/resources/operation-initiator-satisfaction.frontend.utils.js.map +1 -1
  2045. package/dist/esm/core/resources/operation-semantics.frontend.utils.d.ts +113 -13
  2046. package/dist/esm/core/resources/operation-semantics.frontend.utils.d.ts.map +1 -1
  2047. package/dist/esm/core/resources/operation-semantics.frontend.utils.js +173 -20
  2048. package/dist/esm/core/resources/operation-semantics.frontend.utils.js.map +1 -1
  2049. package/dist/esm/core/resources/relationship-quick-create.frontend.utils.d.ts.map +1 -1
  2050. package/dist/esm/core/resources/relationship-quick-create.frontend.utils.js.map +1 -1
  2051. package/dist/esm/core/resources/relationship-surface-runtime.frontend.utils.d.ts +11 -0
  2052. package/dist/esm/core/resources/relationship-surface-runtime.frontend.utils.d.ts.map +1 -1
  2053. package/dist/esm/core/resources/relationship-surface-runtime.frontend.utils.js +7 -0
  2054. package/dist/esm/core/resources/relationship-surface-runtime.frontend.utils.js.map +1 -1
  2055. package/dist/esm/core/resources/resource-addressability.frontend.utils.d.ts.map +1 -1
  2056. package/dist/esm/core/resources/resource-addressability.frontend.utils.js.map +1 -1
  2057. package/dist/esm/core/resources/resource-label-field-paths.frontend.utils.d.ts +3 -2
  2058. package/dist/esm/core/resources/resource-label-field-paths.frontend.utils.d.ts.map +1 -1
  2059. package/dist/esm/core/resources/resource-label-field-paths.frontend.utils.js +13 -5
  2060. package/dist/esm/core/resources/resource-label-field-paths.frontend.utils.js.map +1 -1
  2061. package/dist/esm/core/resources/resource-operation-view.frontend.utils.d.ts.map +1 -1
  2062. package/dist/esm/core/resources/resource-operation-view.frontend.utils.js.map +1 -1
  2063. package/dist/esm/core/resources/resource-path.frontend.schemas.d.ts.map +1 -1
  2064. package/dist/esm/core/resources/resource-path.frontend.schemas.js.map +1 -1
  2065. package/dist/esm/core/resources/resource-read-cache.frontend.service.d.ts.map +1 -1
  2066. package/dist/esm/core/resources/resource-read-cache.frontend.service.js.map +1 -1
  2067. package/dist/esm/core/resources/resources-repository.frontend.service.d.ts +6 -0
  2068. package/dist/esm/core/resources/resources-repository.frontend.service.d.ts.map +1 -1
  2069. package/dist/esm/core/resources/resources-repository.frontend.service.js +90 -1
  2070. package/dist/esm/core/resources/resources-repository.frontend.service.js.map +1 -1
  2071. package/dist/esm/core/resources/resources.frontend.schemas.d.ts +141 -18
  2072. package/dist/esm/core/resources/resources.frontend.schemas.d.ts.map +1 -1
  2073. package/dist/esm/core/resources/resources.frontend.schemas.js +110 -11
  2074. package/dist/esm/core/resources/resources.frontend.schemas.js.map +1 -1
  2075. package/dist/esm/core/resources/rmm/HttpTransportAdapter.d.ts.map +1 -1
  2076. package/dist/esm/core/resources/rmm/HttpTransportAdapter.js.map +1 -1
  2077. package/dist/esm/core/resources/rmm/RMMRegistry.d.ts.map +1 -1
  2078. package/dist/esm/core/resources/rmm/RMMRegistry.js.map +1 -1
  2079. package/dist/esm/core/resources/rmm/RMMRegistryContext.d.ts.map +1 -1
  2080. package/dist/esm/core/resources/rmm/RMMRegistryContext.js.map +1 -1
  2081. package/dist/esm/core/resources/rmm/RMMWebSocketBridge.d.ts.map +1 -1
  2082. package/dist/esm/core/resources/rmm/RMMWebSocketBridge.js.map +1 -1
  2083. package/dist/esm/core/resources/rmm/ResourceMutationManager.d.ts.map +1 -1
  2084. package/dist/esm/core/resources/rmm/ResourceMutationManager.js +3 -1
  2085. package/dist/esm/core/resources/rmm/ResourceMutationManager.js.map +1 -1
  2086. package/dist/esm/core/resources/rmm/canonical-read.frontend.utils.d.ts.map +1 -1
  2087. package/dist/esm/core/resources/rmm/canonical-read.frontend.utils.js.map +1 -1
  2088. package/dist/esm/core/resources/rmm/field-path.utils.d.ts.map +1 -1
  2089. package/dist/esm/core/resources/rmm/field-path.utils.js.map +1 -1
  2090. package/dist/esm/core/resources/rmm/mutation-error-report.utils.d.ts.map +1 -1
  2091. package/dist/esm/core/resources/rmm/mutation-error-report.utils.js.map +1 -1
  2092. package/dist/esm/core/resources/rmm/rmm-constants.d.ts.map +1 -1
  2093. package/dist/esm/core/resources/rmm/rmm-constants.js.map +1 -1
  2094. package/dist/esm/core/resources/rmm/rmm-noop-snapshot.d.ts.map +1 -1
  2095. package/dist/esm/core/resources/rmm/rmm-noop-snapshot.js.map +1 -1
  2096. package/dist/esm/core/resources/rmm/types.d.ts.map +1 -1
  2097. package/dist/esm/core/resources/rmm/types.js.map +1 -1
  2098. package/dist/esm/core/resources/rmm/update-like-mutation-fallback.frontend.d.ts +10 -0
  2099. package/dist/esm/core/resources/rmm/update-like-mutation-fallback.frontend.d.ts.map +1 -1
  2100. package/dist/esm/core/resources/rmm/update-like-mutation-fallback.frontend.js +8 -0
  2101. package/dist/esm/core/resources/rmm/update-like-mutation-fallback.frontend.js.map +1 -1
  2102. package/dist/esm/core/resources/rmm/useListInvalidation.d.ts.map +1 -1
  2103. package/dist/esm/core/resources/rmm/useListInvalidation.js.map +1 -1
  2104. package/dist/esm/core/resources/rmm/useRMMEventHandler.d.ts.map +1 -1
  2105. package/dist/esm/core/resources/rmm/useRMMEventHandler.js.map +1 -1
  2106. package/dist/esm/core/resources/rmm/useRMMSnapshot.d.ts.map +1 -1
  2107. package/dist/esm/core/resources/rmm/useRMMSnapshot.js.map +1 -1
  2108. package/dist/esm/core/resources/rmm/useResourceMutationManager.d.ts.map +1 -1
  2109. package/dist/esm/core/resources/rmm/useResourceMutationManager.js.map +1 -1
  2110. package/dist/esm/core/resources/rmm/useResourceRMM.d.ts +7 -0
  2111. package/dist/esm/core/resources/rmm/useResourceRMM.d.ts.map +1 -1
  2112. package/dist/esm/core/resources/rmm/useResourceRMM.js +9 -2
  2113. package/dist/esm/core/resources/rmm/useResourceRMM.js.map +1 -1
  2114. package/dist/esm/core/resources/useAuthedFileObjectUrl.frontend.hook.d.ts.map +1 -1
  2115. package/dist/esm/core/resources/useAuthedFileObjectUrl.frontend.hook.js.map +1 -1
  2116. package/dist/esm/core/resources/useBulkJobProgress.d.ts.map +1 -1
  2117. package/dist/esm/core/resources/useBulkJobProgress.js.map +1 -1
  2118. package/dist/esm/core/resources/useHostlessResourceNavigation.d.ts.map +1 -1
  2119. package/dist/esm/core/resources/useHostlessResourceNavigation.js.map +1 -1
  2120. package/dist/esm/core/resources/useOperationDirectExecution.d.ts +59 -0
  2121. package/dist/esm/core/resources/useOperationDirectExecution.d.ts.map +1 -0
  2122. package/dist/esm/core/resources/useOperationDirectExecution.js +278 -0
  2123. package/dist/esm/core/resources/useOperationDirectExecution.js.map +1 -0
  2124. package/dist/esm/core/resources/useOperationEnabled.d.ts.map +1 -1
  2125. package/dist/esm/core/resources/useOperationEnabled.js.map +1 -1
  2126. package/dist/esm/core/resources/useResourceLabels.d.ts.map +1 -1
  2127. package/dist/esm/core/resources/useResourceLabels.js.map +1 -1
  2128. package/dist/esm/core/resources/useResourceOperationActions.d.ts +1 -1
  2129. package/dist/esm/core/resources/useResourceOperationActions.d.ts.map +1 -1
  2130. package/dist/esm/core/resources/useResourceOperationActions.js +69 -22
  2131. package/dist/esm/core/resources/useResourceOperationActions.js.map +1 -1
  2132. package/dist/esm/core/resources/useResourceOperationOutcomeEmitter.d.ts.map +1 -1
  2133. package/dist/esm/core/resources/useResourceOperationOutcomeEmitter.js.map +1 -1
  2134. package/dist/esm/core/resources/useResourceOperationSurface.d.ts +8 -6
  2135. package/dist/esm/core/resources/useResourceOperationSurface.d.ts.map +1 -1
  2136. package/dist/esm/core/resources/useResourceOperationSurface.js +3 -2
  2137. package/dist/esm/core/resources/useResourceOperationSurface.js.map +1 -1
  2138. package/dist/esm/core/resources/useResourceRegistry.d.ts.map +1 -1
  2139. package/dist/esm/core/resources/useResourceRegistry.js.map +1 -1
  2140. package/dist/esm/core/resources/useResourceSelection.d.ts.map +1 -1
  2141. package/dist/esm/core/resources/useResourceSelection.js.map +1 -1
  2142. package/dist/esm/core/resources/utils/operation-enabled-condition.frontend.utils.d.ts.map +1 -1
  2143. package/dist/esm/core/resources/utils/operation-enabled-condition.frontend.utils.js.map +1 -1
  2144. package/dist/esm/core/runtime/AppRouter.d.ts.map +1 -1
  2145. package/dist/esm/core/runtime/AppRouter.js +23 -2
  2146. package/dist/esm/core/runtime/AppRouter.js.map +1 -1
  2147. package/dist/esm/core/runtime/ApplicationContext.shared.d.ts +4 -2
  2148. package/dist/esm/core/runtime/ApplicationContext.shared.d.ts.map +1 -1
  2149. package/dist/esm/core/runtime/ApplicationContext.shared.js.map +1 -1
  2150. package/dist/esm/core/runtime/ApplicationMainContext.d.ts +12 -2
  2151. package/dist/esm/core/runtime/ApplicationMainContext.d.ts.map +1 -1
  2152. package/dist/esm/core/runtime/ApplicationMainContext.js +5 -2
  2153. package/dist/esm/core/runtime/ApplicationMainContext.js.map +1 -1
  2154. package/dist/esm/core/runtime/StartupFailureScreen.d.ts.map +1 -1
  2155. package/dist/esm/core/runtime/StartupFailureScreen.js.map +1 -1
  2156. package/dist/esm/core/runtime/app-config-overrides.frontend.definitions.d.ts.map +1 -1
  2157. package/dist/esm/core/runtime/app-config-overrides.frontend.definitions.js.map +1 -1
  2158. package/dist/esm/core/runtime/domain-module.frontend.definitions.d.ts +25 -1
  2159. package/dist/esm/core/runtime/domain-module.frontend.definitions.d.ts.map +1 -1
  2160. package/dist/esm/core/runtime/domain-module.frontend.definitions.js +37 -1
  2161. package/dist/esm/core/runtime/domain-module.frontend.definitions.js.map +1 -1
  2162. package/dist/esm/core/runtime/env-variable-loader.frontend.service.d.ts.map +1 -1
  2163. package/dist/esm/core/runtime/env-variable-loader.frontend.service.js.map +1 -1
  2164. package/dist/esm/core/runtime/frontend-companion-resource-inputs.d.ts.map +1 -1
  2165. package/dist/esm/core/runtime/frontend-companion-resource-inputs.js.map +1 -1
  2166. package/dist/esm/core/runtime/routes.frontend.definitions.d.ts.map +1 -1
  2167. package/dist/esm/core/runtime/routes.frontend.definitions.js.map +1 -1
  2168. package/dist/esm/core/runtime/runtime.frontend.schemas.d.ts.map +1 -1
  2169. package/dist/esm/core/runtime/runtime.frontend.schemas.js.map +1 -1
  2170. package/dist/esm/core/runtime/start-application.frontend.service.d.ts +21 -2
  2171. package/dist/esm/core/runtime/start-application.frontend.service.d.ts.map +1 -1
  2172. package/dist/esm/core/runtime/start-application.frontend.service.js +51 -4
  2173. package/dist/esm/core/runtime/start-application.frontend.service.js.map +1 -1
  2174. package/dist/esm/core/runtime/startup-failure-copy.frontend.d.ts.map +1 -1
  2175. package/dist/esm/core/runtime/startup-failure-copy.frontend.js.map +1 -1
  2176. package/dist/esm/core/runtime/useApplication.d.ts.map +1 -1
  2177. package/dist/esm/core/runtime/useApplication.js.map +1 -1
  2178. package/dist/esm/core/scope/AppScopeContext.d.ts.map +1 -1
  2179. package/dist/esm/core/scope/AppScopeContext.js.map +1 -1
  2180. package/dist/esm/core/scope/scope.frontend.schemas.d.ts.map +1 -1
  2181. package/dist/esm/core/scope/scope.frontend.schemas.js.map +1 -1
  2182. package/dist/esm/core/scope/scope.utils.frontend.service.d.ts.map +1 -1
  2183. package/dist/esm/core/scope/scope.utils.frontend.service.js.map +1 -1
  2184. package/dist/esm/core/scope/useAppScope.d.ts.map +1 -1
  2185. package/dist/esm/core/scope/useAppScope.js.map +1 -1
  2186. package/dist/esm/core/security/AnonymousSessionContext.d.ts.map +1 -1
  2187. package/dist/esm/core/security/AnonymousSessionContext.js.map +1 -1
  2188. package/dist/esm/core/security/AuthSessionContext.d.ts +11 -0
  2189. package/dist/esm/core/security/AuthSessionContext.d.ts.map +1 -1
  2190. package/dist/esm/core/security/AuthSessionContext.js +70 -22
  2191. package/dist/esm/core/security/AuthSessionContext.js.map +1 -1
  2192. package/dist/esm/core/security/StepUpAuthContext.d.ts.map +1 -1
  2193. package/dist/esm/core/security/StepUpAuthContext.js +10 -2
  2194. package/dist/esm/core/security/StepUpAuthContext.js.map +1 -1
  2195. package/dist/esm/core/security/UserOrgsContext.d.ts.map +1 -1
  2196. package/dist/esm/core/security/UserOrgsContext.js +72 -8
  2197. package/dist/esm/core/security/UserOrgsContext.js.map +1 -1
  2198. package/dist/esm/core/security/auth-redirect.frontend.utils.d.ts.map +1 -1
  2199. package/dist/esm/core/security/auth-redirect.frontend.utils.js.map +1 -1
  2200. package/dist/esm/core/security/auth-session.utils.d.ts.map +1 -1
  2201. package/dist/esm/core/security/auth-session.utils.js.map +1 -1
  2202. package/dist/esm/core/security/consent-gate.frontend.utils.d.ts.map +1 -1
  2203. package/dist/esm/core/security/consent-gate.frontend.utils.js.map +1 -1
  2204. package/dist/esm/core/security/cross-frontend-handoff.frontend.service.d.ts.map +1 -1
  2205. package/dist/esm/core/security/cross-frontend-handoff.frontend.service.js.map +1 -1
  2206. package/dist/esm/core/security/federated-reauthentication.frontend.d.ts.map +1 -1
  2207. package/dist/esm/core/security/federated-reauthentication.frontend.js.map +1 -1
  2208. package/dist/esm/core/security/jwt.frontend.utils.d.ts.map +1 -1
  2209. package/dist/esm/core/security/jwt.frontend.utils.js.map +1 -1
  2210. package/dist/esm/core/security/organization-onboarding.frontend.utils.d.ts.map +1 -1
  2211. package/dist/esm/core/security/organization-onboarding.frontend.utils.js.map +1 -1
  2212. package/dist/esm/core/security/pending-mfa-session-storage.frontend.utils.d.ts.map +1 -1
  2213. package/dist/esm/core/security/pending-mfa-session-storage.frontend.utils.js.map +1 -1
  2214. package/dist/esm/core/security/registration-outcome.frontend.utils.d.ts.map +1 -1
  2215. package/dist/esm/core/security/registration-outcome.frontend.utils.js.map +1 -1
  2216. package/dist/esm/core/security/route-organization-access.frontend.utils.d.ts +7 -0
  2217. package/dist/esm/core/security/route-organization-access.frontend.utils.d.ts.map +1 -1
  2218. package/dist/esm/core/security/route-organization-access.frontend.utils.js +8 -2
  2219. package/dist/esm/core/security/route-organization-access.frontend.utils.js.map +1 -1
  2220. package/dist/esm/core/security/security.frontend.schemas.d.ts.map +1 -1
  2221. package/dist/esm/core/security/security.frontend.schemas.js.map +1 -1
  2222. package/dist/esm/core/security/session-token-storage.frontend.service.d.ts.map +1 -1
  2223. package/dist/esm/core/security/session-token-storage.frontend.service.js.map +1 -1
  2224. package/dist/esm/core/security/useAuthSession.d.ts.map +1 -1
  2225. package/dist/esm/core/security/useAuthSession.js.map +1 -1
  2226. package/dist/esm/core/security/useConsentGateBehavior.d.ts.map +1 -1
  2227. package/dist/esm/core/security/useConsentGateBehavior.js.map +1 -1
  2228. package/dist/esm/core/security/useDocumentAcceptanceGateBehavior.d.ts.map +1 -1
  2229. package/dist/esm/core/security/useDocumentAcceptanceGateBehavior.js.map +1 -1
  2230. package/dist/esm/core/security/useGrantedConsentPurposes.d.ts +30 -0
  2231. package/dist/esm/core/security/useGrantedConsentPurposes.d.ts.map +1 -0
  2232. package/dist/esm/core/security/useGrantedConsentPurposes.js +38 -0
  2233. package/dist/esm/core/security/useGrantedConsentPurposes.js.map +1 -0
  2234. package/dist/esm/core/security/useResolvedAuthConfig.d.ts.map +1 -1
  2235. package/dist/esm/core/security/useResolvedAuthConfig.js.map +1 -1
  2236. package/dist/esm/core/security/useRouteOrganizationAccess.d.ts.map +1 -1
  2237. package/dist/esm/core/security/useRouteOrganizationAccess.js.map +1 -1
  2238. package/dist/esm/core/security/useStepUpAuth.d.ts.map +1 -1
  2239. package/dist/esm/core/security/useStepUpAuth.js.map +1 -1
  2240. package/dist/esm/core/security/useUserOrgs.d.ts.map +1 -1
  2241. package/dist/esm/core/security/useUserOrgs.js.map +1 -1
  2242. package/dist/esm/core/ui/SurfaceErrorBoundary.d.ts.map +1 -1
  2243. package/dist/esm/core/ui/SurfaceErrorBoundary.js.map +1 -1
  2244. package/dist/esm/core/ui/SurfaceErrorBoundary.labels.d.ts.map +1 -1
  2245. package/dist/esm/core/ui/SurfaceErrorBoundary.labels.js.map +1 -1
  2246. package/dist/esm/core/ui/SurfacePolicyContext.d.ts.map +1 -1
  2247. package/dist/esm/core/ui/SurfacePolicyContext.js.map +1 -1
  2248. package/dist/esm/core/ui/TypographyScopeContext.d.ts.map +1 -1
  2249. package/dist/esm/core/ui/TypographyScopeContext.js.map +1 -1
  2250. package/dist/esm/core/ui/UIContext.d.ts.map +1 -1
  2251. package/dist/esm/core/ui/UIContext.js +10 -6
  2252. package/dist/esm/core/ui/UIContext.js.map +1 -1
  2253. package/dist/esm/core/ui/chart-style-defaults.d.ts.map +1 -1
  2254. package/dist/esm/core/ui/chart-style-defaults.js.map +1 -1
  2255. package/dist/esm/core/ui/cn.d.ts.map +1 -1
  2256. package/dist/esm/core/ui/cn.js.map +1 -1
  2257. package/dist/esm/core/ui/color-conversion.utils.d.ts +20 -0
  2258. package/dist/esm/core/ui/color-conversion.utils.d.ts.map +1 -1
  2259. package/dist/esm/core/ui/color-conversion.utils.js +39 -5
  2260. package/dist/esm/core/ui/color-conversion.utils.js.map +1 -1
  2261. package/dist/esm/core/ui/design-token-class-groups.d.ts.map +1 -1
  2262. package/dist/esm/core/ui/design-token-class-groups.js.map +1 -1
  2263. package/dist/esm/core/ui/design-token-config.utils.d.ts.map +1 -1
  2264. package/dist/esm/core/ui/design-token-config.utils.js.map +1 -1
  2265. package/dist/esm/core/ui/design-token.utils.d.ts.map +1 -1
  2266. package/dist/esm/core/ui/design-token.utils.js.map +1 -1
  2267. package/dist/esm/core/ui/material-runtime.d.ts.map +1 -1
  2268. package/dist/esm/core/ui/material-runtime.js.map +1 -1
  2269. package/dist/esm/core/ui/surface-a11y.utils.d.ts.map +1 -1
  2270. package/dist/esm/core/ui/surface-a11y.utils.js.map +1 -1
  2271. package/dist/esm/core/ui/theme-preference-storage.shared.d.ts.map +1 -1
  2272. package/dist/esm/core/ui/theme-preference-storage.shared.js.map +1 -1
  2273. package/dist/esm/core/ui/themes/default.theme.d.ts.map +1 -1
  2274. package/dist/esm/core/ui/themes/default.theme.js +22 -2
  2275. package/dist/esm/core/ui/themes/default.theme.js.map +1 -1
  2276. package/dist/esm/core/ui/ui.frontend.schemas.d.ts +6 -6
  2277. package/dist/esm/core/ui/ui.frontend.schemas.d.ts.map +1 -1
  2278. package/dist/esm/core/ui/ui.frontend.schemas.js +3 -3
  2279. package/dist/esm/core/ui/ui.frontend.schemas.js.map +1 -1
  2280. package/dist/esm/core/ui/useThemePreferenceControl.d.ts.map +1 -1
  2281. package/dist/esm/core/ui/useThemePreferenceControl.js.map +1 -1
  2282. package/dist/esm/core/ui/useUI.d.ts.map +1 -1
  2283. package/dist/esm/core/ui/useUI.js.map +1 -1
  2284. package/dist/esm/index.d.ts +10 -1
  2285. package/dist/esm/index.d.ts.map +1 -1
  2286. package/dist/esm/index.js +19 -1
  2287. package/dist/esm/index.js.map +1 -1
  2288. package/dist/esm/tailwind/index.d.ts.map +1 -1
  2289. package/dist/esm/tailwind/index.js.map +1 -1
  2290. package/dist/esm/testing/app-shell-placement-coverage.d.ts +43 -0
  2291. package/dist/esm/testing/app-shell-placement-coverage.d.ts.map +1 -0
  2292. package/dist/esm/testing/app-shell-placement-coverage.js +114 -0
  2293. package/dist/esm/testing/app-shell-placement-coverage.js.map +1 -0
  2294. package/dist/esm/testing/mock-builders.d.ts.map +1 -1
  2295. package/dist/esm/testing/mock-builders.js +5 -0
  2296. package/dist/esm/testing/mock-builders.js.map +1 -1
  2297. package/dist/esm/testing/mock-factory.d.ts.map +1 -1
  2298. package/dist/esm/testing/mock-factory.js.map +1 -1
  2299. package/dist/esm/testing/rmm-helpers.d.ts.map +1 -1
  2300. package/dist/esm/testing/rmm-helpers.js.map +1 -1
  2301. package/dist/esm/testing/test-providers.d.ts.map +1 -1
  2302. package/dist/esm/testing/test-providers.js.map +1 -1
  2303. package/dist/esm/testing.d.ts +1 -0
  2304. package/dist/esm/testing.d.ts.map +1 -1
  2305. package/dist/esm/testing.js +1 -0
  2306. package/dist/esm/testing.js.map +1 -1
  2307. package/dist/tsconfig.build.tsbuildinfo +1 -1
  2308. package/package.json +9 -7
  2309. package/dist/esm/core/navigation/useIsStackEntryActive.d.ts +0 -10
  2310. package/dist/esm/core/navigation/useIsStackEntryActive.d.ts.map +0 -1
  2311. package/dist/esm/core/navigation/useIsStackEntryActive.js +0 -15
  2312. package/dist/esm/core/navigation/useIsStackEntryActive.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"auth-redirect.frontend.utils.js","sourceRoot":"","sources":["../../../../../src/core/security/auth-redirect.frontend.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAEhF,OAAO,EAAE,gBAAgB,EAAE,MAAM,8DAA8D,CAAC;AAEhG,MAAM,CAAC,MAAM,yBAAyB,GAAG,UAAU,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAiC;IACxE,OAAO,wBAAwB,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAIvC;IACC,OAAO,GAAG,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,QAAgB,EAChB,cAAyC;IAEzC,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,EAAE,CAAC;QAC9C,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,CAAC,YAAY,EAAE,IAAI,GAAG,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtD,MAAM,CAAC,QAAQ,EAAE,KAAK,GAAG,EAAE,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvD,MAAM,YAAY,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;IAChD,YAAY,CAAC,GAAG,CAAC,yBAAyB,EAAE,cAAc,CAAC,CAAC;IAE5D,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;IAC1C,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACnF,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,MAAc;IAC1D,MAAM,YAAY,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;IACjD,MAAM,cAAc,GAAG,YAAY,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAEnE,OAAO,wBAAwB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,MAAc,EACd,eAAuB,gBAAgB,CAAC,IAAI;IAE5C,OAAO,6BAA6B,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC;AAC/D,CAAC","sourcesContent":["import { isSameOriginRedirectPath } from '@wildo-ai/saas-models/public-runtime';\n\nimport { CommonRoutePaths } from '~wildo-frontend-lib/core/runtime/routes.frontend.definitions';\n\nexport const AUTH_REDIRECT_QUERY_PARAM = 'redirect';\n\n/**\n * Is this a redirect target the app may navigate to after authentication?\n *\n * ## Why this delegates instead of testing prefixes\n *\n * The previous implementation was `target.startsWith('/') && !target.startsWith('//')`, and it is\n * worth writing down why that is not a weaker version of the check but a broken one: it tests the\n * bytes a human reads, while the browser navigates to what its URL PARSER produces, and the two\n * disagree on a whole family of inputs. SEVEN shapes passed it and resolved to `https://evil.com/` —\n * `/\\evil.com`, `/\\\\evil.com`, `/\\/evil.com`, and the tab / LF / CR variants that the parser strips\n * before parsing. The measurement and the two parser rules behind it are documented once, at\n * {@link isSameOriginRedirectPath}.\n *\n * The exploit is post-authentication, which is what makes it worth more than an ordinary open\n * redirect: the user has just proved who they are to a site they trust, and the app hands them to the\n * attacker's origin carrying that established trust.\n *\n * ## Why the predicate is imported rather than written here\n *\n * Three other surfaces answer the same question — the one-off-session receiver, the docs-site auth\n * exchange page, and the issuer/receiver schemas in `saas-models` — and on 2026-08-15 all four\n * carried the same hole, because each was a separately hand-written deny-list that \"mirrored\" the\n * others. One importable predicate is what stops the fifth copy from being written.\n */\nexport function isSafeAuthRedirectTarget(target: string | null | undefined): target is string {\n return isSameOriginRedirectPath(target);\n}\n\nexport function buildAuthRedirectTarget(params: {\n pathname: string;\n search?: string;\n hash?: string;\n}): string {\n return `${params.pathname}${params.search ?? ''}${params.hash ?? ''}`;\n}\n\nexport function appendAuthRedirectToPath(\n basePath: string,\n redirectTarget: string | null | undefined,\n): string {\n if (!isSafeAuthRedirectTarget(redirectTarget)) {\n return basePath;\n }\n\n const [pathAndQuery, hash = ''] = basePath.split('#');\n const [pathname, query = ''] = pathAndQuery.split('?');\n const searchParams = new URLSearchParams(query);\n searchParams.set(AUTH_REDIRECT_QUERY_PARAM, redirectTarget);\n\n const nextQuery = searchParams.toString();\n return `${pathname}${nextQuery ? `?${nextQuery}` : ''}${hash ? `#${hash}` : ''}`;\n}\n\nexport function extractAuthRedirectFromSearch(search: string): string | undefined {\n const searchParams = new URLSearchParams(search);\n const redirectTarget = searchParams.get(AUTH_REDIRECT_QUERY_PARAM);\n\n return isSafeAuthRedirectTarget(redirectTarget) ? redirectTarget : undefined;\n}\n\nexport function resolvePostAuthRedirect(\n search: string,\n fallbackPath: string = CommonRoutePaths.home,\n): string {\n return extractAuthRedirectFromSearch(search) ?? fallbackPath;\n}\n"]}
1
+ {"version":3,"file":"auth-redirect.frontend.utils.js","sourceRoot":"","sources":["../../../../src/core/security/auth-redirect.frontend.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAEhF,OAAO,EAAE,gBAAgB,EAAE,MAAM,8DAA8D,CAAC;AAEhG,MAAM,CAAC,MAAM,yBAAyB,GAAG,UAAU,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAiC;IACxE,OAAO,wBAAwB,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAIvC;IACC,OAAO,GAAG,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,QAAgB,EAChB,cAAyC;IAEzC,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,EAAE,CAAC;QAC9C,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,CAAC,YAAY,EAAE,IAAI,GAAG,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtD,MAAM,CAAC,QAAQ,EAAE,KAAK,GAAG,EAAE,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvD,MAAM,YAAY,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;IAChD,YAAY,CAAC,GAAG,CAAC,yBAAyB,EAAE,cAAc,CAAC,CAAC;IAE5D,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;IAC1C,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACnF,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,MAAc;IAC1D,MAAM,YAAY,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;IACjD,MAAM,cAAc,GAAG,YAAY,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAEnE,OAAO,wBAAwB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,MAAc,EACd,eAAuB,gBAAgB,CAAC,IAAI;IAE5C,OAAO,6BAA6B,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC;AAC/D,CAAC","sourcesContent":["import { isSameOriginRedirectPath } from '@wildo-ai/saas-models/public-runtime';\n\nimport { CommonRoutePaths } from '~wildo-frontend-lib/core/runtime/routes.frontend.definitions';\n\nexport const AUTH_REDIRECT_QUERY_PARAM = 'redirect';\n\n/**\n * Is this a redirect target the app may navigate to after authentication?\n *\n * ## Why this delegates instead of testing prefixes\n *\n * The previous implementation was `target.startsWith('/') && !target.startsWith('//')`, and it is\n * worth writing down why that is not a weaker version of the check but a broken one: it tests the\n * bytes a human reads, while the browser navigates to what its URL PARSER produces, and the two\n * disagree on a whole family of inputs. SEVEN shapes passed it and resolved to `https://evil.com/` —\n * `/\\evil.com`, `/\\\\evil.com`, `/\\/evil.com`, and the tab / LF / CR variants that the parser strips\n * before parsing. The measurement and the two parser rules behind it are documented once, at\n * {@link isSameOriginRedirectPath}.\n *\n * The exploit is post-authentication, which is what makes it worth more than an ordinary open\n * redirect: the user has just proved who they are to a site they trust, and the app hands them to the\n * attacker's origin carrying that established trust.\n *\n * ## Why the predicate is imported rather than written here\n *\n * Three other surfaces answer the same question — the one-off-session receiver, the docs-site auth\n * exchange page, and the issuer/receiver schemas in `saas-models` — and on 2026-08-15 all four\n * carried the same hole, because each was a separately hand-written deny-list that \"mirrored\" the\n * others. One importable predicate is what stops the fifth copy from being written.\n */\nexport function isSafeAuthRedirectTarget(target: string | null | undefined): target is string {\n return isSameOriginRedirectPath(target);\n}\n\nexport function buildAuthRedirectTarget(params: {\n pathname: string;\n search?: string;\n hash?: string;\n}): string {\n return `${params.pathname}${params.search ?? ''}${params.hash ?? ''}`;\n}\n\nexport function appendAuthRedirectToPath(\n basePath: string,\n redirectTarget: string | null | undefined,\n): string {\n if (!isSafeAuthRedirectTarget(redirectTarget)) {\n return basePath;\n }\n\n const [pathAndQuery, hash = ''] = basePath.split('#');\n const [pathname, query = ''] = pathAndQuery.split('?');\n const searchParams = new URLSearchParams(query);\n searchParams.set(AUTH_REDIRECT_QUERY_PARAM, redirectTarget);\n\n const nextQuery = searchParams.toString();\n return `${pathname}${nextQuery ? `?${nextQuery}` : ''}${hash ? `#${hash}` : ''}`;\n}\n\nexport function extractAuthRedirectFromSearch(search: string): string | undefined {\n const searchParams = new URLSearchParams(search);\n const redirectTarget = searchParams.get(AUTH_REDIRECT_QUERY_PARAM);\n\n return isSafeAuthRedirectTarget(redirectTarget) ? redirectTarget : undefined;\n}\n\nexport function resolvePostAuthRedirect(\n search: string,\n fallbackPath: string = CommonRoutePaths.home,\n): string {\n return extractAuthRedirectFromSearch(search) ?? fallbackPath;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"auth-session.utils.d.ts","sourceRoot":"","sources":["../../../../../src/core/security/auth-session.utils.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,WAAW,yBAAyB;IACxC,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,UAAU,EAAE,CAAC;IAC7B,eAAe,EAAE,UAAU,EAAE,CAAC;IAC9B,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAkBD;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO;IAEP;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAuCjD;;;OAGG;IACH,MAAM,CAAC,oBAAoB,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAiBhD;;;;;;;;OAQG;IACH,MAAM,CAAC,2BAA2B,CAChC,WAAW,EAAE,OAAO,EACpB,mBAAmB,EAAE,UAAU,EAAE,EACjC,2BAA2B,EAAE,UAAU,EAAE,EACzC,oBAAoB,EAAE,UAAU,EAAE,GACjC,yBAAyB;CA0D7B"}
1
+ {"version":3,"file":"auth-session.utils.d.ts","sourceRoot":"","sources":["../../../../src/core/security/auth-session.utils.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,WAAW,yBAAyB;IACxC,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,UAAU,EAAE,CAAC;IAC7B,eAAe,EAAE,UAAU,EAAE,CAAC;IAC9B,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAkBD;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO;IAEP;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAuCjD;;;OAGG;IACH,MAAM,CAAC,oBAAoB,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAiBhD;;;;;;;;OAQG;IACH,MAAM,CAAC,2BAA2B,CAChC,WAAW,EAAE,OAAO,EACpB,mBAAmB,EAAE,UAAU,EAAE,EACjC,2BAA2B,EAAE,UAAU,EAAE,EACzC,oBAAoB,EAAE,UAAU,EAAE,GACjC,yBAAyB;CA0D7B"}
@@ -1 +1 @@
1
- {"version":3,"file":"auth-session.utils.js","sourceRoot":"","sources":["../../../../../src/core/security/auth-session.utils.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ErrorType,\n HttpStatusCode,\n} from '@wildo-ai/saas-models';\nimport { AuthUtils, WildoError_Frontend, ErrorCustomMessageReference } from '@wildo-ai/saas-models';\nimport type { AuthMethod } from '@wildo-ai/saas-models';\n\nexport interface AccountCompletenessResult {\n isComplete: boolean;\n missingMethods: AuthMethod[];\n enrolledMethods: AuthMethod[];\n requiresEnrollment: boolean;\n}\n\nconst AUTHENTICATION_ERROR_REFERENCES: readonly ErrorCustomMessageReference[] = [\n ErrorCustomMessageReference.AUTHENTICATION,\n ErrorCustomMessageReference.JWT_TOKEN_EXPIRED,\n ErrorCustomMessageReference.JWT_TOKEN_INVALID,\n ErrorCustomMessageReference.JWT_TOKEN_NOT_FOUND,\n ErrorCustomMessageReference.JWT_TOKEN_NOT_VERIFIED,\n ErrorCustomMessageReference.AUTHENTICATION_INVALID_TOKEN,\n ErrorCustomMessageReference.AUTHENTICATION_JWT_TOKEN_FAILED,\n ErrorCustomMessageReference.AUTHENTICATION_SESSION_INVALID,\n ErrorCustomMessageReference.AUTHENTICATION_SESSION_EXPIRED,\n ErrorCustomMessageReference.AUTHENTICATION_USER_NOT_AUTHORIZED,\n ErrorCustomMessageReference.AUTHENTICATION_API_KEY_INVALID,\n ErrorCustomMessageReference.AUTHENTICATION_API_KEY_FAILED,\n ErrorCustomMessageReference.AUTHENTICATION_NO_AUTHENTICATION_PROVIDED,\n] as const;\n\n/**\n * Static utility class for authentication/session non-component logic.\n */\nexport class AuthSessionUtils {\n private constructor() {}\n\n /**\n * Check if an error is an AUTHENTICATION (session-invalid) error — i.e. the\n * caller's session/token is missing, expired, or invalid and they must\n * re-authenticate. This drives the session-restore force-logout, so a false\n * positive here logs a perfectly valid session out.\n *\n * Authentication (401 / session-invalid) and AUTHORIZATION (403 / scope /\n * permission) are DISTINCT axes and are mutually exclusive: a permission\n * denial is NOT a reason to destroy the session. We therefore short-circuit\n * to `false` for any authorization error BEFORE the reference-list check\n * below — this neutralizes `AUTHENTICATION_USER_NOT_AUTHORIZED`, which is\n * semantically an authorization concept that merely lives in the\n * authentication-namespaced `ErrorCustomMessageReference` enum. When it\n * arrives as a 403 (the realistic case) it is an authorization error, full\n * stop, and must not log the user out (recovered 2026-06-29: the\n * session-restore path over-logged-out on scope errors carrying this ref).\n */\n static isAuthenticationError(error: any): boolean {\n if (AuthSessionUtils.isAuthorizationError(error)) {\n return false;\n }\n\n const wildoError = error?.wildoError as WildoError_Frontend | undefined;\n if (wildoError) {\n if (wildoError.type === ErrorType.AUTHENTICATION) {\n return true;\n }\n if (wildoError.customMessageReference) {\n if (AUTHENTICATION_ERROR_REFERENCES.includes(wildoError.customMessageReference as ErrorCustomMessageReference)) {\n return true;\n }\n }\n }\n\n if (error?.response?.status) {\n const status = error.response.status;\n if (status === HttpStatusCode.UNAUTHORIZED) {\n return true;\n }\n }\n\n if (error?.response?.data?.error) {\n const errorData = error.response.data.error;\n if (errorData.type === ErrorType.AUTHENTICATION) {\n return true;\n }\n if (errorData.code) {\n if (AUTHENTICATION_ERROR_REFERENCES.includes(errorData.code as ErrorCustomMessageReference)) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n /**\n * Check whether an error represents an authorization/scope problem rather than an\n * invalid or expired authentication session.\n */\n static isAuthorizationError(error: any): boolean {\n const wildoError = error?.wildoError as WildoError_Frontend | undefined;\n if (wildoError?.type === ErrorType.AUTHORIZATION) {\n return true;\n }\n\n if (error?.response?.status === HttpStatusCode.FORBIDDEN) {\n return true;\n }\n\n if (error?.response?.data?.error?.type === ErrorType.AUTHORIZATION) {\n return true;\n }\n\n return false;\n }\n\n /**\n * D7: Frontend-only computation. Evaluates whether the user has enrolled sufficient\n * second-factor methods to satisfy the MFA policy.\n *\n * @param requiresMFA - Backend-computed flag incorporating app-level + org-level policy\n * @param availableMFAMethods - Policy-filtered methods from the auth response\n * @param enrolledSecondFactorMethods - Methods the user has already enrolled\n * @param acceptableMFAMethods - App-config `mfaPolicy.acceptableMFAMethods` (may be empty)\n */\n static evaluateAccountCompleteness(\n requiresMFA: boolean,\n availableMFAMethods: AuthMethod[],\n enrolledSecondFactorMethods: AuthMethod[],\n acceptableMFAMethods: AuthMethod[],\n ): AccountCompletenessResult {\n if (!requiresMFA) {\n return {\n isComplete: true,\n missingMethods: [],\n enrolledMethods: enrolledSecondFactorMethods,\n requiresEnrollment: false,\n };\n }\n\n // `acceptableMFAMethods` NARROWS the policy-derived list — it never replaces it.\n //\n // This mirrors the backend, where `_getAvailableSecondFactorMethods` seeds its candidates from the\n // intrinsic factor map and applies `acceptableMFAMethods` as a FILTER, so app config can only ever\n // subtract methods. Resolving it as a REPLACEMENT here (`acceptable.length > 0 ? acceptable : available`)\n // widened the set back out to raw config, which could name methods that are impossible for this user:\n // an SSO redirect flow (intrinsically FIRST_ONLY — never an MFA ceremony, B-SEC-1) or a method disabled\n // for their user type. `isComplete` was never wrong — it requires an ENROLLED method to match, and those\n // are never enrolled — but `missingMethods` was, so the enrollment UI could instruct a user to enrol\n // something they can never enrol.\n //\n // An EMPTY intersection is honest, not a regression: it means the policy admits no second factor this\n // user could satisfy, which the startup config validator now rejects outright as a deadlock — so it\n // cannot reach production, and surfacing \"enrollment required, nothing offered\" beats naming an\n // impossible method.\n const acceptableSet: AuthMethod[] = acceptableMFAMethods.length > 0\n ? availableMFAMethods.filter((method) => acceptableMFAMethods.includes(method))\n : availableMFAMethods;\n\n /*\n * PRESENTABLE, not enrolled: enrolled ∪ always-available.\n *\n * `enrolledSecondFactorMethods` used to carry the always-available factor itself, so this line\n * read `new Set(enrolledSecondFactorMethods)` and was accidentally right. Once that method\n * started meaning what its name says — a deliberate setup act, empty when nothing is set up —\n * this computation had to say out loud which set it wants, or a user whose policy accepts email\n * OTP would be told to enroll something they do not need.\n *\n * The union is done HERE rather than being carried in a new DTO field because the always-\n * available set is a fact about the VOCABULARY, not about the user: any consumer can derive it\n * without asking the server, and a field would be a second copy that can go stale.\n */\n const presentableSet = new Set([\n ...enrolledSecondFactorMethods,\n ...AuthUtils.getAlwaysAvailableSecondFactorMethods(),\n ]);\n const hasAcceptableEnrollment = acceptableSet.some(m => presentableSet.has(m));\n\n // Always-available factors are never \"missing\" — there is no setup step to point the user at.\n const missingMethods = acceptableSet.filter(m => !presentableSet.has(m));\n\n return {\n isComplete: hasAcceptableEnrollment,\n missingMethods,\n enrolledMethods: enrolledSecondFactorMethods,\n requiresEnrollment: !hasAcceptableEnrollment,\n };\n }\n}\n"]}
1
+ {"version":3,"file":"auth-session.utils.js","sourceRoot":"","sources":["../../../../src/core/security/auth-session.utils.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ErrorType,\n HttpStatusCode,\n} from '@wildo-ai/saas-models';\nimport { AuthUtils, WildoError_Frontend, ErrorCustomMessageReference } from '@wildo-ai/saas-models';\nimport type { AuthMethod } from '@wildo-ai/saas-models';\n\nexport interface AccountCompletenessResult {\n isComplete: boolean;\n missingMethods: AuthMethod[];\n enrolledMethods: AuthMethod[];\n requiresEnrollment: boolean;\n}\n\nconst AUTHENTICATION_ERROR_REFERENCES: readonly ErrorCustomMessageReference[] = [\n ErrorCustomMessageReference.AUTHENTICATION,\n ErrorCustomMessageReference.JWT_TOKEN_EXPIRED,\n ErrorCustomMessageReference.JWT_TOKEN_INVALID,\n ErrorCustomMessageReference.JWT_TOKEN_NOT_FOUND,\n ErrorCustomMessageReference.JWT_TOKEN_NOT_VERIFIED,\n ErrorCustomMessageReference.AUTHENTICATION_INVALID_TOKEN,\n ErrorCustomMessageReference.AUTHENTICATION_JWT_TOKEN_FAILED,\n ErrorCustomMessageReference.AUTHENTICATION_SESSION_INVALID,\n ErrorCustomMessageReference.AUTHENTICATION_SESSION_EXPIRED,\n ErrorCustomMessageReference.AUTHENTICATION_USER_NOT_AUTHORIZED,\n ErrorCustomMessageReference.AUTHENTICATION_API_KEY_INVALID,\n ErrorCustomMessageReference.AUTHENTICATION_API_KEY_FAILED,\n ErrorCustomMessageReference.AUTHENTICATION_NO_AUTHENTICATION_PROVIDED,\n] as const;\n\n/**\n * Static utility class for authentication/session non-component logic.\n */\nexport class AuthSessionUtils {\n private constructor() {}\n\n /**\n * Check if an error is an AUTHENTICATION (session-invalid) error — i.e. the\n * caller's session/token is missing, expired, or invalid and they must\n * re-authenticate. This drives the session-restore force-logout, so a false\n * positive here logs a perfectly valid session out.\n *\n * Authentication (401 / session-invalid) and AUTHORIZATION (403 / scope /\n * permission) are DISTINCT axes and are mutually exclusive: a permission\n * denial is NOT a reason to destroy the session. We therefore short-circuit\n * to `false` for any authorization error BEFORE the reference-list check\n * below — this neutralizes `AUTHENTICATION_USER_NOT_AUTHORIZED`, which is\n * semantically an authorization concept that merely lives in the\n * authentication-namespaced `ErrorCustomMessageReference` enum. When it\n * arrives as a 403 (the realistic case) it is an authorization error, full\n * stop, and must not log the user out (recovered 2026-06-29: the\n * session-restore path over-logged-out on scope errors carrying this ref).\n */\n static isAuthenticationError(error: any): boolean {\n if (AuthSessionUtils.isAuthorizationError(error)) {\n return false;\n }\n\n const wildoError = error?.wildoError as WildoError_Frontend | undefined;\n if (wildoError) {\n if (wildoError.type === ErrorType.AUTHENTICATION) {\n return true;\n }\n if (wildoError.customMessageReference) {\n if (AUTHENTICATION_ERROR_REFERENCES.includes(wildoError.customMessageReference as ErrorCustomMessageReference)) {\n return true;\n }\n }\n }\n\n if (error?.response?.status) {\n const status = error.response.status;\n if (status === HttpStatusCode.UNAUTHORIZED) {\n return true;\n }\n }\n\n if (error?.response?.data?.error) {\n const errorData = error.response.data.error;\n if (errorData.type === ErrorType.AUTHENTICATION) {\n return true;\n }\n if (errorData.code) {\n if (AUTHENTICATION_ERROR_REFERENCES.includes(errorData.code as ErrorCustomMessageReference)) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n /**\n * Check whether an error represents an authorization/scope problem rather than an\n * invalid or expired authentication session.\n */\n static isAuthorizationError(error: any): boolean {\n const wildoError = error?.wildoError as WildoError_Frontend | undefined;\n if (wildoError?.type === ErrorType.AUTHORIZATION) {\n return true;\n }\n\n if (error?.response?.status === HttpStatusCode.FORBIDDEN) {\n return true;\n }\n\n if (error?.response?.data?.error?.type === ErrorType.AUTHORIZATION) {\n return true;\n }\n\n return false;\n }\n\n /**\n * D7: Frontend-only computation. Evaluates whether the user has enrolled sufficient\n * second-factor methods to satisfy the MFA policy.\n *\n * @param requiresMFA - Backend-computed flag incorporating app-level + org-level policy\n * @param availableMFAMethods - Policy-filtered methods from the auth response\n * @param enrolledSecondFactorMethods - Methods the user has already enrolled\n * @param acceptableMFAMethods - App-config `mfaPolicy.acceptableMFAMethods` (may be empty)\n */\n static evaluateAccountCompleteness(\n requiresMFA: boolean,\n availableMFAMethods: AuthMethod[],\n enrolledSecondFactorMethods: AuthMethod[],\n acceptableMFAMethods: AuthMethod[],\n ): AccountCompletenessResult {\n if (!requiresMFA) {\n return {\n isComplete: true,\n missingMethods: [],\n enrolledMethods: enrolledSecondFactorMethods,\n requiresEnrollment: false,\n };\n }\n\n // `acceptableMFAMethods` NARROWS the policy-derived list — it never replaces it.\n //\n // This mirrors the backend, where `_getAvailableSecondFactorMethods` seeds its candidates from the\n // intrinsic factor map and applies `acceptableMFAMethods` as a FILTER, so app config can only ever\n // subtract methods. Resolving it as a REPLACEMENT here (`acceptable.length > 0 ? acceptable : available`)\n // widened the set back out to raw config, which could name methods that are impossible for this user:\n // an SSO redirect flow (intrinsically FIRST_ONLY — never an MFA ceremony, B-SEC-1) or a method disabled\n // for their user type. `isComplete` was never wrong — it requires an ENROLLED method to match, and those\n // are never enrolled — but `missingMethods` was, so the enrollment UI could instruct a user to enrol\n // something they can never enrol.\n //\n // An EMPTY intersection is honest, not a regression: it means the policy admits no second factor this\n // user could satisfy, which the startup config validator now rejects outright as a deadlock — so it\n // cannot reach production, and surfacing \"enrollment required, nothing offered\" beats naming an\n // impossible method.\n const acceptableSet: AuthMethod[] = acceptableMFAMethods.length > 0\n ? availableMFAMethods.filter((method) => acceptableMFAMethods.includes(method))\n : availableMFAMethods;\n\n /*\n * PRESENTABLE, not enrolled: enrolled ∪ always-available.\n *\n * `enrolledSecondFactorMethods` used to carry the always-available factor itself, so this line\n * read `new Set(enrolledSecondFactorMethods)` and was accidentally right. Once that method\n * started meaning what its name says — a deliberate setup act, empty when nothing is set up —\n * this computation had to say out loud which set it wants, or a user whose policy accepts email\n * OTP would be told to enroll something they do not need.\n *\n * The union is done HERE rather than being carried in a new DTO field because the always-\n * available set is a fact about the VOCABULARY, not about the user: any consumer can derive it\n * without asking the server, and a field would be a second copy that can go stale.\n */\n const presentableSet = new Set([\n ...enrolledSecondFactorMethods,\n ...AuthUtils.getAlwaysAvailableSecondFactorMethods(),\n ]);\n const hasAcceptableEnrollment = acceptableSet.some(m => presentableSet.has(m));\n\n // Always-available factors are never \"missing\" — there is no setup step to point the user at.\n const missingMethods = acceptableSet.filter(m => !presentableSet.has(m));\n\n return {\n isComplete: hasAcceptableEnrollment,\n missingMethods,\n enrolledMethods: enrolledSecondFactorMethods,\n requiresEnrollment: !hasAcceptableEnrollment,\n };\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"consent-gate.frontend.utils.d.ts","sourceRoot":"","sources":["../../../../../src/core/security/consent-gate.frontend.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,cAAc,EAGd,KAAK,yBAAyB,EAC/B,MAAM,uBAAuB,CAAC;AAE/B;;;;;GAKG;AACH,oBAAY,iBAAiB;IAC3B,0GAA0G;IAC1G,cAAc,kBAAkB;IAChC;;;;OAIG;IACH,QAAQ,aAAa;IACrB;;;;OAIG;IACH,MAAM,WAAW;IACjB,mGAAmG;IACnG,SAAS,cAAc;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,iFAAiF;IACjF,yBAAyB,EAAE,yBAAyB,GAAG,SAAS,CAAC;IACjE,2EAA2E;IAC3E,gBAAgB,EAAE,OAAO,CAAC;IAC1B,4FAA4F;IAC5F,wBAAwB,EAAE,OAAO,CAAC;IAClC;;;;OAIG;IACH,iCAAiC,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtD,iFAAiF;IACjF,OAAO,EAAE;QAAE,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;QAAC,gBAAgB,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;KAAE,GAAG,IAAI,GAAG,SAAS,CAAC;CACzG;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,8DAA8D;IAC9D,gBAAgB,EAAE,cAAc,EAAE,CAAC;IACnC,qGAAqG;IACrG,uBAAuB,EAAE,cAAc,EAAE,CAAC;IAC1C;;;;OAIG;IACH,gBAAgB,EAAE,cAAc,EAAE,CAAC;IACnC,+CAA+C;IAC/C,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,uFAAuF;IACvF,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,gBAAgB,GAAG,gBAAgB,CAyChF;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,SAAS,cAAc,EAAE,EAClC,OAAO,EAAE,SAAS,cAAc,EAAE,EAClC,QAAQ,EAAE,SAAS,cAAc,EAAE,GAClC,cAAc,EAAE,CAIlB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,kBAAkB,GAAG,iBAAiB,CAAC,EACrE,OAAO,EAAE,SAAS,cAAc,EAAE,EAClC,QAAQ,EAAE,SAAS,cAAc,EAAE,GAClC,cAAc,EAAE,CAGlB"}
1
+ {"version":3,"file":"consent-gate.frontend.utils.d.ts","sourceRoot":"","sources":["../../../../src/core/security/consent-gate.frontend.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,cAAc,EAGd,KAAK,yBAAyB,EAC/B,MAAM,uBAAuB,CAAC;AAE/B;;;;;GAKG;AACH,oBAAY,iBAAiB;IAC3B,0GAA0G;IAC1G,cAAc,kBAAkB;IAChC;;;;OAIG;IACH,QAAQ,aAAa;IACrB;;;;OAIG;IACH,MAAM,WAAW;IACjB,mGAAmG;IACnG,SAAS,cAAc;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,iFAAiF;IACjF,yBAAyB,EAAE,yBAAyB,GAAG,SAAS,CAAC;IACjE,2EAA2E;IAC3E,gBAAgB,EAAE,OAAO,CAAC;IAC1B,4FAA4F;IAC5F,wBAAwB,EAAE,OAAO,CAAC;IAClC;;;;OAIG;IACH,iCAAiC,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtD,iFAAiF;IACjF,OAAO,EAAE;QAAE,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;QAAC,gBAAgB,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;KAAE,GAAG,IAAI,GAAG,SAAS,CAAC;CACzG;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,8DAA8D;IAC9D,gBAAgB,EAAE,cAAc,EAAE,CAAC;IACnC,qGAAqG;IACrG,uBAAuB,EAAE,cAAc,EAAE,CAAC;IAC1C;;;;OAIG;IACH,gBAAgB,EAAE,cAAc,EAAE,CAAC;IACnC,+CAA+C;IAC/C,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,uFAAuF;IACvF,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,gBAAgB,GAAG,gBAAgB,CAyChF;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,SAAS,cAAc,EAAE,EAClC,OAAO,EAAE,SAAS,cAAc,EAAE,EAClC,QAAQ,EAAE,SAAS,cAAc,EAAE,GAClC,cAAc,EAAE,CAIlB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,kBAAkB,GAAG,iBAAiB,CAAC,EACrE,OAAO,EAAE,SAAS,cAAc,EAAE,EAClC,QAAQ,EAAE,SAAS,cAAc,EAAE,GAClC,cAAc,EAAE,CAGlB"}
@@ -1 +1 @@
1
- {"version":3,"file":"consent-gate.frontend.utils.js","sourceRoot":"","sources":["../../../../../src/core/security/consent-gate.frontend.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAG/B,sBAAsB,EACtB,wBAAwB,GAEzB,MAAM,uBAAuB,CAAC;AAE/B;;;;;GAKG;AACH,MAAM,CAAN,IAAY,iBAiBX;AAjBD,WAAY,iBAAiB;IAC3B,0GAA0G;IAC1G,qDAAgC,CAAA;IAChC;;;;OAIG;IACH,0CAAqB,CAAA;IACrB;;;;OAIG;IACH,sCAAiB,CAAA;IACjB,mGAAmG;IACnG,4CAAuB,CAAA;AACzB,CAAC,EAjBW,iBAAiB,KAAjB,iBAAiB,QAiB5B;AAqCD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAuB;IAC5D,MAAM,gBAAgB,GAAG,wBAAwB,CAAC,KAAK,CAAC,yBAAyB,EAAE,gBAAgB,CAAC,CAAC;IACrG,MAAM,eAAe,GAAG,wBAAwB,CAAC,KAAK,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;IACnF,MAAM,uBAAuB,GAAG,sBAAsB,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;IAE1F,mGAAmG;IACnG,kGAAkG;IAClG,8FAA8F;IAC9F,mCAAmC;IACnC,MAAM,aAAa,GAAG,+BAA+B,CAAC;QACpD,gBAAgB;QAChB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,wBAAwB,EAAE,KAAK,CAAC,wBAAwB;QACxD,0BAA0B,EAAE,KAAK,CAAC,iCAAiC;KACpE,CAAC,CAAC;IACH,MAAM,gBAAgB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAEhG,MAAM,IAAI,GAAG;QACX,gBAAgB;QAChB,uBAAuB;QACvB,gBAAgB;QAChB,eAAe;QACf,eAAe,EAAE,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,yBAAyB,EAAE,eAAe,CAAC,CAAC,CAAC,SAAS;KAC5G,CAAC;IAEF,IAAI,uBAAuB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvC,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,iBAAiB,CAAC,QAAQ,EAAE,CAAC;IACzD,CAAC;IACD,sGAAsG;IACtG,uGAAuG;IACvG,oDAAoD;IACpD,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1D,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,iBAAiB,CAAC,cAAc,EAAE,CAAC;IAC/D,CAAC;IACD,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnE,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,iBAAiB,CAAC,cAAc,EAAE,CAAC;IAC/D,CAAC;IACD,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACjF,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,iBAAiB,CAAC,MAAM,EAAE,CAAC;IACvD,CAAC;IACD,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,iBAAiB,CAAC,SAAS,EAAE,CAAC;AAC1D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CACpC,OAAkC,EAClC,OAAkC,EAClC,QAAmC;IAEnC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IACrE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IACvE,OAAO,wBAAwB,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;AACxD,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAqE,EACrE,OAAkC,EAClC,QAAmC;IAEnC,MAAM,IAAI,GAAG,sBAAsB,CAAC,KAAK,CAAC,eAAe,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC9E,OAAO,sBAAsB,CAAC,IAAI,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAC9D,CAAC","sourcesContent":["import {\n applicationAskedConsentPurposes,\n CONSENT_PURPOSES,\n ConsentPurpose,\n missingConsentPurposes,\n normalizeConsentPurposes,\n type ServiceConsentRequirement,\n} from '@wildo-ai/saas-models';\n\n/**\n * What the application-tier consent gate must do for the signed-in person, right now (#534 / #453).\n *\n * A closed vocabulary rather than two booleans, because the four states differ in what they do to the\n * application, and a pair of flags admits a fifth (\"blocking AND a prompt\") that means nothing.\n */\nexport enum ConsentGateStatus {\n /** The application declares no required purpose and does no consent-based processing. Renders nothing. */\n NOT_APPLICABLE = 'notApplicable',\n /**\n * A purpose the application REQUIRES (`compliance.serviceConsentRequirement`) is not granted. The\n * gate replaces every signed-in route until it is — this is the enforced half of\n * `operatorComplianceIdentity.serviceConsentRequirement`.\n */\n REQUIRED = 'required',\n /**\n * Nothing is required, but the application does consent-based processing and the person has never\n * made a decision. A NON-blocking prompt: the application renders beneath it, and the processing\n * stays off (the analytics provider reads the empty set) until the person grants it.\n */\n PROMPT = 'prompt',\n /** Every required purpose is granted, and any optional purpose was decided on. Renders nothing. */\n SATISFIED = 'satisfied',\n}\n\nexport interface ConsentGateInput {\n /** `compliance.serviceConsentRequirement` — absent means nothing is required. */\n serviceConsentRequirement: ServiceConsentRequirement | undefined;\n /** Whether the application runs analytics at all (`analytics.enabled`). */\n analyticsEnabled: boolean;\n /** `analytics.requiresConsent` — `false` is a claim analytics here is not consent-based. */\n analyticsRequiresConsent: boolean;\n /**\n * `compliance.capabilityDeclaredConsentPurposes` (#1462) — every purpose declared by at least one\n * resource operation's `consentGate`, derived by the engine at boot. Absent (an app config resolved\n * before this field existed) behaves exactly like an empty array.\n */\n capabilityDeclaredConsentPurposes?: readonly string[];\n /** The person's stored consent, or null when they have no preferences record. */\n privacy: { consentedPurposes?: readonly string[]; consentDecidedAt?: Date | string } | null | undefined;\n}\n\nexport interface ConsentGateState {\n status: ConsentGateStatus;\n /** Purposes the application requires, in vocabulary order. */\n requiredPurposes: ConsentPurpose[];\n /** The required purposes the person has not granted. Non-empty exactly when `status` is REQUIRED. */\n missingRequiredPurposes: ConsentPurpose[];\n /**\n * Purposes the application actually USES on consent and does not require — the only ones a prompt\n * may offer. Never the whole vocabulary: asking for a purpose nothing processes collects a consent\n * that means nothing.\n */\n optionalPurposes: ConsentPurpose[];\n /** What the person has granted, normalized. */\n grantedPurposes: ConsentPurpose[];\n /** The operator's own words for what the requirement gates, when it gates anything. */\n gatedProcessing: string | undefined;\n}\n\n/**\n * Derive the gate's state from configuration and the stored decision. Pure, so every branch is\n * pinned without rendering.\n *\n * ## Fail closed on an absent record\n *\n * A person with no preferences record has granted nothing. When the application requires a purpose,\n * that is REQUIRED, never \"not loaded yet, let them through\" — the route already waits for session\n * restore, so an absent record here is a real absence.\n *\n * ## Which purposes a prompt offers\n *\n * Total over the configuration that states a use, and deliberately not over the enum: ANALYTICS when\n * analytics is enabled and consent-based; a `consentGate` purpose when at least one resource operation\n * declared one (#1462) — no configuration states a consent-based MARKETING use today, so no\n * application-tier surface asks for it; the inbound-contact form asks for it where it is used.\n */\nexport function deriveConsentGateState(input: ConsentGateInput): ConsentGateState {\n const requiredPurposes = normalizeConsentPurposes(input.serviceConsentRequirement?.requiredPurposes);\n const grantedPurposes = normalizeConsentPurposes(input.privacy?.consentedPurposes);\n const missingRequiredPurposes = missingConsentPurposes(grantedPurposes, requiredPurposes);\n\n // ONE derivation of \"what does this application ask\", shared with the anonymous-consent carry that\n // decides whether a visitor was shown enough for their decision to count as complete (#1258). Two\n // copies would drift invisibly: the gate would prompt for a purpose the carry had recorded as\n // already decided, or the reverse.\n const askedPurposes = applicationAskedConsentPurposes({\n requiredPurposes,\n analyticsEnabled: input.analyticsEnabled,\n analyticsRequiresConsent: input.analyticsRequiresConsent,\n capabilityDeclaredPurposes: input.capabilityDeclaredConsentPurposes,\n });\n const optionalPurposes = askedPurposes.filter((purpose) => !requiredPurposes.includes(purpose));\n\n const base = {\n requiredPurposes,\n missingRequiredPurposes,\n optionalPurposes,\n grantedPurposes,\n gatedProcessing: requiredPurposes.length > 0 ? input.serviceConsentRequirement?.gatedProcessing : undefined,\n };\n\n if (missingRequiredPurposes.length > 0) {\n return { ...base, status: ConsentGateStatus.REQUIRED };\n }\n // No preferences record and nothing required: there is no row a prompt could record a decision on, so\n // prompting would leave an undismissable panel stuck on \"could not save\". Nothing optional runs either\n // way — the analytics provider reads the empty set.\n if (input.privacy === null || input.privacy === undefined) {\n return { ...base, status: ConsentGateStatus.NOT_APPLICABLE };\n }\n if (requiredPurposes.length === 0 && optionalPurposes.length === 0) {\n return { ...base, status: ConsentGateStatus.NOT_APPLICABLE };\n }\n if (optionalPurposes.length > 0 && input.privacy?.consentDecidedAt === undefined) {\n return { ...base, status: ConsentGateStatus.PROMPT };\n }\n return { ...base, status: ConsentGateStatus.SATISFIED };\n}\n\n/**\n * The purpose set to store when the person chooses `selected` on a surface that offered `offered`.\n *\n * Purposes the surface did not offer keep their stored grant — a prompt about analytics must never\n * withdraw a purpose it did not show — and an offered purpose is granted exactly when selected.\n */\nexport function composeConsentDecision(\n granted: readonly ConsentPurpose[],\n offered: readonly ConsentPurpose[],\n selected: readonly ConsentPurpose[],\n): ConsentPurpose[] {\n const kept = granted.filter((purpose) => !offered.includes(purpose));\n const chosen = offered.filter((purpose) => selected.includes(purpose));\n return normalizeConsentPurposes([...kept, ...chosen]);\n}\n\n/**\n * The required purposes a `decide(offered, selected)` call would leave UNMET, were it saved as-is\n * (R9, #1258 Step 3).\n *\n * No shipped surface can trigger a non-empty result today — the REQUIRED panel always keeps every\n * required purpose in `selected`, and the PROMPT panel's `offered` never includes one (`optionalPurposes`\n * excludes `requiredPurposes` by construction in {@link deriveConsentGateState}). This exists so a\n * withdrawal surface neither of those two is — an application's own settings page, a future preset —\n * can compute the cost of a withdrawal BEFORE it saves.\n *\n * \"Refusing the withdrawal is not available\" (Step 3's own edge-case table): consent must be as easy to\n * withdraw as to give. So this never blocks anything by itself — it only lets the caller warn, or\n * require the person to acknowledge the cost, before calling `decide`.\n */\nexport function consentWithdrawalCost(\n state: Pick<ConsentGateState, 'requiredPurposes' | 'grantedPurposes'>,\n offered: readonly ConsentPurpose[],\n selected: readonly ConsentPurpose[],\n): ConsentPurpose[] {\n const next = composeConsentDecision(state.grantedPurposes, offered, selected);\n return missingConsentPurposes(next, state.requiredPurposes);\n}\n"]}
1
+ {"version":3,"file":"consent-gate.frontend.utils.js","sourceRoot":"","sources":["../../../../src/core/security/consent-gate.frontend.utils.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n applicationAskedConsentPurposes,\n CONSENT_PURPOSES,\n ConsentPurpose,\n missingConsentPurposes,\n normalizeConsentPurposes,\n type ServiceConsentRequirement,\n} from '@wildo-ai/saas-models';\n\n/**\n * What the application-tier consent gate must do for the signed-in person, right now (#534 / #453).\n *\n * A closed vocabulary rather than two booleans, because the four states differ in what they do to the\n * application, and a pair of flags admits a fifth (\"blocking AND a prompt\") that means nothing.\n */\nexport enum ConsentGateStatus {\n /** The application declares no required purpose and does no consent-based processing. Renders nothing. */\n NOT_APPLICABLE = 'notApplicable',\n /**\n * A purpose the application REQUIRES (`compliance.serviceConsentRequirement`) is not granted. The\n * gate replaces every signed-in route until it is — this is the enforced half of\n * `operatorComplianceIdentity.serviceConsentRequirement`.\n */\n REQUIRED = 'required',\n /**\n * Nothing is required, but the application does consent-based processing and the person has never\n * made a decision. A NON-blocking prompt: the application renders beneath it, and the processing\n * stays off (the analytics provider reads the empty set) until the person grants it.\n */\n PROMPT = 'prompt',\n /** Every required purpose is granted, and any optional purpose was decided on. Renders nothing. */\n SATISFIED = 'satisfied',\n}\n\nexport interface ConsentGateInput {\n /** `compliance.serviceConsentRequirement` — absent means nothing is required. */\n serviceConsentRequirement: ServiceConsentRequirement | undefined;\n /** Whether the application runs analytics at all (`analytics.enabled`). */\n analyticsEnabled: boolean;\n /** `analytics.requiresConsent` — `false` is a claim analytics here is not consent-based. */\n analyticsRequiresConsent: boolean;\n /**\n * `compliance.capabilityDeclaredConsentPurposes` (#1462) — every purpose declared by at least one\n * resource operation's `consentGate`, derived by the engine at boot. Absent (an app config resolved\n * before this field existed) behaves exactly like an empty array.\n */\n capabilityDeclaredConsentPurposes?: readonly string[];\n /** The person's stored consent, or null when they have no preferences record. */\n privacy: { consentedPurposes?: readonly string[]; consentDecidedAt?: Date | string } | null | undefined;\n}\n\nexport interface ConsentGateState {\n status: ConsentGateStatus;\n /** Purposes the application requires, in vocabulary order. */\n requiredPurposes: ConsentPurpose[];\n /** The required purposes the person has not granted. Non-empty exactly when `status` is REQUIRED. */\n missingRequiredPurposes: ConsentPurpose[];\n /**\n * Purposes the application actually USES on consent and does not require — the only ones a prompt\n * may offer. Never the whole vocabulary: asking for a purpose nothing processes collects a consent\n * that means nothing.\n */\n optionalPurposes: ConsentPurpose[];\n /** What the person has granted, normalized. */\n grantedPurposes: ConsentPurpose[];\n /** The operator's own words for what the requirement gates, when it gates anything. */\n gatedProcessing: string | undefined;\n}\n\n/**\n * Derive the gate's state from configuration and the stored decision. Pure, so every branch is\n * pinned without rendering.\n *\n * ## Fail closed on an absent record\n *\n * A person with no preferences record has granted nothing. When the application requires a purpose,\n * that is REQUIRED, never \"not loaded yet, let them through\" — the route already waits for session\n * restore, so an absent record here is a real absence.\n *\n * ## Which purposes a prompt offers\n *\n * Total over the configuration that states a use, and deliberately not over the enum: ANALYTICS when\n * analytics is enabled and consent-based; a `consentGate` purpose when at least one resource operation\n * declared one (#1462) — no configuration states a consent-based MARKETING use today, so no\n * application-tier surface asks for it; the inbound-contact form asks for it where it is used.\n */\nexport function deriveConsentGateState(input: ConsentGateInput): ConsentGateState {\n const requiredPurposes = normalizeConsentPurposes(input.serviceConsentRequirement?.requiredPurposes);\n const grantedPurposes = normalizeConsentPurposes(input.privacy?.consentedPurposes);\n const missingRequiredPurposes = missingConsentPurposes(grantedPurposes, requiredPurposes);\n\n // ONE derivation of \"what does this application ask\", shared with the anonymous-consent carry that\n // decides whether a visitor was shown enough for their decision to count as complete (#1258). Two\n // copies would drift invisibly: the gate would prompt for a purpose the carry had recorded as\n // already decided, or the reverse.\n const askedPurposes = applicationAskedConsentPurposes({\n requiredPurposes,\n analyticsEnabled: input.analyticsEnabled,\n analyticsRequiresConsent: input.analyticsRequiresConsent,\n capabilityDeclaredPurposes: input.capabilityDeclaredConsentPurposes,\n });\n const optionalPurposes = askedPurposes.filter((purpose) => !requiredPurposes.includes(purpose));\n\n const base = {\n requiredPurposes,\n missingRequiredPurposes,\n optionalPurposes,\n grantedPurposes,\n gatedProcessing: requiredPurposes.length > 0 ? input.serviceConsentRequirement?.gatedProcessing : undefined,\n };\n\n if (missingRequiredPurposes.length > 0) {\n return { ...base, status: ConsentGateStatus.REQUIRED };\n }\n // No preferences record and nothing required: there is no row a prompt could record a decision on, so\n // prompting would leave an undismissable panel stuck on \"could not save\". Nothing optional runs either\n // way — the analytics provider reads the empty set.\n if (input.privacy === null || input.privacy === undefined) {\n return { ...base, status: ConsentGateStatus.NOT_APPLICABLE };\n }\n if (requiredPurposes.length === 0 && optionalPurposes.length === 0) {\n return { ...base, status: ConsentGateStatus.NOT_APPLICABLE };\n }\n if (optionalPurposes.length > 0 && input.privacy?.consentDecidedAt === undefined) {\n return { ...base, status: ConsentGateStatus.PROMPT };\n }\n return { ...base, status: ConsentGateStatus.SATISFIED };\n}\n\n/**\n * The purpose set to store when the person chooses `selected` on a surface that offered `offered`.\n *\n * Purposes the surface did not offer keep their stored grant — a prompt about analytics must never\n * withdraw a purpose it did not show — and an offered purpose is granted exactly when selected.\n */\nexport function composeConsentDecision(\n granted: readonly ConsentPurpose[],\n offered: readonly ConsentPurpose[],\n selected: readonly ConsentPurpose[],\n): ConsentPurpose[] {\n const kept = granted.filter((purpose) => !offered.includes(purpose));\n const chosen = offered.filter((purpose) => selected.includes(purpose));\n return normalizeConsentPurposes([...kept, ...chosen]);\n}\n\n/**\n * The required purposes a `decide(offered, selected)` call would leave UNMET, were it saved as-is\n * (R9, #1258 Step 3).\n *\n * No shipped surface can trigger a non-empty result today — the REQUIRED panel always keeps every\n * required purpose in `selected`, and the PROMPT panel's `offered` never includes one (`optionalPurposes`\n * excludes `requiredPurposes` by construction in {@link deriveConsentGateState}). This exists so a\n * withdrawal surface neither of those two is — an application's own settings page, a future preset —\n * can compute the cost of a withdrawal BEFORE it saves.\n *\n * \"Refusing the withdrawal is not available\" (Step 3's own edge-case table): consent must be as easy to\n * withdraw as to give. So this never blocks anything by itself — it only lets the caller warn, or\n * require the person to acknowledge the cost, before calling `decide`.\n */\nexport function consentWithdrawalCost(\n state: Pick<ConsentGateState, 'requiredPurposes' | 'grantedPurposes'>,\n offered: readonly ConsentPurpose[],\n selected: readonly ConsentPurpose[],\n): ConsentPurpose[] {\n const next = composeConsentDecision(state.grantedPurposes, offered, selected);\n return missingConsentPurposes(next, state.requiredPurposes);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"cross-frontend-handoff.frontend.service.d.ts","sourceRoot":"","sources":["../../../../../src/core/security/cross-frontend-handoff.frontend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAGH,OAAO,EACL,6BAA6B,EAC7B,KAAK,2BAA2B,EAChC,KAAK,4BAA4B,EAClC,MAAM,sCAAsC,CAAC;AAE9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sEAAsE,CAAC;AAE3G;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,mCAAmC,GAC3C,6BAA6B,GAC7B,iBAAiB,GACjB,SAAS,GACT,oBAAoB,CAAC;AAEzB;;;;;;;;GAQG;AACH,qBAAa,+BAAgC,SAAQ,KAAK;IACxD,QAAQ,CAAC,IAAI,EAAE,mCAAmC,CAAC;IACnD,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;gBAEvB,IAAI,EAAE,mCAAmC,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;CAMlG;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,2BAA2B,EAClC,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,4BAA4B,CAAC,CAoBvC;AAiED,MAAM,MAAM,0BAA0B,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAElF;;;;;;;;;GASG;AACH,MAAM,WAAW,6BAA6B;IAC5C,MAAM,EAAE,0BAA0B,CAAC;IACnC,IAAI,EAAE,4BAA4B,GAAG,IAAI,CAAC;IAC1C,KAAK,EAAE,+BAA+B,GAAG,IAAI,CAAC;IAC9C,cAAc,EAAE,CACd,KAAK,EAAE,2BAA2B,EAClC,OAAO,CAAC,EAAE,cAAc,KACrB,OAAO,CAAC,4BAA4B,CAAC,CAAC;IAC3C,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,IAAI,6BAA6B,CAyDvE"}
1
+ {"version":3,"file":"cross-frontend-handoff.frontend.service.d.ts","sourceRoot":"","sources":["../../../../src/core/security/cross-frontend-handoff.frontend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAGH,OAAO,EACL,6BAA6B,EAC7B,KAAK,2BAA2B,EAChC,KAAK,4BAA4B,EAClC,MAAM,sCAAsC,CAAC;AAE9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sEAAsE,CAAC;AAE3G;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,mCAAmC,GAC3C,6BAA6B,GAC7B,iBAAiB,GACjB,SAAS,GACT,oBAAoB,CAAC;AAEzB;;;;;;;;GAQG;AACH,qBAAa,+BAAgC,SAAQ,KAAK;IACxD,QAAQ,CAAC,IAAI,EAAE,mCAAmC,CAAC;IACnD,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;gBAEvB,IAAI,EAAE,mCAAmC,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;CAMlG;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,2BAA2B,EAClC,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,4BAA4B,CAAC,CAoBvC;AAiED,MAAM,MAAM,0BAA0B,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAElF;;;;;;;;;GASG;AACH,MAAM,WAAW,6BAA6B;IAC5C,MAAM,EAAE,0BAA0B,CAAC;IACnC,IAAI,EAAE,4BAA4B,GAAG,IAAI,CAAC;IAC1C,KAAK,EAAE,+BAA+B,GAAG,IAAI,CAAC;IAC9C,cAAc,EAAE,CACd,KAAK,EAAE,2BAA2B,EAClC,OAAO,CAAC,EAAE,cAAc,KACrB,OAAO,CAAC,4BAA4B,CAAC,CAAC;IAC3C,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,IAAI,6BAA6B,CAyDvE"}
@@ -1 +1 @@
1
- {"version":3,"file":"cross-frontend-handoff.frontend.service.js","sourceRoot":"","sources":["../../../../../src/core/security/cross-frontend-handoff.frontend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjE,OAAO,EACL,6BAA6B,GAG9B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,mFAAmF,CAAC;AA2B7H;;;;;;;;GAQG;AACH,MAAM,OAAO,+BAAgC,SAAQ,KAAK;IAC/C,IAAI,CAAsC;IAC1C,UAAU,CAAgB;IAEnC,YAAY,IAAyC,EAAE,OAAe,EAAE,UAAyB;QAC/F,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iCAAiC,CAAC;QAC9C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,KAAkC,EAClC,OAAwB;IAExB,IAAI,QAAsC,CAAC;IAC3C,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,wBAAwB,EAAE,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACnF,CAAC;IAAC,OAAO,QAAiB,EAAE,CAAC;QAC3B,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;IAED,IACE,CAAC,QAAQ;QACT,OAAO,QAAQ,CAAC,UAAU,KAAK,QAAQ;QACvC,OAAO,QAAQ,CAAC,SAAS,KAAK,QAAQ,EACtC,CAAC;QACD,MAAM,IAAI,+BAA+B,CACvC,oBAAoB,EACpB,yDAAyD,EACzD,IAAI,CACL,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC;AAC5E,CAAC;AAED,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAS,MAAM,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC,CAAC;AAE1F;;;;;;;;GAQG;AACH,SAAS,eAAe,CAAC,QAAiB;IACxC,IAAI,QAAQ,YAAY,+BAA+B;QAAE,OAAO,QAAQ,CAAC;IAEzE,MAAM,SAAS,GAAG,QAKV,CAAC;IAET,MAAM,UAAU,GACd,OAAO,SAAS,EAAE,QAAQ,EAAE,MAAM,KAAK,QAAQ;QAC7C,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM;QAC3B,CAAC,CAAC,OAAO,SAAS,EAAE,UAAU,KAAK,QAAQ;YACzC,CAAC,CAAC,SAAS,CAAC,UAAU;YACtB,CAAC,CAAC,IAAI,CAAC;IAEb,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACxB,OAAO,IAAI,+BAA+B,CACxC,SAAS,EACT,SAAS,EAAE,OAAO,IAAI,qDAAqD,EAC3E,IAAI,CACL,CAAC;IACJ,CAAC;IAED,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QACvB,OAAO,IAAI,+BAA+B,CACxC,iBAAiB,EACjB,0DAA0D,EAC1D,GAAG,CACJ,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GACX,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI;QAC/C,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC;IAE3B,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QACpE,OAAO,IAAI,+BAA+B,CACxC,OAAwC,EACxC,SAAS,EAAE,OAAO,IAAI,uCAAuC,UAAU,GAAG,EAC1E,UAAU,CACX,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,+BAA+B,CACxC,oBAAoB,EACpB,SAAS,EAAE,OAAO,IAAI,uCAAuC,UAAU,GAAG,EAC1E,UAAU,CACX,CAAC;AACJ,CAAC;AAyBD;;;;;;;;;GASG;AACH,MAAM,UAAU,uBAAuB;IACrC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAA6B,MAAM,CAAC,CAAC;IACzE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAsC,IAAI,CAAC,CAAC;IAC5E,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAyC,IAAI,CAAC,CAAC;IAEjF,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAE5B,SAAS,CAAC,GAAG,EAAE;QACb,YAAY,CAAC,OAAO,GAAG,KAAK,CAAC;QAC7B,OAAO,GAAG,EAAE;YACV,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC;QAC9B,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,cAAc,GAAG,WAAW,CAChC,KAAK,EACH,KAAkC,EAClC,OAAwB,EACe,EAAE;QACzC,MAAM,MAAM,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC;QACnC,SAAS,CAAC,SAAS,CAAC,CAAC;QACrB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,2BAA2B,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACnE,IAAI,CAAC,YAAY,CAAC,OAAO,IAAI,MAAM,KAAK,SAAS,CAAC,OAAO,EAAE,CAAC;gBAC1D,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAClB,SAAS,CAAC,SAAS,CAAC,CAAC;YACvB,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,QAAiB,EAAE,CAAC;YAC3B,MAAM,UAAU,GACd,QAAQ,YAAY,+BAA+B;gBACjD,CAAC,CAAC,QAAQ;gBACV,CAAC,CAAC,IAAI,+BAA+B,CACjC,oBAAoB,EACpB,QAAQ,YAAY,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,+BAA+B,EAC9E,IAAI,CACL,CAAC;YACR,IAAI,CAAC,YAAY,CAAC,OAAO,IAAI,MAAM,KAAK,SAAS,CAAC,OAAO,EAAE,CAAC;gBAC1D,QAAQ,CAAC,UAAU,CAAC,CAAC;gBACrB,SAAS,CAAC,OAAO,CAAC,CAAC;YACrB,CAAC;YACD,MAAM,UAAU,CAAC;QACnB,CAAC;IACH,CAAC,EACD,EAAE,CACH,CAAC;IAEF,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,SAAS,CAAC,OAAO,EAAE,CAAC;QACpB,SAAS,CAAC,MAAM,CAAC,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,CAAC;QACd,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;AACxD,CAAC","sourcesContent":["/**\n * Cross-Frontend Handoff helper — first-party SaaS-app wrapper around\n * `POST /api/v1/auth/cross-frontend-handoff` (cross-app-jwt-propagation Step 3).\n *\n * Two surfaces:\n *\n * 1. `requestCrossFrontendHandoff(input)` — vanilla TS / no React. Wraps the\n * manual-calls HTTP client, maps backend `CrossFrontendHandoffErrorCode`\n * values onto a typed `CrossFrontendHandoffClientError`, and returns the\n * `{ handoffUrl, expiresAt }` payload unchanged. The caller decides how\n * to use the URL (`location.assign` for replace, `window.open` for new\n * tab) — the helper deliberately does NOT navigate.\n *\n * 2. `useCrossFrontendHandoff()` — thin React hook wrapper for first-party\n * app components that want `{ status, data, error, requestHandoff, reset }`\n * ergonomics without bringing React Query in for a one-shot mutation.\n *\n * DTO atoms come from `@wildo-ai/saas-models/public-runtime`\n * (saas-models-public-runtime.md K-7) so the same symbol identity used by the\n * docs-site `docs-auth-client.ts` flows through here. The runtime call delegates\n * to `getManualCallsHttpClient()`, which inherits the auth + frontend-service\n * header injection performed by the base `WildoBackendHttpClient` interceptors.\n *\n * The bearer + `X-Frontend-Service-Name` header are injected automatically by\n * the base client; callers do NOT need to thread them through.\n */\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport {\n CrossFrontendHandoffErrorCode,\n type CrossFrontendHandoffRequest,\n type CrossFrontendHandoffResponse,\n} from '@wildo-ai/saas-models/public-runtime';\nimport { getManualCallsHttpClient } from '~wildo-frontend-lib/core/requests/wildo-http-client-manual-calls.frontend.service';\nimport type { RequestOptions } from '~wildo-frontend-lib/core/requests/wildo-http-client.frontend.service';\n\n/**\n * Stable, finite set of error codes a SaaS-app caller may encounter when\n * invoking `requestCrossFrontendHandoff()`.\n *\n * Mirrors the backend enum 1:1 PLUS three runtime-only codes that never reach\n * the wire:\n *\n * - `unauthenticated` — the caller's bearer is missing/expired/rejected\n * (HTTP 401). Surfaced WITHOUT trying to parse a backend `code` so the\n * caller can deep-link to login instead of branching on UNKNOWN_TARGET_*.\n * - `network` — no HTTP response was received (offline, DNS, CORS\n * pre-flight rejection, etc.). The base client retried per its policy\n * before this code is surfaced.\n * - `malformed_response` — the request returned 2xx but the body did not\n * match `CrossFrontendHandoffResponse`, OR the request returned an error\n * body without a recognizable `error.details.code` field. Treat as a\n * transient backend incident.\n */\nexport type CrossFrontendHandoffClientErrorCode =\n | CrossFrontendHandoffErrorCode\n | 'unauthenticated'\n | 'network'\n | 'malformed_response';\n\n/**\n * Typed error thrown by `requestCrossFrontendHandoff()` and stored in the\n * `error` field of `useCrossFrontendHandoff()`.\n *\n * Subclasses native `Error` so `instanceof CrossFrontendHandoffClientError` is\n * the safe way to distinguish from generic axios / network errors at a call\n * site. The `code` discriminator is the contract surface that callers branch\n * on; `httpStatus` is provided for telemetry / Sentry breadcrumbs only.\n */\nexport class CrossFrontendHandoffClientError extends Error {\n readonly code: CrossFrontendHandoffClientErrorCode;\n readonly httpStatus: number | null;\n\n constructor(code: CrossFrontendHandoffClientErrorCode, message: string, httpStatus: number | null) {\n super(message);\n this.name = 'CrossFrontendHandoffClientError';\n this.code = code;\n this.httpStatus = httpStatus;\n }\n}\n\n/**\n * Vanilla TS handoff request — no React.\n *\n * Behavior:\n * - On 2xx with a well-formed body, returns the response unchanged.\n * - On 2xx with a malformed body, throws `code: 'malformed_response'`.\n * - On 401, throws `code: 'unauthenticated'` regardless of the backend's\n * specific code (the base client may already have triggered a refresh-loop\n * before this branch is reached).\n * - On other 4xx with a recognized `error.details.code`, throws with that\n * `CrossFrontendHandoffErrorCode` code so the caller can branch on\n * `UNKNOWN_TARGET_FRONTEND` vs `TARGET_FRONTEND_HOST_NOT_CONFIGURED`.\n * - On 4xx/5xx without a recognized code, throws `code: 'malformed_response'`.\n * - On network failure (no response), throws `code: 'network'`.\n *\n * Pass-through `options` are forwarded to the underlying HTTP client; useful\n * fields: `signal` (AbortController), `silent` (suppress global error toast).\n */\nexport async function requestCrossFrontendHandoff(\n input: CrossFrontendHandoffRequest,\n options?: RequestOptions,\n): Promise<CrossFrontendHandoffResponse> {\n let response: CrossFrontendHandoffResponse;\n try {\n response = await getManualCallsHttpClient().crossFrontendHandoff(input, options);\n } catch (rawError: unknown) {\n throw mapHandoffError(rawError);\n }\n\n if (\n !response ||\n typeof response.handoffUrl !== 'string' ||\n typeof response.expiresAt !== 'string'\n ) {\n throw new CrossFrontendHandoffClientError(\n 'malformed_response',\n 'Cross-frontend handoff response missing required fields',\n null,\n );\n }\n return { handoffUrl: response.handoffUrl, expiresAt: response.expiresAt };\n}\n\nconst HANDOFF_ERROR_CODES = new Set<string>(Object.values(CrossFrontendHandoffErrorCode));\n\n/**\n * Internal — translate any thrown value (axios error, native Error, string,\n * unknown) into a `CrossFrontendHandoffClientError`.\n *\n * The base client's `responseErrorInterceptor` mutates the axios error in\n * place: it sets `error.httpStatus`, `error.context = nested.details`, and\n * preserves the raw envelope on `error.response.data`. We read the raw\n * envelope first (most reliable) and fall back to `error.context` second.\n */\nfunction mapHandoffError(rawError: unknown): CrossFrontendHandoffClientError {\n if (rawError instanceof CrossFrontendHandoffClientError) return rawError;\n\n const errorLike = rawError as {\n response?: { status?: number; data?: { error?: { details?: { code?: unknown } } } };\n httpStatus?: number;\n context?: { code?: unknown };\n message?: string;\n } | null;\n\n const httpStatus =\n typeof errorLike?.response?.status === 'number'\n ? errorLike.response.status\n : typeof errorLike?.httpStatus === 'number'\n ? errorLike.httpStatus\n : null;\n\n if (httpStatus === null) {\n return new CrossFrontendHandoffClientError(\n 'network',\n errorLike?.message ?? 'Cross-frontend handoff request failed (no response)',\n null,\n );\n }\n\n if (httpStatus === 401) {\n return new CrossFrontendHandoffClientError(\n 'unauthenticated',\n 'Cross-frontend handoff requires an authenticated session',\n 401,\n );\n }\n\n const rawCode =\n errorLike?.response?.data?.error?.details?.code ??\n errorLike?.context?.code;\n\n if (typeof rawCode === 'string' && HANDOFF_ERROR_CODES.has(rawCode)) {\n return new CrossFrontendHandoffClientError(\n rawCode as CrossFrontendHandoffErrorCode,\n errorLike?.message ?? `Cross-frontend handoff failed (HTTP ${httpStatus})`,\n httpStatus,\n );\n }\n\n return new CrossFrontendHandoffClientError(\n 'malformed_response',\n errorLike?.message ?? `Cross-frontend handoff failed (HTTP ${httpStatus})`,\n httpStatus,\n );\n}\n\nexport type CrossFrontendHandoffStatus = 'idle' | 'pending' | 'success' | 'error';\n\n/**\n * State + action surface returned by `useCrossFrontendHandoff()`.\n *\n * `requestHandoff` returns the resolved `CrossFrontendHandoffResponse` on\n * success and re-throws the typed `CrossFrontendHandoffClientError` on failure\n * — so callers that need to redirect immediately can `await` it without also\n * subscribing to `status`. Hook state (`status` / `data` / `error`) is updated\n * regardless, which is convenient for components that render status without\n * holding a ref to the promise.\n */\nexport interface UseCrossFrontendHandoffResult {\n status: CrossFrontendHandoffStatus;\n data: CrossFrontendHandoffResponse | null;\n error: CrossFrontendHandoffClientError | null;\n requestHandoff: (\n input: CrossFrontendHandoffRequest,\n options?: RequestOptions,\n ) => Promise<CrossFrontendHandoffResponse>;\n reset: () => void;\n}\n\n/**\n * React hook wrapper around `requestCrossFrontendHandoff()` for first-party\n * SaaS-app components.\n *\n * Why not `useMutation` / `useReducer`: this is a one-shot, fire-and-forget\n * mutation with no caching / invalidation needs; pulling React Query in for\n * three lines of state would inflate the bundle and force a peer dep that\n * `saas-frontend-lib` does not currently take. `useState` + `useCallback` +\n * an `unmounted` guard cover the use case.\n */\nexport function useCrossFrontendHandoff(): UseCrossFrontendHandoffResult {\n const [status, setStatus] = useState<CrossFrontendHandoffStatus>('idle');\n const [data, setData] = useState<CrossFrontendHandoffResponse | null>(null);\n const [error, setError] = useState<CrossFrontendHandoffClientError | null>(null);\n\n const unmountedRef = useRef(false);\n const callIdRef = useRef(0);\n\n useEffect(() => {\n unmountedRef.current = false;\n return () => {\n unmountedRef.current = true;\n };\n }, []);\n\n const requestHandoff = useCallback(\n async (\n input: CrossFrontendHandoffRequest,\n options?: RequestOptions,\n ): Promise<CrossFrontendHandoffResponse> => {\n const callId = ++callIdRef.current;\n setStatus('pending');\n setError(null);\n try {\n const response = await requestCrossFrontendHandoff(input, options);\n if (!unmountedRef.current && callId === callIdRef.current) {\n setData(response);\n setStatus('success');\n }\n return response;\n } catch (rawError: unknown) {\n const typedError =\n rawError instanceof CrossFrontendHandoffClientError\n ? rawError\n : new CrossFrontendHandoffClientError(\n 'malformed_response',\n rawError instanceof Error ? rawError.message : 'Cross-frontend handoff failed',\n null,\n );\n if (!unmountedRef.current && callId === callIdRef.current) {\n setError(typedError);\n setStatus('error');\n }\n throw typedError;\n }\n },\n [],\n );\n\n const reset = useCallback(() => {\n callIdRef.current++;\n setStatus('idle');\n setData(null);\n setError(null);\n }, []);\n\n return { status, data, error, requestHandoff, reset };\n}\n"]}
1
+ {"version":3,"file":"cross-frontend-handoff.frontend.service.js","sourceRoot":"","sources":["../../../../src/core/security/cross-frontend-handoff.frontend.service.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Cross-Frontend Handoff helper — first-party SaaS-app wrapper around\n * `POST /api/v1/auth/cross-frontend-handoff` (cross-app-jwt-propagation Step 3).\n *\n * Two surfaces:\n *\n * 1. `requestCrossFrontendHandoff(input)` — vanilla TS / no React. Wraps the\n * manual-calls HTTP client, maps backend `CrossFrontendHandoffErrorCode`\n * values onto a typed `CrossFrontendHandoffClientError`, and returns the\n * `{ handoffUrl, expiresAt }` payload unchanged. The caller decides how\n * to use the URL (`location.assign` for replace, `window.open` for new\n * tab) — the helper deliberately does NOT navigate.\n *\n * 2. `useCrossFrontendHandoff()` — thin React hook wrapper for first-party\n * app components that want `{ status, data, error, requestHandoff, reset }`\n * ergonomics without bringing React Query in for a one-shot mutation.\n *\n * DTO atoms come from `@wildo-ai/saas-models/public-runtime`\n * (saas-models-public-runtime.md K-7) so the same symbol identity used by the\n * docs-site `docs-auth-client.ts` flows through here. The runtime call delegates\n * to `getManualCallsHttpClient()`, which inherits the auth + frontend-service\n * header injection performed by the base `WildoBackendHttpClient` interceptors.\n *\n * The bearer + `X-Frontend-Service-Name` header are injected automatically by\n * the base client; callers do NOT need to thread them through.\n */\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport {\n CrossFrontendHandoffErrorCode,\n type CrossFrontendHandoffRequest,\n type CrossFrontendHandoffResponse,\n} from '@wildo-ai/saas-models/public-runtime';\nimport { getManualCallsHttpClient } from '~wildo-frontend-lib/core/requests/wildo-http-client-manual-calls.frontend.service';\nimport type { RequestOptions } from '~wildo-frontend-lib/core/requests/wildo-http-client.frontend.service';\n\n/**\n * Stable, finite set of error codes a SaaS-app caller may encounter when\n * invoking `requestCrossFrontendHandoff()`.\n *\n * Mirrors the backend enum 1:1 PLUS three runtime-only codes that never reach\n * the wire:\n *\n * - `unauthenticated` — the caller's bearer is missing/expired/rejected\n * (HTTP 401). Surfaced WITHOUT trying to parse a backend `code` so the\n * caller can deep-link to login instead of branching on UNKNOWN_TARGET_*.\n * - `network` — no HTTP response was received (offline, DNS, CORS\n * pre-flight rejection, etc.). The base client retried per its policy\n * before this code is surfaced.\n * - `malformed_response` — the request returned 2xx but the body did not\n * match `CrossFrontendHandoffResponse`, OR the request returned an error\n * body without a recognizable `error.details.code` field. Treat as a\n * transient backend incident.\n */\nexport type CrossFrontendHandoffClientErrorCode =\n | CrossFrontendHandoffErrorCode\n | 'unauthenticated'\n | 'network'\n | 'malformed_response';\n\n/**\n * Typed error thrown by `requestCrossFrontendHandoff()` and stored in the\n * `error` field of `useCrossFrontendHandoff()`.\n *\n * Subclasses native `Error` so `instanceof CrossFrontendHandoffClientError` is\n * the safe way to distinguish from generic axios / network errors at a call\n * site. The `code` discriminator is the contract surface that callers branch\n * on; `httpStatus` is provided for telemetry / Sentry breadcrumbs only.\n */\nexport class CrossFrontendHandoffClientError extends Error {\n readonly code: CrossFrontendHandoffClientErrorCode;\n readonly httpStatus: number | null;\n\n constructor(code: CrossFrontendHandoffClientErrorCode, message: string, httpStatus: number | null) {\n super(message);\n this.name = 'CrossFrontendHandoffClientError';\n this.code = code;\n this.httpStatus = httpStatus;\n }\n}\n\n/**\n * Vanilla TS handoff request — no React.\n *\n * Behavior:\n * - On 2xx with a well-formed body, returns the response unchanged.\n * - On 2xx with a malformed body, throws `code: 'malformed_response'`.\n * - On 401, throws `code: 'unauthenticated'` regardless of the backend's\n * specific code (the base client may already have triggered a refresh-loop\n * before this branch is reached).\n * - On other 4xx with a recognized `error.details.code`, throws with that\n * `CrossFrontendHandoffErrorCode` code so the caller can branch on\n * `UNKNOWN_TARGET_FRONTEND` vs `TARGET_FRONTEND_HOST_NOT_CONFIGURED`.\n * - On 4xx/5xx without a recognized code, throws `code: 'malformed_response'`.\n * - On network failure (no response), throws `code: 'network'`.\n *\n * Pass-through `options` are forwarded to the underlying HTTP client; useful\n * fields: `signal` (AbortController), `silent` (suppress global error toast).\n */\nexport async function requestCrossFrontendHandoff(\n input: CrossFrontendHandoffRequest,\n options?: RequestOptions,\n): Promise<CrossFrontendHandoffResponse> {\n let response: CrossFrontendHandoffResponse;\n try {\n response = await getManualCallsHttpClient().crossFrontendHandoff(input, options);\n } catch (rawError: unknown) {\n throw mapHandoffError(rawError);\n }\n\n if (\n !response ||\n typeof response.handoffUrl !== 'string' ||\n typeof response.expiresAt !== 'string'\n ) {\n throw new CrossFrontendHandoffClientError(\n 'malformed_response',\n 'Cross-frontend handoff response missing required fields',\n null,\n );\n }\n return { handoffUrl: response.handoffUrl, expiresAt: response.expiresAt };\n}\n\nconst HANDOFF_ERROR_CODES = new Set<string>(Object.values(CrossFrontendHandoffErrorCode));\n\n/**\n * Internal — translate any thrown value (axios error, native Error, string,\n * unknown) into a `CrossFrontendHandoffClientError`.\n *\n * The base client's `responseErrorInterceptor` mutates the axios error in\n * place: it sets `error.httpStatus`, `error.context = nested.details`, and\n * preserves the raw envelope on `error.response.data`. We read the raw\n * envelope first (most reliable) and fall back to `error.context` second.\n */\nfunction mapHandoffError(rawError: unknown): CrossFrontendHandoffClientError {\n if (rawError instanceof CrossFrontendHandoffClientError) return rawError;\n\n const errorLike = rawError as {\n response?: { status?: number; data?: { error?: { details?: { code?: unknown } } } };\n httpStatus?: number;\n context?: { code?: unknown };\n message?: string;\n } | null;\n\n const httpStatus =\n typeof errorLike?.response?.status === 'number'\n ? errorLike.response.status\n : typeof errorLike?.httpStatus === 'number'\n ? errorLike.httpStatus\n : null;\n\n if (httpStatus === null) {\n return new CrossFrontendHandoffClientError(\n 'network',\n errorLike?.message ?? 'Cross-frontend handoff request failed (no response)',\n null,\n );\n }\n\n if (httpStatus === 401) {\n return new CrossFrontendHandoffClientError(\n 'unauthenticated',\n 'Cross-frontend handoff requires an authenticated session',\n 401,\n );\n }\n\n const rawCode =\n errorLike?.response?.data?.error?.details?.code ??\n errorLike?.context?.code;\n\n if (typeof rawCode === 'string' && HANDOFF_ERROR_CODES.has(rawCode)) {\n return new CrossFrontendHandoffClientError(\n rawCode as CrossFrontendHandoffErrorCode,\n errorLike?.message ?? `Cross-frontend handoff failed (HTTP ${httpStatus})`,\n httpStatus,\n );\n }\n\n return new CrossFrontendHandoffClientError(\n 'malformed_response',\n errorLike?.message ?? `Cross-frontend handoff failed (HTTP ${httpStatus})`,\n httpStatus,\n );\n}\n\nexport type CrossFrontendHandoffStatus = 'idle' | 'pending' | 'success' | 'error';\n\n/**\n * State + action surface returned by `useCrossFrontendHandoff()`.\n *\n * `requestHandoff` returns the resolved `CrossFrontendHandoffResponse` on\n * success and re-throws the typed `CrossFrontendHandoffClientError` on failure\n * — so callers that need to redirect immediately can `await` it without also\n * subscribing to `status`. Hook state (`status` / `data` / `error`) is updated\n * regardless, which is convenient for components that render status without\n * holding a ref to the promise.\n */\nexport interface UseCrossFrontendHandoffResult {\n status: CrossFrontendHandoffStatus;\n data: CrossFrontendHandoffResponse | null;\n error: CrossFrontendHandoffClientError | null;\n requestHandoff: (\n input: CrossFrontendHandoffRequest,\n options?: RequestOptions,\n ) => Promise<CrossFrontendHandoffResponse>;\n reset: () => void;\n}\n\n/**\n * React hook wrapper around `requestCrossFrontendHandoff()` for first-party\n * SaaS-app components.\n *\n * Why not `useMutation` / `useReducer`: this is a one-shot, fire-and-forget\n * mutation with no caching / invalidation needs; pulling React Query in for\n * three lines of state would inflate the bundle and force a peer dep that\n * `saas-frontend-lib` does not currently take. `useState` + `useCallback` +\n * an `unmounted` guard cover the use case.\n */\nexport function useCrossFrontendHandoff(): UseCrossFrontendHandoffResult {\n const [status, setStatus] = useState<CrossFrontendHandoffStatus>('idle');\n const [data, setData] = useState<CrossFrontendHandoffResponse | null>(null);\n const [error, setError] = useState<CrossFrontendHandoffClientError | null>(null);\n\n const unmountedRef = useRef(false);\n const callIdRef = useRef(0);\n\n useEffect(() => {\n unmountedRef.current = false;\n return () => {\n unmountedRef.current = true;\n };\n }, []);\n\n const requestHandoff = useCallback(\n async (\n input: CrossFrontendHandoffRequest,\n options?: RequestOptions,\n ): Promise<CrossFrontendHandoffResponse> => {\n const callId = ++callIdRef.current;\n setStatus('pending');\n setError(null);\n try {\n const response = await requestCrossFrontendHandoff(input, options);\n if (!unmountedRef.current && callId === callIdRef.current) {\n setData(response);\n setStatus('success');\n }\n return response;\n } catch (rawError: unknown) {\n const typedError =\n rawError instanceof CrossFrontendHandoffClientError\n ? rawError\n : new CrossFrontendHandoffClientError(\n 'malformed_response',\n rawError instanceof Error ? rawError.message : 'Cross-frontend handoff failed',\n null,\n );\n if (!unmountedRef.current && callId === callIdRef.current) {\n setError(typedError);\n setStatus('error');\n }\n throw typedError;\n }\n },\n [],\n );\n\n const reset = useCallback(() => {\n callIdRef.current++;\n setStatus('idle');\n setData(null);\n setError(null);\n }, []);\n\n return { status, data, error, requestHandoff, reset };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"federated-reauthentication.frontend.d.ts","sourceRoot":"","sources":["../../../../../src/core/security/federated-reauthentication.frontend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAGrE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,4HAA4H;AAC5H,eAAO,MAAM,iCAAiC,2BAA2B,CAAC;AAC1E,eAAO,MAAM,sCAAsC,oCAAoC,CAAC;AAExF,MAAM,WAAW,+BAA+B;IAC9C,IAAI,EAAE,OAAO,sCAAsC,CAAC;IACpD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,iGAAiG;AACjG,oBAAY,sCAAsC;IAChD,8CAA8C;IAC9C,aAAa,kBAAkB;IAC/B,qFAAqF;IACrF,SAAS,cAAc;IACvB,+HAA+H;IAC/H,SAAS,cAAc;IACvB,wEAAwE;IACxE,MAAM,WAAW;CAClB;AAED,qBAAa,gCAAiC,SAAQ,KAAK;aAC7B,MAAM,EAAE,sCAAsC;gBAA9C,MAAM,EAAE,sCAAsC;CAI3E;AAOD;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI,MAAM,GAAG,IAAI,CAE1D;AAED,8EAA8E;AAC9E,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,IAAI,CAAC,+BAA+B,EAAE,MAAM,CAAC,GAAG,IAAI,CAI3G;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,SAAS,GAAE,MAA2C,GAAG,OAAO,CAAC,MAAM,CAAC,CA6B3I;AAED;;;;;GAKG;AACH,wBAAsB,oCAAoC,CACxD,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,uBAAuB,EAChC,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAclC"}
1
+ {"version":3,"file":"federated-reauthentication.frontend.d.ts","sourceRoot":"","sources":["../../../../src/core/security/federated-reauthentication.frontend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAGrE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,4HAA4H;AAC5H,eAAO,MAAM,iCAAiC,2BAA2B,CAAC;AAC1E,eAAO,MAAM,sCAAsC,oCAAoC,CAAC;AAExF,MAAM,WAAW,+BAA+B;IAC9C,IAAI,EAAE,OAAO,sCAAsC,CAAC;IACpD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,iGAAiG;AACjG,oBAAY,sCAAsC;IAChD,8CAA8C;IAC9C,aAAa,kBAAkB;IAC/B,qFAAqF;IACrF,SAAS,cAAc;IACvB,+HAA+H;IAC/H,SAAS,cAAc;IACvB,wEAAwE;IACxE,MAAM,WAAW;CAClB;AAED,qBAAa,gCAAiC,SAAQ,KAAK;aAC7B,MAAM,EAAE,sCAAsC;gBAA9C,MAAM,EAAE,sCAAsC;CAI3E;AAOD;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI,MAAM,GAAG,IAAI,CAE1D;AAED,8EAA8E;AAC9E,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,IAAI,CAAC,+BAA+B,EAAE,MAAM,CAAC,GAAG,IAAI,CAI3G;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,SAAS,GAAE,MAA2C,GAAG,OAAO,CAAC,MAAM,CAAC,CA6B3I;AAED;;;;;GAKG;AACH,wBAAsB,oCAAoC,CACxD,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,uBAAuB,EAChC,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAclC"}
@@ -1 +1 @@
1
- {"version":3,"file":"federated-reauthentication.frontend.js","sourceRoot":"","sources":["../../../../../src/core/security/federated-reauthentication.frontend.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ReAuthenticationPurpose } from '@wildo-ai/saas-models';\nimport { getManualCallsHttpClient } from '~wildo-frontend-lib/core/requests/wildo-http-client-manual-calls.frontend.service';\n\n/**\n * Federated re-authentication in the browser (#1441): confirming it is still the account holder by\n * signing in again at a linked identity provider.\n *\n * WHY A POPUP. A step-up refusal holds the request that was refused, pending, and replays it once a\n * proof arrives (the http client's step-up contract). A full-page redirect to the provider would\n * unload the page and drop that request. So the dialog opens a window, the provider runs inside it,\n * and the backend sends the window back to `REAUTHENTICATION_CALLBACK_PAGE_PATH` on THIS frontend's\n * origin, where `AuthPage_ReAuthenticationCallback` hands the result to this window and closes.\n *\n * WHY THE WINDOW IS OPENED EMPTY FIRST. Browsers allow a popup only inside the click that asked for it.\n * The provider URL comes from a request, which finishes after the click has ended, so the dialog opens\n * a blank window synchronously in its click handler and this module navigates it afterwards.\n *\n * WHAT CROSSES THE WINDOWS, AND WHY NOT THROUGH `window.opener`. Only a one-time code, over a\n * `BroadcastChannel`, which only this origin can join. The obvious channel, `postMessage` to the opener,\n * is unreliable here: identity providers commonly serve `Cross-Origin-Opener-Policy`, and once the\n * popup has visited such a page the browser severs it from this window. The callback page then has no\n * `window.opener`, and `popup.closed` reads `true` here while the window is still open, so neither can\n * be relied on. That is also why cancelling is an explicit abort from the dialog rather than a check\n * for a closed window.\n *\n * The code is redeemed with this window's own bearer at `POST /auth/reauth/federated/exchange`, so a code\n * read from the popup's URL is worth nothing to anyone else, and the re-authentication token itself never\n * appears in a URL.\n */\n\n/** The channel and message type the callback page reports on. One constant each, so sender and receiver cannot disagree. */\nexport const REAUTHENTICATION_CALLBACK_CHANNEL = 'wildo:reauthentication';\nexport const REAUTHENTICATION_CALLBACK_MESSAGE_TYPE = 'wildo:reauthentication-callback';\n\nexport interface ReAuthenticationCallbackMessage {\n type: typeof REAUTHENTICATION_CALLBACK_MESSAGE_TYPE;\n code?: string;\n error?: string;\n}\n\n/** Why a federated re-authentication produced no proof. Each has its own words in the dialog. */\nexport enum FederatedReAuthenticationFailureReason {\n /** The browser refused to open the window. */\n POPUP_BLOCKED = 'popup_blocked',\n /** The person cancelled in the dialog. Never shown: the dialog is already closed. */\n CANCELLED = 'cancelled',\n /** The provider did not answer in time: the person left the window unfinished, or closed it (which this window cannot see). */\n TIMED_OUT = 'timed_out',\n /** The provider answered, and the answer did not confirm the person. */\n FAILED = 'failed',\n}\n\nexport class FederatedReAuthenticationFailure extends Error {\n constructor(public readonly reason: FederatedReAuthenticationFailureReason) {\n super(`Federated re-authentication did not complete: ${reason}`);\n this.name = 'FederatedReAuthenticationFailure';\n }\n}\n\n/** How long the window may stay open. The provider's own sign-in, plus MFA, fits well inside it. */\nconst REAUTHENTICATION_WINDOW_TIMEOUT_MS = 10 * 60 * 1000;\nconst POPUP_NAME = 'wildo-reauthentication';\nconst POPUP_FEATURES = 'popup=yes,width=520,height=680';\n\n/**\n * Open the (blank) window the provider will run in. MUST be called synchronously inside the click\n * that chose the provider; anything later is blocked. Returns `null` when the browser refused.\n */\nexport function openReAuthenticationWindow(): Window | null {\n return window.open('about:blank', POPUP_NAME, POPUP_FEATURES);\n}\n\n/** What the callback page sends, to every window of this origin listening. */\nexport function reportReAuthenticationCallback(message: Omit<ReAuthenticationCallbackMessage, 'type'>): void {\n const channel = new BroadcastChannel(REAUTHENTICATION_CALLBACK_CHANNEL);\n channel.postMessage({ type: REAUTHENTICATION_CALLBACK_MESSAGE_TYPE, ...message } satisfies ReAuthenticationCallbackMessage);\n channel.close();\n}\n\n/**\n * Wait for the callback page to report, and resolve with its one-time code.\n *\n * Rejects with `FAILED` when the page reports an error, `CANCELLED` when `signal` aborts (the person\n * cancelled in the dialog), and `TIMED_OUT` when the time runs out first.\n */\nexport function awaitReAuthenticationCallback(signal?: AbortSignal, timeoutMs: number = REAUTHENTICATION_WINDOW_TIMEOUT_MS): Promise<string> {\n return new Promise<string>((resolve, reject) => {\n const channel = new BroadcastChannel(REAUTHENTICATION_CALLBACK_CHANNEL);\n let settled = false;\n const finish = (outcome: () => void) => {\n if (settled) return;\n settled = true;\n channel.close();\n clearTimeout(deadline);\n signal?.removeEventListener('abort', onAbort);\n outcome();\n };\n const cancelled = () => finish(() => reject(new FederatedReAuthenticationFailure(FederatedReAuthenticationFailureReason.CANCELLED)));\n const onAbort = () => cancelled();\n // Any window of this origin may answer, and the first answer settles the wait. Accepted deliberately:\n // two tabs re-authenticating at once can take each other's code, and the loser then reports FAILED —\n // never a proof for the wrong account, because the exchange is bound to the bearer that minted it.\n // Correlating each attempt with a nonce echoed through the provider round trip would remove the race.\n channel.onmessage = (event: MessageEvent) => {\n const data = event.data as Partial<ReAuthenticationCallbackMessage> | null;\n if (!data || data.type !== REAUTHENTICATION_CALLBACK_MESSAGE_TYPE) return;\n finish(() => (typeof data.code === 'string' && data.code\n ? resolve(data.code)\n : reject(new FederatedReAuthenticationFailure(FederatedReAuthenticationFailureReason.FAILED))));\n };\n const deadline = setTimeout(() => finish(() => reject(new FederatedReAuthenticationFailure(FederatedReAuthenticationFailureReason.TIMED_OUT))), timeoutMs);\n if (signal?.aborted) cancelled();\n else signal?.addEventListener('abort', onAbort);\n });\n}\n\n/**\n * Run a federated re-authentication in `popup` and return the single-use proof it earned.\n *\n * `popup` is the window {@link openReAuthenticationWindow} opened in the click; `null` means the browser\n * blocked it. `signal` is the dialog's cancel. The window is closed on every failure path it can still reach.\n */\nexport async function obtainFederatedReAuthenticationToken(\n identityLinkId: string,\n purpose: ReAuthenticationPurpose,\n popup: Window | null,\n signal?: AbortSignal,\n): Promise<{ reAuthToken: string }> {\n if (!popup) throw new FederatedReAuthenticationFailure(FederatedReAuthenticationFailureReason.POPUP_BLOCKED);\n const client = getManualCallsHttpClient();\n try {\n const { authorizationUrl } = await client.startFederatedReAuthentication(identityLinkId, purpose);\n popup.location.href = authorizationUrl;\n const code = await awaitReAuthenticationCallback(signal);\n return await client.exchangeFederatedReAuthentication(code);\n } catch (error) {\n // May be a no-op once the provider's opener policy has severed the window; the callback page closes itself.\n try { popup.close(); } catch { /* already gone */ }\n if (error instanceof FederatedReAuthenticationFailure) throw error;\n throw new FederatedReAuthenticationFailure(FederatedReAuthenticationFailureReason.FAILED);\n }\n}\n"]}
1
+ {"version":3,"file":"federated-reauthentication.frontend.js","sourceRoot":"","sources":["../../../../src/core/security/federated-reauthentication.frontend.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ReAuthenticationPurpose } from '@wildo-ai/saas-models';\nimport { getManualCallsHttpClient } from '~wildo-frontend-lib/core/requests/wildo-http-client-manual-calls.frontend.service';\n\n/**\n * Federated re-authentication in the browser (#1441): confirming it is still the account holder by\n * signing in again at a linked identity provider.\n *\n * WHY A POPUP. A step-up refusal holds the request that was refused, pending, and replays it once a\n * proof arrives (the http client's step-up contract). A full-page redirect to the provider would\n * unload the page and drop that request. So the dialog opens a window, the provider runs inside it,\n * and the backend sends the window back to `REAUTHENTICATION_CALLBACK_PAGE_PATH` on THIS frontend's\n * origin, where `AuthPage_ReAuthenticationCallback` hands the result to this window and closes.\n *\n * WHY THE WINDOW IS OPENED EMPTY FIRST. Browsers allow a popup only inside the click that asked for it.\n * The provider URL comes from a request, which finishes after the click has ended, so the dialog opens\n * a blank window synchronously in its click handler and this module navigates it afterwards.\n *\n * WHAT CROSSES THE WINDOWS, AND WHY NOT THROUGH `window.opener`. Only a one-time code, over a\n * `BroadcastChannel`, which only this origin can join. The obvious channel, `postMessage` to the opener,\n * is unreliable here: identity providers commonly serve `Cross-Origin-Opener-Policy`, and once the\n * popup has visited such a page the browser severs it from this window. The callback page then has no\n * `window.opener`, and `popup.closed` reads `true` here while the window is still open, so neither can\n * be relied on. That is also why cancelling is an explicit abort from the dialog rather than a check\n * for a closed window.\n *\n * The code is redeemed with this window's own bearer at `POST /auth/reauth/federated/exchange`, so a code\n * read from the popup's URL is worth nothing to anyone else, and the re-authentication token itself never\n * appears in a URL.\n */\n\n/** The channel and message type the callback page reports on. One constant each, so sender and receiver cannot disagree. */\nexport const REAUTHENTICATION_CALLBACK_CHANNEL = 'wildo:reauthentication';\nexport const REAUTHENTICATION_CALLBACK_MESSAGE_TYPE = 'wildo:reauthentication-callback';\n\nexport interface ReAuthenticationCallbackMessage {\n type: typeof REAUTHENTICATION_CALLBACK_MESSAGE_TYPE;\n code?: string;\n error?: string;\n}\n\n/** Why a federated re-authentication produced no proof. Each has its own words in the dialog. */\nexport enum FederatedReAuthenticationFailureReason {\n /** The browser refused to open the window. */\n POPUP_BLOCKED = 'popup_blocked',\n /** The person cancelled in the dialog. Never shown: the dialog is already closed. */\n CANCELLED = 'cancelled',\n /** The provider did not answer in time: the person left the window unfinished, or closed it (which this window cannot see). */\n TIMED_OUT = 'timed_out',\n /** The provider answered, and the answer did not confirm the person. */\n FAILED = 'failed',\n}\n\nexport class FederatedReAuthenticationFailure extends Error {\n constructor(public readonly reason: FederatedReAuthenticationFailureReason) {\n super(`Federated re-authentication did not complete: ${reason}`);\n this.name = 'FederatedReAuthenticationFailure';\n }\n}\n\n/** How long the window may stay open. The provider's own sign-in, plus MFA, fits well inside it. */\nconst REAUTHENTICATION_WINDOW_TIMEOUT_MS = 10 * 60 * 1000;\nconst POPUP_NAME = 'wildo-reauthentication';\nconst POPUP_FEATURES = 'popup=yes,width=520,height=680';\n\n/**\n * Open the (blank) window the provider will run in. MUST be called synchronously inside the click\n * that chose the provider; anything later is blocked. Returns `null` when the browser refused.\n */\nexport function openReAuthenticationWindow(): Window | null {\n return window.open('about:blank', POPUP_NAME, POPUP_FEATURES);\n}\n\n/** What the callback page sends, to every window of this origin listening. */\nexport function reportReAuthenticationCallback(message: Omit<ReAuthenticationCallbackMessage, 'type'>): void {\n const channel = new BroadcastChannel(REAUTHENTICATION_CALLBACK_CHANNEL);\n channel.postMessage({ type: REAUTHENTICATION_CALLBACK_MESSAGE_TYPE, ...message } satisfies ReAuthenticationCallbackMessage);\n channel.close();\n}\n\n/**\n * Wait for the callback page to report, and resolve with its one-time code.\n *\n * Rejects with `FAILED` when the page reports an error, `CANCELLED` when `signal` aborts (the person\n * cancelled in the dialog), and `TIMED_OUT` when the time runs out first.\n */\nexport function awaitReAuthenticationCallback(signal?: AbortSignal, timeoutMs: number = REAUTHENTICATION_WINDOW_TIMEOUT_MS): Promise<string> {\n return new Promise<string>((resolve, reject) => {\n const channel = new BroadcastChannel(REAUTHENTICATION_CALLBACK_CHANNEL);\n let settled = false;\n const finish = (outcome: () => void) => {\n if (settled) return;\n settled = true;\n channel.close();\n clearTimeout(deadline);\n signal?.removeEventListener('abort', onAbort);\n outcome();\n };\n const cancelled = () => finish(() => reject(new FederatedReAuthenticationFailure(FederatedReAuthenticationFailureReason.CANCELLED)));\n const onAbort = () => cancelled();\n // Any window of this origin may answer, and the first answer settles the wait. Accepted deliberately:\n // two tabs re-authenticating at once can take each other's code, and the loser then reports FAILED —\n // never a proof for the wrong account, because the exchange is bound to the bearer that minted it.\n // Correlating each attempt with a nonce echoed through the provider round trip would remove the race.\n channel.onmessage = (event: MessageEvent) => {\n const data = event.data as Partial<ReAuthenticationCallbackMessage> | null;\n if (!data || data.type !== REAUTHENTICATION_CALLBACK_MESSAGE_TYPE) return;\n finish(() => (typeof data.code === 'string' && data.code\n ? resolve(data.code)\n : reject(new FederatedReAuthenticationFailure(FederatedReAuthenticationFailureReason.FAILED))));\n };\n const deadline = setTimeout(() => finish(() => reject(new FederatedReAuthenticationFailure(FederatedReAuthenticationFailureReason.TIMED_OUT))), timeoutMs);\n if (signal?.aborted) cancelled();\n else signal?.addEventListener('abort', onAbort);\n });\n}\n\n/**\n * Run a federated re-authentication in `popup` and return the single-use proof it earned.\n *\n * `popup` is the window {@link openReAuthenticationWindow} opened in the click; `null` means the browser\n * blocked it. `signal` is the dialog's cancel. The window is closed on every failure path it can still reach.\n */\nexport async function obtainFederatedReAuthenticationToken(\n identityLinkId: string,\n purpose: ReAuthenticationPurpose,\n popup: Window | null,\n signal?: AbortSignal,\n): Promise<{ reAuthToken: string }> {\n if (!popup) throw new FederatedReAuthenticationFailure(FederatedReAuthenticationFailureReason.POPUP_BLOCKED);\n const client = getManualCallsHttpClient();\n try {\n const { authorizationUrl } = await client.startFederatedReAuthentication(identityLinkId, purpose);\n popup.location.href = authorizationUrl;\n const code = await awaitReAuthenticationCallback(signal);\n return await client.exchangeFederatedReAuthentication(code);\n } catch (error) {\n // May be a no-op once the provider's opener policy has severed the window; the callback page closes itself.\n try { popup.close(); } catch { /* already gone */ }\n if (error instanceof FederatedReAuthenticationFailure) throw error;\n throw new FederatedReAuthenticationFailure(FederatedReAuthenticationFailureReason.FAILED);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"jwt.frontend.utils.d.ts","sourceRoot":"","sources":["../../../../../src/core/security/jwt.frontend.utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,MAAM,GAAG,CAAC,CAO1F"}
1
+ {"version":3,"file":"jwt.frontend.utils.d.ts","sourceRoot":"","sources":["../../../../src/core/security/jwt.frontend.utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,MAAM,GAAG,CAAC,CAO1F"}
@@ -1 +1 @@
1
- {"version":3,"file":"jwt.frontend.utils.js","sourceRoot":"","sources":["../../../../../src/core/security/jwt.frontend.utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,SAAS,qBAAqB,CAAC,OAAe;IAC5C,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACjE,MAAM,aAAa,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,GAAG,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;IAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5E,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAoC,WAAmB;IACrF,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAM,CAAC;AAC/D,CAAC","sourcesContent":["/**\n * Frontend JWT utilities.\n *\n * JWT payload segments use base64url, not plain base64. Consumers that decode\n * payload claims must normalize `-` / `_` and padding before parsing.\n */\n\nfunction decodeBase64UrlToUtf8(segment: string): string {\n const normalized = segment.replace(/-/g, '+').replace(/_/g, '/');\n const paddingLength = (4 - (normalized.length % 4)) % 4;\n const padded = `${normalized}${'='.repeat(paddingLength)}`;\n const binary = atob(padded);\n const bytes = Uint8Array.from(binary, character => character.charCodeAt(0));\n\n return new TextDecoder().decode(bytes);\n}\n\n/**\n * Decode and parse the payload segment of a JWT access token.\n *\n * Throws when the token is malformed or when the payload is not valid JSON so\n * callers can apply context-specific logging/error handling policy.\n */\nexport function decodeJwtPayload<T extends Record<string, unknown>>(accessToken: string): T {\n const tokenParts = accessToken.split('.');\n if (tokenParts.length !== 3) {\n throw new Error('JWT must contain exactly three segments');\n }\n\n return JSON.parse(decodeBase64UrlToUtf8(tokenParts[1])) as T;\n}\n"]}
1
+ {"version":3,"file":"jwt.frontend.utils.js","sourceRoot":"","sources":["../../../../src/core/security/jwt.frontend.utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,SAAS,qBAAqB,CAAC,OAAe;IAC5C,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACjE,MAAM,aAAa,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,GAAG,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;IAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5E,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAoC,WAAmB;IACrF,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAM,CAAC;AAC/D,CAAC","sourcesContent":["/**\n * Frontend JWT utilities.\n *\n * JWT payload segments use base64url, not plain base64. Consumers that decode\n * payload claims must normalize `-` / `_` and padding before parsing.\n */\n\nfunction decodeBase64UrlToUtf8(segment: string): string {\n const normalized = segment.replace(/-/g, '+').replace(/_/g, '/');\n const paddingLength = (4 - (normalized.length % 4)) % 4;\n const padded = `${normalized}${'='.repeat(paddingLength)}`;\n const binary = atob(padded);\n const bytes = Uint8Array.from(binary, character => character.charCodeAt(0));\n\n return new TextDecoder().decode(bytes);\n}\n\n/**\n * Decode and parse the payload segment of a JWT access token.\n *\n * Throws when the token is malformed or when the payload is not valid JSON so\n * callers can apply context-specific logging/error handling policy.\n */\nexport function decodeJwtPayload<T extends Record<string, unknown>>(accessToken: string): T {\n const tokenParts = accessToken.split('.');\n if (tokenParts.length !== 3) {\n throw new Error('JWT must contain exactly three segments');\n }\n\n return JSON.parse(decodeBase64UrlToUtf8(tokenParts[1])) as T;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"organization-onboarding.frontend.utils.d.ts","sourceRoot":"","sources":["../../../../../src/core/security/organization-onboarding.frontend.utils.ts"],"names":[],"mappings":"AAIA,uGAAuG;AACvG,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qCAAqC,CAAC,MAAM,EAAE,iCAAiC,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAIjI;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sCAAsC,CACpD,IAAI,EAAE;IAAE,QAAQ,CAAC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAC1F,kBAAkB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC5C,MAAM,GAAG,IAAI,CAGf;AAED;;;;;GAKG;AACH,wBAAgB,oCAAoC,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAG5E"}
1
+ {"version":3,"file":"organization-onboarding.frontend.utils.d.ts","sourceRoot":"","sources":["../../../../src/core/security/organization-onboarding.frontend.utils.ts"],"names":[],"mappings":"AAIA,uGAAuG;AACvG,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qCAAqC,CAAC,MAAM,EAAE,iCAAiC,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAIjI;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sCAAsC,CACpD,IAAI,EAAE;IAAE,QAAQ,CAAC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAC1F,kBAAkB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC5C,MAAM,GAAG,IAAI,CAGf;AAED;;;;;GAKG;AACH,wBAAgB,oCAAoC,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAG5E"}
@@ -1 +1 @@
1
- {"version":3,"file":"organization-onboarding.frontend.utils.js","sourceRoot":"","sources":["../../../../../src/core/security/organization-onboarding.frontend.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,YAAY,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAC9G,OAAO,EAAE,gBAAgB,EAAE,MAAM,8DAA8D,CAAC;AAChG,OAAO,EAAE,wBAAwB,EAAE,MAAM,gEAAgE,CAAC;AAU1G;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,qCAAqC,CAAC,MAA4D;IAChH,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IACpE,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,KAAK,YAAY,CAAC,UAAU,IAAI,MAAM,CAAC,KAAK,KAAK,0BAA0B,CAAC,kBAAkB,CAAC;IAC7H,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1C,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,sCAAsC,CACpD,IAA0F,EAC1F,kBAA6C;IAE7C,IAAI,CAAC,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAC/D,OAAO,wBAAwB,CAAC,gBAAgB,CAAC,sBAAsB,EAAE,kBAAkB,CAAC,CAAC;AAC/F,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oCAAoC,CAAC,KAAc;IACjE,MAAM,SAAS,GAAI,KAAiF,EAAE,UAAU,EAAE,sBAAsB,CAAC;IACzI,OAAO,SAAS,KAAK,2BAA2B,CAAC,8BAA8B,CAAC;AAClF,CAAC","sourcesContent":["import { AuthenticationSessionState, AuthNextStep, ErrorCustomMessageReference } from '@wildo-ai/saas-models';\nimport { CommonRoutePaths } from '~wildo-frontend-lib/core/runtime/routes.frontend.definitions';\nimport { appendAuthRedirectToPath } from '~wildo-frontend-lib/core/security/auth-redirect.frontend.utils';\n\n/** The members of an auth answer that say whether it parked the account at organization onboarding. */\nexport interface OrganizationOnboardingAnswerShape {\n readonly accessToken?: string | null;\n readonly sessionId?: string | null;\n readonly state?: string;\n readonly nextStep?: string;\n}\n\n/**\n * The session an auth answer parked at organization onboarding, or `null` (#1090).\n *\n * Several answers can park an account there, and each reached the client with no screen to finish it:\n * - a registration under deferred verification, or an email verification (`state: ONBOARDING_PENDING`,\n * `nextStep: ONBOARDING`) when the user type names its organization at onboarding (#1011);\n * - a second-factor enrollment that settles a registration session there (`state: ONBOARDING_PENDING`);\n * - a SIGN-IN — password, passkey, OTP, a second factor, a magic link — by an account that still owes its\n * organization (`success: false`, `nextStep: ONBOARDING`, #1091);\n * - a FEDERATED sign-in's code exchange (OAuth2 / OIDC callback, SAML ACS) for such an account\n * (`{ nextStep: ONBOARDING, sessionId }`, #1103).\n *\n * This is the ONE reading of that condition, so every adoption site in `AuthSessionContext` and the registration\n * outcome agree. It requires a session, because completion is performed ON the parked session, and no token,\n * because an answer that carries one has already signed the account in and is not asking for anything.\n * Either member (`state` or `nextStep`) is enough: the enrollment settlement names the state and the sign-in\n * names the step.\n */\nexport function parkedOrganizationOnboardingSessionId(answer: OrganizationOnboardingAnswerShape | null | undefined): string | null {\n if (!answer || answer.accessToken || !answer.sessionId) return null;\n const parked = answer.nextStep === AuthNextStep.ONBOARDING || answer.state === AuthenticationSessionState.ONBOARDING_PENDING;\n return parked ? answer.sessionId : null;\n}\n\n/**\n * Where an auth screen must send the person right now because the account is parked at organization\n * onboarding, or `null` when it is not (#1090).\n *\n * A RENDER-time answer rather than a navigation effect, on purpose: every auth screen already decides at render\n * time to bounce away — the challenge and the enrollment gate send a person with no pending second factor to\n * sign-in — and adopting a parked session clears exactly that state. An effect would lose that race and the\n * person would land on sign-in instead of onboarding. Each screen asks this BEFORE its own bounces.\n *\n * The deep-link target rides the detour, as it rides the second-factor detours. A signed-in context is never\n * parked: an answer that carried a token is not asking for onboarding.\n */\nexport function organizationOnboardingNavigationTarget(\n auth: { readonly onboardingSessionId: string | null; readonly accessToken: string | null },\n authRedirectTarget: string | null | undefined,\n): string | null {\n if (!auth.onboardingSessionId || auth.accessToken) return null;\n return appendAuthRedirectToPath(CommonRoutePaths.organizationOnboarding, authRedirectTarget);\n}\n\n/**\n * Whether a refused onboarding completion means the parked session is gone for good (#1090) — completed in\n * another tab, consumed by a concurrent completion, or expired. Such a session can never complete, so the auth\n * context forgets it; every other refusal (a policy that changed, a transient failure) leaves it parked so the\n * person can try again.\n */\nexport function isSpentOrganizationOnboardingSession(error: unknown): boolean {\n const reference = (error as { wildoError?: { customMessageReference?: string } } | null | undefined)?.wildoError?.customMessageReference;\n return reference === ErrorCustomMessageReference.AUTHENTICATION_SESSION_EXPIRED;\n}\n"]}
1
+ {"version":3,"file":"organization-onboarding.frontend.utils.js","sourceRoot":"","sources":["../../../../src/core/security/organization-onboarding.frontend.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,YAAY,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAC9G,OAAO,EAAE,gBAAgB,EAAE,MAAM,8DAA8D,CAAC;AAChG,OAAO,EAAE,wBAAwB,EAAE,MAAM,gEAAgE,CAAC;AAU1G;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,qCAAqC,CAAC,MAA4D;IAChH,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IACpE,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,KAAK,YAAY,CAAC,UAAU,IAAI,MAAM,CAAC,KAAK,KAAK,0BAA0B,CAAC,kBAAkB,CAAC;IAC7H,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1C,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,sCAAsC,CACpD,IAA0F,EAC1F,kBAA6C;IAE7C,IAAI,CAAC,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAC/D,OAAO,wBAAwB,CAAC,gBAAgB,CAAC,sBAAsB,EAAE,kBAAkB,CAAC,CAAC;AAC/F,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oCAAoC,CAAC,KAAc;IACjE,MAAM,SAAS,GAAI,KAAiF,EAAE,UAAU,EAAE,sBAAsB,CAAC;IACzI,OAAO,SAAS,KAAK,2BAA2B,CAAC,8BAA8B,CAAC;AAClF,CAAC","sourcesContent":["import { AuthenticationSessionState, AuthNextStep, ErrorCustomMessageReference } from '@wildo-ai/saas-models';\nimport { CommonRoutePaths } from '~wildo-frontend-lib/core/runtime/routes.frontend.definitions';\nimport { appendAuthRedirectToPath } from '~wildo-frontend-lib/core/security/auth-redirect.frontend.utils';\n\n/** The members of an auth answer that say whether it parked the account at organization onboarding. */\nexport interface OrganizationOnboardingAnswerShape {\n readonly accessToken?: string | null;\n readonly sessionId?: string | null;\n readonly state?: string;\n readonly nextStep?: string;\n}\n\n/**\n * The session an auth answer parked at organization onboarding, or `null` (#1090).\n *\n * Several answers can park an account there, and each reached the client with no screen to finish it:\n * - a registration under deferred verification, or an email verification (`state: ONBOARDING_PENDING`,\n * `nextStep: ONBOARDING`) when the user type names its organization at onboarding (#1011);\n * - a second-factor enrollment that settles a registration session there (`state: ONBOARDING_PENDING`);\n * - a SIGN-IN — password, passkey, OTP, a second factor, a magic link — by an account that still owes its\n * organization (`success: false`, `nextStep: ONBOARDING`, #1091);\n * - a FEDERATED sign-in's code exchange (OAuth2 / OIDC callback, SAML ACS) for such an account\n * (`{ nextStep: ONBOARDING, sessionId }`, #1103).\n *\n * This is the ONE reading of that condition, so every adoption site in `AuthSessionContext` and the registration\n * outcome agree. It requires a session, because completion is performed ON the parked session, and no token,\n * because an answer that carries one has already signed the account in and is not asking for anything.\n * Either member (`state` or `nextStep`) is enough: the enrollment settlement names the state and the sign-in\n * names the step.\n */\nexport function parkedOrganizationOnboardingSessionId(answer: OrganizationOnboardingAnswerShape | null | undefined): string | null {\n if (!answer || answer.accessToken || !answer.sessionId) return null;\n const parked = answer.nextStep === AuthNextStep.ONBOARDING || answer.state === AuthenticationSessionState.ONBOARDING_PENDING;\n return parked ? answer.sessionId : null;\n}\n\n/**\n * Where an auth screen must send the person right now because the account is parked at organization\n * onboarding, or `null` when it is not (#1090).\n *\n * A RENDER-time answer rather than a navigation effect, on purpose: every auth screen already decides at render\n * time to bounce away — the challenge and the enrollment gate send a person with no pending second factor to\n * sign-in — and adopting a parked session clears exactly that state. An effect would lose that race and the\n * person would land on sign-in instead of onboarding. Each screen asks this BEFORE its own bounces.\n *\n * The deep-link target rides the detour, as it rides the second-factor detours. A signed-in context is never\n * parked: an answer that carried a token is not asking for onboarding.\n */\nexport function organizationOnboardingNavigationTarget(\n auth: { readonly onboardingSessionId: string | null; readonly accessToken: string | null },\n authRedirectTarget: string | null | undefined,\n): string | null {\n if (!auth.onboardingSessionId || auth.accessToken) return null;\n return appendAuthRedirectToPath(CommonRoutePaths.organizationOnboarding, authRedirectTarget);\n}\n\n/**\n * Whether a refused onboarding completion means the parked session is gone for good (#1090) — completed in\n * another tab, consumed by a concurrent completion, or expired. Such a session can never complete, so the auth\n * context forgets it; every other refusal (a policy that changed, a transient failure) leaves it parked so the\n * person can try again.\n */\nexport function isSpentOrganizationOnboardingSession(error: unknown): boolean {\n const reference = (error as { wildoError?: { customMessageReference?: string } } | null | undefined)?.wildoError?.customMessageReference;\n return reference === ErrorCustomMessageReference.AUTHENTICATION_SESSION_EXPIRED;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"pending-mfa-session-storage.frontend.utils.d.ts","sourceRoot":"","sources":["../../../../../src/core/security/pending-mfa-session-storage.frontend.utils.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,6FAA6F;AAC7F,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,0GAA0G;IAC1G,KAAK,EAAE,MAAM,CAAC;CACf;AAOD;;;;;;GAMG;AACH,eAAO,MAAM,8BAA8B,EAAE,MAAuB,CAAC;AA8BrE;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,0BAA0B,EAAE,GAAG,GAAE,MAAmB,GAAG,IAAI,CAiB/G;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,GAAE,MAAmB,GAAG,0BAA0B,GAAG,IAAI,CAUjG;AAED,8FAA8F;AAC9F,wBAAgB,uBAAuB,IAAI,IAAI,CAM9C"}
1
+ {"version":3,"file":"pending-mfa-session-storage.frontend.utils.d.ts","sourceRoot":"","sources":["../../../../src/core/security/pending-mfa-session-storage.frontend.utils.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,6FAA6F;AAC7F,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,0GAA0G;IAC1G,KAAK,EAAE,MAAM,CAAC;CACf;AAOD;;;;;;GAMG;AACH,eAAO,MAAM,8BAA8B,EAAE,MAAuB,CAAC;AA8BrE;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,0BAA0B,EAAE,GAAG,GAAE,MAAmB,GAAG,IAAI,CAiB/G;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,GAAE,MAAmB,GAAG,0BAA0B,GAAG,IAAI,CAUjG;AAED,8FAA8F;AAC9F,wBAAgB,uBAAuB,IAAI,IAAI,CAM9C"}
@@ -1 +1 @@
1
- {"version":3,"file":"pending-mfa-session-storage.frontend.utils.js","sourceRoot":"","sources":["../../../../../src/core/security/pending-mfa-session-storage.frontend.utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { SESSION_STORAGE_KEYS } from '~wildo-frontend-lib/core/commons/local-storage.frontend.schemas';\n\n/**\n * The tab-scoped memory of an MFA session that still owes a second factor (#1068).\n *\n * The auth context holds such a session only in memory, so a reload of the enrollment gate after an\n * in-app arrival used to lose it and cost a sign-in. Three places could have carried it across the reload,\n * and this is the one chosen:\n *\n * | option | why not / why |\n * |---|---|\n * | the gate URL | rejected. A REGISTRATION or INVITATION session reaches the gate this way on the ordinary path, issues tokens when a factor is enrolled, and lives 24h — its id would sit in browser history and every frontend/CDN request log |\n * | `localStorage` | rejected. It outlives the tab and is shared by every tab of the origin, so an abandoned sign-up would be recoverable long after, from anywhere on the device |\n * | **`sessionStorage`** | chosen. It survives a reload of THIS tab, dies with the tab, and never leaves the page. Script in the page can read it, exactly as it can already read the in-memory auth context this mirrors |\n *\n * \"Dies with the tab\" has one browser-defined exception worth stating: a DUPLICATED tab, and a tab opened by\n * `window.open` without `noopener`, start with a COPY of the opener's `sessionStorage`. Such a tab can recover\n * the same pending session — bounded by the same age ceiling below and the same server-side state check.\n *\n * Three rules keep the copy from outliving the session it describes, because a stale entry is a finished\n * or abandoned session brought back:\n * - ONE writer: `AuthSessionProvider` remembers and forgets from auth-state TRANSITIONS, never per call site;\n * - explicit forgets on the terminal acts that do not pass through those transitions after a hard load —\n * logout, starting a new identification, and a recovery the server refuses;\n * - a client-side ceiling ({@link PENDING_MFA_SESSION_MAX_AGE_MS}) measured from when the session FIRST\n * became pending, so re-remembering it on every recovery never extends its life.\n *\n * Nothing here is an authorization input. The server re-reads the session by id and admits second-factor\n * work only on the states it allows; this module decides only whether the gate may ASK.\n */\n\n/** The identity of a pending MFA session, as the enrollment gate needs it to recover one. */\nexport interface PendingMfaSessionReference {\n sessionId: string;\n /** Pre-fills the challenge the gate may hand back to; empty when the session was recovered without it. */\n email: string;\n}\n\ninterface StoredPendingMfaSession extends PendingMfaSessionReference {\n /** Epoch milliseconds at which this session FIRST became pending in this tab. */\n rememberedAt: number;\n}\n\n/**\n * How long a remembered pending session may be recovered, from when it first became pending.\n *\n * Deliberately far shorter than the server's session lifetime: a second factor owed and not given within\n * half an hour is an abandoned sign-in, and the cost of refusing to recover it is one sign-in. The cost of\n * recovering it is handing an unattended tab's half-finished session to whoever uses that tab next.\n */\nexport const PENDING_MFA_SESSION_MAX_AGE_MS: number = 30 * 60 * 1000;\n\n/**\n * The tab's `sessionStorage`, or `undefined` when there is none — a non-browser realm, or a browser that\n * refuses storage access. Probed through `globalThis` inside try/catch rather than by sniffing `window`, for\n * the reason `client-instance-id.frontend.service.ts` records.\n */\nfunction tabStorage(): Storage | undefined {\n try {\n return globalThis.sessionStorage ?? undefined;\n } catch {\n return undefined;\n }\n}\n\nfunction readStored(area: Storage): StoredPendingMfaSession | null {\n try {\n const raw = area.getItem(SESSION_STORAGE_KEYS.PENDING_MFA_SESSION);\n if (!raw) return null;\n const parsed = JSON.parse(raw) as Partial<StoredPendingMfaSession> | null;\n if (!parsed || typeof parsed.sessionId !== 'string' || !parsed.sessionId\n || typeof parsed.email !== 'string' || typeof parsed.rememberedAt !== 'number') {\n return null;\n }\n return { sessionId: parsed.sessionId, email: parsed.email, rememberedAt: parsed.rememberedAt };\n } catch {\n return null;\n }\n}\n\n/**\n * Remember a session that owes a second factor. Re-remembering the SAME session keeps its original\n * `rememberedAt` and, when the new reference carries no email, its known email — so a session recovered\n * after a reload (which has no identification response behind it) neither loses its address nor resets\n * its age.\n */\nexport function rememberPendingMfaSession(reference: PendingMfaSessionReference, now: number = Date.now()): void {\n const area = tabStorage();\n if (!area) return;\n\n const existing = readStored(area);\n const sameSession = existing?.sessionId === reference.sessionId;\n const stored: StoredPendingMfaSession = {\n sessionId: reference.sessionId,\n email: reference.email || (sameSession ? existing!.email : ''),\n rememberedAt: sameSession ? existing!.rememberedAt : now,\n };\n\n try {\n area.setItem(SESSION_STORAGE_KEYS.PENDING_MFA_SESSION, JSON.stringify(stored));\n } catch {\n // Storage full or refused: the reload simply will not be recoverable, which is the prior behaviour.\n }\n}\n\n/**\n * The remembered pending session, or `null`. An entry that is malformed or older than\n * {@link PENDING_MFA_SESSION_MAX_AGE_MS} is FORGOTTEN on read, so it cannot be recovered on a later attempt\n * either.\n */\nexport function readPendingMfaSession(now: number = Date.now()): PendingMfaSessionReference | null {\n const area = tabStorage();\n if (!area) return null;\n\n const stored = readStored(area);\n if (!stored || now - stored.rememberedAt > PENDING_MFA_SESSION_MAX_AGE_MS || stored.rememberedAt > now) {\n forgetPendingMfaSession();\n return null;\n }\n return { sessionId: stored.sessionId, email: stored.email };\n}\n\n/** Forget the remembered pending session, if any. Safe to call when nothing is remembered. */\nexport function forgetPendingMfaSession(): void {\n try {\n tabStorage()?.removeItem(SESSION_STORAGE_KEYS.PENDING_MFA_SESSION);\n } catch {\n // Unavailable storage — nothing to forget there.\n }\n}\n"]}
1
+ {"version":3,"file":"pending-mfa-session-storage.frontend.utils.js","sourceRoot":"","sources":["../../../../src/core/security/pending-mfa-session-storage.frontend.utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { SESSION_STORAGE_KEYS } from '~wildo-frontend-lib/core/commons/local-storage.frontend.schemas';\n\n/**\n * The tab-scoped memory of an MFA session that still owes a second factor (#1068).\n *\n * The auth context holds such a session only in memory, so a reload of the enrollment gate after an\n * in-app arrival used to lose it and cost a sign-in. Three places could have carried it across the reload,\n * and this is the one chosen:\n *\n * | option | why not / why |\n * |---|---|\n * | the gate URL | rejected. A REGISTRATION or INVITATION session reaches the gate this way on the ordinary path, issues tokens when a factor is enrolled, and lives 24h — its id would sit in browser history and every frontend/CDN request log |\n * | `localStorage` | rejected. It outlives the tab and is shared by every tab of the origin, so an abandoned sign-up would be recoverable long after, from anywhere on the device |\n * | **`sessionStorage`** | chosen. It survives a reload of THIS tab, dies with the tab, and never leaves the page. Script in the page can read it, exactly as it can already read the in-memory auth context this mirrors |\n *\n * \"Dies with the tab\" has one browser-defined exception worth stating: a DUPLICATED tab, and a tab opened by\n * `window.open` without `noopener`, start with a COPY of the opener's `sessionStorage`. Such a tab can recover\n * the same pending session — bounded by the same age ceiling below and the same server-side state check.\n *\n * Three rules keep the copy from outliving the session it describes, because a stale entry is a finished\n * or abandoned session brought back:\n * - ONE writer: `AuthSessionProvider` remembers and forgets from auth-state TRANSITIONS, never per call site;\n * - explicit forgets on the terminal acts that do not pass through those transitions after a hard load —\n * logout, starting a new identification, and a recovery the server refuses;\n * - a client-side ceiling ({@link PENDING_MFA_SESSION_MAX_AGE_MS}) measured from when the session FIRST\n * became pending, so re-remembering it on every recovery never extends its life.\n *\n * Nothing here is an authorization input. The server re-reads the session by id and admits second-factor\n * work only on the states it allows; this module decides only whether the gate may ASK.\n */\n\n/** The identity of a pending MFA session, as the enrollment gate needs it to recover one. */\nexport interface PendingMfaSessionReference {\n sessionId: string;\n /** Pre-fills the challenge the gate may hand back to; empty when the session was recovered without it. */\n email: string;\n}\n\ninterface StoredPendingMfaSession extends PendingMfaSessionReference {\n /** Epoch milliseconds at which this session FIRST became pending in this tab. */\n rememberedAt: number;\n}\n\n/**\n * How long a remembered pending session may be recovered, from when it first became pending.\n *\n * Deliberately far shorter than the server's session lifetime: a second factor owed and not given within\n * half an hour is an abandoned sign-in, and the cost of refusing to recover it is one sign-in. The cost of\n * recovering it is handing an unattended tab's half-finished session to whoever uses that tab next.\n */\nexport const PENDING_MFA_SESSION_MAX_AGE_MS: number = 30 * 60 * 1000;\n\n/**\n * The tab's `sessionStorage`, or `undefined` when there is none — a non-browser realm, or a browser that\n * refuses storage access. Probed through `globalThis` inside try/catch rather than by sniffing `window`, for\n * the reason `client-instance-id.frontend.service.ts` records.\n */\nfunction tabStorage(): Storage | undefined {\n try {\n return globalThis.sessionStorage ?? undefined;\n } catch {\n return undefined;\n }\n}\n\nfunction readStored(area: Storage): StoredPendingMfaSession | null {\n try {\n const raw = area.getItem(SESSION_STORAGE_KEYS.PENDING_MFA_SESSION);\n if (!raw) return null;\n const parsed = JSON.parse(raw) as Partial<StoredPendingMfaSession> | null;\n if (!parsed || typeof parsed.sessionId !== 'string' || !parsed.sessionId\n || typeof parsed.email !== 'string' || typeof parsed.rememberedAt !== 'number') {\n return null;\n }\n return { sessionId: parsed.sessionId, email: parsed.email, rememberedAt: parsed.rememberedAt };\n } catch {\n return null;\n }\n}\n\n/**\n * Remember a session that owes a second factor. Re-remembering the SAME session keeps its original\n * `rememberedAt` and, when the new reference carries no email, its known email — so a session recovered\n * after a reload (which has no identification response behind it) neither loses its address nor resets\n * its age.\n */\nexport function rememberPendingMfaSession(reference: PendingMfaSessionReference, now: number = Date.now()): void {\n const area = tabStorage();\n if (!area) return;\n\n const existing = readStored(area);\n const sameSession = existing?.sessionId === reference.sessionId;\n const stored: StoredPendingMfaSession = {\n sessionId: reference.sessionId,\n email: reference.email || (sameSession ? existing!.email : ''),\n rememberedAt: sameSession ? existing!.rememberedAt : now,\n };\n\n try {\n area.setItem(SESSION_STORAGE_KEYS.PENDING_MFA_SESSION, JSON.stringify(stored));\n } catch {\n // Storage full or refused: the reload simply will not be recoverable, which is the prior behaviour.\n }\n}\n\n/**\n * The remembered pending session, or `null`. An entry that is malformed or older than\n * {@link PENDING_MFA_SESSION_MAX_AGE_MS} is FORGOTTEN on read, so it cannot be recovered on a later attempt\n * either.\n */\nexport function readPendingMfaSession(now: number = Date.now()): PendingMfaSessionReference | null {\n const area = tabStorage();\n if (!area) return null;\n\n const stored = readStored(area);\n if (!stored || now - stored.rememberedAt > PENDING_MFA_SESSION_MAX_AGE_MS || stored.rememberedAt > now) {\n forgetPendingMfaSession();\n return null;\n }\n return { sessionId: stored.sessionId, email: stored.email };\n}\n\n/** Forget the remembered pending session, if any. Safe to call when nothing is remembered. */\nexport function forgetPendingMfaSession(): void {\n try {\n tabStorage()?.removeItem(SESSION_STORAGE_KEYS.PENDING_MFA_SESSION);\n } catch {\n // Unavailable storage — nothing to forget there.\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"registration-outcome.frontend.utils.d.ts","sourceRoot":"","sources":["../../../../../src/core/security/registration-outcome.frontend.utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mFAAmF,CAAC;AAGjI;;;;;;;;;;;;;;;GAeG;AACH,oBAAY,mBAAmB;IAC7B;;;OAGG;IACH,SAAS,cAAc;IACvB;;;;OAIG;IACH,uBAAuB,4BAA4B;IACnD;;;;;;;;;OASG;IACH,0BAA0B,+BAA+B;IACzD,iHAAiH;IACjH,qBAAqB,0BAA0B;IAC/C;;;OAGG;IACH,eAAe,oBAAoB;IACnC;;;;OAIG;IACH,0BAA0B,+BAA+B;IACzD;;;;OAIG;IACH,gCAAgC,qCAAqC;IACrE;;;;;OAKG;IACH,UAAU,eAAe;CAC1B;AAYD;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,uBAAuB,GAAG,mBAAmB,CAgClG"}
1
+ {"version":3,"file":"registration-outcome.frontend.utils.d.ts","sourceRoot":"","sources":["../../../../src/core/security/registration-outcome.frontend.utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mFAAmF,CAAC;AAGjI;;;;;;;;;;;;;;;GAeG;AACH,oBAAY,mBAAmB;IAC7B;;;OAGG;IACH,SAAS,cAAc;IACvB;;;;OAIG;IACH,uBAAuB,4BAA4B;IACnD;;;;;;;;;OASG;IACH,0BAA0B,+BAA+B;IACzD,iHAAiH;IACjH,qBAAqB,0BAA0B;IAC/C;;;OAGG;IACH,eAAe,oBAAoB;IACnC;;;;OAIG;IACH,0BAA0B,+BAA+B;IACzD;;;;OAIG;IACH,gCAAgC,qCAAqC;IACrE;;;;;OAKG;IACH,UAAU,eAAe;CAC1B;AAYD;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,uBAAuB,GAAG,mBAAmB,CAgClG"}
@@ -1 +1 @@
1
- {"version":3,"file":"registration-outcome.frontend.utils.js","sourceRoot":"","sources":["../../../../../src/core/security/registration-outcome.frontend.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAEjF,OAAO,EAAE,qCAAqC,EAAE,MAAM,0EAA0E,CAAC;AAEjI;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAN,IAAY,mBAiDX;AAjDD,WAAY,mBAAmB;IAC7B;;;OAGG;IACH,8CAAuB,CAAA;IACvB;;;;OAIG;IACH,0EAAmD,CAAA;IACnD;;;;;;;;;OASG;IACH,gFAAyD,CAAA;IACzD,iHAAiH;IACjH,sEAA+C,CAAA;IAC/C;;;OAGG;IACH,0DAAmC,CAAA;IACnC;;;;OAIG;IACH,gFAAyD,CAAA;IACzD;;;;OAIG;IACH,4FAAqE,CAAA;IACrE;;;;;OAKG;IACH,gDAAyB,CAAA;AAC3B,CAAC,EAjDW,mBAAmB,KAAnB,mBAAmB,QAiD9B;AAED;;;;GAIG;AACH,MAAM,iCAAiC,GAA4C,IAAI,GAAG,CAAC;IACzF,0BAA0B,CAAC,SAAS;IACpC,0BAA0B,CAAC,oBAAoB;CAChD,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACH,MAAM,UAAU,2BAA2B,CAAC,QAAiC;IAC3E,IAAI,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,IAAI,iCAAiC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAClH,OAAO,mBAAmB,CAAC,SAAS,CAAC;IACvC,CAAC;IAED,IAAI,QAAQ,CAAC,eAAe,KAAK,IAAI,EAAE,CAAC;QACtC,OAAO,mBAAmB,CAAC,qBAAqB,CAAC;IACnD,CAAC;IAED,IAAI,QAAQ,CAAC,KAAK,KAAK,0BAA0B,CAAC,uBAAuB,EAAE,CAAC;QAC1E,qGAAqG;QACrG,8DAA8D;QAC9D,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,CAAC,CAAC,mBAAmB,CAAC,UAAU,CAAC;IAC3G,CAAC;IAED,IAAI,qCAAqC,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,OAAO,mBAAmB,CAAC,gCAAgC,CAAC;IAC9D,CAAC;IAED,IAAI,QAAQ,CAAC,QAAQ,KAAK,YAAY,CAAC,eAAe,EAAE,CAAC;QACvD,OAAO,mBAAmB,CAAC,eAAe,CAAC;IAC7C,CAAC;IAED,IAAI,QAAQ,CAAC,QAAQ,KAAK,YAAY,CAAC,kBAAkB,EAAE,CAAC;QAC1D,OAAO,mBAAmB,CAAC,0BAA0B,CAAC;IACxD,CAAC;IAED,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,IAAI,QAAQ,CAAC,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QACjI,OAAO,mBAAmB,CAAC,0BAA0B,CAAC;IACxD,CAAC;IAED,OAAO,mBAAmB,CAAC,UAAU,CAAC;AACxC,CAAC","sourcesContent":["import { AuthenticationSessionState, AuthNextStep } from '@wildo-ai/saas-models';\nimport type { RegisterAccountResponse } from '~wildo-frontend-lib/core/requests/wildo-http-client-manual-calls.frontend.service';\nimport { parkedOrganizationOnboardingSessionId } from '~wildo-frontend-lib/core/security/organization-onboarding.frontend.utils';\n\n/**\n * What a public registration ANSWER means for the person who just submitted the form (#972).\n *\n * `POST /auth/register` does not have one outcome. Depending on the registrant's user-type policy it\n * signs them in, parks them at a second-factor enrollment they owe, asks them to verify their address,\n * or — for an address that already has an account — answers with a bare acknowledgement. The registration\n * screen used to ignore all of that and announce \"check your\n * email\" for every answer, which sent a registrant who had to enroll a second factor away without the\n * session that enrollment completes, and told one who had just been signed in to go and verify.\n *\n * This is the ONE classification of that answer. `AuthSessionContext.registerAccount` adopts the auth\n * state from it and the registration screen renders from it, so the two cannot disagree about which\n * outcome an answer was. Separately-written predicates over the same answer are how the auth screens\n * came to disagree before: their MFA routing copies differed on whether `availableEnrollmentMethods`\n * or the usable-factor set decided enrollment.\n */\nexport enum RegistrationOutcome {\n /**\n * The registration pipeline COMPLETED (or entered the enrollment grace period) and an access token\n * came back. The person is signed in; the refresh token arrived as an HttpOnly cookie.\n */\n SIGNED_IN = 'signed_in',\n /**\n * The user type requires a second factor with no grace period and nothing is enrolled. The answer\n * carries the registration session; enrolling on the enrollment gate completes it and signs the\n * person in (#603). Tokens are deliberately withheld until then.\n */\n MFA_ENROLLMENT_REQUIRED = 'mfa_enrollment_required',\n /**\n * The account exists and its address must be verified before it can sign in — OR the address\n * already had an account. Both are the same answer: the bare acknowledgement.\n *\n * Since #1010 that sameness is the BACKEND's, not only this screen's. Under verification-required\n * registration a new account's answer no longer carries a registration session (`sessionId`,\n * `state: REGISTERED`) — the emailed link is the continuation — so the wire cannot tell a new address\n * from a registered one either. Deferred verification is different by construction: it signs a new\n * registrant in on the spot, which no acknowledgement can imitate.\n */\n EMAIL_VERIFICATION_PENDING = 'email_verification_pending',\n /** The address belongs to a domain whose organization enforces single sign-on; self-registration was refused. */\n SSO_REDIRECT_REQUIRED = 'sso_redirect_required',\n /**\n * A password-less registration: the account exists and a magic link is on its way. Clicking it proves\n * the address and signs the person in, so there is no verification email to resend.\n */\n MAGIC_LINK_SENT = 'magic_link_sent',\n /**\n * A passkey registration (#1093): the account exists, a magic link is on its way, and the passkey is\n * enrolled once the link has signed the person in — a passkey proves an authenticator, never an\n * address, so public passkey sign-up routes through the link. Like MAGIC_LINK_SENT, nothing to resend.\n */\n PASSKEY_ENROLLMENT_PENDING = 'passkey_enrollment_pending',\n /**\n * The account's user type names its organization at onboarding and the answer parked the registration\n * session there (`state: ONBOARDING_PENDING`, #1011). The context adopts the session and the person is sent\n * to the organization-onboarding step, which creates the organization and signs them in (#1090).\n */\n ORGANIZATION_ONBOARDING_REQUIRED = 'organization_onboarding_required',\n /**\n * Anything else: the account was (or may have been) created, but the answer names a step this screen\n * does not carry out — an enrollment or onboarding answer with no session to continue on, or a state\n * added to the pipeline after this was written. Rendered as\n * \"not finished, sign in to continue\"; never as \"complete\".\n */\n UNFINISHED = 'unfinished',\n}\n\n/**\n * The session states in which the registration pipeline issues tokens — the backend's own issuance\n * predicate (`registerUser`, deferred-verification branch), restated as data so a token arriving beside\n * any OTHER state is not adopted as a finished sign-in.\n */\nconst TOKEN_ISSUING_REGISTRATION_STATES: ReadonlySet<AuthenticationSessionState> = new Set([\n AuthenticationSessionState.COMPLETED,\n AuthenticationSessionState.MFA_ENROLLMENT_GRACE,\n]);\n\n/**\n * Classify a registration answer. Order matters and is the precedence the backend's branches imply:\n * a signed-in answer wins; the SSO refusal and the magic-link answer carry no session state; an\n * answer with no state, no next step and no session is the acknowledgement — a new account awaiting\n * address verification and an already-registered address alike (#1010).\n *\n * There is no `state: REGISTERED` branch: no registration answer carries that state any more, so an\n * answer that did would be one this was not written for, and lands in UNFINISHED like any other.\n */\nexport function classifyRegistrationOutcome(response: RegisterAccountResponse): RegistrationOutcome {\n if (response.accessToken && response.state !== undefined && TOKEN_ISSUING_REGISTRATION_STATES.has(response.state)) {\n return RegistrationOutcome.SIGNED_IN;\n }\n\n if (response.ssoRedirectHint === true) {\n return RegistrationOutcome.SSO_REDIRECT_REQUIRED;\n }\n\n if (response.state === AuthenticationSessionState.MFA_ENROLLMENT_REQUIRED) {\n // The gate enrolls ON the session. Without one there is nothing to complete, and routing there would\n // strand the person on a screen that bounces them to sign-in.\n return response.sessionId ? RegistrationOutcome.MFA_ENROLLMENT_REQUIRED : RegistrationOutcome.UNFINISHED;\n }\n\n if (parkedOrganizationOnboardingSessionId(response)) {\n return RegistrationOutcome.ORGANIZATION_ONBOARDING_REQUIRED;\n }\n\n if (response.nextStep === AuthNextStep.MAGIC_LINK_SENT) {\n return RegistrationOutcome.MAGIC_LINK_SENT;\n }\n\n if (response.nextStep === AuthNextStep.PASSKEY_ENROLLMENT) {\n return RegistrationOutcome.PASSKEY_ENROLLMENT_PENDING;\n }\n\n if (response.state === undefined && response.nextStep === undefined && response.sessionId === undefined && !response.accessToken) {\n return RegistrationOutcome.EMAIL_VERIFICATION_PENDING;\n }\n\n return RegistrationOutcome.UNFINISHED;\n}\n"]}
1
+ {"version":3,"file":"registration-outcome.frontend.utils.js","sourceRoot":"","sources":["../../../../src/core/security/registration-outcome.frontend.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAEjF,OAAO,EAAE,qCAAqC,EAAE,MAAM,0EAA0E,CAAC;AAEjI;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAN,IAAY,mBAiDX;AAjDD,WAAY,mBAAmB;IAC7B;;;OAGG;IACH,8CAAuB,CAAA;IACvB;;;;OAIG;IACH,0EAAmD,CAAA;IACnD;;;;;;;;;OASG;IACH,gFAAyD,CAAA;IACzD,iHAAiH;IACjH,sEAA+C,CAAA;IAC/C;;;OAGG;IACH,0DAAmC,CAAA;IACnC;;;;OAIG;IACH,gFAAyD,CAAA;IACzD;;;;OAIG;IACH,4FAAqE,CAAA;IACrE;;;;;OAKG;IACH,gDAAyB,CAAA;AAC3B,CAAC,EAjDW,mBAAmB,KAAnB,mBAAmB,QAiD9B;AAED;;;;GAIG;AACH,MAAM,iCAAiC,GAA4C,IAAI,GAAG,CAAC;IACzF,0BAA0B,CAAC,SAAS;IACpC,0BAA0B,CAAC,oBAAoB;CAChD,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACH,MAAM,UAAU,2BAA2B,CAAC,QAAiC;IAC3E,IAAI,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,IAAI,iCAAiC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAClH,OAAO,mBAAmB,CAAC,SAAS,CAAC;IACvC,CAAC;IAED,IAAI,QAAQ,CAAC,eAAe,KAAK,IAAI,EAAE,CAAC;QACtC,OAAO,mBAAmB,CAAC,qBAAqB,CAAC;IACnD,CAAC;IAED,IAAI,QAAQ,CAAC,KAAK,KAAK,0BAA0B,CAAC,uBAAuB,EAAE,CAAC;QAC1E,qGAAqG;QACrG,8DAA8D;QAC9D,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,CAAC,CAAC,mBAAmB,CAAC,UAAU,CAAC;IAC3G,CAAC;IAED,IAAI,qCAAqC,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,OAAO,mBAAmB,CAAC,gCAAgC,CAAC;IAC9D,CAAC;IAED,IAAI,QAAQ,CAAC,QAAQ,KAAK,YAAY,CAAC,eAAe,EAAE,CAAC;QACvD,OAAO,mBAAmB,CAAC,eAAe,CAAC;IAC7C,CAAC;IAED,IAAI,QAAQ,CAAC,QAAQ,KAAK,YAAY,CAAC,kBAAkB,EAAE,CAAC;QAC1D,OAAO,mBAAmB,CAAC,0BAA0B,CAAC;IACxD,CAAC;IAED,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,IAAI,QAAQ,CAAC,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QACjI,OAAO,mBAAmB,CAAC,0BAA0B,CAAC;IACxD,CAAC;IAED,OAAO,mBAAmB,CAAC,UAAU,CAAC;AACxC,CAAC","sourcesContent":["import { AuthenticationSessionState, AuthNextStep } from '@wildo-ai/saas-models';\nimport type { RegisterAccountResponse } from '~wildo-frontend-lib/core/requests/wildo-http-client-manual-calls.frontend.service';\nimport { parkedOrganizationOnboardingSessionId } from '~wildo-frontend-lib/core/security/organization-onboarding.frontend.utils';\n\n/**\n * What a public registration ANSWER means for the person who just submitted the form (#972).\n *\n * `POST /auth/register` does not have one outcome. Depending on the registrant's user-type policy it\n * signs them in, parks them at a second-factor enrollment they owe, asks them to verify their address,\n * or — for an address that already has an account — answers with a bare acknowledgement. The registration\n * screen used to ignore all of that and announce \"check your\n * email\" for every answer, which sent a registrant who had to enroll a second factor away without the\n * session that enrollment completes, and told one who had just been signed in to go and verify.\n *\n * This is the ONE classification of that answer. `AuthSessionContext.registerAccount` adopts the auth\n * state from it and the registration screen renders from it, so the two cannot disagree about which\n * outcome an answer was. Separately-written predicates over the same answer are how the auth screens\n * came to disagree before: their MFA routing copies differed on whether `availableEnrollmentMethods`\n * or the usable-factor set decided enrollment.\n */\nexport enum RegistrationOutcome {\n /**\n * The registration pipeline COMPLETED (or entered the enrollment grace period) and an access token\n * came back. The person is signed in; the refresh token arrived as an HttpOnly cookie.\n */\n SIGNED_IN = 'signed_in',\n /**\n * The user type requires a second factor with no grace period and nothing is enrolled. The answer\n * carries the registration session; enrolling on the enrollment gate completes it and signs the\n * person in (#603). Tokens are deliberately withheld until then.\n */\n MFA_ENROLLMENT_REQUIRED = 'mfa_enrollment_required',\n /**\n * The account exists and its address must be verified before it can sign in — OR the address\n * already had an account. Both are the same answer: the bare acknowledgement.\n *\n * Since #1010 that sameness is the BACKEND's, not only this screen's. Under verification-required\n * registration a new account's answer no longer carries a registration session (`sessionId`,\n * `state: REGISTERED`) — the emailed link is the continuation — so the wire cannot tell a new address\n * from a registered one either. Deferred verification is different by construction: it signs a new\n * registrant in on the spot, which no acknowledgement can imitate.\n */\n EMAIL_VERIFICATION_PENDING = 'email_verification_pending',\n /** The address belongs to a domain whose organization enforces single sign-on; self-registration was refused. */\n SSO_REDIRECT_REQUIRED = 'sso_redirect_required',\n /**\n * A password-less registration: the account exists and a magic link is on its way. Clicking it proves\n * the address and signs the person in, so there is no verification email to resend.\n */\n MAGIC_LINK_SENT = 'magic_link_sent',\n /**\n * A passkey registration (#1093): the account exists, a magic link is on its way, and the passkey is\n * enrolled once the link has signed the person in — a passkey proves an authenticator, never an\n * address, so public passkey sign-up routes through the link. Like MAGIC_LINK_SENT, nothing to resend.\n */\n PASSKEY_ENROLLMENT_PENDING = 'passkey_enrollment_pending',\n /**\n * The account's user type names its organization at onboarding and the answer parked the registration\n * session there (`state: ONBOARDING_PENDING`, #1011). The context adopts the session and the person is sent\n * to the organization-onboarding step, which creates the organization and signs them in (#1090).\n */\n ORGANIZATION_ONBOARDING_REQUIRED = 'organization_onboarding_required',\n /**\n * Anything else: the account was (or may have been) created, but the answer names a step this screen\n * does not carry out — an enrollment or onboarding answer with no session to continue on, or a state\n * added to the pipeline after this was written. Rendered as\n * \"not finished, sign in to continue\"; never as \"complete\".\n */\n UNFINISHED = 'unfinished',\n}\n\n/**\n * The session states in which the registration pipeline issues tokens — the backend's own issuance\n * predicate (`registerUser`, deferred-verification branch), restated as data so a token arriving beside\n * any OTHER state is not adopted as a finished sign-in.\n */\nconst TOKEN_ISSUING_REGISTRATION_STATES: ReadonlySet<AuthenticationSessionState> = new Set([\n AuthenticationSessionState.COMPLETED,\n AuthenticationSessionState.MFA_ENROLLMENT_GRACE,\n]);\n\n/**\n * Classify a registration answer. Order matters and is the precedence the backend's branches imply:\n * a signed-in answer wins; the SSO refusal and the magic-link answer carry no session state; an\n * answer with no state, no next step and no session is the acknowledgement — a new account awaiting\n * address verification and an already-registered address alike (#1010).\n *\n * There is no `state: REGISTERED` branch: no registration answer carries that state any more, so an\n * answer that did would be one this was not written for, and lands in UNFINISHED like any other.\n */\nexport function classifyRegistrationOutcome(response: RegisterAccountResponse): RegistrationOutcome {\n if (response.accessToken && response.state !== undefined && TOKEN_ISSUING_REGISTRATION_STATES.has(response.state)) {\n return RegistrationOutcome.SIGNED_IN;\n }\n\n if (response.ssoRedirectHint === true) {\n return RegistrationOutcome.SSO_REDIRECT_REQUIRED;\n }\n\n if (response.state === AuthenticationSessionState.MFA_ENROLLMENT_REQUIRED) {\n // The gate enrolls ON the session. Without one there is nothing to complete, and routing there would\n // strand the person on a screen that bounces them to sign-in.\n return response.sessionId ? RegistrationOutcome.MFA_ENROLLMENT_REQUIRED : RegistrationOutcome.UNFINISHED;\n }\n\n if (parkedOrganizationOnboardingSessionId(response)) {\n return RegistrationOutcome.ORGANIZATION_ONBOARDING_REQUIRED;\n }\n\n if (response.nextStep === AuthNextStep.MAGIC_LINK_SENT) {\n return RegistrationOutcome.MAGIC_LINK_SENT;\n }\n\n if (response.nextStep === AuthNextStep.PASSKEY_ENROLLMENT) {\n return RegistrationOutcome.PASSKEY_ENROLLMENT_PENDING;\n }\n\n if (response.state === undefined && response.nextStep === undefined && response.sessionId === undefined && !response.accessToken) {\n return RegistrationOutcome.EMAIL_VERIFICATION_PENDING;\n }\n\n return RegistrationOutcome.UNFINISHED;\n}\n"]}
@@ -56,6 +56,9 @@ export declare enum RouteOrganizationAccess {
56
56
  export interface RouteOrganizationMembershipFacts {
57
57
  organizationId?: string | null;
58
58
  status?: OrganizationMemberStatus | string | null;
59
+ /** Present on a service-provider membership (#1597). */
60
+ serviceProviderRelationshipId?: string | null;
61
+ providerOrganizationId?: string | null;
59
62
  }
60
63
  /**
61
64
  * True when the memberships carry an ACTIVE membership in `organizationId`.
@@ -63,6 +66,10 @@ export interface RouteOrganizationMembershipFacts {
63
66
  * Only ACTIVE counts: an INVITED, INACTIVE or SUSPENDED membership confers no access on the server, so
64
67
  * treating it as a pass would let exactly the refused reads through. Such a membership falls through to
65
68
  * the server probe instead, which answers correctly either way.
69
+ *
70
+ * A SERVICE-PROVIDER membership never counts (#1597, review 6): its status is a mirror of the relationship, which
71
+ * the server re-checks on every request — a suspended relationship, or one past its term, still shows an ACTIVE row
72
+ * here. It falls through to the server probe like any other membership the client cannot vouch for.
66
73
  */
67
74
  export declare function hasActiveMembershipInOrganization(memberships: ReadonlyArray<RouteOrganizationMembershipFacts> | null | undefined, organizationId: string): boolean;
68
75
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"route-organization-access.frontend.utils.d.ts","sourceRoot":"","sources":["../../../../../src/core/security/route-organization-access.frontend.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,wBAAwB,EAEzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EACV,gCAAgC,EAChC,uCAAuC,EACxC,MAAM,+DAA+D,CAAC;AAEvE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,oBAAY,uBAAuB;IACjC,qFAAqF;IACrF,aAAa,kBAAkB;IAC/B;;;;OAIG;IACH,WAAW,gBAAgB;IAC3B,8GAA8G;IAC9G,iBAAiB,sBAAsB;IACvC,sGAAsG;IACtG,SAAS,cAAc;IACvB,uIAAuI;IACvI,QAAQ,aAAa;IACrB;;;;;;OAMG;IACH,OAAO,YAAY;IACnB;;;;OAIG;IACH,YAAY,iBAAiB;CAC9B;AAED,+HAA+H;AAC/H,MAAM,WAAW,gCAAgC;IAC/C,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,MAAM,CAAC,EAAE,wBAAwB,GAAG,MAAM,GAAG,IAAI,CAAC;CACnD;AAED;;;;;;GAMG;AACH,wBAAgB,iCAAiC,CAC/C,WAAW,EAAE,aAAa,CAAC,gCAAgC,CAAC,GAAG,IAAI,GAAG,SAAS,EAC/E,cAAc,EAAE,MAAM,GACrB,OAAO,CAIT;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,qBAAqB,EAAE,gCAAgC,GAAG,SAAS,GAClE,uCAAuC,GAAG,SAAS,CAWrD"}
1
+ {"version":3,"file":"route-organization-access.frontend.utils.d.ts","sourceRoot":"","sources":["../../../../src/core/security/route-organization-access.frontend.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,wBAAwB,EAGzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EACV,gCAAgC,EAChC,uCAAuC,EACxC,MAAM,+DAA+D,CAAC;AAEvE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,oBAAY,uBAAuB;IACjC,qFAAqF;IACrF,aAAa,kBAAkB;IAC/B;;;;OAIG;IACH,WAAW,gBAAgB;IAC3B,8GAA8G;IAC9G,iBAAiB,sBAAsB;IACvC,sGAAsG;IACtG,SAAS,cAAc;IACvB,uIAAuI;IACvI,QAAQ,aAAa;IACrB;;;;;;OAMG;IACH,OAAO,YAAY;IACnB;;;;OAIG;IACH,YAAY,iBAAiB;CAC9B;AAED,+HAA+H;AAC/H,MAAM,WAAW,gCAAgC;IAC/C,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,MAAM,CAAC,EAAE,wBAAwB,GAAG,MAAM,GAAG,IAAI,CAAC;IAClD,wDAAwD;IACxD,6BAA6B,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C,sBAAsB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iCAAiC,CAC/C,WAAW,EAAE,aAAa,CAAC,gCAAgC,CAAC,GAAG,IAAI,GAAG,SAAS,EAC/E,cAAc,EAAE,MAAM,GACrB,OAAO,CAMT;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,qBAAqB,EAAE,gCAAgC,GAAG,SAAS,GAClE,uCAAuC,GAAG,SAAS,CAWrD"}
@@ -1,4 +1,4 @@
1
- import { CoreResourceOperation, OrganizationMemberStatus, ResourceOperationVariantType, } from '@wildo-ai/saas-models';
1
+ import { CoreResourceOperation, OrganizationMemberStatus, isServiceProviderMembership, ResourceOperationVariantType, } from '@wildo-ai/saas-models';
2
2
  /**
3
3
  * Whether the signed-in account may open the organization a route addresses (`/organizations/:id/…`).
4
4
  *
@@ -58,9 +58,15 @@ export var RouteOrganizationAccess;
58
58
  * Only ACTIVE counts: an INVITED, INACTIVE or SUSPENDED membership confers no access on the server, so
59
59
  * treating it as a pass would let exactly the refused reads through. Such a membership falls through to
60
60
  * the server probe instead, which answers correctly either way.
61
+ *
62
+ * A SERVICE-PROVIDER membership never counts (#1597, review 6): its status is a mirror of the relationship, which
63
+ * the server re-checks on every request — a suspended relationship, or one past its term, still shows an ACTIVE row
64
+ * here. It falls through to the server probe like any other membership the client cannot vouch for.
61
65
  */
62
66
  export function hasActiveMembershipInOrganization(memberships, organizationId) {
63
- return (memberships ?? []).some((membership) => membership.organizationId === organizationId && membership.status === OrganizationMemberStatus.ACTIVE);
67
+ return (memberships ?? []).some((membership) => membership.organizationId === organizationId
68
+ && membership.status === OrganizationMemberStatus.ACTIVE
69
+ && !isServiceProviderMembership(membership));
64
70
  }
65
71
  /**
66
72
  * The default, non-bulk API READ of a resource — the operation that fetches one row by its identifier.
@@ -1 +1 @@
1
- {"version":3,"file":"route-organization-access.frontend.utils.js","sourceRoot":"","sources":["../../../../../src/core/security/route-organization-access.frontend.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,uBAAuB,CAAC;AAM/B;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAN,IAAY,uBA6BX;AA7BD,WAAY,uBAAuB;IACjC,qFAAqF;IACrF,0DAA+B,CAAA;IAC/B;;;;OAIG;IACH,sDAA2B,CAAA;IAC3B,8GAA8G;IAC9G,kEAAuC,CAAA;IACvC,sGAAsG;IACtG,kDAAuB,CAAA;IACvB,uIAAuI;IACvI,gDAAqB,CAAA;IACrB;;;;;;OAMG;IACH,8CAAmB,CAAA;IACnB;;;;OAIG;IACH,wDAA6B,CAAA;AAC/B,CAAC,EA7BW,uBAAuB,KAAvB,uBAAuB,QA6BlC;AAQD;;;;;;GAMG;AACH,MAAM,UAAU,iCAAiC,CAC/C,WAA+E,EAC/E,cAAsB;IAEtB,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,CAC7B,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,cAAc,KAAK,cAAc,IAAI,UAAU,CAAC,MAAM,KAAK,wBAAwB,CAAC,MAAM,CACtH,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CACzC,qBAAmE;IAEnE,OAAO,qBAAqB,EAAE,UAAU,EAAE,IAAI,CAC5C,CAAC,SAAkD,EAAE,EAAE,CACrD,SAAS,CAAC,mBAAmB,KAAK,qBAAqB,CAAC,IAAI;WACzD,SAAS,CAAC,kBAAkB,KAAK,IAAI;WACrC,SAAS,CAAC,eAAe,KAAK,IAAI;WAClC,CACD,SAAS,CAAC,WAAW,KAAK,4BAA4B,CAAC,QAAQ;eAC5D,SAAS,CAAC,WAAW,KAAK,4BAA4B,CAAC,sBAAsB,CACjF,CACJ,CAAC;AACJ,CAAC","sourcesContent":["import {\n CoreResourceOperation,\n OrganizationMemberStatus,\n ResourceOperationVariantType,\n} from '@wildo-ai/saas-models';\nimport type {\n AnyFrontendResourceConfiguration,\n FrontendResourceConfiguration_Operation,\n} from '~wildo-frontend-lib/core/resources/resources.frontend.schemas';\n\n/**\n * Whether the signed-in account may open the organization a route addresses (`/organizations/:id/…`).\n *\n * ## Why the route needs its own answer\n *\n * The AppScope organization is membership-checked: `UserOrgsContext` only commits an organization the\n * account belongs to. A route's organization segment is not. `ScopeUtilsService.buildResourceOperationContextIdentifiers`\n * places the URL's identifiers LAST, so they override the checked scope, and the page issues its reads\n * against whatever organization the link names. The link is not always the account's own: a session\n * that expires on `/organizations/A/tasks` saves that URL as the post-login `redirect`, and a DIFFERENT\n * account signing in is sent straight to it. Every read then answered 403, and the person was left on\n * a page that could never load.\n *\n * ## Why the server decides, and the membership list only short-circuits\n *\n * The user context embeds `organizationMembers`, but that array is a context projection capped at\n * `DEFAULT_RELATIONSHIP_CONTEXT_POLICY.limit` (20, newest first) and \"cannot say it was truncated\".\n * A refusal computed from it would eject a member of a 21st organization, and it would also eject a\n * platform operator on a crossing the server admits. So an ACTIVE membership found in the list is\n * trusted (a positive answer cannot be invented by truncation), and anything else is asked of the\n * server with one silent READ of the organization. Only a refusal from that READ redirects.\n */\nexport enum RouteOrganizationAccess {\n /** The current route carries no organization segment. There is nothing to decide. */\n NOT_ADDRESSED = 'NOT_ADDRESSED',\n /**\n * The route addresses an organization, but the session cannot be judged yet or at all: restore is\n * unresolved, no user context was loaded, or the loaded user is not the token's subject (a stale\n * context from the previous account). The route renders as it would without this check.\n */\n UNDECIDABLE = 'UNDECIDABLE',\n /** The loaded user context carries an ACTIVE membership in the addressed organization. No request is made. */\n ACTIVE_MEMBERSHIP = 'ACTIVE_MEMBERSHIP',\n /** No active membership is known, and the server is being asked. The page must not load meanwhile. */\n VERIFYING = 'VERIFYING',\n /** The server answered the organization READ. The account may open it (a membership past the context cap, or an admitted crossing). */\n ADMITTED = 'ADMITTED',\n /**\n * The server refused the organization READ (403, or the deliberate 404 a non-member receives so the\n * answer is not an existence oracle). The route must not render.\n *\n * A link to an organization that does not exist lands here too, and on purpose: the server answers it\n * with the same 404, so the frontend cannot tell the two apart, and must not try to.\n */\n REFUSED = 'REFUSED',\n /**\n * The READ failed for a reason that says nothing about access (network, 5xx, no READ operation mounted).\n * The route renders, and its own requests report whatever is wrong: a transient failure must never\n * eject someone from a page they may open.\n */\n INCONCLUSIVE = 'INCONCLUSIVE',\n}\n\n/** The membership fields this decision reads, structurally, so the check does not depend on the context's population shape. */\nexport interface RouteOrganizationMembershipFacts {\n organizationId?: string | null;\n status?: OrganizationMemberStatus | string | null;\n}\n\n/**\n * True when the memberships carry an ACTIVE membership in `organizationId`.\n *\n * Only ACTIVE counts: an INVITED, INACTIVE or SUSPENDED membership confers no access on the server, so\n * treating it as a pass would let exactly the refused reads through. Such a membership falls through to\n * the server probe instead, which answers correctly either way.\n */\nexport function hasActiveMembershipInOrganization(\n memberships: ReadonlyArray<RouteOrganizationMembershipFacts> | null | undefined,\n organizationId: string,\n): boolean {\n return (memberships ?? []).some(\n (membership) => membership.organizationId === organizationId && membership.status === OrganizationMemberStatus.ACTIVE,\n );\n}\n\n/**\n * The default, non-bulk API READ of a resource — the operation that fetches one row by its identifier.\n *\n * Shared by the session's organization loading and the route access probe, which must address the same\n * operation: if they disagreed, the probe could admit an organization the session cannot load.\n */\nexport function findDefaultApiReadOperation(\n resourceConfiguration: AnyFrontendResourceConfiguration | undefined,\n): FrontendResourceConfiguration_Operation | undefined {\n return resourceConfiguration?.operations?.find(\n (operation: FrontendResourceConfiguration_Operation) =>\n operation.operationIdentifier === CoreResourceOperation.READ\n && operation.isOperationDefault === true\n && operation.isBulkOperation !== true\n && (\n operation.variantType === ResourceOperationVariantType.API_CALL\n || operation.variantType === ResourceOperationVariantType.API_CALL_WITH_CALLBACK\n ),\n );\n}\n"]}
1
+ {"version":3,"file":"route-organization-access.frontend.utils.js","sourceRoot":"","sources":["../../../../src/core/security/route-organization-access.frontend.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,2BAA2B,EAC3B,4BAA4B,GAC7B,MAAM,uBAAuB,CAAC;AAM/B;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAN,IAAY,uBA6BX;AA7BD,WAAY,uBAAuB;IACjC,qFAAqF;IACrF,0DAA+B,CAAA;IAC/B;;;;OAIG;IACH,sDAA2B,CAAA;IAC3B,8GAA8G;IAC9G,kEAAuC,CAAA;IACvC,sGAAsG;IACtG,kDAAuB,CAAA;IACvB,uIAAuI;IACvI,gDAAqB,CAAA;IACrB;;;;;;OAMG;IACH,8CAAmB,CAAA;IACnB;;;;OAIG;IACH,wDAA6B,CAAA;AAC/B,CAAC,EA7BW,uBAAuB,KAAvB,uBAAuB,QA6BlC;AAWD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iCAAiC,CAC/C,WAA+E,EAC/E,cAAsB;IAEtB,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,CAC7B,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,cAAc,KAAK,cAAc;WACvD,UAAU,CAAC,MAAM,KAAK,wBAAwB,CAAC,MAAM;WACrD,CAAC,2BAA2B,CAAC,UAAU,CAAC,CAC9C,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CACzC,qBAAmE;IAEnE,OAAO,qBAAqB,EAAE,UAAU,EAAE,IAAI,CAC5C,CAAC,SAAkD,EAAE,EAAE,CACrD,SAAS,CAAC,mBAAmB,KAAK,qBAAqB,CAAC,IAAI;WACzD,SAAS,CAAC,kBAAkB,KAAK,IAAI;WACrC,SAAS,CAAC,eAAe,KAAK,IAAI;WAClC,CACD,SAAS,CAAC,WAAW,KAAK,4BAA4B,CAAC,QAAQ;eAC5D,SAAS,CAAC,WAAW,KAAK,4BAA4B,CAAC,sBAAsB,CACjF,CACJ,CAAC;AACJ,CAAC","sourcesContent":["import {\n CoreResourceOperation,\n OrganizationMemberStatus,\n isServiceProviderMembership,\n ResourceOperationVariantType,\n} from '@wildo-ai/saas-models';\nimport type {\n AnyFrontendResourceConfiguration,\n FrontendResourceConfiguration_Operation,\n} from '~wildo-frontend-lib/core/resources/resources.frontend.schemas';\n\n/**\n * Whether the signed-in account may open the organization a route addresses (`/organizations/:id/…`).\n *\n * ## Why the route needs its own answer\n *\n * The AppScope organization is membership-checked: `UserOrgsContext` only commits an organization the\n * account belongs to. A route's organization segment is not. `ScopeUtilsService.buildResourceOperationContextIdentifiers`\n * places the URL's identifiers LAST, so they override the checked scope, and the page issues its reads\n * against whatever organization the link names. The link is not always the account's own: a session\n * that expires on `/organizations/A/tasks` saves that URL as the post-login `redirect`, and a DIFFERENT\n * account signing in is sent straight to it. Every read then answered 403, and the person was left on\n * a page that could never load.\n *\n * ## Why the server decides, and the membership list only short-circuits\n *\n * The user context embeds `organizationMembers`, but that array is a context projection capped at\n * `DEFAULT_RELATIONSHIP_CONTEXT_POLICY.limit` (20, newest first) and \"cannot say it was truncated\".\n * A refusal computed from it would eject a member of a 21st organization, and it would also eject a\n * platform operator on a crossing the server admits. So an ACTIVE membership found in the list is\n * trusted (a positive answer cannot be invented by truncation), and anything else is asked of the\n * server with one silent READ of the organization. Only a refusal from that READ redirects.\n */\nexport enum RouteOrganizationAccess {\n /** The current route carries no organization segment. There is nothing to decide. */\n NOT_ADDRESSED = 'NOT_ADDRESSED',\n /**\n * The route addresses an organization, but the session cannot be judged yet or at all: restore is\n * unresolved, no user context was loaded, or the loaded user is not the token's subject (a stale\n * context from the previous account). The route renders as it would without this check.\n */\n UNDECIDABLE = 'UNDECIDABLE',\n /** The loaded user context carries an ACTIVE membership in the addressed organization. No request is made. */\n ACTIVE_MEMBERSHIP = 'ACTIVE_MEMBERSHIP',\n /** No active membership is known, and the server is being asked. The page must not load meanwhile. */\n VERIFYING = 'VERIFYING',\n /** The server answered the organization READ. The account may open it (a membership past the context cap, or an admitted crossing). */\n ADMITTED = 'ADMITTED',\n /**\n * The server refused the organization READ (403, or the deliberate 404 a non-member receives so the\n * answer is not an existence oracle). The route must not render.\n *\n * A link to an organization that does not exist lands here too, and on purpose: the server answers it\n * with the same 404, so the frontend cannot tell the two apart, and must not try to.\n */\n REFUSED = 'REFUSED',\n /**\n * The READ failed for a reason that says nothing about access (network, 5xx, no READ operation mounted).\n * The route renders, and its own requests report whatever is wrong: a transient failure must never\n * eject someone from a page they may open.\n */\n INCONCLUSIVE = 'INCONCLUSIVE',\n}\n\n/** The membership fields this decision reads, structurally, so the check does not depend on the context's population shape. */\nexport interface RouteOrganizationMembershipFacts {\n organizationId?: string | null;\n status?: OrganizationMemberStatus | string | null;\n /** Present on a service-provider membership (#1597). */\n serviceProviderRelationshipId?: string | null;\n providerOrganizationId?: string | null;\n}\n\n/**\n * True when the memberships carry an ACTIVE membership in `organizationId`.\n *\n * Only ACTIVE counts: an INVITED, INACTIVE or SUSPENDED membership confers no access on the server, so\n * treating it as a pass would let exactly the refused reads through. Such a membership falls through to\n * the server probe instead, which answers correctly either way.\n *\n * A SERVICE-PROVIDER membership never counts (#1597, review 6): its status is a mirror of the relationship, which\n * the server re-checks on every request — a suspended relationship, or one past its term, still shows an ACTIVE row\n * here. It falls through to the server probe like any other membership the client cannot vouch for.\n */\nexport function hasActiveMembershipInOrganization(\n memberships: ReadonlyArray<RouteOrganizationMembershipFacts> | null | undefined,\n organizationId: string,\n): boolean {\n return (memberships ?? []).some(\n (membership) => membership.organizationId === organizationId\n && membership.status === OrganizationMemberStatus.ACTIVE\n && !isServiceProviderMembership(membership),\n );\n}\n\n/**\n * The default, non-bulk API READ of a resource — the operation that fetches one row by its identifier.\n *\n * Shared by the session's organization loading and the route access probe, which must address the same\n * operation: if they disagreed, the probe could admit an organization the session cannot load.\n */\nexport function findDefaultApiReadOperation(\n resourceConfiguration: AnyFrontendResourceConfiguration | undefined,\n): FrontendResourceConfiguration_Operation | undefined {\n return resourceConfiguration?.operations?.find(\n (operation: FrontendResourceConfiguration_Operation) =>\n operation.operationIdentifier === CoreResourceOperation.READ\n && operation.isOperationDefault === true\n && operation.isBulkOperation !== true\n && (\n operation.variantType === ResourceOperationVariantType.API_CALL\n || operation.variantType === ResourceOperationVariantType.API_CALL_WITH_CALLBACK\n ),\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"security.frontend.schemas.d.ts","sourceRoot":"","sources":["../../../../../src/core/security/security.frontend.schemas.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,0BAA0B,EAC1B,eAAe,EACf,WAAW,EACX,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACxB,MAAM,uBAAuB,CAAC;AAE/B;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,EAAE,0BAA0B,GAAG,IAAI,CAAC;IAClD,YAAY,EAAE,GAAG,GAAG,IAAI,CAAC;IACzB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,eAAe,EAAE,OAAO,CAAC;IACzB,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,mBAAmB,EAAE,eAAe,EAAE,CAAC;IACvC,0BAA0B,EAAE,UAAU,EAAE,CAAC;IACzC,2BAA2B,EAAE,MAAM,EAAE,CAAC;IACtC,yBAAyB,EAAE,MAAM,EAAE,CAAC;IACpC;;;;;;;;;;OAUG;IACH,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACnC,oEAAoE;IACpE,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,wGAAwG;IACxG,aAAa,CAAC,EAAE;QACd,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;QAClB,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,2BAA2B,CAAC,EAAE;QAC5B;;;;;WAKG;QACH,UAAU,EAAE,MAAM,CAAC;QACnB;;;;;;;;;WASG;QACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;QACnC,mGAAmG;QACnG,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH;AAED;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACzC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAoB9B,CAAC;AAIF,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AAEjE,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,YAAY,GAAG,SAAS,CAAC;AAEpE,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE/C;;;;;;;;;;;;;GAaG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,aAAa,GAAG,eAAe,CAE/E;AAED;;;;;;;;;;;;;GAaG;AACH,oBAAY,sBAAsB;IAChC,WAAW,gBAAgB;IAC3B,KAAK,UAAU;CAChB;AAED;;;;;;;;;GASG;AACH,qBAAa,2BAA4B,SAAQ,KAAK;;CAKrD;AAED;;;;;;;GAOG;AACH,qBAAa,8BAA+B,SAAQ,KAAK;;CAKxD"}
1
+ {"version":3,"file":"security.frontend.schemas.d.ts","sourceRoot":"","sources":["../../../../src/core/security/security.frontend.schemas.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,0BAA0B,EAC1B,eAAe,EACf,WAAW,EACX,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACxB,MAAM,uBAAuB,CAAC;AAE/B;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,EAAE,0BAA0B,GAAG,IAAI,CAAC;IAClD,YAAY,EAAE,GAAG,GAAG,IAAI,CAAC;IACzB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,eAAe,EAAE,OAAO,CAAC;IACzB,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,mBAAmB,EAAE,eAAe,EAAE,CAAC;IACvC,0BAA0B,EAAE,UAAU,EAAE,CAAC;IACzC,2BAA2B,EAAE,MAAM,EAAE,CAAC;IACtC,yBAAyB,EAAE,MAAM,EAAE,CAAC;IACpC;;;;;;;;;;OAUG;IACH,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACnC,oEAAoE;IACpE,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,wGAAwG;IACxG,aAAa,CAAC,EAAE;QACd,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;QAClB,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,2BAA2B,CAAC,EAAE;QAC5B;;;;;WAKG;QACH,UAAU,EAAE,MAAM,CAAC;QACnB;;;;;;;;;WASG;QACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;QACnC,mGAAmG;QACnG,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH;AAED;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACzC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAoB9B,CAAC;AAIF,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AAEjE,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,YAAY,GAAG,SAAS,CAAC;AAEpE,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE/C;;;;;;;;;;;;;GAaG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,aAAa,GAAG,eAAe,CAE/E;AAED;;;;;;;;;;;;;GAaG;AACH,oBAAY,sBAAsB;IAChC,WAAW,gBAAgB;IAC3B,KAAK,UAAU;CAChB;AAED;;;;;;;;;GASG;AACH,qBAAa,2BAA4B,SAAQ,KAAK;;CAKrD;AAED;;;;;;;GAOG;AACH,qBAAa,8BAA+B,SAAQ,KAAK;;CAKxD"}