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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (777) hide show
  1. package/dist/esm/components/actions/action-bar.d.ts +15 -0
  2. package/dist/esm/components/actions/action-bar.d.ts.map +1 -1
  3. package/dist/esm/components/actions/action-bar.js +15 -0
  4. package/dist/esm/components/actions/action-bar.js.map +1 -1
  5. package/dist/esm/components/ai-elements/decision/approval.d.ts +97 -7
  6. package/dist/esm/components/ai-elements/decision/approval.d.ts.map +1 -1
  7. package/dist/esm/components/ai-elements/decision/approval.js.map +1 -1
  8. package/dist/esm/components/app/AppLayout_AuthenticatedRoute.d.ts.map +1 -1
  9. package/dist/esm/components/app/AppLayout_AuthenticatedRoute.js +8 -3
  10. package/dist/esm/components/app/AppLayout_AuthenticatedRoute.js.map +1 -1
  11. package/dist/esm/components/auth/Auth_EnrollmentRequired.d.ts.map +1 -1
  12. package/dist/esm/components/auth/Auth_EnrollmentRequired.js +5 -1
  13. package/dist/esm/components/auth/Auth_EnrollmentRequired.js.map +1 -1
  14. package/dist/esm/components/auth/Auth_Main.d.ts.map +1 -1
  15. package/dist/esm/components/auth/Auth_Main.js +1 -4
  16. package/dist/esm/components/auth/Auth_Main.js.map +1 -1
  17. package/dist/esm/components/auth/Auth_Register.d.ts.map +1 -1
  18. package/dist/esm/components/auth/Auth_Register.js +1 -3
  19. package/dist/esm/components/auth/Auth_Register.js.map +1 -1
  20. package/dist/esm/components/auth/StepUpAuthDialog.d.ts +7 -0
  21. package/dist/esm/components/auth/StepUpAuthDialog.d.ts.map +1 -1
  22. package/dist/esm/components/auth/StepUpAuthDialog.js +13 -7
  23. package/dist/esm/components/auth/StepUpAuthDialog.js.map +1 -1
  24. package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.d.ts.map +1 -1
  25. package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.js +32 -33
  26. package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.js.map +1 -1
  27. package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.labels.d.ts.map +1 -1
  28. package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.labels.js +18 -20
  29. package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.labels.js.map +1 -1
  30. package/dist/esm/components/auth/methods/ExternalOAuth2AuthMethod.d.ts.map +1 -1
  31. package/dist/esm/components/auth/methods/ExternalOAuth2AuthMethod.js +2 -3
  32. package/dist/esm/components/auth/methods/ExternalOAuth2AuthMethod.js.map +1 -1
  33. package/dist/esm/components/auth/utils/oauth-provider-display-label.frontend.utils.d.ts +13 -16
  34. package/dist/esm/components/auth/utils/oauth-provider-display-label.frontend.utils.d.ts.map +1 -1
  35. package/dist/esm/components/auth/utils/oauth-provider-display-label.frontend.utils.js +18 -15
  36. package/dist/esm/components/auth/utils/oauth-provider-display-label.frontend.utils.js.map +1 -1
  37. package/dist/esm/components/billing/billing-invoice-history.js +2 -2
  38. package/dist/esm/components/billing/billing-invoice-history.js.map +1 -1
  39. package/dist/esm/components/billing/billing-portal-link.js +2 -2
  40. package/dist/esm/components/billing/billing-portal-link.js.map +1 -1
  41. package/dist/esm/components/billing/billing-pricing-table.d.ts +33 -1
  42. package/dist/esm/components/billing/billing-pricing-table.d.ts.map +1 -1
  43. package/dist/esm/components/billing/billing-pricing-table.js +34 -5
  44. package/dist/esm/components/billing/billing-pricing-table.js.map +1 -1
  45. package/dist/esm/components/billing/billing-subscription-status.js +2 -2
  46. package/dist/esm/components/billing/billing-subscription-status.js.map +1 -1
  47. package/dist/esm/components/billing/billing-usage-dashboard.d.ts +2 -0
  48. package/dist/esm/components/billing/billing-usage-dashboard.d.ts.map +1 -1
  49. package/dist/esm/components/billing/billing-usage-dashboard.js +1 -0
  50. package/dist/esm/components/billing/billing-usage-dashboard.js.map +1 -1
  51. package/dist/esm/components/data-display/DisplayField.d.ts.map +1 -1
  52. package/dist/esm/components/data-display/DisplayField.js +15 -1
  53. package/dist/esm/components/data-display/DisplayField.js.map +1 -1
  54. package/dist/esm/components/data-display/DisplayFieldArray.d.ts.map +1 -1
  55. package/dist/esm/components/data-display/DisplayFieldArray.js +11 -0
  56. package/dist/esm/components/data-display/DisplayFieldArray.js.map +1 -1
  57. package/dist/esm/components/data-display/DisplayFieldEditable.d.ts.map +1 -1
  58. package/dist/esm/components/data-display/DisplayFieldEditable.js +2 -2
  59. package/dist/esm/components/data-display/DisplayFieldEditable.js.map +1 -1
  60. package/dist/esm/components/data-display/DisplayFieldEditableArray.d.ts +12 -2
  61. package/dist/esm/components/data-display/DisplayFieldEditableArray.d.ts.map +1 -1
  62. package/dist/esm/components/data-display/DisplayFieldEditableArray.js +3 -2
  63. package/dist/esm/components/data-display/DisplayFieldEditableArray.js.map +1 -1
  64. package/dist/esm/components/data-display/DisplayFieldReadOnly.d.ts.map +1 -1
  65. package/dist/esm/components/data-display/DisplayFieldReadOnly.js +2 -2
  66. package/dist/esm/components/data-display/DisplayFieldReadOnly.js.map +1 -1
  67. package/dist/esm/components/data-display/DisplayFieldReadOnlyArraySection.d.ts.map +1 -1
  68. package/dist/esm/components/data-display/DisplayFieldReadOnlyArraySection.js +8 -2
  69. package/dist/esm/components/data-display/DisplayFieldReadOnlyArraySection.js.map +1 -1
  70. package/dist/esm/components/data-display/DisplayValueDispatcher.d.ts.map +1 -1
  71. package/dist/esm/components/data-display/DisplayValueDispatcher.js +18 -4
  72. package/dist/esm/components/data-display/DisplayValueDispatcher.js.map +1 -1
  73. package/dist/esm/components/data-display/ResourceAutomaticDisplayer.d.ts.map +1 -1
  74. package/dist/esm/components/data-display/ResourceAutomaticDisplayer.js +61 -3
  75. package/dist/esm/components/data-display/ResourceAutomaticDisplayer.js.map +1 -1
  76. package/dist/esm/components/data-display/ResourceSummaryDisplayer.d.ts +7 -5
  77. package/dist/esm/components/data-display/ResourceSummaryDisplayer.d.ts.map +1 -1
  78. package/dist/esm/components/data-display/ResourceSummaryDisplayer.js.map +1 -1
  79. package/dist/esm/components/data-display/chromes/DisplayFieldChrome.d.ts +11 -1
  80. package/dist/esm/components/data-display/chromes/DisplayFieldChrome.d.ts.map +1 -1
  81. package/dist/esm/components/data-display/chromes/DisplayFieldChrome.js +36 -11
  82. package/dist/esm/components/data-display/chromes/DisplayFieldChrome.js.map +1 -1
  83. package/dist/esm/components/data-display/display-field-resolved-props.d.ts +6 -0
  84. package/dist/esm/components/data-display/display-field-resolved-props.d.ts.map +1 -1
  85. package/dist/esm/components/data-display/display-field-resolved-props.js.map +1 -1
  86. package/dist/esm/components/data-display/external-data-provenance/DisplayFieldProvenanceNote.d.ts +23 -0
  87. package/dist/esm/components/data-display/external-data-provenance/DisplayFieldProvenanceNote.d.ts.map +1 -0
  88. package/dist/esm/components/data-display/external-data-provenance/DisplayFieldProvenanceNote.js +35 -0
  89. package/dist/esm/components/data-display/external-data-provenance/DisplayFieldProvenanceNote.js.map +1 -0
  90. package/dist/esm/components/data-display/external-data-provenance/external-data-provenance.frontend.d.ts +47 -0
  91. package/dist/esm/components/data-display/external-data-provenance/external-data-provenance.frontend.d.ts.map +1 -0
  92. package/dist/esm/components/data-display/external-data-provenance/external-data-provenance.frontend.js +124 -0
  93. package/dist/esm/components/data-display/external-data-provenance/external-data-provenance.frontend.js.map +1 -0
  94. package/dist/esm/components/data-display/external-data-provenance/useExternalDataFieldProvenance.d.ts +8 -0
  95. package/dist/esm/components/data-display/external-data-provenance/useExternalDataFieldProvenance.d.ts.map +1 -0
  96. package/dist/esm/components/data-display/external-data-provenance/useExternalDataFieldProvenance.js +46 -0
  97. package/dist/esm/components/data-display/external-data-provenance/useExternalDataFieldProvenance.js.map +1 -0
  98. package/dist/esm/components/feedback/resource-empty-state.d.ts +21 -8
  99. package/dist/esm/components/feedback/resource-empty-state.d.ts.map +1 -1
  100. package/dist/esm/components/feedback/resource-empty-state.js +56 -26
  101. package/dist/esm/components/feedback/resource-empty-state.js.map +1 -1
  102. package/dist/esm/components/flows-actors/approval.d.ts +29 -7
  103. package/dist/esm/components/flows-actors/approval.d.ts.map +1 -1
  104. package/dist/esm/components/flows-actors/approval.js +231 -101
  105. package/dist/esm/components/flows-actors/approval.js.map +1 -1
  106. package/dist/esm/components/flows-actors/approval.labels.d.ts.map +1 -1
  107. package/dist/esm/components/flows-actors/approval.labels.js +57 -0
  108. package/dist/esm/components/flows-actors/approval.labels.js.map +1 -1
  109. package/dist/esm/components/flows-actors/system-catalog.d.ts.map +1 -1
  110. package/dist/esm/components/flows-actors/system-catalog.js +4 -4
  111. package/dist/esm/components/flows-actors/system-catalog.js.map +1 -1
  112. package/dist/esm/components/flows-actors/system-catalog.labels.d.ts.map +1 -1
  113. package/dist/esm/components/flows-actors/system-catalog.labels.js +0 -5
  114. package/dist/esm/components/flows-actors/system-catalog.labels.js.map +1 -1
  115. package/dist/esm/components/form/Form.d.ts +2 -2
  116. package/dist/esm/components/form/Form.js +2 -2
  117. package/dist/esm/components/form/Form.js.map +1 -1
  118. package/dist/esm/components/form/automated/AutomatedArrayField.d.ts +28 -3
  119. package/dist/esm/components/form/automated/AutomatedArrayField.d.ts.map +1 -1
  120. package/dist/esm/components/form/automated/AutomatedArrayField.js +43 -14
  121. package/dist/esm/components/form/automated/AutomatedArrayField.js.map +1 -1
  122. package/dist/esm/components/form/automated/FormField.d.ts +3 -0
  123. package/dist/esm/components/form/automated/FormField.d.ts.map +1 -1
  124. package/dist/esm/components/form/automated/FormField.js +60 -21
  125. package/dist/esm/components/form/automated/FormField.js.map +1 -1
  126. package/dist/esm/components/form/automated/FormFieldArray.d.ts +6 -3
  127. package/dist/esm/components/form/automated/FormFieldArray.d.ts.map +1 -1
  128. package/dist/esm/components/form/automated/FormFieldArray.js +3 -2
  129. package/dist/esm/components/form/automated/FormFieldArray.js.map +1 -1
  130. package/dist/esm/components/form/automated/ResourceAutomatedForm.d.ts +5 -4
  131. package/dist/esm/components/form/automated/ResourceAutomatedForm.d.ts.map +1 -1
  132. package/dist/esm/components/form/automated/ResourceAutomatedForm.js +148 -55
  133. package/dist/esm/components/form/automated/ResourceAutomatedForm.js.map +1 -1
  134. package/dist/esm/components/form/automated/ResourceFormActionsContext.d.ts +30 -0
  135. package/dist/esm/components/form/automated/ResourceFormActionsContext.d.ts.map +1 -1
  136. package/dist/esm/components/form/automated/ResourceFormActionsContext.js +30 -1
  137. package/dist/esm/components/form/automated/ResourceFormActionsContext.js.map +1 -1
  138. package/dist/esm/components/form/automated/TemplatePlacedFieldsContext.d.ts +79 -0
  139. package/dist/esm/components/form/automated/TemplatePlacedFieldsContext.d.ts.map +1 -0
  140. package/dist/esm/components/form/automated/TemplatePlacedFieldsContext.js +203 -0
  141. package/dist/esm/components/form/automated/TemplatePlacedFieldsContext.js.map +1 -0
  142. package/dist/esm/components/form/automated/automated-form-submit.utils.d.ts +12 -0
  143. package/dist/esm/components/form/automated/automated-form-submit.utils.d.ts.map +1 -1
  144. package/dist/esm/components/form/automated/automated-form-submit.utils.js +11 -0
  145. package/dist/esm/components/form/automated/automated-form-submit.utils.js.map +1 -1
  146. package/dist/esm/components/form/chromes/FormFieldChrome.d.ts.map +1 -1
  147. package/dist/esm/components/form/chromes/FormFieldChrome.js +2 -2
  148. package/dist/esm/components/form/chromes/FormFieldChrome.js.map +1 -1
  149. package/dist/esm/components/form/combobox.d.ts +7 -0
  150. package/dist/esm/components/form/combobox.d.ts.map +1 -1
  151. package/dist/esm/components/form/combobox.js.map +1 -1
  152. package/dist/esm/components/form/controls/form-field-checkbox-group.d.ts.map +1 -1
  153. package/dist/esm/components/form/controls/form-field-checkbox-group.js +13 -0
  154. package/dist/esm/components/form/controls/form-field-checkbox-group.js.map +1 -1
  155. package/dist/esm/components/form/fields/form-field-address.d.ts +58 -0
  156. package/dist/esm/components/form/fields/form-field-address.d.ts.map +1 -1
  157. package/dist/esm/components/form/fields/form-field-address.js +34 -6
  158. package/dist/esm/components/form/fields/form-field-address.js.map +1 -1
  159. package/dist/esm/components/form/fields/form-field-address.labels.d.ts.map +1 -1
  160. package/dist/esm/components/form/fields/form-field-address.labels.js +60 -1
  161. package/dist/esm/components/form/fields/form-field-address.labels.js.map +1 -1
  162. package/dist/esm/components/form/fields/form-field-file.d.ts +0 -12
  163. package/dist/esm/components/form/fields/form-field-file.d.ts.map +1 -1
  164. package/dist/esm/components/form/fields/form-field-file.js +34 -13
  165. package/dist/esm/components/form/fields/form-field-file.js.map +1 -1
  166. package/dist/esm/components/form/fields/form-field-file.labels.d.ts.map +1 -1
  167. package/dist/esm/components/form/fields/form-field-file.labels.js +46 -0
  168. package/dist/esm/components/form/fields/form-field-file.labels.js.map +1 -1
  169. package/dist/esm/components/form/fields/form-field-string-organization-role.d.ts +73 -0
  170. package/dist/esm/components/form/fields/form-field-string-organization-role.d.ts.map +1 -0
  171. package/dist/esm/components/form/fields/form-field-string-organization-role.js +64 -0
  172. package/dist/esm/components/form/fields/form-field-string-organization-role.js.map +1 -0
  173. package/dist/esm/components/form/fields/form-field-string.d.ts.map +1 -1
  174. package/dist/esm/components/form/fields/form-field-string.js +8 -1
  175. package/dist/esm/components/form/fields/form-field-string.js.map +1 -1
  176. package/dist/esm/components/form/fields/form-field-string.labels.d.ts.map +1 -1
  177. package/dist/esm/components/form/fields/form-field-string.labels.js +4 -0
  178. package/dist/esm/components/form/fields/form-field-string.labels.js.map +1 -1
  179. package/dist/esm/components/form/validation-errors/FormErrorSummary.js +1 -1
  180. package/dist/esm/components/form/validation-errors/FormErrorSummary.js.map +1 -1
  181. package/dist/esm/components/form/validation-errors/resolver-error-nesting.d.ts +31 -0
  182. package/dist/esm/components/form/validation-errors/resolver-error-nesting.d.ts.map +1 -0
  183. package/dist/esm/components/form/validation-errors/resolver-error-nesting.js +81 -0
  184. package/dist/esm/components/form/validation-errors/resolver-error-nesting.js.map +1 -0
  185. package/dist/esm/components/form/validation-errors/resource-error-notification-context.utils.d.ts +14 -1
  186. package/dist/esm/components/form/validation-errors/resource-error-notification-context.utils.d.ts.map +1 -1
  187. package/dist/esm/components/form/validation-errors/resource-error-notification-context.utils.js +14 -0
  188. package/dist/esm/components/form/validation-errors/resource-error-notification-context.utils.js.map +1 -1
  189. package/dist/esm/components/form/validation-errors/zod-issue-resolver.d.ts +22 -0
  190. package/dist/esm/components/form/validation-errors/zod-issue-resolver.d.ts.map +1 -1
  191. package/dist/esm/components/form/validation-errors/zod-issue-resolver.js +1 -22
  192. package/dist/esm/components/form/validation-errors/zod-issue-resolver.js.map +1 -1
  193. package/dist/esm/components/layout/resizable.d.ts +11 -0
  194. package/dist/esm/components/layout/resizable.d.ts.map +1 -1
  195. package/dist/esm/components/layout/resizable.js.map +1 -1
  196. package/dist/esm/components/navigation/app-level/ApplicationLevel_NavigationBack.d.ts +11 -1
  197. package/dist/esm/components/navigation/app-level/ApplicationLevel_NavigationBack.d.ts.map +1 -1
  198. package/dist/esm/components/navigation/app-level/ApplicationLevel_NavigationBack.js +15 -3
  199. package/dist/esm/components/navigation/app-level/ApplicationLevel_NavigationBack.js.map +1 -1
  200. package/dist/esm/components/navigation/app-level/ApplicationLevel_StatusBar.d.ts +2 -2
  201. package/dist/esm/components/navigation/app-level/ApplicationLevel_StatusBar.d.ts.map +1 -1
  202. package/dist/esm/components/navigation/app-level/ApplicationLevel_StatusBar.js.map +1 -1
  203. package/dist/esm/components/navigation/app-level/HostedComponentInteractionsProvider.d.ts +2 -2
  204. package/dist/esm/components/navigation/app-level/HostedComponentInteractionsProvider.js +2 -2
  205. package/dist/esm/components/navigation/app-level/HostedComponentInteractionsProvider.js.map +1 -1
  206. package/dist/esm/components/navigation/app-level/SidebarResourceBrowser.js +18 -20
  207. package/dist/esm/components/navigation/app-level/SidebarResourceBrowser.js.map +1 -1
  208. package/dist/esm/components/navigation/app-level/useCommandMenuBehavior.d.ts.map +1 -1
  209. package/dist/esm/components/navigation/app-level/useCommandMenuBehavior.js +7 -1
  210. package/dist/esm/components/navigation/app-level/useCommandMenuBehavior.js.map +1 -1
  211. package/dist/esm/components/navigation/app-level/useMenuBarBehavior.d.ts.map +1 -1
  212. package/dist/esm/components/navigation/app-level/useMenuBarBehavior.js +4 -1
  213. package/dist/esm/components/navigation/app-level/useMenuBarBehavior.js.map +1 -1
  214. package/dist/esm/components/navigation/app-level/useMenuUserOrgBehavior.d.ts.map +1 -1
  215. package/dist/esm/components/navigation/app-level/useMenuUserOrgBehavior.js +18 -2
  216. package/dist/esm/components/navigation/app-level/useMenuUserOrgBehavior.js.map +1 -1
  217. package/dist/esm/components/navigation/app-level/useSidebarBehavior.d.ts.map +1 -1
  218. package/dist/esm/components/navigation/app-level/useSidebarBehavior.js +82 -10
  219. package/dist/esm/components/navigation/app-level/useSidebarBehavior.js.map +1 -1
  220. package/dist/esm/components/navigation/app-level/useStatusBarBehavior.d.ts +2 -2
  221. package/dist/esm/components/navigation/app-level/useStatusBarBehavior.d.ts.map +1 -1
  222. package/dist/esm/components/navigation/app-level/useStatusBarBehavior.js.map +1 -1
  223. package/dist/esm/components/resources/ResourceCollectionQuickFilterTabs.d.ts.map +1 -1
  224. package/dist/esm/components/resources/ResourceCollectionQuickFilterTabs.js +8 -1
  225. package/dist/esm/components/resources/ResourceCollectionQuickFilterTabs.js.map +1 -1
  226. package/dist/esm/components/resources/ResourceCollectionToolbar.d.ts +8 -2
  227. package/dist/esm/components/resources/ResourceCollectionToolbar.d.ts.map +1 -1
  228. package/dist/esm/components/resources/ResourceCollectionToolbar.js +6 -2
  229. package/dist/esm/components/resources/ResourceCollectionToolbar.js.map +1 -1
  230. package/dist/esm/components/resources/ResourceLayout_Breadcrumb.d.ts.map +1 -1
  231. package/dist/esm/components/resources/ResourceLayout_Breadcrumb.js +31 -16
  232. package/dist/esm/components/resources/ResourceLayout_Breadcrumb.js.map +1 -1
  233. package/dist/esm/components/resources/ResourceLayout_ContainerDialogs.d.ts.map +1 -1
  234. package/dist/esm/components/resources/ResourceLayout_ContainerDialogs.js +23 -8
  235. package/dist/esm/components/resources/ResourceLayout_ContainerDialogs.js.map +1 -1
  236. package/dist/esm/components/resources/ResourceLayout_ContainerNested.js +2 -2
  237. package/dist/esm/components/resources/ResourceLayout_ContainerNested.js.map +1 -1
  238. package/dist/esm/components/resources/ResourceLayout_Header.d.ts +13 -0
  239. package/dist/esm/components/resources/ResourceLayout_Header.d.ts.map +1 -1
  240. package/dist/esm/components/resources/ResourceLayout_Header.js +55 -28
  241. package/dist/esm/components/resources/ResourceLayout_Header.js.map +1 -1
  242. package/dist/esm/components/resources/ResourceLayout_List.d.ts.map +1 -1
  243. package/dist/esm/components/resources/ResourceLayout_List.js +41 -20
  244. package/dist/esm/components/resources/ResourceLayout_List.js.map +1 -1
  245. package/dist/esm/components/resources/ResourceLayout_List.labels.d.ts.map +1 -1
  246. package/dist/esm/components/resources/ResourceLayout_List.labels.js +1 -2
  247. package/dist/esm/components/resources/ResourceLayout_List.labels.js.map +1 -1
  248. package/dist/esm/components/resources/ResourceLayout_Read.d.ts +9 -4
  249. package/dist/esm/components/resources/ResourceLayout_Read.d.ts.map +1 -1
  250. package/dist/esm/components/resources/ResourceLayout_Read.js +30 -11
  251. package/dist/esm/components/resources/ResourceLayout_Read.js.map +1 -1
  252. package/dist/esm/components/resources/ResourceLayout_ReadSummary.d.ts.map +1 -1
  253. package/dist/esm/components/resources/ResourceLayout_ReadSummary.js +4 -2
  254. package/dist/esm/components/resources/ResourceLayout_ReadSummary.js.map +1 -1
  255. package/dist/esm/components/resources/ResourceLayout_ReadSummary_TableRow.d.ts.map +1 -1
  256. package/dist/esm/components/resources/ResourceLayout_ReadSummary_TableRow.js +6 -2
  257. package/dist/esm/components/resources/ResourceLayout_ReadSummary_TableRow.js.map +1 -1
  258. package/dist/esm/components/resources/ResourceLayout_Search.d.ts.map +1 -1
  259. package/dist/esm/components/resources/ResourceLayout_Search.js +30 -14
  260. package/dist/esm/components/resources/ResourceLayout_Search.js.map +1 -1
  261. package/dist/esm/components/resources/ResourceLayout_SemanticOperationFallback.d.ts.map +1 -1
  262. package/dist/esm/components/resources/ResourceLayout_SemanticOperationFallback.js +14 -198
  263. package/dist/esm/components/resources/ResourceLayout_SemanticOperationFallback.js.map +1 -1
  264. package/dist/esm/components/resources/ResourceLayout_Update.d.ts +2 -2
  265. package/dist/esm/components/resources/ResourceLayout_Update.js +2 -2
  266. package/dist/esm/components/resources/ResourceLayout_Update.js.map +1 -1
  267. package/dist/esm/components/resources/ResourceListItemRenderer.d.ts.map +1 -1
  268. package/dist/esm/components/resources/ResourceListItemRenderer.js +69 -39
  269. package/dist/esm/components/resources/ResourceListItemRenderer.js.map +1 -1
  270. package/dist/esm/components/resources/ResourceOperationActionDropdown.d.ts +32 -0
  271. package/dist/esm/components/resources/ResourceOperationActionDropdown.d.ts.map +1 -0
  272. package/dist/esm/components/resources/ResourceOperationActionDropdown.js +130 -0
  273. package/dist/esm/components/resources/ResourceOperationActionDropdown.js.map +1 -0
  274. package/dist/esm/components/resources/collection-create-placement.utils.d.ts +32 -0
  275. package/dist/esm/components/resources/collection-create-placement.utils.d.ts.map +1 -0
  276. package/dist/esm/components/resources/collection-create-placement.utils.js +37 -0
  277. package/dist/esm/components/resources/collection-create-placement.utils.js.map +1 -0
  278. package/dist/esm/components/resources/embeds/RelatedResourcePreview.d.ts.map +1 -1
  279. package/dist/esm/components/resources/embeds/RelatedResourcePreview.js +5 -1
  280. package/dist/esm/components/resources/embeds/RelatedResourcePreview.js.map +1 -1
  281. package/dist/esm/components/resources/embeds/RelatedResourceSections.d.ts +8 -1
  282. package/dist/esm/components/resources/embeds/RelatedResourceSections.d.ts.map +1 -1
  283. package/dist/esm/components/resources/embeds/RelatedResourceSections.js +49 -2
  284. package/dist/esm/components/resources/embeds/RelatedResourceSections.js.map +1 -1
  285. package/dist/esm/components/resources/embeds/ResourceEmbeds.d.ts +22 -0
  286. package/dist/esm/components/resources/embeds/ResourceEmbeds.d.ts.map +1 -1
  287. package/dist/esm/components/resources/embeds/ResourceEmbeds.js +85 -2
  288. package/dist/esm/components/resources/embeds/ResourceEmbeds.js.map +1 -1
  289. package/dist/esm/components/resources/resourceLayout.utils.d.ts +14 -0
  290. package/dist/esm/components/resources/resourceLayout.utils.d.ts.map +1 -1
  291. package/dist/esm/components/resources/resourceLayout.utils.js +22 -0
  292. package/dist/esm/components/resources/resourceLayout.utils.js.map +1 -1
  293. package/dist/esm/components/resources/skeleton/ArrayField.d.ts.map +1 -1
  294. package/dist/esm/components/resources/skeleton/ArrayField.js +3 -0
  295. package/dist/esm/components/resources/skeleton/ArrayField.js.map +1 -1
  296. package/dist/esm/components/resources/skeleton/FormLayout.d.ts.map +1 -1
  297. package/dist/esm/components/resources/skeleton/FormLayout.js +33 -1
  298. package/dist/esm/components/resources/skeleton/FormLayout.js.map +1 -1
  299. package/dist/esm/components/resources/skeleton/ObjectScope.d.ts.map +1 -1
  300. package/dist/esm/components/resources/skeleton/ObjectScope.js +3 -0
  301. package/dist/esm/components/resources/skeleton/ObjectScope.js.map +1 -1
  302. package/dist/esm/components/resources/skeleton/Section.d.ts +12 -0
  303. package/dist/esm/components/resources/skeleton/Section.d.ts.map +1 -1
  304. package/dist/esm/components/resources/skeleton/Section.js +28 -2
  305. package/dist/esm/components/resources/skeleton/Section.js.map +1 -1
  306. package/dist/esm/components/resources/skeleton/SectionFieldsContext.d.ts +70 -0
  307. package/dist/esm/components/resources/skeleton/SectionFieldsContext.d.ts.map +1 -1
  308. package/dist/esm/components/resources/skeleton/SectionFieldsContext.js +157 -1
  309. package/dist/esm/components/resources/skeleton/SectionFieldsContext.js.map +1 -1
  310. package/dist/esm/components/resources/skeleton/WizardLayout.d.ts +6 -0
  311. package/dist/esm/components/resources/skeleton/WizardLayout.d.ts.map +1 -1
  312. package/dist/esm/components/resources/skeleton/WizardLayout.js +13 -2
  313. package/dist/esm/components/resources/skeleton/WizardLayout.js.map +1 -1
  314. package/dist/esm/components/resources/skeleton/WizardStep.d.ts.map +1 -1
  315. package/dist/esm/components/resources/skeleton/WizardStep.js +2 -1
  316. package/dist/esm/components/resources/skeleton/WizardStep.js.map +1 -1
  317. package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldDisplayPreset_ResourceReference_Default.d.ts.map +1 -1
  318. package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldDisplayPreset_ResourceReference_Default.js +61 -15
  319. package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldDisplayPreset_ResourceReference_Default.js.map +1 -1
  320. package/dist/esm/components/resources-fields/resource-reference/resource-reference.shared.utils.d.ts +24 -2
  321. package/dist/esm/components/resources-fields/resource-reference/resource-reference.shared.utils.d.ts.map +1 -1
  322. package/dist/esm/components/resources-fields/resource-reference/resource-reference.shared.utils.js +69 -1
  323. package/dist/esm/components/resources-fields/resource-reference/resource-reference.shared.utils.js.map +1 -1
  324. package/dist/esm/components/resources-fields/resource-reference/useResourceSearch.d.ts.map +1 -1
  325. package/dist/esm/components/resources-fields/resource-reference/useResourceSearch.js +18 -19
  326. package/dist/esm/components/resources-fields/resource-reference/useResourceSearch.js.map +1 -1
  327. package/dist/esm/components/sections/ContentSectionContainer.d.ts.map +1 -1
  328. package/dist/esm/components/sections/ContentSectionContainer.js +5 -4
  329. package/dist/esm/components/sections/ContentSectionContainer.js.map +1 -1
  330. package/dist/esm/components/sections/stepper.d.ts +5 -0
  331. package/dist/esm/components/sections/stepper.d.ts.map +1 -1
  332. package/dist/esm/components/sections/stepper.js.map +1 -1
  333. package/dist/esm/components/sections/surface.d.ts.map +1 -1
  334. package/dist/esm/components/sections/surface.js +12 -3
  335. package/dist/esm/components/sections/surface.js.map +1 -1
  336. package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.d.ts +43 -0
  337. package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.d.ts.map +1 -0
  338. package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.js +129 -0
  339. package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.js.map +1 -0
  340. package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.labels.d.ts +3 -0
  341. package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.labels.d.ts.map +1 -0
  342. package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.labels.js +34 -0
  343. package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.labels.js.map +1 -0
  344. package/dist/esm/components/settings/AppPage_AppearanceSettings.d.ts.map +1 -1
  345. package/dist/esm/components/settings/AppPage_AppearanceSettings.js +9 -11
  346. package/dist/esm/components/settings/AppPage_AppearanceSettings.js.map +1 -1
  347. package/dist/esm/components/settings/AppPage_AppearanceSettings.labels.d.ts.map +1 -1
  348. package/dist/esm/components/settings/AppPage_AppearanceSettings.labels.js +3 -2
  349. package/dist/esm/components/settings/AppPage_AppearanceSettings.labels.js.map +1 -1
  350. package/dist/esm/components/settings/AppPage_BillingSettings.d.ts +4 -2
  351. package/dist/esm/components/settings/AppPage_BillingSettings.d.ts.map +1 -1
  352. package/dist/esm/components/settings/AppPage_BillingSettings.js +21 -3
  353. package/dist/esm/components/settings/AppPage_BillingSettings.js.map +1 -1
  354. package/dist/esm/components/settings/AppPage_BillingSettings.labels.d.ts.map +1 -1
  355. package/dist/esm/components/settings/AppPage_BillingSettings.labels.js +5 -10
  356. package/dist/esm/components/settings/AppPage_BillingSettings.labels.js.map +1 -1
  357. package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.d.ts +58 -0
  358. package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.d.ts.map +1 -1
  359. package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.js +243 -40
  360. package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.js.map +1 -1
  361. package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.labels.d.ts.map +1 -1
  362. package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.labels.js +67 -6
  363. package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.labels.js.map +1 -1
  364. package/dist/esm/components/settings/AppPage_InvitationsSettings.d.ts.map +1 -1
  365. package/dist/esm/components/settings/AppPage_InvitationsSettings.js +19 -11
  366. package/dist/esm/components/settings/AppPage_InvitationsSettings.js.map +1 -1
  367. package/dist/esm/components/settings/AppPage_InvitationsSettings.labels.d.ts.map +1 -1
  368. package/dist/esm/components/settings/AppPage_InvitationsSettings.labels.js +4 -2
  369. package/dist/esm/components/settings/AppPage_InvitationsSettings.labels.js.map +1 -1
  370. package/dist/esm/components/settings/SettingsHub.d.ts.map +1 -1
  371. package/dist/esm/components/settings/SettingsHub.js +3 -0
  372. package/dist/esm/components/settings/SettingsHub.js.map +1 -1
  373. package/dist/esm/components/settings/SettingsResourceOperationPanel.d.ts.map +1 -1
  374. package/dist/esm/components/settings/SettingsResourceOperationPanel.js +16 -1
  375. package/dist/esm/components/settings/SettingsResourceOperationPanel.js.map +1 -1
  376. package/dist/esm/components/settings/useOwnerProviderConnections.d.ts +59 -0
  377. package/dist/esm/components/settings/useOwnerProviderConnections.d.ts.map +1 -0
  378. package/dist/esm/components/settings/useOwnerProviderConnections.js +136 -0
  379. package/dist/esm/components/settings/useOwnerProviderConnections.js.map +1 -0
  380. package/dist/esm/components/views/chart-view/chart-view.utils.d.ts +5 -0
  381. package/dist/esm/components/views/chart-view/chart-view.utils.d.ts.map +1 -1
  382. package/dist/esm/components/views/chart-view/chart-view.utils.js +5 -0
  383. package/dist/esm/components/views/chart-view/chart-view.utils.js.map +1 -1
  384. package/dist/esm/components/views/chart-view/useResourceChartData.d.ts +50 -0
  385. package/dist/esm/components/views/chart-view/useResourceChartData.d.ts.map +1 -0
  386. package/dist/esm/components/views/chart-view/useResourceChartData.js +72 -0
  387. package/dist/esm/components/views/chart-view/useResourceChartData.js.map +1 -0
  388. package/dist/esm/components/views/composite-view/CompositeLayout.d.ts.map +1 -1
  389. package/dist/esm/components/views/composite-view/CompositeLayout.js +2 -1
  390. package/dist/esm/components/views/composite-view/CompositeLayout.js.map +1 -1
  391. package/dist/esm/core/app-shell/AppShellBuildingBlocks.d.ts +86 -0
  392. package/dist/esm/core/app-shell/AppShellBuildingBlocks.d.ts.map +1 -0
  393. package/dist/esm/core/app-shell/AppShellBuildingBlocks.js +187 -0
  394. package/dist/esm/core/app-shell/AppShellBuildingBlocks.js.map +1 -0
  395. package/dist/esm/core/app-shell/PortalContainerContext.d.ts +5 -2
  396. package/dist/esm/core/app-shell/PortalContainerContext.d.ts.map +1 -1
  397. package/dist/esm/core/app-shell/PortalContainerContext.js +5 -2
  398. package/dist/esm/core/app-shell/PortalContainerContext.js.map +1 -1
  399. package/dist/esm/core/app-shell/app-shell.schemas.d.ts +18 -9
  400. package/dist/esm/core/app-shell/app-shell.schemas.d.ts.map +1 -1
  401. package/dist/esm/core/app-shell/app-shell.schemas.js +1 -0
  402. package/dist/esm/core/app-shell/app-shell.schemas.js.map +1 -1
  403. package/dist/esm/core/app-shell/useAppShellLayout.d.ts +10 -0
  404. package/dist/esm/core/app-shell/useAppShellLayout.d.ts.map +1 -1
  405. package/dist/esm/core/app-shell/useAppShellLayout.js +28 -5
  406. package/dist/esm/core/app-shell/useAppShellLayout.js.map +1 -1
  407. package/dist/esm/core/app-shell/usePublicShellLayout.d.ts.map +1 -1
  408. package/dist/esm/core/app-shell/usePublicShellLayout.js +38 -0
  409. package/dist/esm/core/app-shell/usePublicShellLayout.js.map +1 -1
  410. package/dist/esm/core/automated-layout/automated-layout.frontend.utils.d.ts +15 -1
  411. package/dist/esm/core/automated-layout/automated-layout.frontend.utils.d.ts.map +1 -1
  412. package/dist/esm/core/automated-layout/automated-layout.frontend.utils.js +47 -13
  413. package/dist/esm/core/automated-layout/automated-layout.frontend.utils.js.map +1 -1
  414. package/dist/esm/core/billing/BillingContext.d.ts +25 -2
  415. package/dist/esm/core/billing/BillingContext.d.ts.map +1 -1
  416. package/dist/esm/core/billing/BillingContext.js +16 -25
  417. package/dist/esm/core/billing/BillingContext.js.map +1 -1
  418. package/dist/esm/core/billing/billing-provider-display.frontend.utils.d.ts +11 -3
  419. package/dist/esm/core/billing/billing-provider-display.frontend.utils.d.ts.map +1 -1
  420. package/dist/esm/core/billing/billing-provider-display.frontend.utils.js +14 -8
  421. package/dist/esm/core/billing/billing-provider-display.frontend.utils.js.map +1 -1
  422. package/dist/esm/core/billing/useBillingPlanChange.d.ts.map +1 -1
  423. package/dist/esm/core/billing/useBillingPlanChange.js +2 -0
  424. package/dist/esm/core/billing/useBillingPlanChange.js.map +1 -1
  425. package/dist/esm/core/components-registry/assert-registry-completeness.frontend.helper.d.ts.map +1 -1
  426. package/dist/esm/core/components-registry/assert-registry-completeness.frontend.helper.js +1 -0
  427. package/dist/esm/core/components-registry/assert-registry-completeness.frontend.helper.js.map +1 -1
  428. package/dist/esm/core/components-registry/provider-component-registry.frontend.service.d.ts +29 -229
  429. package/dist/esm/core/components-registry/provider-component-registry.frontend.service.d.ts.map +1 -1
  430. package/dist/esm/core/components-registry/provider-component-registry.frontend.service.js +29 -327
  431. package/dist/esm/core/components-registry/provider-component-registry.frontend.service.js.map +1 -1
  432. package/dist/esm/core/components-registry/useProviderComponent.frontend.hooks.d.ts +17 -27
  433. package/dist/esm/core/components-registry/useProviderComponent.frontend.hooks.d.ts.map +1 -1
  434. package/dist/esm/core/components-registry/useProviderComponent.frontend.hooks.js +28 -48
  435. package/dist/esm/core/components-registry/useProviderComponent.frontend.hooks.js.map +1 -1
  436. package/dist/esm/core/config/app-configuration-frontend.schemas.d.ts +21 -11
  437. package/dist/esm/core/config/app-configuration-frontend.schemas.d.ts.map +1 -1
  438. package/dist/esm/core/config/app-configuration-frontend.schemas.js +4 -4
  439. package/dist/esm/core/config/app-configuration-frontend.schemas.js.map +1 -1
  440. package/dist/esm/core/config/app-level-components.frontend.schemas.d.ts +17 -0
  441. package/dist/esm/core/config/app-level-components.frontend.schemas.d.ts.map +1 -1
  442. package/dist/esm/core/config/app-level-components.frontend.schemas.js +17 -0
  443. package/dist/esm/core/config/app-level-components.frontend.schemas.js.map +1 -1
  444. package/dist/esm/core/config/chart-view.frontend.schemas.d.ts +10 -10
  445. package/dist/esm/core/config/engine-settings-destinations.d.ts.map +1 -1
  446. package/dist/esm/core/config/engine-settings-destinations.js +221 -6
  447. package/dist/esm/core/config/engine-settings-destinations.js.map +1 -1
  448. package/dist/esm/core/config/launcher-items.frontend.schemas.d.ts +8 -0
  449. package/dist/esm/core/config/launcher-items.frontend.schemas.d.ts.map +1 -1
  450. package/dist/esm/core/config/launcher-items.frontend.schemas.js +1 -0
  451. package/dist/esm/core/config/launcher-items.frontend.schemas.js.map +1 -1
  452. package/dist/esm/core/config/settings-hub.frontend.schemas.d.ts +10 -1
  453. package/dist/esm/core/config/settings-hub.frontend.schemas.d.ts.map +1 -1
  454. package/dist/esm/core/config/settings-hub.frontend.schemas.js +9 -0
  455. package/dist/esm/core/config/settings-hub.frontend.schemas.js.map +1 -1
  456. package/dist/esm/core/config/verify-launcher-content.d.ts.map +1 -1
  457. package/dist/esm/core/config/verify-launcher-content.js +30 -19
  458. package/dist/esm/core/config/verify-launcher-content.js.map +1 -1
  459. package/dist/esm/core/errors/ErrorContext.d.ts.map +1 -1
  460. package/dist/esm/core/errors/ErrorContext.js +9 -1
  461. package/dist/esm/core/errors/ErrorContext.js.map +1 -1
  462. package/dist/esm/core/errors/GlobalErrorHandler.d.ts.map +1 -1
  463. package/dist/esm/core/errors/GlobalErrorHandler.js +5 -4
  464. package/dist/esm/core/errors/GlobalErrorHandler.js.map +1 -1
  465. package/dist/esm/core/errors/RouterErrorBoundary.js +1 -1
  466. package/dist/esm/core/errors/RouterErrorBoundary.js.map +1 -1
  467. package/dist/esm/core/errors/errors-builder.frontend.services.d.ts +2 -2
  468. package/dist/esm/core/errors/errors-builder.frontend.services.d.ts.map +1 -1
  469. package/dist/esm/core/errors/errors-builder.frontend.services.js +4 -4
  470. package/dist/esm/core/errors/errors-builder.frontend.services.js.map +1 -1
  471. package/dist/esm/core/errors/user-facing-error-message.frontend.utils.js +1 -1
  472. package/dist/esm/core/errors/user-facing-error-message.frontend.utils.js.map +1 -1
  473. package/dist/esm/core/events/NotificationContext.d.ts.map +1 -1
  474. package/dist/esm/core/events/NotificationContext.js +23 -5
  475. package/dist/esm/core/events/NotificationContext.js.map +1 -1
  476. package/dist/esm/core/events/events.frontend.schemas.d.ts +110 -43
  477. package/dist/esm/core/events/events.frontend.schemas.d.ts.map +1 -1
  478. package/dist/esm/core/events/events.frontend.schemas.js +89 -15
  479. package/dist/esm/core/events/events.frontend.schemas.js.map +1 -1
  480. package/dist/esm/core/execution/useExecutionParticipationRMM.d.ts +2 -0
  481. package/dist/esm/core/execution/useExecutionParticipationRMM.d.ts.map +1 -1
  482. package/dist/esm/core/execution/useExecutionParticipationRMM.js +2 -1
  483. package/dist/esm/core/execution/useExecutionParticipationRMM.js.map +1 -1
  484. package/dist/esm/core/execution/useExecutionResourceOperationSurface.d.ts +1 -1
  485. package/dist/esm/core/execution/useExecutionResourceOperationSurface.d.ts.map +1 -1
  486. package/dist/esm/core/execution/useExecutionResourceOperationSurface.js +5 -2
  487. package/dist/esm/core/execution/useExecutionResourceOperationSurface.js.map +1 -1
  488. package/dist/esm/core/external-providers/ConsentBasedProviderSdks.d.ts +63 -0
  489. package/dist/esm/core/external-providers/ConsentBasedProviderSdks.d.ts.map +1 -0
  490. package/dist/esm/core/external-providers/ConsentBasedProviderSdks.js +131 -0
  491. package/dist/esm/core/external-providers/ConsentBasedProviderSdks.js.map +1 -0
  492. package/dist/esm/core/external-providers/ProviderAddressLookupCombobox.d.ts +61 -0
  493. package/dist/esm/core/external-providers/ProviderAddressLookupCombobox.d.ts.map +1 -0
  494. package/dist/esm/core/external-providers/ProviderAddressLookupCombobox.js +178 -0
  495. package/dist/esm/core/external-providers/ProviderAddressLookupCombobox.js.map +1 -0
  496. package/dist/esm/core/external-providers/ProviderAddressLookupHost.d.ts +52 -0
  497. package/dist/esm/core/external-providers/ProviderAddressLookupHost.d.ts.map +1 -0
  498. package/dist/esm/core/external-providers/ProviderAddressLookupHost.js +144 -0
  499. package/dist/esm/core/external-providers/ProviderAddressLookupHost.js.map +1 -0
  500. package/dist/esm/core/external-providers/ProviderFilePickerHost.d.ts +22 -1
  501. package/dist/esm/core/external-providers/ProviderFilePickerHost.d.ts.map +1 -1
  502. package/dist/esm/core/external-providers/ProviderFilePickerHost.js +23 -3
  503. package/dist/esm/core/external-providers/ProviderFilePickerHost.js.map +1 -1
  504. package/dist/esm/core/external-providers/provider-address-lookup-selection.frontend.utils.d.ts +55 -0
  505. package/dist/esm/core/external-providers/provider-address-lookup-selection.frontend.utils.d.ts.map +1 -0
  506. package/dist/esm/core/external-providers/provider-address-lookup-selection.frontend.utils.js +65 -0
  507. package/dist/esm/core/external-providers/provider-address-lookup-selection.frontend.utils.js.map +1 -0
  508. package/dist/esm/core/external-providers/provider-scope-reauthorization-offers.frontend.d.ts +63 -0
  509. package/dist/esm/core/external-providers/provider-scope-reauthorization-offers.frontend.d.ts.map +1 -0
  510. package/dist/esm/core/external-providers/provider-scope-reauthorization-offers.frontend.js +100 -0
  511. package/dist/esm/core/external-providers/provider-scope-reauthorization-offers.frontend.js.map +1 -0
  512. package/dist/esm/core/flows-actors/FlowsActorsContext.d.ts +45 -7
  513. package/dist/esm/core/flows-actors/FlowsActorsContext.d.ts.map +1 -1
  514. package/dist/esm/core/flows-actors/FlowsActorsContext.js +112 -28
  515. package/dist/esm/core/flows-actors/FlowsActorsContext.js.map +1 -1
  516. package/dist/esm/core/flows-actors/usePendingDecisions.d.ts +32 -0
  517. package/dist/esm/core/flows-actors/usePendingDecisions.d.ts.map +1 -0
  518. package/dist/esm/core/flows-actors/usePendingDecisions.js +91 -0
  519. package/dist/esm/core/flows-actors/usePendingDecisions.js.map +1 -0
  520. package/dist/esm/core/guidance/GuidanceRenderer.d.ts.map +1 -1
  521. package/dist/esm/core/guidance/GuidanceRenderer.js +3 -2
  522. package/dist/esm/core/guidance/GuidanceRenderer.js.map +1 -1
  523. package/dist/esm/core/i18n/I18nContext.d.ts +22 -8
  524. package/dist/esm/core/i18n/I18nContext.d.ts.map +1 -1
  525. package/dist/esm/core/i18n/I18nContext.js +21 -9
  526. package/dist/esm/core/i18n/I18nContext.js.map +1 -1
  527. package/dist/esm/core/i18n/component-label-resolution.utils.d.ts +5 -3
  528. package/dist/esm/core/i18n/component-label-resolution.utils.d.ts.map +1 -1
  529. package/dist/esm/core/i18n/component-label-resolution.utils.js +5 -3
  530. package/dist/esm/core/i18n/component-label-resolution.utils.js.map +1 -1
  531. package/dist/esm/core/i18n/useI18n.d.ts +2 -1
  532. package/dist/esm/core/i18n/useI18n.d.ts.map +1 -1
  533. package/dist/esm/core/i18n/useI18n.js +2 -1
  534. package/dist/esm/core/i18n/useI18n.js.map +1 -1
  535. package/dist/esm/core/loading/LoadingContext.d.ts.map +1 -1
  536. package/dist/esm/core/loading/LoadingContext.js +7 -1
  537. package/dist/esm/core/loading/LoadingContext.js.map +1 -1
  538. package/dist/esm/core/loading/LoadingGate.d.ts.map +1 -1
  539. package/dist/esm/core/loading/LoadingGate.js +19 -1
  540. package/dist/esm/core/loading/LoadingGate.js.map +1 -1
  541. package/dist/esm/core/monitoring/analytics/AnalyticsContext.d.ts +15 -2
  542. package/dist/esm/core/monitoring/analytics/AnalyticsContext.d.ts.map +1 -1
  543. package/dist/esm/core/monitoring/analytics/AnalyticsContext.js +183 -20
  544. package/dist/esm/core/monitoring/analytics/AnalyticsContext.js.map +1 -1
  545. package/dist/esm/core/monitoring/analytics/AnalyticsEventBridge.js +2 -2
  546. package/dist/esm/core/monitoring/analytics/AnalyticsEventBridge.js.map +1 -1
  547. package/dist/esm/core/monitoring/analytics/analytics-provider-registry.frontend.service.d.ts +7 -15
  548. package/dist/esm/core/monitoring/analytics/analytics-provider-registry.frontend.service.d.ts.map +1 -1
  549. package/dist/esm/core/monitoring/analytics/analytics-provider-registry.frontend.service.js +8 -26
  550. package/dist/esm/core/monitoring/analytics/analytics-provider-registry.frontend.service.js.map +1 -1
  551. package/dist/esm/core/monitoring/analytics/analytics-provider.frontend.interface.d.ts +12 -3
  552. package/dist/esm/core/monitoring/analytics/analytics-provider.frontend.interface.d.ts.map +1 -1
  553. package/dist/esm/core/monitoring/analytics/analytics-provider.frontend.interface.js +3 -2
  554. package/dist/esm/core/monitoring/analytics/analytics-provider.frontend.interface.js.map +1 -1
  555. package/dist/esm/core/monitoring/analytics/providers/backend-proxy-analytics.provider.d.ts +42 -0
  556. package/dist/esm/core/monitoring/analytics/providers/backend-proxy-analytics.provider.d.ts.map +1 -1
  557. package/dist/esm/core/monitoring/analytics/providers/backend-proxy-analytics.provider.js +89 -5
  558. package/dist/esm/core/monitoring/analytics/providers/backend-proxy-analytics.provider.js.map +1 -1
  559. package/dist/esm/core/monitoring/analytics/providers/console-analytics.provider.d.ts +2 -0
  560. package/dist/esm/core/monitoring/analytics/providers/console-analytics.provider.d.ts.map +1 -1
  561. package/dist/esm/core/monitoring/analytics/providers/console-analytics.provider.js +2 -0
  562. package/dist/esm/core/monitoring/analytics/providers/console-analytics.provider.js.map +1 -1
  563. package/dist/esm/core/navigation/NavigationContentAreas.d.ts +78 -0
  564. package/dist/esm/core/navigation/NavigationContentAreas.d.ts.map +1 -1
  565. package/dist/esm/core/navigation/NavigationContentAreas.js +264 -16
  566. package/dist/esm/core/navigation/NavigationContentAreas.js.map +1 -1
  567. package/dist/esm/core/navigation/NavigationContext.d.ts +8 -0
  568. package/dist/esm/core/navigation/NavigationContext.d.ts.map +1 -1
  569. package/dist/esm/core/navigation/NavigationContext.js +137 -30
  570. package/dist/esm/core/navigation/NavigationContext.js.map +1 -1
  571. package/dist/esm/core/navigation/launcher-resolution.d.ts +2 -0
  572. package/dist/esm/core/navigation/launcher-resolution.d.ts.map +1 -1
  573. package/dist/esm/core/navigation/launcher-resolution.js +1 -0
  574. package/dist/esm/core/navigation/launcher-resolution.js.map +1 -1
  575. package/dist/esm/core/navigation/navigation-cascade.d.ts +46 -0
  576. package/dist/esm/core/navigation/navigation-cascade.d.ts.map +1 -0
  577. package/dist/esm/core/navigation/navigation-cascade.js +222 -0
  578. package/dist/esm/core/navigation/navigation-cascade.js.map +1 -0
  579. package/dist/esm/core/navigation/navigation-clean-break.frontend.utils.d.ts.map +1 -1
  580. package/dist/esm/core/navigation/navigation-clean-break.frontend.utils.js +21 -2
  581. package/dist/esm/core/navigation/navigation-clean-break.frontend.utils.js.map +1 -1
  582. package/dist/esm/core/navigation/navigation-controller-internals.d.ts +71 -0
  583. package/dist/esm/core/navigation/navigation-controller-internals.d.ts.map +1 -0
  584. package/dist/esm/core/navigation/navigation-controller-internals.js +84 -0
  585. package/dist/esm/core/navigation/navigation-controller-internals.js.map +1 -0
  586. package/dist/esm/core/navigation/navigation-policy-resolver.service.d.ts +86 -2
  587. package/dist/esm/core/navigation/navigation-policy-resolver.service.d.ts.map +1 -1
  588. package/dist/esm/core/navigation/navigation-policy-resolver.service.js +242 -124
  589. package/dist/esm/core/navigation/navigation-policy-resolver.service.js.map +1 -1
  590. package/dist/esm/core/navigation/navigation.schemas.d.ts +170 -8
  591. package/dist/esm/core/navigation/navigation.schemas.d.ts.map +1 -1
  592. package/dist/esm/core/navigation/navigation.schemas.js +121 -2
  593. package/dist/esm/core/navigation/navigation.schemas.js.map +1 -1
  594. package/dist/esm/core/navigation/navigation.utils.d.ts +102 -6
  595. package/dist/esm/core/navigation/navigation.utils.d.ts.map +1 -1
  596. package/dist/esm/core/navigation/navigation.utils.js +283 -34
  597. package/dist/esm/core/navigation/navigation.utils.js.map +1 -1
  598. package/dist/esm/core/navigation/useIsStackEntryActive.d.ts +0 -10
  599. package/dist/esm/core/navigation/useIsStackEntryActive.d.ts.map +0 -1
  600. package/dist/esm/core/navigation/useIsStackEntryActive.js.map +0 -1
  601. package/dist/esm/core/navigation/useNavigationController.d.ts +28 -157
  602. package/dist/esm/core/navigation/useNavigationController.d.ts.map +1 -1
  603. package/dist/esm/core/navigation/useNavigationController.js +211 -1189
  604. package/dist/esm/core/navigation/useNavigationController.js.map +1 -1
  605. package/dist/esm/core/navigation/useNavigationRouterSync.d.ts +174 -0
  606. package/dist/esm/core/navigation/useNavigationRouterSync.d.ts.map +1 -0
  607. package/dist/esm/core/navigation/useNavigationRouterSync.js +977 -0
  608. package/dist/esm/core/navigation/useNavigationRouterSync.js.map +1 -0
  609. package/dist/esm/core/navigation/useOverlayTitle.d.ts +13 -1
  610. package/dist/esm/core/navigation/useOverlayTitle.d.ts.map +1 -1
  611. package/dist/esm/core/navigation/useOverlayTitle.js +15 -10
  612. package/dist/esm/core/navigation/useOverlayTitle.js.map +1 -1
  613. package/dist/esm/core/navigation/useResponsiveZoneMigration.d.ts +43 -0
  614. package/dist/esm/core/navigation/useResponsiveZoneMigration.d.ts.map +1 -0
  615. package/dist/esm/core/navigation/useResponsiveZoneMigration.js +44 -0
  616. package/dist/esm/core/navigation/useResponsiveZoneMigration.js.map +1 -0
  617. package/dist/esm/core/navigation/zone-collapse-migration.d.ts +83 -0
  618. package/dist/esm/core/navigation/zone-collapse-migration.d.ts.map +1 -0
  619. package/dist/esm/core/navigation/zone-collapse-migration.js +116 -0
  620. package/dist/esm/core/navigation/zone-collapse-migration.js.map +1 -0
  621. package/dist/esm/core/navigation/zone-collapse.d.ts +51 -0
  622. package/dist/esm/core/navigation/zone-collapse.d.ts.map +1 -0
  623. package/dist/esm/core/navigation/zone-collapse.js +59 -0
  624. package/dist/esm/core/navigation/zone-collapse.js.map +1 -0
  625. package/dist/esm/core/navigation/zone-emphasis.d.ts +3 -0
  626. package/dist/esm/core/navigation/zone-emphasis.d.ts.map +1 -1
  627. package/dist/esm/core/navigation/zone-emphasis.js +26 -4
  628. package/dist/esm/core/navigation/zone-emphasis.js.map +1 -1
  629. package/dist/esm/core/navigation/zone-visible-entry.d.ts +22 -0
  630. package/dist/esm/core/navigation/zone-visible-entry.d.ts.map +1 -1
  631. package/dist/esm/core/navigation/zone-visible-entry.js +25 -0
  632. package/dist/esm/core/navigation/zone-visible-entry.js.map +1 -1
  633. package/dist/esm/core/requests/websockets/WebSocketContext.d.ts.map +1 -1
  634. package/dist/esm/core/requests/websockets/WebSocketContext.js +53 -18
  635. package/dist/esm/core/requests/websockets/WebSocketContext.js.map +1 -1
  636. package/dist/esm/core/requests/websockets/WebSocketEventBridge.d.ts.map +1 -1
  637. package/dist/esm/core/requests/websockets/WebSocketEventBridge.js +3 -1
  638. package/dist/esm/core/requests/websockets/WebSocketEventBridge.js.map +1 -1
  639. package/dist/esm/core/requests/websockets/useNotificationBadges.d.ts +22 -0
  640. package/dist/esm/core/requests/websockets/useNotificationBadges.d.ts.map +1 -1
  641. package/dist/esm/core/requests/websockets/useNotificationBadges.js +72 -3
  642. package/dist/esm/core/requests/websockets/useNotificationBadges.js.map +1 -1
  643. package/dist/esm/core/requests/websockets/usePublishNotificationBadgeCount.d.ts +28 -0
  644. package/dist/esm/core/requests/websockets/usePublishNotificationBadgeCount.d.ts.map +1 -0
  645. package/dist/esm/core/requests/websockets/usePublishNotificationBadgeCount.js +86 -0
  646. package/dist/esm/core/requests/websockets/usePublishNotificationBadgeCount.js.map +1 -0
  647. package/dist/esm/core/requests/wildo-http-client-manual-calls.frontend.service.d.ts +38 -3
  648. package/dist/esm/core/requests/wildo-http-client-manual-calls.frontend.service.d.ts.map +1 -1
  649. package/dist/esm/core/requests/wildo-http-client-manual-calls.frontend.service.js +57 -2
  650. package/dist/esm/core/requests/wildo-http-client-manual-calls.frontend.service.js.map +1 -1
  651. package/dist/esm/core/requests/wildo-http-client-resources.frontend.service.d.ts.map +1 -1
  652. package/dist/esm/core/requests/wildo-http-client-resources.frontend.service.js +4 -2
  653. package/dist/esm/core/requests/wildo-http-client-resources.frontend.service.js.map +1 -1
  654. package/dist/esm/core/requests/wildo-http-client.frontend.service.d.ts +30 -1
  655. package/dist/esm/core/requests/wildo-http-client.frontend.service.d.ts.map +1 -1
  656. package/dist/esm/core/requests/wildo-http-client.frontend.service.js +47 -4
  657. package/dist/esm/core/requests/wildo-http-client.frontend.service.js.map +1 -1
  658. package/dist/esm/core/resources/ResourceRegistryContext.d.ts.map +1 -1
  659. package/dist/esm/core/resources/ResourceRegistryContext.js +22 -1
  660. package/dist/esm/core/resources/ResourceRegistryContext.js.map +1 -1
  661. package/dist/esm/core/resources/context-resource-identifiers.frontend.utils.js +1 -1
  662. package/dist/esm/core/resources/context-resource-identifiers.frontend.utils.js.map +1 -1
  663. package/dist/esm/core/resources/frontend-resource.utils.d.ts +22 -1
  664. package/dist/esm/core/resources/frontend-resource.utils.d.ts.map +1 -1
  665. package/dist/esm/core/resources/frontend-resource.utils.js +25 -2
  666. package/dist/esm/core/resources/frontend-resource.utils.js.map +1 -1
  667. package/dist/esm/core/resources/operation-semantics.frontend.utils.d.ts +113 -13
  668. package/dist/esm/core/resources/operation-semantics.frontend.utils.d.ts.map +1 -1
  669. package/dist/esm/core/resources/operation-semantics.frontend.utils.js +173 -20
  670. package/dist/esm/core/resources/operation-semantics.frontend.utils.js.map +1 -1
  671. package/dist/esm/core/resources/relationship-surface-runtime.frontend.utils.d.ts +11 -0
  672. package/dist/esm/core/resources/relationship-surface-runtime.frontend.utils.d.ts.map +1 -1
  673. package/dist/esm/core/resources/relationship-surface-runtime.frontend.utils.js +7 -0
  674. package/dist/esm/core/resources/relationship-surface-runtime.frontend.utils.js.map +1 -1
  675. package/dist/esm/core/resources/resource-label-field-paths.frontend.utils.d.ts +3 -2
  676. package/dist/esm/core/resources/resource-label-field-paths.frontend.utils.d.ts.map +1 -1
  677. package/dist/esm/core/resources/resource-label-field-paths.frontend.utils.js +13 -5
  678. package/dist/esm/core/resources/resource-label-field-paths.frontend.utils.js.map +1 -1
  679. package/dist/esm/core/resources/resources-repository.frontend.service.d.ts +6 -0
  680. package/dist/esm/core/resources/resources-repository.frontend.service.d.ts.map +1 -1
  681. package/dist/esm/core/resources/resources-repository.frontend.service.js +90 -1
  682. package/dist/esm/core/resources/resources-repository.frontend.service.js.map +1 -1
  683. package/dist/esm/core/resources/resources.frontend.schemas.d.ts +139 -16
  684. package/dist/esm/core/resources/resources.frontend.schemas.d.ts.map +1 -1
  685. package/dist/esm/core/resources/resources.frontend.schemas.js +110 -11
  686. package/dist/esm/core/resources/resources.frontend.schemas.js.map +1 -1
  687. package/dist/esm/core/resources/rmm/ResourceMutationManager.d.ts.map +1 -1
  688. package/dist/esm/core/resources/rmm/ResourceMutationManager.js +3 -1
  689. package/dist/esm/core/resources/rmm/ResourceMutationManager.js.map +1 -1
  690. package/dist/esm/core/resources/rmm/update-like-mutation-fallback.frontend.d.ts +10 -0
  691. package/dist/esm/core/resources/rmm/update-like-mutation-fallback.frontend.d.ts.map +1 -1
  692. package/dist/esm/core/resources/rmm/update-like-mutation-fallback.frontend.js +8 -0
  693. package/dist/esm/core/resources/rmm/update-like-mutation-fallback.frontend.js.map +1 -1
  694. package/dist/esm/core/resources/rmm/useResourceRMM.d.ts +7 -0
  695. package/dist/esm/core/resources/rmm/useResourceRMM.d.ts.map +1 -1
  696. package/dist/esm/core/resources/rmm/useResourceRMM.js +9 -2
  697. package/dist/esm/core/resources/rmm/useResourceRMM.js.map +1 -1
  698. package/dist/esm/core/resources/useOperationDirectExecution.d.ts +59 -0
  699. package/dist/esm/core/resources/useOperationDirectExecution.d.ts.map +1 -0
  700. package/dist/esm/core/resources/useOperationDirectExecution.js +278 -0
  701. package/dist/esm/core/resources/useOperationDirectExecution.js.map +1 -0
  702. package/dist/esm/core/resources/useResourceOperationActions.d.ts +1 -1
  703. package/dist/esm/core/resources/useResourceOperationActions.d.ts.map +1 -1
  704. package/dist/esm/core/resources/useResourceOperationActions.js +69 -22
  705. package/dist/esm/core/resources/useResourceOperationActions.js.map +1 -1
  706. package/dist/esm/core/resources/useResourceOperationSurface.d.ts +8 -6
  707. package/dist/esm/core/resources/useResourceOperationSurface.d.ts.map +1 -1
  708. package/dist/esm/core/resources/useResourceOperationSurface.js +3 -2
  709. package/dist/esm/core/resources/useResourceOperationSurface.js.map +1 -1
  710. package/dist/esm/core/runtime/AppRouter.d.ts.map +1 -1
  711. package/dist/esm/core/runtime/AppRouter.js +23 -2
  712. package/dist/esm/core/runtime/AppRouter.js.map +1 -1
  713. package/dist/esm/core/runtime/ApplicationContext.shared.d.ts +4 -2
  714. package/dist/esm/core/runtime/ApplicationContext.shared.d.ts.map +1 -1
  715. package/dist/esm/core/runtime/ApplicationContext.shared.js.map +1 -1
  716. package/dist/esm/core/runtime/ApplicationMainContext.d.ts +12 -2
  717. package/dist/esm/core/runtime/ApplicationMainContext.d.ts.map +1 -1
  718. package/dist/esm/core/runtime/ApplicationMainContext.js +5 -2
  719. package/dist/esm/core/runtime/ApplicationMainContext.js.map +1 -1
  720. package/dist/esm/core/runtime/domain-module.frontend.definitions.d.ts +25 -1
  721. package/dist/esm/core/runtime/domain-module.frontend.definitions.d.ts.map +1 -1
  722. package/dist/esm/core/runtime/domain-module.frontend.definitions.js +37 -1
  723. package/dist/esm/core/runtime/domain-module.frontend.definitions.js.map +1 -1
  724. package/dist/esm/core/runtime/start-application.frontend.service.d.ts +21 -2
  725. package/dist/esm/core/runtime/start-application.frontend.service.d.ts.map +1 -1
  726. package/dist/esm/core/runtime/start-application.frontend.service.js +51 -4
  727. package/dist/esm/core/runtime/start-application.frontend.service.js.map +1 -1
  728. package/dist/esm/core/security/AuthSessionContext.d.ts +11 -0
  729. package/dist/esm/core/security/AuthSessionContext.d.ts.map +1 -1
  730. package/dist/esm/core/security/AuthSessionContext.js +70 -22
  731. package/dist/esm/core/security/AuthSessionContext.js.map +1 -1
  732. package/dist/esm/core/security/StepUpAuthContext.d.ts.map +1 -1
  733. package/dist/esm/core/security/StepUpAuthContext.js +10 -2
  734. package/dist/esm/core/security/StepUpAuthContext.js.map +1 -1
  735. package/dist/esm/core/security/UserOrgsContext.d.ts.map +1 -1
  736. package/dist/esm/core/security/UserOrgsContext.js +72 -8
  737. package/dist/esm/core/security/UserOrgsContext.js.map +1 -1
  738. package/dist/esm/core/security/route-organization-access.frontend.utils.d.ts +7 -0
  739. package/dist/esm/core/security/route-organization-access.frontend.utils.d.ts.map +1 -1
  740. package/dist/esm/core/security/route-organization-access.frontend.utils.js +8 -2
  741. package/dist/esm/core/security/route-organization-access.frontend.utils.js.map +1 -1
  742. package/dist/esm/core/security/useGrantedConsentPurposes.d.ts +30 -0
  743. package/dist/esm/core/security/useGrantedConsentPurposes.d.ts.map +1 -0
  744. package/dist/esm/core/security/useGrantedConsentPurposes.js +38 -0
  745. package/dist/esm/core/security/useGrantedConsentPurposes.js.map +1 -0
  746. package/dist/esm/core/ui/UIContext.d.ts.map +1 -1
  747. package/dist/esm/core/ui/UIContext.js +10 -6
  748. package/dist/esm/core/ui/UIContext.js.map +1 -1
  749. package/dist/esm/core/ui/color-conversion.utils.d.ts +20 -0
  750. package/dist/esm/core/ui/color-conversion.utils.d.ts.map +1 -1
  751. package/dist/esm/core/ui/color-conversion.utils.js +39 -5
  752. package/dist/esm/core/ui/color-conversion.utils.js.map +1 -1
  753. package/dist/esm/core/ui/themes/default.theme.d.ts.map +1 -1
  754. package/dist/esm/core/ui/themes/default.theme.js +22 -2
  755. package/dist/esm/core/ui/themes/default.theme.js.map +1 -1
  756. package/dist/esm/core/ui/ui.frontend.schemas.d.ts +6 -6
  757. package/dist/esm/core/ui/ui.frontend.schemas.d.ts.map +1 -1
  758. package/dist/esm/core/ui/ui.frontend.schemas.js +3 -3
  759. package/dist/esm/core/ui/ui.frontend.schemas.js.map +1 -1
  760. package/dist/esm/index.d.ts +10 -1
  761. package/dist/esm/index.d.ts.map +1 -1
  762. package/dist/esm/index.js +19 -1
  763. package/dist/esm/index.js.map +1 -1
  764. package/dist/esm/testing/app-shell-placement-coverage.d.ts +43 -0
  765. package/dist/esm/testing/app-shell-placement-coverage.d.ts.map +1 -0
  766. package/dist/esm/testing/app-shell-placement-coverage.js +114 -0
  767. package/dist/esm/testing/app-shell-placement-coverage.js.map +1 -0
  768. package/dist/esm/testing/mock-builders.d.ts.map +1 -1
  769. package/dist/esm/testing/mock-builders.js +5 -0
  770. package/dist/esm/testing/mock-builders.js.map +1 -1
  771. package/dist/esm/testing.d.ts +1 -0
  772. package/dist/esm/testing.d.ts.map +1 -1
  773. package/dist/esm/testing.js +1 -0
  774. package/dist/esm/testing.js.map +1 -1
  775. package/package.json +9 -7
  776. package/dist/esm/core/navigation/useIsStackEntryActive.js +0 -15
  777. package/dist/tsconfig.build.tsbuildinfo +0 -1
@@ -41,4 +41,14 @@ export declare class MissingRMMRuntimeError extends Error {
41
41
  constructor(params: MissingRMMRuntimeErrorParams);
42
42
  }
43
43
  export declare function allowsDirectOperationFallback(mode: UpdateLikeMutationFallbackMode | undefined): boolean;
44
+ /**
45
+ * The lane an operation DECLARED for itself (`operationFrontendConfig.updateLikeMutationFallbackMode`),
46
+ * or `RMM_REQUIRED` when it declared none. Both operation hosts, the form and the form-less one, ask this
47
+ * one function, so an operation cannot submit from one host and be refused by the other.
48
+ */
49
+ export declare function resolveDeclaredUpdateLikeMutationFallbackMode(operation: {
50
+ operationFrontendConfig?: {
51
+ updateLikeMutationFallbackMode?: UpdateLikeMutationFallbackMode;
52
+ };
53
+ }): UpdateLikeMutationFallbackMode;
44
54
  //# sourceMappingURL=update-like-mutation-fallback.frontend.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"update-like-mutation-fallback.frontend.d.ts","sourceRoot":"","sources":["../../../../../../src/core/resources/rmm/update-like-mutation-fallback.frontend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;;;;;;;;GASG;AACH,oBAAY,8BAA8B;IACxC,YAAY,iBAAiB;IAC7B,yBAAyB,8BAA8B;CACxD;AAED,MAAM,WAAW,4BAA4B;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;gBAE1B,MAAM,EAAE,4BAA4B;CAcjD;AAED,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,8BAA8B,GAAG,SAAS,GAC/C,OAAO,CAET"}
1
+ {"version":3,"file":"update-like-mutation-fallback.frontend.d.ts","sourceRoot":"","sources":["../../../../../../src/core/resources/rmm/update-like-mutation-fallback.frontend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;;;;;;;;GASG;AACH,oBAAY,8BAA8B;IACxC,YAAY,iBAAiB;IAC7B,yBAAyB,8BAA8B;CACxD;AAED,MAAM,WAAW,4BAA4B;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;gBAE1B,MAAM,EAAE,4BAA4B;CAcjD;AAED,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,8BAA8B,GAAG,SAAS,GAC/C,OAAO,CAET;AAED;;;;GAIG;AACH,wBAAgB,6CAA6C,CAAC,SAAS,EAAE;IACvE,uBAAuB,CAAC,EAAE;QAAE,8BAA8B,CAAC,EAAE,8BAA8B,CAAA;KAAE,CAAC;CAC/F,GAAG,8BAA8B,CAEjC"}
@@ -50,4 +50,12 @@ export class MissingRMMRuntimeError extends Error {
50
50
  export function allowsDirectOperationFallback(mode) {
51
51
  return mode === UpdateLikeMutationFallbackMode.DIRECT_OPERATION_FALLBACK;
52
52
  }
53
+ /**
54
+ * The lane an operation DECLARED for itself (`operationFrontendConfig.updateLikeMutationFallbackMode`),
55
+ * or `RMM_REQUIRED` when it declared none. Both operation hosts, the form and the form-less one, ask this
56
+ * one function, so an operation cannot submit from one host and be refused by the other.
57
+ */
58
+ export function resolveDeclaredUpdateLikeMutationFallbackMode(operation) {
59
+ return operation.operationFrontendConfig?.updateLikeMutationFallbackMode ?? UpdateLikeMutationFallbackMode.RMM_REQUIRED;
60
+ }
53
61
  //# sourceMappingURL=update-like-mutation-fallback.frontend.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"update-like-mutation-fallback.frontend.js","sourceRoot":"","sources":["../../../../../../src/core/resources/rmm/update-like-mutation-fallback.frontend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;;;;;;;;GASG;AACH,MAAM,CAAN,IAAY,8BAGX;AAHD,WAAY,8BAA8B;IACxC,+DAA6B,CAAA;IAC7B,yFAAuD,CAAA;AACzD,CAAC,EAHW,8BAA8B,KAA9B,8BAA8B,QAGzC;AAQD;;;GAGG;AACH,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IACtC,WAAW,CAAS;IACpB,YAAY,CAAS;IACrB,mBAAmB,CAAU;IAEtC,YAAY,MAAoC;QAC9C,MAAM,eAAe,GAAG,MAAM,CAAC,mBAAmB;YAChD,CAAC,CAAC,mBAAmB,MAAM,CAAC,mBAAmB,GAAG;YAClD,CAAC,CAAC,EAAE,CAAC;QACP,KAAK,CACH,GAAG,MAAM,CAAC,WAAW,sEAAsE;YAC3F,IAAI,MAAM,CAAC,YAAY,IAAI,eAAe,gDAAgD;YAC1F,4FAA4F,CAC7F,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;QACrC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACtC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QACxC,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;IACxD,CAAC;CACF;AAED,MAAM,UAAU,6BAA6B,CAC3C,IAAgD;IAEhD,OAAO,IAAI,KAAK,8BAA8B,CAAC,yBAAyB,CAAC;AAC3E,CAAC","sourcesContent":["/**\n * Step 6 escape-hatch classification for framework mutation surfaces.\n *\n * Default engine surfaces should behave as if RMM-backed update semantics are a\n * real contract, not a best-effort preference. When a caller knowingly wants a\n * weaker direct `doOperation()` path instead, that downgrade must be explicit.\n *\n * Important: the richer RMM conflict UX is only guaranteed on the single-\n * resource RMM-backed update-like lane where the backend emits authoritative\n * nested `versionConflict` details. Explicit direct fallbacks and true bulk\n * direct lanes remain weaker-guarantee paths even when they are semantically\n * \"update-like\".\n */\n\n/**\n * Controls whether update-like framework surfaces may silently downgrade to a\n * direct `doOperation()` mutation when RMM is unavailable.\n *\n * `RMM_REQUIRED` is the engine-default contract for single-resource update-like\n * surfaces.\n * `DIRECT_OPERATION_FALLBACK` is an explicit weaker-guarantee lane for advanced\n * callers that knowingly accept the semantic downgrade, including the loss of\n * guaranteed authoritative conflict-detail handling.\n */\nexport enum UpdateLikeMutationFallbackMode {\n RMM_REQUIRED = 'RMM_REQUIRED',\n DIRECT_OPERATION_FALLBACK = 'DIRECT_OPERATION_FALLBACK',\n}\n\nexport interface MissingRMMRuntimeErrorParams {\n surfaceName: string;\n resourceType: string;\n operationIdentifier?: string;\n}\n\n/**\n * Raised when a default single-resource update-like framework surface is mounted\n * without the RMM runtime it semantically expects.\n */\nexport class MissingRMMRuntimeError extends Error {\n readonly surfaceName: string;\n readonly resourceType: string;\n readonly operationIdentifier?: string;\n\n constructor(params: MissingRMMRuntimeErrorParams) {\n const operationSuffix = params.operationIdentifier\n ? ` for operation \"${params.operationIdentifier}\"`\n : '';\n super(\n `${params.surfaceName} requires RMM for its default update-like mutation path on resource ` +\n `\"${params.resourceType}\"${operationSuffix}. Mount RMMRegistryProvider or explicitly opt ` +\n `into UpdateLikeMutationFallbackMode.DIRECT_OPERATION_FALLBACK to accept weaker guarantees.`,\n );\n this.name = 'MissingRMMRuntimeError';\n this.surfaceName = params.surfaceName;\n this.resourceType = params.resourceType;\n this.operationIdentifier = params.operationIdentifier;\n }\n}\n\nexport function allowsDirectOperationFallback(\n mode: UpdateLikeMutationFallbackMode | undefined,\n): boolean {\n return mode === UpdateLikeMutationFallbackMode.DIRECT_OPERATION_FALLBACK;\n}\n"]}
1
+ {"version":3,"file":"update-like-mutation-fallback.frontend.js","sourceRoot":"","sources":["../../../../../../src/core/resources/rmm/update-like-mutation-fallback.frontend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;;;;;;;;GASG;AACH,MAAM,CAAN,IAAY,8BAGX;AAHD,WAAY,8BAA8B;IACxC,+DAA6B,CAAA;IAC7B,yFAAuD,CAAA;AACzD,CAAC,EAHW,8BAA8B,KAA9B,8BAA8B,QAGzC;AAQD;;;GAGG;AACH,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IACtC,WAAW,CAAS;IACpB,YAAY,CAAS;IACrB,mBAAmB,CAAU;IAEtC,YAAY,MAAoC;QAC9C,MAAM,eAAe,GAAG,MAAM,CAAC,mBAAmB;YAChD,CAAC,CAAC,mBAAmB,MAAM,CAAC,mBAAmB,GAAG;YAClD,CAAC,CAAC,EAAE,CAAC;QACP,KAAK,CACH,GAAG,MAAM,CAAC,WAAW,sEAAsE;YAC3F,IAAI,MAAM,CAAC,YAAY,IAAI,eAAe,gDAAgD;YAC1F,4FAA4F,CAC7F,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;QACrC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACtC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QACxC,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;IACxD,CAAC;CACF;AAED,MAAM,UAAU,6BAA6B,CAC3C,IAAgD;IAEhD,OAAO,IAAI,KAAK,8BAA8B,CAAC,yBAAyB,CAAC;AAC3E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,6CAA6C,CAAC,SAE7D;IACC,OAAO,SAAS,CAAC,uBAAuB,EAAE,8BAA8B,IAAI,8BAA8B,CAAC,YAAY,CAAC;AAC1H,CAAC","sourcesContent":["/**\n * Step 6 escape-hatch classification for framework mutation surfaces.\n *\n * Default engine surfaces should behave as if RMM-backed update semantics are a\n * real contract, not a best-effort preference. When a caller knowingly wants a\n * weaker direct `doOperation()` path instead, that downgrade must be explicit.\n *\n * Important: the richer RMM conflict UX is only guaranteed on the single-\n * resource RMM-backed update-like lane where the backend emits authoritative\n * nested `versionConflict` details. Explicit direct fallbacks and true bulk\n * direct lanes remain weaker-guarantee paths even when they are semantically\n * \"update-like\".\n */\n\n/**\n * Controls whether update-like framework surfaces may silently downgrade to a\n * direct `doOperation()` mutation when RMM is unavailable.\n *\n * `RMM_REQUIRED` is the engine-default contract for single-resource update-like\n * surfaces.\n * `DIRECT_OPERATION_FALLBACK` is an explicit weaker-guarantee lane for advanced\n * callers that knowingly accept the semantic downgrade, including the loss of\n * guaranteed authoritative conflict-detail handling.\n */\nexport enum UpdateLikeMutationFallbackMode {\n RMM_REQUIRED = 'RMM_REQUIRED',\n DIRECT_OPERATION_FALLBACK = 'DIRECT_OPERATION_FALLBACK',\n}\n\nexport interface MissingRMMRuntimeErrorParams {\n surfaceName: string;\n resourceType: string;\n operationIdentifier?: string;\n}\n\n/**\n * Raised when a default single-resource update-like framework surface is mounted\n * without the RMM runtime it semantically expects.\n */\nexport class MissingRMMRuntimeError extends Error {\n readonly surfaceName: string;\n readonly resourceType: string;\n readonly operationIdentifier?: string;\n\n constructor(params: MissingRMMRuntimeErrorParams) {\n const operationSuffix = params.operationIdentifier\n ? ` for operation \"${params.operationIdentifier}\"`\n : '';\n super(\n `${params.surfaceName} requires RMM for its default update-like mutation path on resource ` +\n `\"${params.resourceType}\"${operationSuffix}. Mount RMMRegistryProvider or explicitly opt ` +\n `into UpdateLikeMutationFallbackMode.DIRECT_OPERATION_FALLBACK to accept weaker guarantees.`,\n );\n this.name = 'MissingRMMRuntimeError';\n this.surfaceName = params.surfaceName;\n this.resourceType = params.resourceType;\n this.operationIdentifier = params.operationIdentifier;\n }\n}\n\nexport function allowsDirectOperationFallback(\n mode: UpdateLikeMutationFallbackMode | undefined,\n): boolean {\n return mode === UpdateLikeMutationFallbackMode.DIRECT_OPERATION_FALLBACK;\n}\n\n/**\n * The lane an operation DECLARED for itself (`operationFrontendConfig.updateLikeMutationFallbackMode`),\n * or `RMM_REQUIRED` when it declared none. Both operation hosts, the form and the form-less one, ask this\n * one function, so an operation cannot submit from one host and be refused by the other.\n */\nexport function resolveDeclaredUpdateLikeMutationFallbackMode(operation: {\n operationFrontendConfig?: { updateLikeMutationFallbackMode?: UpdateLikeMutationFallbackMode };\n}): UpdateLikeMutationFallbackMode {\n return operation.operationFrontendConfig?.updateLikeMutationFallbackMode ?? UpdateLikeMutationFallbackMode.RMM_REQUIRED;\n}\n"]}
@@ -20,6 +20,13 @@ export interface UseResourceRMMConfig {
20
20
  /** When false, skip RMM entirely (e.g. non–UPDATE-like form or resource without UPDATE). */
21
21
  enabled?: boolean;
22
22
  conflictPolicy?: ConflictPolicy;
23
+ /**
24
+ * The caller runs directly when no RMM resolves (`UpdateLikeMutationFallbackMode.DIRECT_OPERATION_FALLBACK`),
25
+ * so `NO_ELIGIBLE_UPDATE_OPERATION` is an expected absence rather than an integration failure, and is
26
+ * logged at debug. Without it, a read-only row's declared action logged the "should fail closed" warning
27
+ * on every mount while working exactly as declared.
28
+ */
29
+ directFallbackAccepted?: boolean;
23
30
  }
24
31
  export interface UseResourceRMMResult {
25
32
  rmm: ResourceMutationManager | null;
@@ -1 +1 @@
1
- {"version":3,"file":"useResourceRMM.d.ts","sourceRoot":"","sources":["../../../../../../src/core/resources/rmm/useResourceRMM.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,+DAA+D,CAAC;AAYtH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAoB,KAAK,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAiBlF,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACtC,cAAc,EAAE,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IAChD,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IACtD,2BAA2B,CAAC,EAAE,OAAO,EAAE,CAAC;IACxC,0BAA0B,CAAC,EAAE,gCAAgC,CAAC,4BAA4B,CAAC,CAAC;IAC5F,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,4FAA4F;IAC5F,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,uBAAuB,GAAG,IAAI,CAAC;IACpC,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,oBAAoB,EAAE,+BAA+B,GAAG,IAAI,CAAC;IAC7D,6BAA6B,EAAE,MAAM,GAAG,SAAS,CAAC;CACnD;AAED;;;;;;;GAOG;AACH,oBAAY,+BAA+B;IACzC;;;OAGG;IACH,gBAAgB,qBAAqB;IACrC;;;;OAIG;IACH,QAAQ,aAAa;IACrB;;;;OAIG;IACH,mBAAmB,wBAAwB;IAC3C;;;;;OAKG;IACH,4BAA4B,iCAAiC;CAC9D;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,oBAAoB,CAuPjF"}
1
+ {"version":3,"file":"useResourceRMM.d.ts","sourceRoot":"","sources":["../../../../../../src/core/resources/rmm/useResourceRMM.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,+DAA+D,CAAC;AAYtH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAoB,KAAK,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAiBlF,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACtC,cAAc,EAAE,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IAChD,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IACtD,2BAA2B,CAAC,EAAE,OAAO,EAAE,CAAC;IACxC,0BAA0B,CAAC,EAAE,gCAAgC,CAAC,4BAA4B,CAAC,CAAC;IAC5F,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,4FAA4F;IAC5F,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC;;;;;OAKG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,uBAAuB,GAAG,IAAI,CAAC;IACpC,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,oBAAoB,EAAE,+BAA+B,GAAG,IAAI,CAAC;IAC7D,6BAA6B,EAAE,MAAM,GAAG,SAAS,CAAC;CACnD;AAED;;;;;;;GAOG;AACH,oBAAY,+BAA+B;IACzC;;;OAGG;IACH,gBAAgB,qBAAqB;IACrC;;;;OAIG;IACH,QAAQ,aAAa;IACrB;;;;OAIG;IACH,mBAAmB,wBAAwB;IAC3C;;;;;OAKG;IACH,4BAA4B,iCAAiC;CAC9D;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,oBAAoB,CAgQjF"}
@@ -65,7 +65,7 @@ export var UseResourceRMMUnavailableReason;
65
65
  UseResourceRMMUnavailableReason["NO_ELIGIBLE_UPDATE_OPERATION"] = "NO_ELIGIBLE_UPDATE_OPERATION";
66
66
  })(UseResourceRMMUnavailableReason || (UseResourceRMMUnavailableReason = {}));
67
67
  export function useResourceRMM(config) {
68
- const { resourceType, resourceId, doOperationRef, contextualParameters, parentResourcesRequirements, contextResourceIdentifiers, resourceSchema, enabled = true, conflictPolicy = DEFAULT_CONFLICT_POLICY, } = config;
68
+ const { resourceType, resourceId, doOperationRef, contextualParameters, parentResourcesRequirements, contextResourceIdentifiers, resourceSchema, enabled = true, conflictPolicy = DEFAULT_CONFLICT_POLICY, directFallbackAccepted = false, } = config;
69
69
  const rmmRegistry = useContext(RMMRegistryContext);
70
70
  const { registry } = useResourceRegistry();
71
71
  const userOrgs = useContext(UserOrgsContext);
@@ -178,6 +178,13 @@ export function useResourceRMM(config) {
178
178
  });
179
179
  return null;
180
180
  }
181
+ if (rmmUnavailableReason === UseResourceRMMUnavailableReason.NO_ELIGIBLE_UPDATE_OPERATION && directFallbackAccepted) {
182
+ logDebug('RMM unavailable because no eligible UPDATE-like operation resolves; the caller runs directly, as the operation declared.', {
183
+ resourceType,
184
+ resourceId: resourceIdStr,
185
+ });
186
+ return null;
187
+ }
181
188
  if (rmmUnavailableReason === UseResourceRMMUnavailableReason.NO_ELIGIBLE_UPDATE_OPERATION) {
182
189
  logger.warn('[useResourceRMM] RMM unavailable because no eligible UPDATE-like operation could be resolved for this surface. Default update-like surfaces should fail closed unless they explicitly opt into a weaker direct-operation fallback.', {
183
190
  resourceType,
@@ -206,7 +213,7 @@ export function useResourceRMM(config) {
206
213
  resourceSchema,
207
214
  });
208
215
  // eslint-disable-next-line react-hooks/exhaustive-deps -- registry identity + sync effect for routing/auth
209
- }, [rmmOperationPathKey, rmmReadOperationPathKey, rmmRegistry, resourceType, resourceIdStr, rmmUnavailableReason]);
216
+ }, [directFallbackAccepted, rmmOperationPathKey, rmmReadOperationPathKey, rmmRegistry, resourceType, resourceIdStr, rmmUnavailableReason]);
210
217
  useEffect(() => {
211
218
  if (!rmm || !rmmOperationPathKey)
212
219
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"useResourceRMM.js","sourceRoot":"","sources":["../../../../../../src/core/resources/rmm/useResourceRMM.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Shared RMM lifecycle: registry lookup, transport adapter, getOrCreate, routing sync,\n * cleanup on unmount, snapshot subscription, and list invalidation.\n */\n\nimport { useContext, useEffect, useMemo, useRef, useSyncExternalStore } from 'react';\nimport type { RefObject } from 'react';\nimport {\n CoreResourceOperation,\n ResourceOperationVariantType,\n ResourcesConfig_OperationPathUtils,\n} from '@wildo-ai/saas-models';\nimport type { DoOperationFn } from './HttpTransportAdapter';\nimport type { FrontendResourceOperationContext } from '~wildo-frontend-lib/core/resources/resources.frontend.schemas';\nimport { FrontendResourceUtils } from '~wildo-frontend-lib/core/resources/frontend-resource.utils';\nimport { LoggerFrontendService } from '~wildo-frontend-lib/core/monitoring/logger.frontend.service';\nimport { getOperationsForCoreSemantic } from '~wildo-frontend-lib/core/resources/operation-semantics.frontend.utils';\nimport { pickInlineFieldWriteOperation } from '~wildo-frontend-lib/core/resources/resource-addressability.frontend.utils';\nimport { operationInitiatorParametersSatisfied } from '~wildo-frontend-lib/core/resources/operation-initiator-satisfaction.frontend.utils';\nimport { normalizeContextResourceIdentifiersForTransport } from '~wildo-frontend-lib/core/resources/context-resource-identifiers.frontend.utils';\nimport { useResourceRegistry } from '~wildo-frontend-lib/core/resources/useResourceRegistry';\nimport { UserOrgsContext } from '~wildo-frontend-lib/core/security/UserOrgsContext';\nimport { HttpTransportAdapter } from './HttpTransportAdapter';\nimport { NOOP_GET_SNAPSHOT, NOOP_SUBSCRIBE } from './rmm-noop-snapshot';\nimport { RMMRegistryContext } from './RMMRegistryContext';\nimport type { ResourceMutationManager } from './ResourceMutationManager';\nimport type { RMMRegistry } from './RMMRegistry';\nimport { ConflictStrategy, type ConflictPolicy, type RMMSnapshot } from './types';\nimport { resolveCanonicalRMMReadOperationPathKey } from './canonical-read.frontend.utils';\nimport { useListInvalidation } from './useListInvalidation';\n\nconst logger = LoggerFrontendService.getLogger();\nconst logDebug = logger.debugByType('useResourceRMM');\nlogger.setDebugTypeLogging('useResourceRMM', false);\n\n/**\n * Stable default conflict policy. As an inline default-parameter object literal it\n * would mint a fresh identity on every render; `conflictPolicy` is a dependency of\n * the routing-sync effect below, so a fresh identity re-fires that effect (and its\n * `rmmRegistry.notifyInstanceRuntimeChanged()`) on every commit even when nothing\n * changed. A module constant keeps the default referentially stable.\n */\nconst DEFAULT_CONFLICT_POLICY: ConflictPolicy = { strategy: ConflictStrategy.ACCEPT_REMOTE };\n\nexport interface UseResourceRMMConfig {\n resourceType: string;\n /** When falsy, RMM is not attached (e.g. CREATE flow or missing id). */\n resourceId: string | null | undefined;\n doOperationRef: RefObject<DoOperationFn | null>;\n contextualParameters: Record<string, string | number>;\n parentResourcesRequirements?: unknown[];\n contextResourceIdentifiers?: FrontendResourceOperationContext['contextResourceIdentifiers'];\n resourceSchema?: unknown;\n /** When false, skip RMM entirely (e.g. non–UPDATE-like form or resource without UPDATE). */\n enabled?: boolean;\n conflictPolicy?: ConflictPolicy;\n}\n\nexport interface UseResourceRMMResult {\n rmm: ResourceMutationManager | null;\n rmmSnapshot: RMMSnapshot;\n rmmRegistry: RMMRegistry | null;\n rmmUnavailableReason: UseResourceRMMUnavailableReason | null;\n canonicalReadOperationPathKey: string | undefined;\n}\n\n/**\n * Why RMM is unattached for the current surface. Every reason fails closed\n * (`rmm === null`); the reason only drives diagnostics. Two of the reasons\n * are *expected absences* logged at debug, two are *genuine integration\n * failures* logged at warn — see the classification memo in\n * `useResourceRMM` for the precedence rules that keep expected absences out\n * of the loud lane.\n */\nexport enum UseResourceRMMUnavailableReason {\n /**\n * Genuine failure (warn): an enabled update-like surface with a resource\n * id resolved an operation but no `RMMRegistryProvider` is mounted above it.\n */\n PROVIDER_MISSING = 'PROVIDER_MISSING',\n /**\n * Expected absence (debug): the caller explicitly opted out of RMM\n * attachment (e.g. `enabled: isUpdateLikeOperation && !!resourceId` on a\n * CREATE form).\n */\n DISABLED = 'DISABLED',\n /**\n * Expected absence (debug): no persisted resource id is attached yet\n * (CREATE flow, parent-context singleton awaiting READ bootstrap). RMM is\n * keyed by resource id and can never attach without one.\n */\n MISSING_RESOURCE_ID = 'MISSING_RESOURCE_ID',\n /**\n * Genuine failure (warn): an enabled update-like surface with a resource\n * id could not resolve any eligible UPDATE-like operation. Default\n * update-like surfaces fail closed on this unless they explicitly opt\n * into a weaker direct-operation fallback.\n */\n NO_ELIGIBLE_UPDATE_OPERATION = 'NO_ELIGIBLE_UPDATE_OPERATION',\n}\n\nexport function useResourceRMM(config: UseResourceRMMConfig): UseResourceRMMResult {\n const {\n resourceType,\n resourceId,\n doOperationRef,\n contextualParameters,\n parentResourcesRequirements,\n contextResourceIdentifiers,\n resourceSchema,\n enabled = true,\n conflictPolicy = DEFAULT_CONFLICT_POLICY,\n } = config;\n\n const rmmRegistry = useContext(RMMRegistryContext);\n const { registry } = useResourceRegistry();\n const userOrgs = useContext(UserOrgsContext);\n const scopedUserId = userOrgs?.primaryScopeInitiatorIds?.userId ?? null;\n // Preserve the last known authenticated user id across transient auth-context\n // dropouts so same-user websocket replay does not immediately degrade into the\n // foreign-remote lane during runtime churn.\n const lastKnownCurrentUserIdRef = useRef<string>('');\n if (userOrgs?.user?._id || scopedUserId) {\n lastKnownCurrentUserIdRef.current = userOrgs?.user?._id ?? scopedUserId!;\n }\n const currentUserId = userOrgs?.user?._id ?? scopedUserId ?? lastKnownCurrentUserIdRef.current;\n const resourceConfig = registry.resourceConfigurations[resourceType];\n\n const contextResourceIdentifiersKey = useMemo(\n () => FrontendResourceUtils.buildContextResourceIdentifiersKey(contextResourceIdentifiers),\n [contextResourceIdentifiers],\n );\n // Content-stable key for the routing-sync effect dependency below.\n // `parentResourcesRequirements` arrives as a freshly-allocated array on most\n // renders (callers build it inline, e.g. `buildParentResourcesRequirements(...)`),\n // so depending on its *identity* re-fires the sync effect — and its\n // `rmmRegistry.notifyInstanceRuntimeChanged()` — on every commit even when the\n // requirements are unchanged, which storms the WebSocket room re-subscription.\n // Keying by content mirrors `contextResourceIdentifiersKey`.\n const parentResourcesRequirementsKey = useMemo(\n () => JSON.stringify(parentResourcesRequirements ?? null),\n [parentResourcesRequirements],\n );\n const resourceIdStr = resourceId ? String(resourceId) : '';\n\n const transportAdapter = useMemo(\n () => new HttpTransportAdapter((...args) => doOperationRef.current!(...args)),\n // eslint-disable-next-line react-hooks/exhaustive-deps -- doOperationRef is a stable ref\n [],\n );\n\n const updateOperation = useMemo(() => {\n return pickInlineFieldWriteOperation({\n resourceConfig,\n operations: resourceConfig?.operations ?? [],\n registry,\n hasResourceId: Boolean(resourceIdStr),\n contextResourceIdentifiers,\n contextualParameters,\n });\n }, [contextResourceIdentifiersKey, contextualParameters, registry, resourceConfig, resourceIdStr]);\n\n const rmmOperationPathKey = useMemo(() => {\n if (!updateOperation) {\n return null;\n }\n\n return ResourcesConfig_OperationPathUtils.createOperationPathKeyFromOperation(updateOperation);\n }, [resourceType, updateOperation]);\n\n const rmmReadOperationPathKey = useMemo(() => {\n return resolveCanonicalRMMReadOperationPathKey(resourceType, registry, {\n hasResourceId: Boolean(resourceIdStr),\n contextResourceIdentifiers,\n contextualParameters,\n });\n }, [contextResourceIdentifiersKey, contextualParameters, registry, resourceConfig?.operations, resourceIdStr, resourceType]);\n\n const listOperations = useMemo(\n () => {\n const { [resourceType]: _self, ...parentScopeIdentifiers } = contextResourceIdentifiers ?? {};\n const parentContextualParameters = FrontendResourceUtils.buildContextualParameters(\n parentScopeIdentifiers,\n registry,\n );\n return getOperationsForCoreSemantic(\n resourceConfig?.operations ?? [],\n CoreResourceOperation.LIST,\n ).filter((listOperation) =>\n operationInitiatorParametersSatisfied({\n operation: listOperation,\n contextResourceIdentifiers: parentScopeIdentifiers,\n contextualParameters: parentContextualParameters,\n })\n );\n },\n [contextResourceIdentifiersKey, registry, resourceConfig?.operations, resourceType],\n );\n\n /**\n * Classify why RMM is unattached, expected-absence checks first. The\n * precedence matters because the reason drives log level downstream:\n * `DISABLED` / `MISSING_RESOURCE_ID` are expected absences (debug),\n * `NO_ELIGIBLE_UPDATE_OPERATION` / `PROVIDER_MISSING` are genuine\n * integration failures (warn).\n *\n * - `!enabled` always classifies as DISABLED, even when no update\n * operation resolves: the caller explicitly opted out (the form /\n * displayer / layout callers gate `enabled` on `<update-like> && <has\n * id>`; the execution participation bridge gates it on execution-level\n * availability), so a CREATE surface must not be reported as an\n * operation-eligibility failure.\n * - The missing-id check runs before operation eligibility: without an id\n * RMM can never attach (the registry is keyed by resource id), and\n * UPDATE addressability is resolved with `hasResourceId: false`, so an\n * unresolved operation on an id-less surface is the expected CREATE /\n * pre-bootstrap shape rather than a broken update-like surface.\n *\n * Rejected alternative: keeping the old loud-first order and only\n * downgrading the log level — that would still misreport create-like\n * surfaces as `NO_ELIGIBLE_UPDATE_OPERATION` to consumers of\n * `rmmUnavailableReason`. All reasons keep failing closed (rmm === null);\n * only classification and log level differ.\n */\n const rmmUnavailableReason = useMemo((): UseResourceRMMUnavailableReason | null => {\n if (!enabled) {\n return UseResourceRMMUnavailableReason.DISABLED;\n }\n if (!resourceIdStr) {\n return UseResourceRMMUnavailableReason.MISSING_RESOURCE_ID;\n }\n if (!updateOperation) {\n return UseResourceRMMUnavailableReason.NO_ELIGIBLE_UPDATE_OPERATION;\n }\n if (!rmmRegistry) {\n return UseResourceRMMUnavailableReason.PROVIDER_MISSING;\n }\n\n return null;\n }, [enabled, resourceIdStr, rmmRegistry, updateOperation]);\n\n const rmm = useMemo(() => {\n if (rmmUnavailableReason === UseResourceRMMUnavailableReason.DISABLED) {\n logDebug('RMM unavailable because attachment is disabled for this surface.', {\n resourceType,\n resourceId: resourceIdStr,\n });\n return null;\n }\n\n if (rmmUnavailableReason === UseResourceRMMUnavailableReason.MISSING_RESOURCE_ID) {\n logDebug('RMM unavailable because no resource id is attached to the current surface.', {\n resourceType,\n });\n return null;\n }\n\n if (rmmUnavailableReason === UseResourceRMMUnavailableReason.NO_ELIGIBLE_UPDATE_OPERATION) {\n logger.warn('[useResourceRMM] RMM unavailable because no eligible UPDATE-like operation could be resolved for this surface. Default update-like surfaces should fail closed unless they explicitly opt into a weaker direct-operation fallback.', {\n resourceType,\n resourceId: resourceIdStr,\n });\n return null;\n }\n\n if (rmmUnavailableReason === UseResourceRMMUnavailableReason.PROVIDER_MISSING) {\n logger.warn('[useResourceRMM] RMM unavailable because RMMRegistryProvider is not mounted. Default update-like surfaces should fail closed unless they explicitly opt into a weaker direct-operation fallback.', {\n resourceType,\n resourceId: resourceIdStr,\n });\n return null;\n }\n return rmmRegistry.getOrCreate(resourceType, resourceIdStr, {\n resourceType,\n resourceId: resourceIdStr,\n transportAdapter,\n operationPathKey: rmmOperationPathKey!,\n readOperationPathKey: rmmReadOperationPathKey,\n conflictPolicy,\n currentUserId,\n contextResourceIdentifiers: normalizeContextResourceIdentifiersForTransport(contextResourceIdentifiers),\n contextualParameters,\n parentResourcesRequirements,\n resourceSchema,\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps -- registry identity + sync effect for routing/auth\n }, [rmmOperationPathKey, rmmReadOperationPathKey, rmmRegistry, resourceType, resourceIdStr, rmmUnavailableReason]);\n\n useEffect(() => {\n if (!rmm || !rmmOperationPathKey) return;\n rmm.syncRuntimeRoutingConfig({\n transportAdapter,\n currentUserId,\n contextResourceIdentifiers: normalizeContextResourceIdentifiersForTransport(contextResourceIdentifiers),\n contextualParameters,\n parentResourcesRequirements,\n operationPathKey: rmmOperationPathKey,\n readOperationPathKey: rmmReadOperationPathKey,\n conflictPolicy,\n resourceSchema,\n });\n rmmRegistry?.notifyInstanceRuntimeChanged();\n }, [\n rmm,\n rmmRegistry,\n currentUserId,\n // `ConflictPolicy` is `{ strategy }`; depend on the strategy value, not the\n // (commonly inline, fresh-identity) object literal callers pass, so the sync\n // effect does not re-fire — and re-notify — on every commit.\n conflictPolicy.strategy,\n contextResourceIdentifiersKey,\n rmmOperationPathKey,\n rmmReadOperationPathKey,\n parentResourcesRequirementsKey,\n contextualParameters,\n resourceSchema,\n transportAdapter,\n ]);\n\n useEffect(() => {\n if (!rmm || !rmmRegistry || !resourceIdStr) {\n return;\n }\n\n const key = rmmRegistry.keyFor(resourceType, resourceIdStr);\n return () => {\n rmmRegistry.release(key);\n };\n }, [rmm, rmmRegistry, resourceType, resourceIdStr]);\n\n const rmmSnapshot = useSyncExternalStore(\n rmm?.subscribe ?? NOOP_SUBSCRIBE,\n rmm?.getSnapshot ?? NOOP_GET_SNAPSHOT,\n );\n\n useListInvalidation(rmm, {\n contextResourceIdentifiers: normalizeContextResourceIdentifiersForTransport(contextResourceIdentifiers),\n parentResourcesRequirements: parentResourcesRequirements ?? [],\n listOperations,\n });\n\n return {\n rmm,\n rmmSnapshot,\n rmmRegistry: rmmRegistry ?? null,\n rmmUnavailableReason,\n canonicalReadOperationPathKey: rmmReadOperationPathKey,\n };\n}\n"]}
1
+ {"version":3,"file":"useResourceRMM.js","sourceRoot":"","sources":["../../../../../../src/core/resources/rmm/useResourceRMM.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Shared RMM lifecycle: registry lookup, transport adapter, getOrCreate, routing sync,\n * cleanup on unmount, snapshot subscription, and list invalidation.\n */\n\nimport { useContext, useEffect, useMemo, useRef, useSyncExternalStore } from 'react';\nimport type { RefObject } from 'react';\nimport {\n CoreResourceOperation,\n ResourceOperationVariantType,\n ResourcesConfig_OperationPathUtils,\n} from '@wildo-ai/saas-models';\nimport type { DoOperationFn } from './HttpTransportAdapter';\nimport type { FrontendResourceOperationContext } from '~wildo-frontend-lib/core/resources/resources.frontend.schemas';\nimport { FrontendResourceUtils } from '~wildo-frontend-lib/core/resources/frontend-resource.utils';\nimport { LoggerFrontendService } from '~wildo-frontend-lib/core/monitoring/logger.frontend.service';\nimport { getOperationsForCoreSemantic } from '~wildo-frontend-lib/core/resources/operation-semantics.frontend.utils';\nimport { pickInlineFieldWriteOperation } from '~wildo-frontend-lib/core/resources/resource-addressability.frontend.utils';\nimport { operationInitiatorParametersSatisfied } from '~wildo-frontend-lib/core/resources/operation-initiator-satisfaction.frontend.utils';\nimport { normalizeContextResourceIdentifiersForTransport } from '~wildo-frontend-lib/core/resources/context-resource-identifiers.frontend.utils';\nimport { useResourceRegistry } from '~wildo-frontend-lib/core/resources/useResourceRegistry';\nimport { UserOrgsContext } from '~wildo-frontend-lib/core/security/UserOrgsContext';\nimport { HttpTransportAdapter } from './HttpTransportAdapter';\nimport { NOOP_GET_SNAPSHOT, NOOP_SUBSCRIBE } from './rmm-noop-snapshot';\nimport { RMMRegistryContext } from './RMMRegistryContext';\nimport type { ResourceMutationManager } from './ResourceMutationManager';\nimport type { RMMRegistry } from './RMMRegistry';\nimport { ConflictStrategy, type ConflictPolicy, type RMMSnapshot } from './types';\nimport { resolveCanonicalRMMReadOperationPathKey } from './canonical-read.frontend.utils';\nimport { useListInvalidation } from './useListInvalidation';\n\nconst logger = LoggerFrontendService.getLogger();\nconst logDebug = logger.debugByType('useResourceRMM');\nlogger.setDebugTypeLogging('useResourceRMM', false);\n\n/**\n * Stable default conflict policy. As an inline default-parameter object literal it\n * would mint a fresh identity on every render; `conflictPolicy` is a dependency of\n * the routing-sync effect below, so a fresh identity re-fires that effect (and its\n * `rmmRegistry.notifyInstanceRuntimeChanged()`) on every commit even when nothing\n * changed. A module constant keeps the default referentially stable.\n */\nconst DEFAULT_CONFLICT_POLICY: ConflictPolicy = { strategy: ConflictStrategy.ACCEPT_REMOTE };\n\nexport interface UseResourceRMMConfig {\n resourceType: string;\n /** When falsy, RMM is not attached (e.g. CREATE flow or missing id). */\n resourceId: string | null | undefined;\n doOperationRef: RefObject<DoOperationFn | null>;\n contextualParameters: Record<string, string | number>;\n parentResourcesRequirements?: unknown[];\n contextResourceIdentifiers?: FrontendResourceOperationContext['contextResourceIdentifiers'];\n resourceSchema?: unknown;\n /** When false, skip RMM entirely (e.g. non–UPDATE-like form or resource without UPDATE). */\n enabled?: boolean;\n conflictPolicy?: ConflictPolicy;\n /**\n * The caller runs directly when no RMM resolves (`UpdateLikeMutationFallbackMode.DIRECT_OPERATION_FALLBACK`),\n * so `NO_ELIGIBLE_UPDATE_OPERATION` is an expected absence rather than an integration failure, and is\n * logged at debug. Without it, a read-only row's declared action logged the \"should fail closed\" warning\n * on every mount while working exactly as declared.\n */\n directFallbackAccepted?: boolean;\n}\n\nexport interface UseResourceRMMResult {\n rmm: ResourceMutationManager | null;\n rmmSnapshot: RMMSnapshot;\n rmmRegistry: RMMRegistry | null;\n rmmUnavailableReason: UseResourceRMMUnavailableReason | null;\n canonicalReadOperationPathKey: string | undefined;\n}\n\n/**\n * Why RMM is unattached for the current surface. Every reason fails closed\n * (`rmm === null`); the reason only drives diagnostics. Two of the reasons\n * are *expected absences* logged at debug, two are *genuine integration\n * failures* logged at warn — see the classification memo in\n * `useResourceRMM` for the precedence rules that keep expected absences out\n * of the loud lane.\n */\nexport enum UseResourceRMMUnavailableReason {\n /**\n * Genuine failure (warn): an enabled update-like surface with a resource\n * id resolved an operation but no `RMMRegistryProvider` is mounted above it.\n */\n PROVIDER_MISSING = 'PROVIDER_MISSING',\n /**\n * Expected absence (debug): the caller explicitly opted out of RMM\n * attachment (e.g. `enabled: isUpdateLikeOperation && !!resourceId` on a\n * CREATE form).\n */\n DISABLED = 'DISABLED',\n /**\n * Expected absence (debug): no persisted resource id is attached yet\n * (CREATE flow, parent-context singleton awaiting READ bootstrap). RMM is\n * keyed by resource id and can never attach without one.\n */\n MISSING_RESOURCE_ID = 'MISSING_RESOURCE_ID',\n /**\n * Genuine failure (warn): an enabled update-like surface with a resource\n * id could not resolve any eligible UPDATE-like operation. Default\n * update-like surfaces fail closed on this unless they explicitly opt\n * into a weaker direct-operation fallback.\n */\n NO_ELIGIBLE_UPDATE_OPERATION = 'NO_ELIGIBLE_UPDATE_OPERATION',\n}\n\nexport function useResourceRMM(config: UseResourceRMMConfig): UseResourceRMMResult {\n const {\n resourceType,\n resourceId,\n doOperationRef,\n contextualParameters,\n parentResourcesRequirements,\n contextResourceIdentifiers,\n resourceSchema,\n enabled = true,\n conflictPolicy = DEFAULT_CONFLICT_POLICY,\n directFallbackAccepted = false,\n } = config;\n\n const rmmRegistry = useContext(RMMRegistryContext);\n const { registry } = useResourceRegistry();\n const userOrgs = useContext(UserOrgsContext);\n const scopedUserId = userOrgs?.primaryScopeInitiatorIds?.userId ?? null;\n // Preserve the last known authenticated user id across transient auth-context\n // dropouts so same-user websocket replay does not immediately degrade into the\n // foreign-remote lane during runtime churn.\n const lastKnownCurrentUserIdRef = useRef<string>('');\n if (userOrgs?.user?._id || scopedUserId) {\n lastKnownCurrentUserIdRef.current = userOrgs?.user?._id ?? scopedUserId!;\n }\n const currentUserId = userOrgs?.user?._id ?? scopedUserId ?? lastKnownCurrentUserIdRef.current;\n const resourceConfig = registry.resourceConfigurations[resourceType];\n\n const contextResourceIdentifiersKey = useMemo(\n () => FrontendResourceUtils.buildContextResourceIdentifiersKey(contextResourceIdentifiers),\n [contextResourceIdentifiers],\n );\n // Content-stable key for the routing-sync effect dependency below.\n // `parentResourcesRequirements` arrives as a freshly-allocated array on most\n // renders (callers build it inline, e.g. `buildParentResourcesRequirements(...)`),\n // so depending on its *identity* re-fires the sync effect — and its\n // `rmmRegistry.notifyInstanceRuntimeChanged()` — on every commit even when the\n // requirements are unchanged, which storms the WebSocket room re-subscription.\n // Keying by content mirrors `contextResourceIdentifiersKey`.\n const parentResourcesRequirementsKey = useMemo(\n () => JSON.stringify(parentResourcesRequirements ?? null),\n [parentResourcesRequirements],\n );\n const resourceIdStr = resourceId ? String(resourceId) : '';\n\n const transportAdapter = useMemo(\n () => new HttpTransportAdapter((...args) => doOperationRef.current!(...args)),\n // eslint-disable-next-line react-hooks/exhaustive-deps -- doOperationRef is a stable ref\n [],\n );\n\n const updateOperation = useMemo(() => {\n return pickInlineFieldWriteOperation({\n resourceConfig,\n operations: resourceConfig?.operations ?? [],\n registry,\n hasResourceId: Boolean(resourceIdStr),\n contextResourceIdentifiers,\n contextualParameters,\n });\n }, [contextResourceIdentifiersKey, contextualParameters, registry, resourceConfig, resourceIdStr]);\n\n const rmmOperationPathKey = useMemo(() => {\n if (!updateOperation) {\n return null;\n }\n\n return ResourcesConfig_OperationPathUtils.createOperationPathKeyFromOperation(updateOperation);\n }, [resourceType, updateOperation]);\n\n const rmmReadOperationPathKey = useMemo(() => {\n return resolveCanonicalRMMReadOperationPathKey(resourceType, registry, {\n hasResourceId: Boolean(resourceIdStr),\n contextResourceIdentifiers,\n contextualParameters,\n });\n }, [contextResourceIdentifiersKey, contextualParameters, registry, resourceConfig?.operations, resourceIdStr, resourceType]);\n\n const listOperations = useMemo(\n () => {\n const { [resourceType]: _self, ...parentScopeIdentifiers } = contextResourceIdentifiers ?? {};\n const parentContextualParameters = FrontendResourceUtils.buildContextualParameters(\n parentScopeIdentifiers,\n registry,\n );\n return getOperationsForCoreSemantic(\n resourceConfig?.operations ?? [],\n CoreResourceOperation.LIST,\n ).filter((listOperation) =>\n operationInitiatorParametersSatisfied({\n operation: listOperation,\n contextResourceIdentifiers: parentScopeIdentifiers,\n contextualParameters: parentContextualParameters,\n })\n );\n },\n [contextResourceIdentifiersKey, registry, resourceConfig?.operations, resourceType],\n );\n\n /**\n * Classify why RMM is unattached, expected-absence checks first. The\n * precedence matters because the reason drives log level downstream:\n * `DISABLED` / `MISSING_RESOURCE_ID` are expected absences (debug),\n * `NO_ELIGIBLE_UPDATE_OPERATION` / `PROVIDER_MISSING` are genuine\n * integration failures (warn).\n *\n * - `!enabled` always classifies as DISABLED, even when no update\n * operation resolves: the caller explicitly opted out (the form /\n * displayer / layout callers gate `enabled` on `<update-like> && <has\n * id>`; the execution participation bridge gates it on execution-level\n * availability), so a CREATE surface must not be reported as an\n * operation-eligibility failure.\n * - The missing-id check runs before operation eligibility: without an id\n * RMM can never attach (the registry is keyed by resource id), and\n * UPDATE addressability is resolved with `hasResourceId: false`, so an\n * unresolved operation on an id-less surface is the expected CREATE /\n * pre-bootstrap shape rather than a broken update-like surface.\n *\n * Rejected alternative: keeping the old loud-first order and only\n * downgrading the log level — that would still misreport create-like\n * surfaces as `NO_ELIGIBLE_UPDATE_OPERATION` to consumers of\n * `rmmUnavailableReason`. All reasons keep failing closed (rmm === null);\n * only classification and log level differ.\n */\n const rmmUnavailableReason = useMemo((): UseResourceRMMUnavailableReason | null => {\n if (!enabled) {\n return UseResourceRMMUnavailableReason.DISABLED;\n }\n if (!resourceIdStr) {\n return UseResourceRMMUnavailableReason.MISSING_RESOURCE_ID;\n }\n if (!updateOperation) {\n return UseResourceRMMUnavailableReason.NO_ELIGIBLE_UPDATE_OPERATION;\n }\n if (!rmmRegistry) {\n return UseResourceRMMUnavailableReason.PROVIDER_MISSING;\n }\n\n return null;\n }, [enabled, resourceIdStr, rmmRegistry, updateOperation]);\n\n const rmm = useMemo(() => {\n if (rmmUnavailableReason === UseResourceRMMUnavailableReason.DISABLED) {\n logDebug('RMM unavailable because attachment is disabled for this surface.', {\n resourceType,\n resourceId: resourceIdStr,\n });\n return null;\n }\n\n if (rmmUnavailableReason === UseResourceRMMUnavailableReason.MISSING_RESOURCE_ID) {\n logDebug('RMM unavailable because no resource id is attached to the current surface.', {\n resourceType,\n });\n return null;\n }\n\n if (rmmUnavailableReason === UseResourceRMMUnavailableReason.NO_ELIGIBLE_UPDATE_OPERATION && directFallbackAccepted) {\n logDebug('RMM unavailable because no eligible UPDATE-like operation resolves; the caller runs directly, as the operation declared.', {\n resourceType,\n resourceId: resourceIdStr,\n });\n return null;\n }\n\n if (rmmUnavailableReason === UseResourceRMMUnavailableReason.NO_ELIGIBLE_UPDATE_OPERATION) {\n logger.warn('[useResourceRMM] RMM unavailable because no eligible UPDATE-like operation could be resolved for this surface. Default update-like surfaces should fail closed unless they explicitly opt into a weaker direct-operation fallback.', {\n resourceType,\n resourceId: resourceIdStr,\n });\n return null;\n }\n\n if (rmmUnavailableReason === UseResourceRMMUnavailableReason.PROVIDER_MISSING) {\n logger.warn('[useResourceRMM] RMM unavailable because RMMRegistryProvider is not mounted. Default update-like surfaces should fail closed unless they explicitly opt into a weaker direct-operation fallback.', {\n resourceType,\n resourceId: resourceIdStr,\n });\n return null;\n }\n return rmmRegistry.getOrCreate(resourceType, resourceIdStr, {\n resourceType,\n resourceId: resourceIdStr,\n transportAdapter,\n operationPathKey: rmmOperationPathKey!,\n readOperationPathKey: rmmReadOperationPathKey,\n conflictPolicy,\n currentUserId,\n contextResourceIdentifiers: normalizeContextResourceIdentifiersForTransport(contextResourceIdentifiers),\n contextualParameters,\n parentResourcesRequirements,\n resourceSchema,\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps -- registry identity + sync effect for routing/auth\n }, [directFallbackAccepted, rmmOperationPathKey, rmmReadOperationPathKey, rmmRegistry, resourceType, resourceIdStr, rmmUnavailableReason]);\n\n useEffect(() => {\n if (!rmm || !rmmOperationPathKey) return;\n rmm.syncRuntimeRoutingConfig({\n transportAdapter,\n currentUserId,\n contextResourceIdentifiers: normalizeContextResourceIdentifiersForTransport(contextResourceIdentifiers),\n contextualParameters,\n parentResourcesRequirements,\n operationPathKey: rmmOperationPathKey,\n readOperationPathKey: rmmReadOperationPathKey,\n conflictPolicy,\n resourceSchema,\n });\n rmmRegistry?.notifyInstanceRuntimeChanged();\n }, [\n rmm,\n rmmRegistry,\n currentUserId,\n // `ConflictPolicy` is `{ strategy }`; depend on the strategy value, not the\n // (commonly inline, fresh-identity) object literal callers pass, so the sync\n // effect does not re-fire — and re-notify — on every commit.\n conflictPolicy.strategy,\n contextResourceIdentifiersKey,\n rmmOperationPathKey,\n rmmReadOperationPathKey,\n parentResourcesRequirementsKey,\n contextualParameters,\n resourceSchema,\n transportAdapter,\n ]);\n\n useEffect(() => {\n if (!rmm || !rmmRegistry || !resourceIdStr) {\n return;\n }\n\n const key = rmmRegistry.keyFor(resourceType, resourceIdStr);\n return () => {\n rmmRegistry.release(key);\n };\n }, [rmm, rmmRegistry, resourceType, resourceIdStr]);\n\n const rmmSnapshot = useSyncExternalStore(\n rmm?.subscribe ?? NOOP_SUBSCRIBE,\n rmm?.getSnapshot ?? NOOP_GET_SNAPSHOT,\n );\n\n useListInvalidation(rmm, {\n contextResourceIdentifiers: normalizeContextResourceIdentifiersForTransport(contextResourceIdentifiers),\n parentResourcesRequirements: parentResourcesRequirements ?? [],\n listOperations,\n });\n\n return {\n rmm,\n rmmSnapshot,\n rmmRegistry: rmmRegistry ?? null,\n rmmUnavailableReason,\n canonicalReadOperationPathKey: rmmReadOperationPathKey,\n };\n}\n"]}
@@ -0,0 +1,59 @@
1
+ export interface UseOperationDirectExecutionParams {
2
+ /** Replaces what happens AFTER a success. The outcome is announced either way. Omitted: go back within the zone. */
3
+ onSuccess?: (result: unknown) => void;
4
+ /** The message a failure is reported under. */
5
+ errorMessage: string;
6
+ /** The component a failure is attributed to in the report. */
7
+ errorComponent: string;
8
+ }
9
+ export interface OperationDirectExecution {
10
+ /**
11
+ * Execute the hosted operation with this exact request body — no form, no validation pass beyond
12
+ * the server's. Resolves once the outcome has been announced (success) or reported (failure).
13
+ * Omitted means "no body at all", which is what a zero-input action sends — not an empty object.
14
+ */
15
+ execute: (requestData?: Record<string, unknown>) => Promise<void>;
16
+ /** True while a request is in flight. */
17
+ isExecuting: boolean;
18
+ /**
19
+ * True while an update-like operation with no target id in its context is resolving that id from
20
+ * the canonical READ. Execution must wait for it: the RMM that carries the mutation is keyed on it.
21
+ */
22
+ isBootstrapping: boolean;
23
+ /**
24
+ * The success path itself — announce the outcome, then `onSuccess` or go back. Exposed so a host
25
+ * that ALSO renders a form hands the form this very function, and "what success means" has one
26
+ * definition across the form and the form-less paths.
27
+ */
28
+ completeWithSuccess: (result: unknown) => void;
29
+ /** The failure path — reports under `errorMessage` / `errorComponent`. Same reason as above. */
30
+ reportFailure: (error: Error) => void;
31
+ }
32
+ /**
33
+ * Execute the NEAREST operation view's operation with a body the caller already has — the form-less
34
+ * half of every operation host.
35
+ *
36
+ * ## Why this is its own hook
37
+ *
38
+ * It began as the zero-input branch of `ResourceLayout_SemanticOperationFallback` ("Run" with an
39
+ * empty body), and a DROPDOWN action needs exactly the same thing with a one-field body: the pick is
40
+ * the submission. The alternative — a second copy of the RMM-or-direct decision, the canonical-READ
41
+ * bootstrap and the outcome announcement inside the dropdown — is the shape this package has already
42
+ * paid for once (the bulk selector, spelled two ways). One hook, so a host that executes without a
43
+ * form inherits the whole contract by using it:
44
+ *
45
+ * - **update-like single-resource operations run through the RMM**, never the plain `doOperation`
46
+ * lane, and fail closed with `MissingRMMRuntimeError` rather than writing without it;
47
+ * - **a missing target id is resolved first** from the canonical READ, so a detail-less context (a
48
+ * bulk bar, a singleton) still mutates the right row;
49
+ * - **everything else runs `executeCurrentOperation`**, which merges a bulk selection into the body;
50
+ * - **the outcome is ALWAYS announced**, and `onSuccess` replaces only what happens next.
51
+ *
52
+ * Confirmation is NOT decided here. Each host owns the dialog it shows, because only the host knows
53
+ * whether a person has already acted deliberately (typed a phrase, pressed Submit) or merely picked.
54
+ *
55
+ * Must be called under a `ResourceOperationViewProvider` for the operation being executed — a
56
+ * detached host establishes one (`ResourceOperationDetachedHost`, `ResourceOperationActionDropdown`).
57
+ */
58
+ export declare function useOperationDirectExecution({ onSuccess, errorMessage, errorComponent, }: UseOperationDirectExecutionParams): OperationDirectExecution;
59
+ //# sourceMappingURL=useOperationDirectExecution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useOperationDirectExecution.d.ts","sourceRoot":"","sources":["../../../../../src/core/resources/useOperationDirectExecution.ts"],"names":[],"mappings":"AAyBA,MAAM,WAAW,iCAAiC;IAChD,oHAAoH;IACpH,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,+CAA+C;IAC/C,YAAY,EAAE,MAAM,CAAC;IACrB,8DAA8D;IAC9D,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,wBAAwB;IACvC;;;;OAIG;IACH,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,yCAAyC;IACzC,WAAW,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,eAAe,EAAE,OAAO,CAAC;IACzB;;;;OAIG;IACH,mBAAmB,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C,gGAAgG;IAChG,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACvC;AAOD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,2BAA2B,CAAC,EAC1C,SAAS,EACT,YAAY,EACZ,cAAc,GACf,EAAE,iCAAiC,GAAG,wBAAwB,CA6Q9D"}
@@ -0,0 +1,278 @@
1
+ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
2
+ import { ResourcesConfig_OperationPathUtils } from '@wildo-ai/saas-models';
3
+ import { FrontendComponentType } from '@wildo-ai/presets-components-models';
4
+ import { useI18n } from '../../core/i18n/useI18n.js';
5
+ import { resolveComponentLabel } from '../../core/i18n/component-label-resolution.utils.js';
6
+ import { useResourceOperationViewContext } from '../../core/resources/ResourceOperationViewContext.js';
7
+ import { FrontendResourceUtils, frontendResourceUtils } from '../../core/resources/frontend-resource.utils.js';
8
+ import { useResourceRegistry } from '../../core/resources/useResourceRegistry.js';
9
+ import { allowsDirectOperationFallback, MissingRMMRuntimeError, resolveDeclaredUpdateLikeMutationFallbackMode, } from '../../core/resources/rmm/update-like-mutation-fallback.frontend.js';
10
+ import { useResourceRMM } from '../../core/resources/rmm/useResourceRMM.js';
11
+ import { mutationErrorForReport } from '../../core/resources/rmm/mutation-error-report.utils.js';
12
+ import { ConflictStrategy, MutationPriority, MutationSourceType, MutationType } from '../../core/resources/rmm/types.js';
13
+ import { performCanonicalRMMRead, resolveCanonicalRMMReadOperationPathKey, } from '../../core/resources/rmm/canonical-read.frontend.utils.js';
14
+ import { isSingleResourceUpdateLikeOperation } from '../../core/resources/operation-semantics.frontend.utils.js';
15
+ import { useResourceOperationOutcomeEmitter } from '../../core/resources/useResourceOperationOutcomeEmitter.js';
16
+ /**
17
+ * Execute the NEAREST operation view's operation with a body the caller already has — the form-less
18
+ * half of every operation host.
19
+ *
20
+ * ## Why this is its own hook
21
+ *
22
+ * It began as the zero-input branch of `ResourceLayout_SemanticOperationFallback` ("Run" with an
23
+ * empty body), and a DROPDOWN action needs exactly the same thing with a one-field body: the pick is
24
+ * the submission. The alternative — a second copy of the RMM-or-direct decision, the canonical-READ
25
+ * bootstrap and the outcome announcement inside the dropdown — is the shape this package has already
26
+ * paid for once (the bulk selector, spelled two ways). One hook, so a host that executes without a
27
+ * form inherits the whole contract by using it:
28
+ *
29
+ * - **update-like single-resource operations run through the RMM**, never the plain `doOperation`
30
+ * lane, and fail closed with `MissingRMMRuntimeError` rather than writing without it;
31
+ * - **a missing target id is resolved first** from the canonical READ, so a detail-less context (a
32
+ * bulk bar, a singleton) still mutates the right row;
33
+ * - **everything else runs `executeCurrentOperation`**, which merges a bulk selection into the body;
34
+ * - **the outcome is ALWAYS announced**, and `onSuccess` replaces only what happens next.
35
+ *
36
+ * Confirmation is NOT decided here. Each host owns the dialog it shows, because only the host knows
37
+ * whether a person has already acted deliberately (typed a phrase, pressed Submit) or merely picked.
38
+ *
39
+ * Must be called under a `ResourceOperationViewProvider` for the operation being executed — a
40
+ * detached host establishes one (`ResourceOperationDetachedHost`, `ResourceOperationActionDropdown`).
41
+ */
42
+ export function useOperationDirectExecution({ onSuccess, errorMessage, errorComponent, }) {
43
+ const { resourceContext: currentResourceContext, resourceType, operation, reportError, goBackWithinZone, executeCurrentOperation, } = useResourceOperationViewContext();
44
+ const { doOperation, registry } = useResourceRegistry();
45
+ // `resource` as well as the component: a resource may override the component's words, and the
46
+ // fallback this was extracted from resolved them resource-scoped.
47
+ const { tComponent } = useI18n({ component: FrontendComponentType.RESOURCES_LAYOUTS_ACTION, resource: resourceType });
48
+ const doOperationRef = useRef(doOperation);
49
+ doOperationRef.current = doOperation;
50
+ const [isExecuting, setIsExecuting] = useState(false);
51
+ const [isBootstrapping, setIsBootstrapping] = useState(false);
52
+ const [bootstrappedRow, setBootstrappedRow] = useState(null);
53
+ /*
54
+ * A single-row update-like operation addresses ONE row, whichever lane it runs on, so its target id
55
+ * is resolved (the canonical-READ bootstrap below) for both lanes, and the row's RMM is attached when
56
+ * the row has one.
57
+ *
58
+ * It runs through that RMM when there is one. Without one it runs directly only if the operation
59
+ * DECLARED the direct lane (`operationFrontendConfig.updateLikeMutationFallbackMode`), read through the
60
+ * same function the form host and `useResourceOperationSurface` read, so the two hosts pick the same lane;
61
+ * otherwise it fails closed.
62
+ */
63
+ const isSingleRowUpdateLike = useMemo(() => isSingleResourceUpdateLikeOperation(operation), [operation]);
64
+ const acceptsDirectLane = isSingleRowUpdateLike
65
+ && allowsDirectOperationFallback(resolveDeclaredUpdateLikeMutationFallbackMode(operation));
66
+ const bootstrapContextKey = useMemo(() => JSON.stringify({
67
+ contextResourceIdentifiers: FrontendResourceUtils.buildContextResourceIdentifiersKey(currentResourceContext.contextResourceIdentifiers ?? {}),
68
+ parentResourcesRequirements: currentResourceContext.parentResourcesRequirements ?? [],
69
+ }), [
70
+ currentResourceContext.contextResourceIdentifiers,
71
+ currentResourceContext.parentResourcesRequirements,
72
+ ]);
73
+ const routeResourceId = useMemo(() => {
74
+ const identifier = currentResourceContext.contextResourceIdentifiers?.[resourceType];
75
+ if (!identifier) {
76
+ return null;
77
+ }
78
+ return frontendResourceUtils.getResourceId(identifier) ?? null;
79
+ }, [currentResourceContext.contextResourceIdentifiers, resourceType]);
80
+ const currentResourceId = routeResourceId ?? (bootstrappedRow?.contextKey === bootstrapContextKey
81
+ && typeof bootstrappedRow.row._id === 'string'
82
+ && bootstrappedRow.row._id.length > 0
83
+ ? bootstrappedRow.row._id
84
+ : null);
85
+ const contextResourceIdentifiersWithResourceId = useMemo(() => {
86
+ if (!currentResourceId || currentResourceContext.contextResourceIdentifiers?.[resourceType]) {
87
+ return currentResourceContext.contextResourceIdentifiers;
88
+ }
89
+ return {
90
+ ...currentResourceContext.contextResourceIdentifiers,
91
+ [resourceType]: currentResourceId,
92
+ };
93
+ }, [currentResourceContext.contextResourceIdentifiers, currentResourceId, resourceType]);
94
+ const contextualParameters = useMemo(() => {
95
+ return FrontendResourceUtils.buildContextualParameters(contextResourceIdentifiersWithResourceId, registry);
96
+ }, [contextResourceIdentifiersWithResourceId, registry]);
97
+ const canonicalReadOperationPathKey = useMemo(() => {
98
+ return resolveCanonicalRMMReadOperationPathKey(resourceType, registry, {
99
+ hasResourceId: Boolean(currentResourceId),
100
+ contextResourceIdentifiers: contextResourceIdentifiersWithResourceId,
101
+ contextualParameters,
102
+ });
103
+ }, [contextResourceIdentifiersWithResourceId, contextualParameters, currentResourceId, registry, resourceType]);
104
+ const { rmm } = useResourceRMM({
105
+ resourceType,
106
+ resourceId: currentResourceId,
107
+ doOperationRef,
108
+ contextualParameters,
109
+ parentResourcesRequirements: currentResourceContext.parentResourcesRequirements,
110
+ contextResourceIdentifiers: contextResourceIdentifiersWithResourceId,
111
+ resourceSchema: registry.resourceConfigurations[resourceType]?.mainSchema,
112
+ enabled: isSingleRowUpdateLike && !!currentResourceId,
113
+ conflictPolicy: { strategy: ConflictStrategy.ACCEPT_REMOTE },
114
+ directFallbackAccepted: acceptsDirectLane,
115
+ });
116
+ const executionFailedLabel = useMemo(() => {
117
+ return resolveComponentLabel({
118
+ tComponent,
119
+ componentType: FrontendComponentType.RESOURCES_LAYOUTS_ACTION,
120
+ key: 'executionFailed',
121
+ });
122
+ }, [tComponent]);
123
+ /*
124
+ * Announced with the context that carries the RESOLVED row id, not the route's. A context-addressed
125
+ * singleton has no id on its route; the id comes from the canonical READ, and a page showing that row
126
+ * re-reads only when the announcement names it (#1782). The route context named no row, so an action
127
+ * whose result carries no `_id` (a secret's change outcome) announced a change to nobody.
128
+ */
129
+ const announcedContext = useMemo(() => (contextResourceIdentifiersWithResourceId === currentResourceContext.contextResourceIdentifiers
130
+ ? currentResourceContext
131
+ : { ...currentResourceContext, contextResourceIdentifiers: contextResourceIdentifiersWithResourceId }), [contextResourceIdentifiersWithResourceId, currentResourceContext]);
132
+ const announceOutcome = useResourceOperationOutcomeEmitter(announcedContext, operation);
133
+ const handleSuccess = useCallback((result) => {
134
+ announceOutcome(result);
135
+ if (onSuccess) {
136
+ onSuccess(result);
137
+ return;
138
+ }
139
+ goBackWithinZone();
140
+ }, [announceOutcome, goBackWithinZone, onSuccess]);
141
+ const handleError = useCallback((error) => {
142
+ reportError(error, errorMessage, errorComponent);
143
+ }, [errorComponent, errorMessage, reportError]);
144
+ useEffect(() => {
145
+ if (!isSingleRowUpdateLike || currentResourceId || !canonicalReadOperationPathKey) {
146
+ return;
147
+ }
148
+ let cancelled = false;
149
+ setIsBootstrapping(true);
150
+ void performCanonicalRMMRead({
151
+ doOperation: doOperationRef.current,
152
+ readOperationPathKey: canonicalReadOperationPathKey,
153
+ contextualParameters,
154
+ parentResourcesRequirements: currentResourceContext.parentResourcesRequirements,
155
+ }).then((row) => {
156
+ if (cancelled)
157
+ return;
158
+ setBootstrappedRow({
159
+ contextKey: bootstrapContextKey,
160
+ row,
161
+ });
162
+ }).catch((error) => {
163
+ if (cancelled)
164
+ return;
165
+ handleError(error instanceof Error ? error : new Error(String(error)));
166
+ }).finally(() => {
167
+ if (!cancelled) {
168
+ setIsBootstrapping(false);
169
+ }
170
+ });
171
+ return () => {
172
+ cancelled = true;
173
+ };
174
+ }, [
175
+ bootstrapContextKey,
176
+ canonicalReadOperationPathKey,
177
+ contextualParameters,
178
+ currentResourceContext.parentResourcesRequirements,
179
+ currentResourceId,
180
+ handleError,
181
+ isSingleRowUpdateLike,
182
+ ]);
183
+ useEffect(() => {
184
+ if (!rmm || !bootstrappedRow || bootstrappedRow.contextKey !== bootstrapContextKey) {
185
+ return;
186
+ }
187
+ if (typeof rmm.getSnapshot === 'function' && rmm.getSnapshot().confirmedData !== null) {
188
+ return;
189
+ }
190
+ if (typeof rmm.setInitialState === 'function') {
191
+ const row = bootstrappedRow.row;
192
+ rmm.setInitialState(row, row._version ?? 0, row._field_meta);
193
+ }
194
+ }, [bootstrapContextKey, bootstrappedRow, rmm]);
195
+ const execute = useCallback(async (requestData) => {
196
+ setIsExecuting(true);
197
+ try {
198
+ let result;
199
+ if (isSingleRowUpdateLike && (rmm || !acceptsDirectLane)) {
200
+ if (!rmm) {
201
+ throw new MissingRMMRuntimeError({
202
+ surfaceName: 'useOperationDirectExecution',
203
+ resourceType,
204
+ operationIdentifier: String(operation.operationIdentifier),
205
+ });
206
+ }
207
+ // No optimistic patch: the body is the OPERATION's input, not a set of resource fields, and a
208
+ // custom operation's input names need not be the row's. The row is read back on success.
209
+ const mutationResult = await rmm.queueMutation({}, {
210
+ type: MutationType.CUSTOM,
211
+ priority: MutationPriority.HIGH,
212
+ source: {
213
+ type: MutationSourceType.CUSTOM,
214
+ subscriberId: `direct-execution:${String(operation.operationIdentifier)}`,
215
+ },
216
+ transportOverride: {
217
+ operationPathKey: ResourcesConfig_OperationPathUtils.createOperationPathKeyFromOperation(operation),
218
+ contextualParameters,
219
+ parentResourcesRequirements: currentResourceContext.parentResourcesRequirements,
220
+ requestData: requestData ?? {},
221
+ readBackOnSuccess: true,
222
+ },
223
+ });
224
+ if (!mutationResult.success) {
225
+ throw mutationErrorForReport(mutationResult.error, executionFailedLabel);
226
+ }
227
+ result = mutationResult.responseData;
228
+ }
229
+ else if (isSingleRowUpdateLike) {
230
+ /*
231
+ * No RMM and the direct lane declared, still for ONE row: sent with the parameters this hook resolved, which carry the
232
+ * bootstrapped id when the route had none. `executeCurrentOperation` builds its parameters from the
233
+ * route alone, so from a detail-less context (a singleton, a bulk bar) it would address `{id}`
234
+ * unresolved. With no id at all the operation has no row to act on, and says so instead of sending.
235
+ */
236
+ if (!currentResourceId) {
237
+ throw new Error(`${String(operation.operationIdentifier)} on ${resourceType} has no row to act on: no id on the route and none from its canonical READ.`);
238
+ }
239
+ result = await doOperationRef.current(ResourcesConfig_OperationPathUtils.createOperationPathKeyFromOperation(operation), {
240
+ contextualParameters,
241
+ parentResourcesRequirements: currentResourceContext.parentResourcesRequirements,
242
+ requestData: requestData ?? {},
243
+ });
244
+ }
245
+ else {
246
+ result = await executeCurrentOperation(requestData);
247
+ }
248
+ handleSuccess(result);
249
+ }
250
+ catch (error) {
251
+ handleError(error instanceof Error ? error : new Error(executionFailedLabel));
252
+ }
253
+ finally {
254
+ setIsExecuting(false);
255
+ }
256
+ }, [
257
+ contextualParameters,
258
+ currentResourceContext.parentResourcesRequirements,
259
+ executeCurrentOperation,
260
+ handleError,
261
+ handleSuccess,
262
+ acceptsDirectLane,
263
+ isSingleRowUpdateLike,
264
+ currentResourceId,
265
+ operation,
266
+ resourceType,
267
+ rmm,
268
+ executionFailedLabel,
269
+ ]);
270
+ return {
271
+ execute,
272
+ isExecuting,
273
+ isBootstrapping,
274
+ completeWithSuccess: handleSuccess,
275
+ reportFailure: handleError,
276
+ };
277
+ }
278
+ //# sourceMappingURL=useOperationDirectExecution.js.map