@marinoscar/platform-web 0.1.0-next.19 → 0.1.0-next.21

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 (174) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +5 -3
  3. package/dist/alerts/headless/client.d.ts +134 -0
  4. package/dist/alerts/headless/client.d.ts.map +1 -0
  5. package/dist/alerts/headless/client.js +105 -0
  6. package/dist/alerts/headless/client.js.map +1 -0
  7. package/dist/alerts/headless/format.d.ts +95 -0
  8. package/dist/alerts/headless/format.d.ts.map +1 -0
  9. package/dist/alerts/headless/format.js +164 -0
  10. package/dist/alerts/headless/format.js.map +1 -0
  11. package/dist/alerts/headless/hooks.d.ts +245 -0
  12. package/dist/alerts/headless/hooks.d.ts.map +1 -0
  13. package/dist/alerts/headless/hooks.js +315 -0
  14. package/dist/alerts/headless/hooks.js.map +1 -0
  15. package/dist/alerts/headless/index.d.ts +9 -0
  16. package/dist/alerts/headless/index.d.ts.map +1 -0
  17. package/dist/alerts/headless/index.js +9 -0
  18. package/dist/alerts/headless/index.js.map +1 -0
  19. package/dist/alerts/headless/rule-draft.d.ts +175 -0
  20. package/dist/alerts/headless/rule-draft.d.ts.map +1 -0
  21. package/dist/alerts/headless/rule-draft.js +261 -0
  22. package/dist/alerts/headless/rule-draft.js.map +1 -0
  23. package/dist/alerts/ui/AlertIncidentDrawer.d.ts +30 -0
  24. package/dist/alerts/ui/AlertIncidentDrawer.d.ts.map +1 -0
  25. package/dist/alerts/ui/AlertIncidentDrawer.js +33 -0
  26. package/dist/alerts/ui/AlertIncidentDrawer.js.map +1 -0
  27. package/dist/alerts/ui/AlertRuleDialog.d.ts +47 -0
  28. package/dist/alerts/ui/AlertRuleDialog.d.ts.map +1 -0
  29. package/dist/alerts/ui/AlertRuleDialog.js +124 -0
  30. package/dist/alerts/ui/AlertRuleDialog.js.map +1 -0
  31. package/dist/alerts/ui/AlertRuleTestResult.d.ts +23 -0
  32. package/dist/alerts/ui/AlertRuleTestResult.d.ts.map +1 -0
  33. package/dist/alerts/ui/AlertRuleTestResult.js +30 -0
  34. package/dist/alerts/ui/AlertRuleTestResult.js.map +1 -0
  35. package/dist/alerts/ui/AlertsPage.d.ts +41 -0
  36. package/dist/alerts/ui/AlertsPage.d.ts.map +1 -0
  37. package/dist/alerts/ui/AlertsPage.js +238 -0
  38. package/dist/alerts/ui/AlertsPage.js.map +1 -0
  39. package/dist/alerts/ui/FiringAlertsBanner.d.ts +28 -0
  40. package/dist/alerts/ui/FiringAlertsBanner.d.ts.map +1 -0
  41. package/dist/alerts/ui/FiringAlertsBanner.js +45 -0
  42. package/dist/alerts/ui/FiringAlertsBanner.js.map +1 -0
  43. package/dist/alerts/ui/copy.d.ts +15 -0
  44. package/dist/alerts/ui/copy.d.ts.map +1 -0
  45. package/dist/alerts/ui/copy.js +14 -0
  46. package/dist/alerts/ui/copy.js.map +1 -0
  47. package/dist/alerts/ui/index.d.ts +14 -0
  48. package/dist/alerts/ui/index.d.ts.map +1 -0
  49. package/dist/alerts/ui/index.js +12 -0
  50. package/dist/alerts/ui/index.js.map +1 -0
  51. package/dist/alerts/ui/parts.d.ts +26 -0
  52. package/dist/alerts/ui/parts.d.ts.map +1 -0
  53. package/dist/alerts/ui/parts.js +27 -0
  54. package/dist/alerts/ui/parts.js.map +1 -0
  55. package/dist/alerts/ui/settings.d.ts +27 -0
  56. package/dist/alerts/ui/settings.d.ts.map +1 -0
  57. package/dist/alerts/ui/settings.js +37 -0
  58. package/dist/alerts/ui/settings.js.map +1 -0
  59. package/dist/nodes/headless/api.d.ts +3 -1
  60. package/dist/nodes/headless/api.d.ts.map +1 -1
  61. package/dist/nodes/headless/api.js +22 -0
  62. package/dist/nodes/headless/api.js.map +1 -1
  63. package/dist/nodes/headless/index.d.ts +7 -2
  64. package/dist/nodes/headless/index.d.ts.map +1 -1
  65. package/dist/nodes/headless/index.js +4 -1
  66. package/dist/nodes/headless/index.js.map +1 -1
  67. package/dist/nodes/headless/node-events.d.ts +43 -0
  68. package/dist/nodes/headless/node-events.d.ts.map +1 -0
  69. package/dist/nodes/headless/node-events.js +150 -0
  70. package/dist/nodes/headless/node-events.js.map +1 -0
  71. package/dist/nodes/headless/power.d.ts +43 -0
  72. package/dist/nodes/headless/power.d.ts.map +1 -0
  73. package/dist/nodes/headless/power.js +74 -0
  74. package/dist/nodes/headless/power.js.map +1 -0
  75. package/dist/nodes/headless/types.d.ts +40 -3
  76. package/dist/nodes/headless/types.d.ts.map +1 -1
  77. package/dist/nodes/headless/types.js +1 -1
  78. package/dist/nodes/headless/types.js.map +1 -1
  79. package/dist/nodes/headless/use-node-events.d.ts +59 -0
  80. package/dist/nodes/headless/use-node-events.d.ts.map +1 -0
  81. package/dist/nodes/headless/use-node-events.js +159 -0
  82. package/dist/nodes/headless/use-node-events.js.map +1 -0
  83. package/dist/nodes/ui/NodeEventsTimeline.d.ts +39 -0
  84. package/dist/nodes/ui/NodeEventsTimeline.d.ts.map +1 -0
  85. package/dist/nodes/ui/NodeEventsTimeline.js +63 -0
  86. package/dist/nodes/ui/NodeEventsTimeline.js.map +1 -0
  87. package/dist/nodes/ui/NodePowerBadge.d.ts +27 -0
  88. package/dist/nodes/ui/NodePowerBadge.d.ts.map +1 -0
  89. package/dist/nodes/ui/NodePowerBadge.js +48 -0
  90. package/dist/nodes/ui/NodePowerBadge.js.map +1 -0
  91. package/dist/nodes/ui/NodeVitalsDialog.d.ts +11 -1
  92. package/dist/nodes/ui/NodeVitalsDialog.d.ts.map +1 -1
  93. package/dist/nodes/ui/NodeVitalsDialog.js +14 -5
  94. package/dist/nodes/ui/NodeVitalsDialog.js.map +1 -1
  95. package/dist/nodes/ui/WorkersPage.d.ts.map +1 -1
  96. package/dist/nodes/ui/WorkersPage.js +2 -1
  97. package/dist/nodes/ui/WorkersPage.js.map +1 -1
  98. package/dist/nodes/ui/workerVitals.d.ts +17 -1
  99. package/dist/nodes/ui/workerVitals.d.ts.map +1 -1
  100. package/dist/nodes/ui/workerVitals.js +43 -0
  101. package/dist/nodes/ui/workerVitals.js.map +1 -1
  102. package/dist/nodes/ui/workersTable.d.ts.map +1 -1
  103. package/dist/nodes/ui/workersTable.js +2 -1
  104. package/dist/nodes/ui/workersTable.js.map +1 -1
  105. package/dist/telemetry/headless/hooks/useTelemetryDashboard.d.ts +1 -1
  106. package/dist/telemetry/ui/components/dashboard/metrics/MetricSections.d.ts +11 -0
  107. package/dist/telemetry/ui/components/dashboard/metrics/MetricSections.d.ts.map +1 -1
  108. package/dist/telemetry/ui/components/dashboard/metrics/MetricSections.js +17 -2
  109. package/dist/telemetry/ui/components/dashboard/metrics/MetricSections.js.map +1 -1
  110. package/dist/webhooks/headless/client.d.ts +101 -0
  111. package/dist/webhooks/headless/client.d.ts.map +1 -0
  112. package/dist/webhooks/headless/client.js +105 -0
  113. package/dist/webhooks/headless/client.js.map +1 -0
  114. package/dist/webhooks/headless/event-selection.d.ts +119 -0
  115. package/dist/webhooks/headless/event-selection.d.ts.map +1 -0
  116. package/dist/webhooks/headless/event-selection.js +225 -0
  117. package/dist/webhooks/headless/event-selection.js.map +1 -0
  118. package/dist/webhooks/headless/format.d.ts +84 -0
  119. package/dist/webhooks/headless/format.d.ts.map +1 -0
  120. package/dist/webhooks/headless/format.js +142 -0
  121. package/dist/webhooks/headless/format.js.map +1 -0
  122. package/dist/webhooks/headless/hooks.d.ts +199 -0
  123. package/dist/webhooks/headless/hooks.d.ts.map +1 -0
  124. package/dist/webhooks/headless/hooks.js +249 -0
  125. package/dist/webhooks/headless/hooks.js.map +1 -0
  126. package/dist/webhooks/headless/index.d.ts +9 -0
  127. package/dist/webhooks/headless/index.d.ts.map +1 -0
  128. package/dist/webhooks/headless/index.js +9 -0
  129. package/dist/webhooks/headless/index.js.map +1 -0
  130. package/dist/webhooks/ui/WebhookDeliveryDrawer.d.ts +32 -0
  131. package/dist/webhooks/ui/WebhookDeliveryDrawer.d.ts.map +1 -0
  132. package/dist/webhooks/ui/WebhookDeliveryDrawer.js +64 -0
  133. package/dist/webhooks/ui/WebhookDeliveryDrawer.js.map +1 -0
  134. package/dist/webhooks/ui/WebhookEndpointDetail.d.ts +21 -0
  135. package/dist/webhooks/ui/WebhookEndpointDetail.d.ts.map +1 -0
  136. package/dist/webhooks/ui/WebhookEndpointDetail.js +96 -0
  137. package/dist/webhooks/ui/WebhookEndpointDetail.js.map +1 -0
  138. package/dist/webhooks/ui/WebhookEndpointDialog.d.ts +39 -0
  139. package/dist/webhooks/ui/WebhookEndpointDialog.d.ts.map +1 -0
  140. package/dist/webhooks/ui/WebhookEndpointDialog.js +79 -0
  141. package/dist/webhooks/ui/WebhookEndpointDialog.js.map +1 -0
  142. package/dist/webhooks/ui/WebhookEventPicker.d.ts +30 -0
  143. package/dist/webhooks/ui/WebhookEventPicker.d.ts.map +1 -0
  144. package/dist/webhooks/ui/WebhookEventPicker.js +33 -0
  145. package/dist/webhooks/ui/WebhookEventPicker.js.map +1 -0
  146. package/dist/webhooks/ui/WebhookSecretDialog.d.ts +27 -0
  147. package/dist/webhooks/ui/WebhookSecretDialog.d.ts.map +1 -0
  148. package/dist/webhooks/ui/WebhookSecretDialog.js +52 -0
  149. package/dist/webhooks/ui/WebhookSecretDialog.js.map +1 -0
  150. package/dist/webhooks/ui/WebhookSignatureHelp.d.ts +18 -0
  151. package/dist/webhooks/ui/WebhookSignatureHelp.d.ts.map +1 -0
  152. package/dist/webhooks/ui/WebhookSignatureHelp.js +40 -0
  153. package/dist/webhooks/ui/WebhookSignatureHelp.js.map +1 -0
  154. package/dist/webhooks/ui/WebhooksPage.d.ts +47 -0
  155. package/dist/webhooks/ui/WebhooksPage.d.ts.map +1 -0
  156. package/dist/webhooks/ui/WebhooksPage.js +172 -0
  157. package/dist/webhooks/ui/WebhooksPage.js.map +1 -0
  158. package/dist/webhooks/ui/copy.d.ts +24 -0
  159. package/dist/webhooks/ui/copy.d.ts.map +1 -0
  160. package/dist/webhooks/ui/copy.js +34 -0
  161. package/dist/webhooks/ui/copy.js.map +1 -0
  162. package/dist/webhooks/ui/index.d.ts +15 -0
  163. package/dist/webhooks/ui/index.d.ts.map +1 -0
  164. package/dist/webhooks/ui/index.js +12 -0
  165. package/dist/webhooks/ui/index.js.map +1 -0
  166. package/dist/webhooks/ui/parts.d.ts +25 -0
  167. package/dist/webhooks/ui/parts.d.ts.map +1 -0
  168. package/dist/webhooks/ui/parts.js +28 -0
  169. package/dist/webhooks/ui/parts.js.map +1 -0
  170. package/dist/webhooks/ui/settings.d.ts +58 -0
  171. package/dist/webhooks/ui/settings.d.ts.map +1 -0
  172. package/dist/webhooks/ui/settings.js +79 -0
  173. package/dist/webhooks/ui/settings.js.map +1 -0
  174. package/package.json +18 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/webhooks/headless/hooks.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,4EAA4E;AAC5E,gFAAgF;AAChF,EAAE;AACF,8EAA8E;AAC9E,+EAA+E;AAC/E,4DAA4D;AAC5D,gFAAgF;AAEhF,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAc7E,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAiD,MAAM,aAAa,CAAC;AAC/F,OAAO,EAAE,wBAAwB,EAA0B,MAAM,sBAAsB,CAAC;AAExF,MAAM,aAAa,GAAqC;IACtD,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,EAAE,yCAAyC;IAClF,CAAC,mBAAmB,CAAC,0BAA0B,CAAC,EAAE,iCAAiC;IACnF,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,EAAE,6BAA6B;IACxE,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,EACzC,gFAAgF;IAClF,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,EAAE,4CAA4C;IACzF,CAAC,mBAAmB,CAAC,2BAA2B,CAAC,EAAE,qDAAqD;IACxG,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,EAAE,2DAA2D;CACzG,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAc,EAAE,QAAgB;IAClE,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,OAAO,aAAa,CAAC,KAAK,CAAC,IAAI,CAAE,CAAC;QACnG,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,KAAK,EAAE;YAAE,OAAO,KAAK,CAAC,OAAO,CAAC;IACtF,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,UAAU;IACjB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7B,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;QACvB,OAAO,GAAG,EAAE;YACV,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC;QAC1B,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,OAAO,WAAW,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,SAAS,OAAO,CAAI,IAA+B,EAAE,QAAgB;IACnE,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAW,IAAI,CAAC,CAAC;IACjD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAC1D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACxD,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAEtB,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACrC,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,MAAM,MAAM,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC;QAC7B,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,EAAE,CAAC;YAC1B,IAAI,CAAC,OAAO,EAAE,IAAI,MAAM,KAAK,GAAG,CAAC,OAAO;gBAAE,OAAO;YACjD,OAAO,CAAC,IAAI,CAAC,CAAC;YACd,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,OAAO,EAAE,IAAI,MAAM,KAAK,GAAG,CAAC,OAAO;gBAAE,QAAQ,CAAC,mBAAmB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;QACxF,CAAC;gBAAS,CAAC;YACT,IAAI,OAAO,EAAE,IAAI,MAAM,KAAK,GAAG,CAAC,OAAO;gBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IAE9B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,CAAC;YACd,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,QAAQ,CAAC,IAAI,CAAC,CAAC;YACf,OAAO;QACT,CAAC;QACD,KAAK,OAAO,EAAE,CAAC;IACjB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAEpB,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC7C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,KAAmB;IAChD,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;IAC7B,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AACpE,CAAC;AAkBD;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAmB;IACrD,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACxD,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,uCAAuC,CAAC,CAAC;IACnG,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AACrE,CAAC;AAkBD;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAmB,EAAE,EAAiB;IACvE,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IAC7E,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,sCAAsC,CAAC,CAAC;IAClG,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AACvD,CAAC;AAsBD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAmB,EACnB,UAAyB,EACzB,QAAgC,EAAE;IAElC,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IACnD,MAAM,IAAI,GAAG,OAAO,CAClB,GAAG,EAAE,CACH,UAAU;QACR,CAAC,CAAC,GAAG,EAAE,CACH,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE;YAChC,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;YACvC,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;YAC/C,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAClC,CAAC;QACN,CAAC,CAAC,IAAI,EACV,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CACvD,CAAC;IACF,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,gCAAgC,CAAC,CAAC;IAC5F,OAAO;QACL,UAAU,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE;QAC7B,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;QACvB,UAAU,EAAE,IAAI,EAAE,UAAU,IAAI,CAAC;QACjC,SAAS;QACT,KAAK;QACL,OAAO;KACR,CAAC;AACJ,CAAC;AAkBD;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAmB,EAAE,UAAyB;IAC/E,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IAC7G,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,8BAA8B,CAAC,CAAC;IAC1F,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AACvD,CAAC;AAkBD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAmB,EAAE,UAAiC,EAAE;IAC7F,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC;IACxC,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC9F,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,sCAAsC,CAAC,CAAC;IACzF,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,wBAAwB,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3E,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAC/C,CAAC;AA6BD;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAmB;IACrD,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACpD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAExD,MAAM,GAAG,GAAG,WAAW,CACrB,KAAK,EAAM,IAAsB,EAAE,QAAgB,EAAqB,EAAE;QACxE,eAAe,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACtC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,EAAE,CAAC;QACtB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,OAAO,EAAE;gBAAE,QAAQ,CAAC,mBAAmB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC5D,OAAO,IAAI,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,IAAI,OAAO,EAAE;gBAAE,eAAe,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACvD,CAAC;IACH,CAAC,EACD,CAAC,OAAO,CAAC,CACV,CAAC;IAEF,OAAO;QACL,MAAM,EAAE,WAAW,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,oCAAoC,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACpH,MAAM,EAAE,WAAW,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,kCAAkC,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC1H,MAAM,EAAE,WAAW,CACjB,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,oCAAoC,CAAC,CAAC,KAAK,IAAI,EACrH,CAAC,MAAM,EAAE,GAAG,CAAC,CACd;QACD,YAAY,EAAE,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,kCAAkC,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACxH,QAAQ,EAAE,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,mCAAmC,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACjH,SAAS,EAAE,WAAW,CACpB,KAAK,EAAE,UAAU,EAAE,EAAE,CACnB,CAAC,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,EAAE,yCAAyC,CAAC,CAAC,KAAK,IAAI,EACzH,CAAC,MAAM,EAAE,GAAG,CAAC,CACd;QACD,OAAO,EAAE,YAAY,GAAG,CAAC;QACzB,KAAK;QACL,KAAK,EAAE,WAAW,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;KAC7C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ export { WEBHOOK_SCOPE_BASE_PATHS, WEBHOOK_SCOPE_PERMISSIONS, createWebhooksApi, webhooksBasePath, } from './client.js';
2
+ export type { WebhookDeliveriesQuery, WebhooksApi } from './client.js';
3
+ export { WEBHOOK_ALL_EVENTS, groupWebhookEventCatalog, isWebhookEventSelected, searchWebhookEventGroups, toggleAllWebhookEvents, toggleWebhookEvent, toggleWebhookGroup, unknownWebhookSubscriptions, webhookEntryCovers, webhookGroupSelectionState, } from './event-selection.js';
4
+ export type { WebhookEventGroup } from './event-selection.js';
5
+ export { WEBHOOK_DISABLED_REASON_LABELS, formatWebhookDuration, isHttpsWebhookUrl, webhookDeliveryStatusLabel, webhookDeliveryStatusTone, webhookEndpointStatus, webhookUrlHost, } from './format.js';
6
+ export type { WebhookEndpointStatus, WebhookStatusTone } from './format.js';
7
+ export { useWebhookDeliveries, useWebhookDelivery, useWebhookEndpoint, useWebhookEndpoints, useWebhookEventCatalog, useWebhookMutations, useWebhooksApi, webhookErrorMessage, } from './hooks.js';
8
+ export type { WebhookDeliveriesState, WebhookDeliveryState, WebhookEndpointState, WebhookEndpointsState, WebhookEventCatalogState, WebhookMutations, } from './hooks.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/webhooks/headless/index.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAClB,2BAA2B,EAC3B,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EACL,8BAA8B,EAC9B,qBAAqB,EACrB,iBAAiB,EACjB,0BAA0B,EAC1B,yBAAyB,EACzB,qBAAqB,EACrB,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,cAAc,EACd,mBAAmB,GACpB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,9 @@
1
+ // `@marinoscar/platform-web/webhooks/headless`: the webhooks client, hooks and
2
+ // pure helpers (issue #1046): endpoints, deliveries and the event catalog of
3
+ // one scope (`user`, `org`, `system`), the event picker's model and status in
4
+ // words. No UI. Documented in ../README.md.
5
+ export { WEBHOOK_SCOPE_BASE_PATHS, WEBHOOK_SCOPE_PERMISSIONS, createWebhooksApi, webhooksBasePath, } from './client.js';
6
+ export { WEBHOOK_ALL_EVENTS, groupWebhookEventCatalog, isWebhookEventSelected, searchWebhookEventGroups, toggleAllWebhookEvents, toggleWebhookEvent, toggleWebhookGroup, unknownWebhookSubscriptions, webhookEntryCovers, webhookGroupSelectionState, } from './event-selection.js';
7
+ export { WEBHOOK_DISABLED_REASON_LABELS, formatWebhookDuration, isHttpsWebhookUrl, webhookDeliveryStatusLabel, webhookDeliveryStatusTone, webhookEndpointStatus, webhookUrlHost, } from './format.js';
8
+ export { useWebhookDeliveries, useWebhookDelivery, useWebhookEndpoint, useWebhookEndpoints, useWebhookEventCatalog, useWebhookMutations, useWebhooksApi, webhookErrorMessage, } from './hooks.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/webhooks/headless/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,6EAA6E;AAC7E,8EAA8E;AAC9E,4CAA4C;AAE5C,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAClB,2BAA2B,EAC3B,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,8BAA8B,EAC9B,qBAAqB,EACrB,iBAAiB,EACjB,0BAA0B,EAC1B,yBAAyB,EACzB,qBAAqB,EACrB,cAAc,GACf,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,cAAc,EACd,mBAAmB,GACpB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,32 @@
1
+ import type { ReactElement } from 'react';
2
+ import type { WebhookDeliveryDetail, WebhookScope } from '@marinoscar/platform-contract/webhooks';
3
+ /**
4
+ * The props of {@link WebhookDeliveryDrawer}.
5
+ *
6
+ * @stability experimental
7
+ */
8
+ export interface WebhookDeliveryDrawerProps {
9
+ /** The scope whose routes to read. */
10
+ scope: WebhookScope;
11
+ /** The delivery to show; `null` closes the drawer. */
12
+ deliveryId: string | null;
13
+ /** Whether to offer Redeliver (the viewer holds the scope's write permission). */
14
+ canWrite: boolean;
15
+ /** Queues the delivery again; resolves `true` on success. */
16
+ onRedeliver: (delivery: WebhookDeliveryDetail) => Promise<boolean>;
17
+ /** Whether a redelivery is in flight. */
18
+ redelivering?: boolean;
19
+ /** Closes the drawer. */
20
+ onClose: () => void;
21
+ }
22
+ /**
23
+ * The delivery detail drawer.
24
+ *
25
+ * @param props - see {@link WebhookDeliveryDrawerProps}.
26
+ * @returns the drawer.
27
+ *
28
+ * @extensionPoint component
29
+ * @stability experimental
30
+ */
31
+ export declare function WebhookDeliveryDrawer({ scope, deliveryId, canWrite, onRedeliver, redelivering, onClose, }: WebhookDeliveryDrawerProps): ReactElement;
32
+ //# sourceMappingURL=WebhookDeliveryDrawer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebhookDeliveryDrawer.d.ts","sourceRoot":"","sources":["../../../src/webhooks/ui/WebhookDeliveryDrawer.tsx"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,OAAO,CAAC;AAErD,OAAO,KAAK,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAMlG;;;;GAIG;AACH,MAAM,WAAW,0BAA0B;IACzC,sCAAsC;IACtC,KAAK,EAAE,YAAY,CAAC;IACpB,sDAAsD;IACtD,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,kFAAkF;IAClF,QAAQ,EAAE,OAAO,CAAC;IAClB,6DAA6D;IAC7D,WAAW,EAAE,CAAC,QAAQ,EAAE,qBAAqB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACnE,yCAAyC;IACzC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,yBAAyB;IACzB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AA+CD;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,KAAK,EACL,UAAU,EACV,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,OAAO,GACR,EAAE,0BAA0B,GAAG,YAAY,CAmH3C"}
@@ -0,0 +1,64 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ // =============================================================================
3
+ // One delivery in detail (issue #1046): what was sent, what came back
4
+ // =============================================================================
5
+ //
6
+ // The body exactly as sent (pretty-printed), the request headers (the API
7
+ // never returns the signature), the response's first KiB, and Redeliver for a
8
+ // viewer holding the scope's write permission.
9
+ // =============================================================================
10
+ import CloseIcon from '@mui/icons-material/Close';
11
+ import ReplayIcon from '@mui/icons-material/Replay';
12
+ import { Alert, Box, Button, Divider, Drawer, IconButton, Skeleton, Stack, Table, TableBody, TableCell, TableRow, Typography, } from '@mui/material';
13
+ import { useDisplayTimeZone } from '../../core/index.js';
14
+ import { formatWebhookDuration, useWebhookDelivery } from '../headless/index.js';
15
+ import { DeliveryStatusChip, when } from './parts.js';
16
+ function pretty(value) {
17
+ if (typeof value === 'string') {
18
+ try {
19
+ return JSON.stringify(JSON.parse(value), null, 2);
20
+ }
21
+ catch {
22
+ return value;
23
+ }
24
+ }
25
+ return JSON.stringify(value, null, 2) ?? '';
26
+ }
27
+ function Code({ label, children }) {
28
+ return (_jsx(Box, { component: "pre", "aria-label": label, tabIndex: 0, sx: {
29
+ m: 0,
30
+ p: 1.5,
31
+ bgcolor: 'action.hover',
32
+ borderRadius: 1,
33
+ fontFamily: 'monospace',
34
+ fontSize: 13,
35
+ overflowX: 'auto',
36
+ whiteSpace: 'pre',
37
+ maxHeight: 320,
38
+ }, children: children }));
39
+ }
40
+ function Row({ label, children }) {
41
+ return (_jsxs(TableRow, { children: [_jsx(TableCell, { component: "th", scope: "row", sx: { fontWeight: 600, width: '40%', pl: 0 }, children: label }), _jsx(TableCell, { sx: { pr: 0, wordBreak: 'break-word' }, children: children })] }));
42
+ }
43
+ /**
44
+ * The delivery detail drawer.
45
+ *
46
+ * @param props - see {@link WebhookDeliveryDrawerProps}.
47
+ * @returns the drawer.
48
+ *
49
+ * @extensionPoint component
50
+ * @stability experimental
51
+ */
52
+ export function WebhookDeliveryDrawer({ scope, deliveryId, canWrite, onRedeliver, redelivering, onClose, }) {
53
+ useDisplayTimeZone();
54
+ const { delivery, isLoading, error, refresh } = useWebhookDelivery(scope, deliveryId);
55
+ const headers = delivery ? Object.entries(delivery.requestHeaders) : [];
56
+ const redeliver = async () => {
57
+ if (!delivery)
58
+ return;
59
+ if (await onRedeliver(delivery))
60
+ await refresh();
61
+ };
62
+ return (_jsx(Drawer, { anchor: "right", open: deliveryId !== null, onClose: onClose, slotProps: { paper: { sx: { width: { xs: '100%', sm: 560 } }, role: 'dialog', 'aria-label': 'Delivery details' } }, children: _jsxs(Box, { sx: { p: 2 }, children: [_jsxs(Stack, { direction: "row", spacing: 1, sx: { mb: 2, alignItems: 'center' }, children: [_jsx(Typography, { variant: "h6", component: "h2", sx: { flexGrow: 1 }, children: "Delivery" }), _jsx(IconButton, { onClick: onClose, "aria-label": "Close delivery details", sx: { width: 44, height: 44 }, children: _jsx(CloseIcon, {}) })] }), error ? _jsx(Alert, { severity: "error", children: error }) : null, isLoading && !delivery ? (_jsxs(Stack, { spacing: 1, "aria-label": "Loading the delivery", children: [_jsx(Skeleton, { variant: "rounded", height: 32 }), _jsx(Skeleton, { variant: "rounded", height: 160 })] })) : null, delivery ? (_jsxs(Stack, { spacing: 2, children: [_jsx(Table, { size: "small", "aria-label": "Delivery summary", children: _jsxs(TableBody, { children: [_jsx(Row, { label: "Status", children: _jsx(DeliveryStatusChip, { status: delivery.status }) }), _jsx(Row, { label: "Event", children: _jsx(Box, { component: "span", sx: { fontFamily: 'monospace' }, children: delivery.eventKey }) }), _jsx(Row, { label: "Event id", children: _jsx(Box, { component: "span", sx: { fontFamily: 'monospace' }, children: delivery.eventId }) }), _jsx(Row, { label: "Created", children: when(delivery.createdAt) }), _jsx(Row, { label: "Attempt", children: delivery.attempt }), _jsx(Row, { label: "HTTP status", children: delivery.responseStatus ?? '—' }), _jsx(Row, { label: "Duration", children: formatWebhookDuration(delivery.durationMs) || '—' }), delivery.errorCode ? _jsx(Row, { label: "Error", children: delivery.errorCode }) : null, delivery.nextAttemptAt ? _jsx(Row, { label: "Next attempt", children: when(delivery.nextAttemptAt) }) : null, delivery.deliveredAt ? _jsx(Row, { label: "Delivered", children: when(delivery.deliveredAt) }) : null] }) }), canWrite ? (_jsx(Box, { children: _jsx(Button, { variant: "outlined", startIcon: _jsx(ReplayIcon, {}), onClick: () => void redeliver(), disabled: redelivering, sx: { minHeight: 44 }, children: "Redeliver" }) })) : null, _jsx(Divider, {}), _jsx(Typography, { variant: "subtitle1", component: "h3", children: "Payload" }), _jsx(Code, { label: "Payload", children: pretty(delivery.payload) }), _jsx(Typography, { variant: "subtitle1", component: "h3", children: "Request headers" }), headers.length === 0 ? (_jsx(Typography, { variant: "body2", color: "text.secondary", children: "None recorded." })) : (_jsx(Table, { size: "small", "aria-label": "Request headers", children: _jsx(TableBody, { children: headers.map(([name, value]) => (_jsx(Row, { label: name, children: _jsx(Box, { component: "span", sx: { fontFamily: 'monospace' }, children: value }) }, name))) }) })), _jsx(Typography, { variant: "body2", color: "text.secondary", children: "The signature header is never shown here." }), _jsx(Typography, { variant: "subtitle1", component: "h3", children: "Response" }), delivery.responseSnippet ? (_jsx(Code, { label: "Response", children: delivery.responseSnippet })) : (_jsx(Typography, { variant: "body2", color: "text.secondary", children: "No response body recorded." }))] })) : null] }) }));
63
+ }
64
+ //# sourceMappingURL=WebhookDeliveryDrawer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebhookDeliveryDrawer.js","sourceRoot":"","sources":["../../../src/webhooks/ui/WebhookDeliveryDrawer.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { type ReactElement } from 'react';
2
+ import type { WebhookDelivery, WebhookEndpoint, WebhookScope } from '@marinoscar/platform-contract/webhooks';
3
+ import { type TableSlots } from '../../core/index.js';
4
+ import { type DataTableColumn } from '../../datatable/index.js';
5
+ export interface WebhookEndpointDetailProps {
6
+ scope: WebhookScope;
7
+ endpoint: WebhookEndpoint;
8
+ canWrite: boolean;
9
+ busy: boolean;
10
+ /** Bumped by the page after a test or a redelivery, to reload the deliveries. */
11
+ reloadKey: number;
12
+ slots?: Pick<TableSlots<WebhookDelivery, DataTableColumn<WebhookDelivery>>, 'Columns' | 'RowActions' | 'DetailPanel' | 'Toolbar'>;
13
+ onBack: () => void;
14
+ onEdit: () => void;
15
+ onSendTest: () => void;
16
+ onRotate: () => void;
17
+ onDelete: () => void;
18
+ onOpenDelivery: (delivery: WebhookDelivery) => void;
19
+ }
20
+ export declare function WebhookEndpointDetail({ scope, endpoint, canWrite, busy, reloadKey, slots, onBack, onEdit, onSendTest, onRotate, onDelete, onOpenDelivery, }: WebhookEndpointDetailProps): ReactElement;
21
+ //# sourceMappingURL=WebhookEndpointDetail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebhookEndpointDetail.d.ts","sourceRoot":"","sources":["../../../src/webhooks/ui/WebhookEndpointDetail.tsx"],"names":[],"mappings":"AA+BA,OAAO,EAAwC,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAGhF,OAAO,KAAK,EACV,eAAe,EAEf,eAAe,EACf,YAAY,EACb,MAAM,wCAAwC,CAAC;AAEhD,OAAO,EAA2C,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC/F,OAAO,EAAa,KAAK,eAAe,EAA2B,MAAM,0BAA0B,CAAC;AAUpG,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,eAAe,CAAC;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,iFAAiF;IACjF,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,eAAe,CAAC,eAAe,CAAC,CAAC,EAAE,SAAS,GAAG,YAAY,GAAG,aAAa,GAAG,SAAS,CAAC,CAAC;IAClI,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,cAAc,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,IAAI,CAAC;CACrD;AAED,wBAAgB,qBAAqB,CAAC,EACpC,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,KAAK,EACL,MAAM,EACN,MAAM,EACN,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,cAAc,GACf,EAAE,0BAA0B,GAAG,YAAY,CAuN3C"}
@@ -0,0 +1,96 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ // =============================================================================
3
+ // One endpoint (issue #1046): its settings, its actions and its deliveries
4
+ // =============================================================================
5
+ //
6
+ // Internal to `WebhooksPage`, which owns the writes and the dialogs: this view
7
+ // draws the endpoint and the server-paginated deliveries table, and reports
8
+ // which action the user picked.
9
+ // =============================================================================
10
+ import ArrowBackIcon from '@mui/icons-material/ArrowBack';
11
+ import DeleteOutlineIcon from '@mui/icons-material/DeleteOutlined';
12
+ import EditOutlinedIcon from '@mui/icons-material/EditOutlined';
13
+ import KeyOutlinedIcon from '@mui/icons-material/KeyOutlined';
14
+ import RefreshIcon from '@mui/icons-material/Refresh';
15
+ import SendOutlinedIcon from '@mui/icons-material/SendOutlined';
16
+ import VisibilityOutlinedIcon from '@mui/icons-material/VisibilityOutlined';
17
+ import { Alert, Box, Button, Card, CardContent, Chip, FormControl, InputLabel, MenuItem, Select, Stack, TextField, Typography, } from '@mui/material';
18
+ import { useEffect, useMemo, useRef, useState } from 'react';
19
+ import { WEBHOOK_DELIVERIES_PAGE_SIZE_DEFAULT, WEBHOOK_DELIVERY_STATUSES } from '@marinoscar/platform-contract/webhooks';
20
+ import { useDisplayTimeZone, useTableSlotColumns } from '../../core/index.js';
21
+ import { DataTable } from '../../datatable/index.js';
22
+ import { WEBHOOK_ALL_EVENTS, formatWebhookDuration, useWebhookDeliveries, webhookDeliveryStatusLabel, webhookEndpointStatus, } from '../headless/index.js';
23
+ import { DeliveryStatusChip, EndpointStatusChip, when } from './parts.js';
24
+ export function WebhookEndpointDetail({ scope, endpoint, canWrite, busy, reloadKey, slots, onBack, onEdit, onSendTest, onRotate, onDelete, onOpenDelivery, }) {
25
+ useDisplayTimeZone();
26
+ const [page, setPage] = useState(0);
27
+ const [pageSize, setPageSize] = useState(WEBHOOK_DELIVERIES_PAGE_SIZE_DEFAULT);
28
+ const [status, setStatus] = useState('');
29
+ const [eventInput, setEventInput] = useState('');
30
+ const [eventKey, setEventKey] = useState('');
31
+ useEffect(() => {
32
+ const timer = setTimeout(() => {
33
+ setEventKey(eventInput.trim());
34
+ setPage(0);
35
+ }, 300);
36
+ return () => clearTimeout(timer);
37
+ }, [eventInput]);
38
+ const { deliveries, total, isLoading, error, refresh } = useWebhookDeliveries(scope, endpoint.id, {
39
+ page: page + 1,
40
+ pageSize,
41
+ ...(status ? { status } : {}),
42
+ ...(eventKey ? { eventKey } : {}),
43
+ });
44
+ // Only a bump of the key reloads; `refresh` changes with the filters, which reload on their own.
45
+ const refreshRef = useRef(refresh);
46
+ refreshRef.current = refresh;
47
+ useEffect(() => {
48
+ if (reloadKey > 0)
49
+ void refreshRef.current();
50
+ }, [reloadKey]);
51
+ const baseColumns = useMemo(() => [
52
+ { id: 'createdAt', label: 'Time', priority: 'primary', render: (row) => when(row.createdAt), value: (row) => row.createdAt },
53
+ {
54
+ id: 'eventKey',
55
+ label: 'Event',
56
+ priority: 'primary',
57
+ render: (row) => (_jsx(Box, { component: "span", sx: { fontFamily: 'monospace' }, children: row.eventKey })),
58
+ value: (row) => row.eventKey,
59
+ },
60
+ {
61
+ id: 'status',
62
+ label: 'Status',
63
+ priority: 'secondary',
64
+ render: (row) => _jsx(DeliveryStatusChip, { status: row.status }),
65
+ value: (row) => webhookDeliveryStatusLabel(row.status),
66
+ },
67
+ { id: 'responseStatus', label: 'HTTP status', priority: 'secondary', value: (row) => row.responseStatus ?? '—' },
68
+ {
69
+ id: 'durationMs',
70
+ label: 'Duration',
71
+ priority: 'detail',
72
+ value: (row) => formatWebhookDuration(row.durationMs) || '—',
73
+ },
74
+ { id: 'attempt', label: 'Attempt', priority: 'detail', value: (row) => row.attempt },
75
+ ], []);
76
+ const columns = useTableSlotColumns(baseColumns, slots);
77
+ const rowActions = useMemo(() => [{ id: 'view', label: 'View delivery', icon: _jsx(VisibilityOutlinedIcon, {}), onClick: onOpenDelivery }], [onOpenDelivery]);
78
+ const status_ = webhookEndpointStatus(endpoint);
79
+ const allEvents = endpoint.eventKeys.includes(WEBHOOK_ALL_EVENTS);
80
+ const Toolbar = slots?.Toolbar;
81
+ const rotationActive = endpoint.previousSecretUntil !== null && Date.parse(endpoint.previousSecretUntil) > Date.now();
82
+ return (_jsxs(Stack, { spacing: 2, children: [_jsx(Box, { children: _jsx(Button, { startIcon: _jsx(ArrowBackIcon, {}), onClick: onBack, sx: { minHeight: 44 }, children: "All endpoints" }) }), _jsx(Card, { variant: "outlined", children: _jsxs(CardContent, { children: [_jsxs(Stack, { direction: { xs: 'column', sm: 'row' }, spacing: 1, sx: { mb: 1, alignItems: { sm: 'center' } }, children: [_jsx(Typography, { variant: "h5", component: "h2", sx: { flexGrow: 1, wordBreak: 'break-word' }, children: endpoint.name }), _jsx(EndpointStatusChip, { endpoint: endpoint })] }), status_.hint ? (_jsx(Alert, { severity: status_.tone === 'error' ? 'error' : 'warning', sx: { mb: 2 }, children: status_.hint })) : null, _jsx(Typography, { variant: "body2", sx: { fontFamily: 'monospace', wordBreak: 'break-all' }, children: endpoint.url }), endpoint.description ? (_jsx(Typography, { variant: "body2", color: "text.secondary", sx: { mt: 1 }, children: endpoint.description })) : null, _jsx(Stack, { direction: "row", spacing: 1, useFlexGap: true, sx: { mt: 1.5, flexWrap: 'wrap' }, "aria-label": "Subscribed events", children: allEvents ? (_jsx(Chip, { size: "small", label: "All events" })) : (endpoint.eventKeys.map((key) => _jsx(Chip, { size: "small", label: key, sx: { fontFamily: 'monospace' } }, key))) }), _jsxs(Typography, { variant: "body2", color: "text.secondary", sx: { mt: 1.5 }, children: ["Last success: ", when(endpoint.lastSuccessAt), " \u00B7 Last delivery: ", when(endpoint.lastDeliveryAt), endpoint.consecutiveFailures > 0 ? ` · ${endpoint.consecutiveFailures} failures in a row` : ''] }), _jsxs(Typography, { variant: "body2", color: "text.secondary", children: ["Secret version ", endpoint.secretVersion, rotationActive ? ` · the previous secret is still accepted until ${when(endpoint.previousSecretUntil)}` : ''] }), canWrite ? (_jsxs(Stack, { direction: "row", spacing: 1, useFlexGap: true, sx: { mt: 2, flexWrap: 'wrap' }, children: [_jsx(Button, { variant: "contained", startIcon: _jsx(SendOutlinedIcon, {}), onClick: onSendTest, disabled: busy, sx: { minHeight: 44 }, children: "Send test event" }), _jsx(Button, { variant: "outlined", startIcon: _jsx(EditOutlinedIcon, {}), onClick: onEdit, disabled: busy, sx: { minHeight: 44 }, children: "Edit" }), _jsx(Button, { variant: "outlined", startIcon: _jsx(KeyOutlinedIcon, {}), onClick: onRotate, disabled: busy, sx: { minHeight: 44 }, children: "Rotate secret" }), _jsx(Button, { variant: "outlined", color: "error", startIcon: _jsx(DeleteOutlineIcon, {}), onClick: onDelete, disabled: busy, sx: { minHeight: 44 }, children: "Delete" })] })) : null] }) }), _jsx(Card, { variant: "outlined", children: _jsxs(CardContent, { children: [_jsxs(Stack, { direction: { xs: 'column', sm: 'row' }, spacing: 1, sx: { mb: 2, alignItems: { sm: 'center' } }, children: [_jsx(Typography, { variant: "h6", component: "h3", sx: { flexGrow: 1 }, children: "Deliveries" }), _jsx(Button, { startIcon: _jsx(RefreshIcon, {}), onClick: () => void refresh(), sx: { minHeight: 44 }, children: "Refresh" })] }), _jsxs(Stack, { direction: { xs: 'column', sm: 'row' }, spacing: 2, sx: { mb: 2 }, children: [_jsxs(FormControl, { size: "small", sx: { minWidth: 180 }, children: [_jsx(InputLabel, { id: "webhook-delivery-status-label", children: "Status" }), _jsxs(Select, { labelId: "webhook-delivery-status-label", label: "Status", value: status, onChange: (event) => {
83
+ setStatus(event.target.value);
84
+ setPage(0);
85
+ }, children: [_jsx(MenuItem, { value: "", children: "Any status" }), WEBHOOK_DELIVERY_STATUSES.map((value) => (_jsx(MenuItem, { value: value, children: webhookDeliveryStatusLabel(value) }, value)))] })] }), _jsx(TextField, { size: "small", label: "Event key", placeholder: "nodes.node.offline", value: eventInput, onChange: (event) => setEventInput(event.target.value) })] }), Toolbar ? _jsx(Toolbar, {}) : null, error ? (_jsx(Alert, { severity: "error", sx: { mb: 2 }, children: error })) : null, _jsx(DataTable, { tableId: `webhook-deliveries-${scope}`, ariaLabel: "Deliveries", columns: columns, rows: deliveries, rowId: (row) => row.id, loading: isLoading, rowActions: rowActions, emptyState: _jsxs(Typography, { variant: "body2", color: "text.secondary", sx: { p: 2 }, children: ["No deliveries yet.", canWrite ? ' Send a test event to try the endpoint.' : ''] }), pagination: {
86
+ page,
87
+ pageSize,
88
+ total,
89
+ pageSizeOptions: [10, 20, 50, 100],
90
+ onPaginationChange: (next) => {
91
+ setPage(next.page);
92
+ setPageSize(next.pageSize);
93
+ },
94
+ }, disableExport: true })] }) })] }));
95
+ }
96
+ //# sourceMappingURL=WebhookEndpointDetail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebhookEndpointDetail.js","sourceRoot":"","sources":["../../../src/webhooks/ui/WebhookEndpointDetail.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import { type ReactElement } from 'react';
2
+ import type { CreateWebhookEndpointInput, WebhookEndpoint } from '@marinoscar/platform-contract/webhooks';
3
+ import { type WebhookEventGroup } from '../headless/index.js';
4
+ /**
5
+ * The props of {@link WebhookEndpointDialog}.
6
+ *
7
+ * @stability experimental
8
+ */
9
+ export interface WebhookEndpointDialogProps {
10
+ /** Whether the dialog is open. */
11
+ open: boolean;
12
+ /** The endpoint to edit, or `null` to create one. */
13
+ endpoint: WebhookEndpoint | null;
14
+ /** The grouped event catalog. */
15
+ groups: readonly WebhookEventGroup[];
16
+ /** Whether the catalog is still loading. */
17
+ catalogLoading?: boolean;
18
+ /** A catalog load failure, in words. */
19
+ catalogError?: string | null;
20
+ /** Whether a save is in flight. */
21
+ saving?: boolean;
22
+ /** The API's refusal of the last save, in words. */
23
+ error?: string | null;
24
+ /** Saves the form; the caller closes the dialog once the API accepted it. */
25
+ onSubmit: (input: CreateWebhookEndpointInput) => void;
26
+ /** Closes without saving. */
27
+ onClose: () => void;
28
+ }
29
+ /**
30
+ * The create and edit form of a webhook endpoint.
31
+ *
32
+ * @param props - see {@link WebhookEndpointDialogProps}.
33
+ * @returns the dialog.
34
+ *
35
+ * @extensionPoint component
36
+ * @stability experimental
37
+ */
38
+ export declare function WebhookEndpointDialog({ open, endpoint, groups, catalogLoading, catalogError, saving, error, onSubmit, onClose, }: WebhookEndpointDialogProps): ReactElement;
39
+ //# sourceMappingURL=WebhookEndpointDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebhookEndpointDialog.d.ts","sourceRoot":"","sources":["../../../src/webhooks/ui/WebhookEndpointDialog.tsx"],"names":[],"mappings":"AAwBA,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAO/D,OAAO,KAAK,EAAE,0BAA0B,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AAE1G,OAAO,EAA4C,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGxG;;;;GAIG;AACH,MAAM,WAAW,0BAA0B;IACzC,kCAAkC;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,qDAAqD;IACrD,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IACjC,iCAAiC;IACjC,MAAM,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACrC,4CAA4C;IAC5C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,wCAAwC;IACxC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,mCAAmC;IACnC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,6EAA6E;IAC7E,QAAQ,EAAE,CAAC,KAAK,EAAE,0BAA0B,KAAK,IAAI,CAAC;IACtD,6BAA6B;IAC7B,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAWD;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,cAAc,EACd,YAAY,EACZ,MAAM,EACN,KAAK,EACL,QAAQ,EACR,OAAO,GACR,EAAE,0BAA0B,GAAG,YAAY,CAiH3C"}
@@ -0,0 +1,79 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ // =============================================================================
3
+ // Create or edit a webhook endpoint (issue #1046)
4
+ // =============================================================================
5
+ //
6
+ // Name, URL (with an https hint: the API refuses plain http unless the
7
+ // deployment allows it, and refuses private addresses), description, enabled
8
+ // and the events. The form checks only what helps the user type (required
9
+ // fields, a parsable URL, at least one event); the API validates everything.
10
+ // =============================================================================
11
+ import { Alert, Button, Dialog, DialogActions, DialogContent, DialogTitle, FormControlLabel, Stack, Switch, TextField, useMediaQuery, } from '@mui/material';
12
+ import { useTheme } from '@mui/material/styles';
13
+ import { useEffect, useState } from 'react';
14
+ import { WEBHOOK_DESCRIPTION_MAX, WEBHOOK_NAME_MAX, WEBHOOK_URL_MAX, } from '@marinoscar/platform-contract/webhooks';
15
+ import { isHttpsWebhookUrl, webhookEndpointStatus } from '../headless/index.js';
16
+ import { WebhookEventPicker } from './WebhookEventPicker.js';
17
+ function parsesAsHttpUrl(value) {
18
+ try {
19
+ const url = new URL(value);
20
+ return url.protocol === 'https:' || url.protocol === 'http:';
21
+ }
22
+ catch {
23
+ return false;
24
+ }
25
+ }
26
+ /**
27
+ * The create and edit form of a webhook endpoint.
28
+ *
29
+ * @param props - see {@link WebhookEndpointDialogProps}.
30
+ * @returns the dialog.
31
+ *
32
+ * @extensionPoint component
33
+ * @stability experimental
34
+ */
35
+ export function WebhookEndpointDialog({ open, endpoint, groups, catalogLoading, catalogError, saving, error, onSubmit, onClose, }) {
36
+ const theme = useTheme();
37
+ const fullScreen = useMediaQuery(theme.breakpoints.down('sm'));
38
+ const [name, setName] = useState('');
39
+ const [url, setUrl] = useState('');
40
+ const [description, setDescription] = useState('');
41
+ const [enabled, setEnabled] = useState(true);
42
+ const [eventKeys, setEventKeys] = useState([]);
43
+ const [touched, setTouched] = useState(false);
44
+ useEffect(() => {
45
+ if (!open)
46
+ return;
47
+ setName(endpoint?.name ?? '');
48
+ setUrl(endpoint?.url ?? '');
49
+ setDescription(endpoint?.description ?? '');
50
+ setEnabled(endpoint?.enabled ?? true);
51
+ setEventKeys(endpoint ? [...endpoint.eventKeys] : []);
52
+ setTouched(false);
53
+ }, [open, endpoint]);
54
+ const nameError = name.trim() === '' ? 'Give the endpoint a name.' : null;
55
+ const urlError = !parsesAsHttpUrl(url.trim()) ? 'Enter the full URL, starting with https://.' : null;
56
+ const eventsError = eventKeys.length === 0 ? 'Choose at least one event.' : null;
57
+ const invalid = nameError !== null || urlError !== null || eventsError !== null;
58
+ const platformDisabled = endpoint && !endpoint.enabled && endpoint.disabledReason ? webhookEndpointStatus(endpoint) : null;
59
+ const submit = () => {
60
+ setTouched(true);
61
+ if (invalid)
62
+ return;
63
+ const trimmed = description.trim();
64
+ onSubmit({
65
+ name: name.trim(),
66
+ url: url.trim(),
67
+ description: trimmed === '' ? null : trimmed,
68
+ enabled,
69
+ eventKeys,
70
+ });
71
+ };
72
+ const urlHelp = touched && urlError
73
+ ? urlError
74
+ : url.trim() !== '' && parsesAsHttpUrl(url.trim()) && !isHttpsWebhookUrl(url.trim())
75
+ ? 'Use https:// - plain http is refused unless this deployment allows it for development.'
76
+ : 'An https:// URL on the public internet. Private and internal addresses are refused.';
77
+ return (_jsxs(Dialog, { open: open, onClose: onClose, maxWidth: "md", fullWidth: true, fullScreen: fullScreen, "aria-labelledby": "webhook-endpoint-title", children: [_jsx(DialogTitle, { id: "webhook-endpoint-title", children: endpoint ? 'Edit endpoint' : 'New endpoint' }), _jsx(DialogContent, { children: _jsxs(Stack, { spacing: 2, sx: { pt: 1 }, children: [error ? _jsx(Alert, { severity: "error", children: error }) : null, _jsx(TextField, { label: "Name", required: true, value: name, onChange: (event) => setName(event.target.value), error: touched && nameError !== null, helperText: touched ? nameError : null, slotProps: { htmlInput: { maxLength: WEBHOOK_NAME_MAX } }, fullWidth: true }), _jsx(TextField, { label: "URL", required: true, type: "url", value: url, onChange: (event) => setUrl(event.target.value), placeholder: "https://receiver.example.test/hook", error: touched && urlError !== null, helperText: urlHelp, slotProps: { htmlInput: { maxLength: WEBHOOK_URL_MAX } }, fullWidth: true }), _jsx(TextField, { label: "Description", value: description, onChange: (event) => setDescription(event.target.value), multiline: true, minRows: 2, slotProps: { htmlInput: { maxLength: WEBHOOK_DESCRIPTION_MAX } }, fullWidth: true }), _jsx(FormControlLabel, { control: _jsx(Switch, { checked: enabled, onChange: (event) => setEnabled(event.target.checked) }), label: "Enabled" }), platformDisabled && enabled ? (_jsxs(Alert, { severity: "info", children: [platformDisabled.label, ". Saving with Enabled on switches it back on and resets the failure count."] })) : null, catalogError ? _jsx(Alert, { severity: "error", children: catalogError }) : null, catalogLoading ? null : (_jsx(WebhookEventPicker, { groups: groups, value: eventKeys, onChange: setEventKeys, error: touched ? eventsError : null }))] }) }), _jsxs(DialogActions, { children: [_jsx(Button, { onClick: onClose, sx: { minHeight: 44 }, children: "Cancel" }), _jsx(Button, { variant: "contained", onClick: submit, disabled: saving, sx: { minHeight: 44 }, children: endpoint ? 'Save' : 'Create endpoint' })] })] }));
78
+ }
79
+ //# sourceMappingURL=WebhookEndpointDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebhookEndpointDialog.js","sourceRoot":"","sources":["../../../src/webhooks/ui/WebhookEndpointDialog.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import { type ReactElement } from 'react';
2
+ import { type WebhookEventGroup } from '../headless/index.js';
3
+ /**
4
+ * The props of {@link WebhookEventPicker}.
5
+ *
6
+ * @stability experimental
7
+ */
8
+ export interface WebhookEventPickerProps {
9
+ /** The grouped catalog (`useWebhookEventCatalog(scope).groups`). */
10
+ groups: readonly WebhookEventGroup[];
11
+ /** The subscription: exact keys, `group.*` wildcards or `*`. */
12
+ value: readonly string[];
13
+ /** Receives the new subscription. */
14
+ onChange: (next: string[]) => void;
15
+ /** Disables every control. */
16
+ disabled?: boolean;
17
+ /** Shown under the picker when the selection is invalid. */
18
+ error?: string | null;
19
+ }
20
+ /**
21
+ * The webhook event picker.
22
+ *
23
+ * @param props - see {@link WebhookEventPickerProps}.
24
+ * @returns the picker.
25
+ *
26
+ * @extensionPoint component
27
+ * @stability experimental
28
+ */
29
+ export declare function WebhookEventPicker({ groups, value, onChange, disabled, error }: WebhookEventPickerProps): ReactElement;
30
+ //# sourceMappingURL=WebhookEventPicker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebhookEventPicker.d.ts","sourceRoot":"","sources":["../../../src/webhooks/ui/WebhookEventPicker.tsx"],"names":[],"mappings":"AAgBA,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAE7D,OAAO,EASL,KAAK,iBAAiB,EACvB,MAAM,sBAAsB,CAAC;AAE9B;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,oEAAoE;IACpE,MAAM,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACrC,gEAAgE;IAChE,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,qCAAqC;IACrC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACnC,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,uBAAuB,GAAG,YAAY,CAkHtH"}
@@ -0,0 +1,33 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ // =============================================================================
3
+ // The event picker (issue #1046): the catalog grouped, searchable, with
4
+ // "every event" (`*`) and "every event in this group" (`group.*`)
5
+ // =============================================================================
6
+ import { Alert, Box, Checkbox, Chip, FormControlLabel, FormGroup, Stack, TextField, Typography, } from '@mui/material';
7
+ import { useMemo, useState } from 'react';
8
+ import { WEBHOOK_ALL_EVENTS, isWebhookEventSelected, searchWebhookEventGroups, toggleAllWebhookEvents, toggleWebhookEvent, toggleWebhookGroup, unknownWebhookSubscriptions, webhookGroupSelectionState, } from '../headless/index.js';
9
+ /**
10
+ * The webhook event picker.
11
+ *
12
+ * @param props - see {@link WebhookEventPickerProps}.
13
+ * @returns the picker.
14
+ *
15
+ * @extensionPoint component
16
+ * @stability experimental
17
+ */
18
+ export function WebhookEventPicker({ groups, value, onChange, disabled, error }) {
19
+ const [query, setQuery] = useState('');
20
+ const visible = useMemo(() => searchWebhookEventGroups(groups, query), [groups, query]);
21
+ const all = value.includes(WEBHOOK_ALL_EVENTS);
22
+ const unknown = useMemo(() => unknownWebhookSubscriptions(value, groups), [value, groups]);
23
+ const fullGroup = (name) => groups.find((group) => group.group === name);
24
+ return (_jsxs(Box, { component: "fieldset", sx: { border: 0, p: 0, m: 0, minWidth: 0 }, children: [_jsx(Typography, { component: "legend", variant: "subtitle2", sx: { mb: 1 }, children: "Events" }), _jsx(FormControlLabel, { control: _jsx(Checkbox, { checked: all, onChange: () => onChange(toggleAllWebhookEvents(value)), disabled: disabled }), label: "All events, including ones added later" }), _jsx(TextField, { label: "Search events", size: "small", fullWidth: true, value: query, onChange: (event) => setQuery(event.target.value), disabled: disabled, sx: { my: 1 } }), groups.length === 0 ? (_jsx(Typography, { variant: "body2", color: "text.secondary", children: "No events are available to you at this scope." })) : visible.length === 0 ? (_jsxs(Typography, { variant: "body2", color: "text.secondary", children: ["No event matches \u201C", query, "\u201D."] })) : (_jsx(Stack, { spacing: 1.5, sx: { maxHeight: 360, overflowY: 'auto', pr: 1 }, children: visible.map((shown) => {
25
+ const group = fullGroup(shown.group);
26
+ const state = webhookGroupSelectionState(value, group);
27
+ const groupLabel = group.wildcard
28
+ ? `All ${group.group} events (${group.wildcard})`
29
+ : `All ${group.group} events`;
30
+ return (_jsxs(Box, { role: "group", "aria-label": group.group, children: [_jsx(FormControlLabel, { control: _jsx(Checkbox, { checked: state === 'all', indeterminate: state === 'some', onChange: () => onChange(toggleWebhookGroup(value, group, groups)), disabled: disabled || all }), label: _jsx(Typography, { sx: { fontWeight: 600 }, children: groupLabel }) }), _jsx(FormGroup, { sx: { pl: 4 }, children: shown.entries.map((entry) => (_jsx(FormControlLabel, { control: _jsx(Checkbox, { checked: isWebhookEventSelected(value, entry.key), onChange: () => onChange(toggleWebhookEvent(value, entry.key, groups)), disabled: disabled || all, slotProps: { input: { 'aria-label': entry.label } } }), label: _jsxs(Box, { children: [_jsx(Typography, { variant: "body2", children: entry.label }), _jsx(Typography, { variant: "caption", color: "text.secondary", sx: { fontFamily: 'monospace' }, children: entry.key }), entry.description ? (_jsx(Typography, { variant: "caption", color: "text.secondary", sx: { display: 'block' }, children: entry.description })) : null] }), sx: { alignItems: 'flex-start', '& .MuiCheckbox-root': { pt: 0.5 } } }, entry.key))) })] }, group.group));
31
+ }) })), unknown.length > 0 ? (_jsxs(Box, { sx: { mt: 1 }, children: [_jsx(Typography, { variant: "body2", color: "text.secondary", children: "Also subscribed to events not listed here:" }), _jsx(Stack, { direction: "row", spacing: 1, useFlexGap: true, sx: { mt: 0.5, flexWrap: 'wrap' }, children: unknown.map((entry) => (_jsx(Chip, { label: entry, size: "small", onDelete: disabled ? undefined : () => onChange(value.filter((item) => item !== entry)) }, entry))) })] })) : null, error ? (_jsx(Alert, { severity: "error", sx: { mt: 1 }, children: error })) : null] }));
32
+ }
33
+ //# sourceMappingURL=WebhookEventPicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebhookEventPicker.js","sourceRoot":"","sources":["../../../src/webhooks/ui/WebhookEventPicker.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { type ReactElement } from 'react';
2
+ /**
3
+ * The props of {@link WebhookSecretDialog}.
4
+ *
5
+ * @stability experimental
6
+ */
7
+ export interface WebhookSecretDialogProps {
8
+ /** The secret to show; `null` closes the dialog. */
9
+ secret: string | null;
10
+ /** Why it is shown: a new endpoint, or a rotation. */
11
+ reason: 'created' | 'rotated';
12
+ /** After a rotation: until when the previous secret is still accepted. */
13
+ previousSecretValidUntil?: string | null;
14
+ /** Closes the dialog (the caller drops the secret). */
15
+ onClose: () => void;
16
+ }
17
+ /**
18
+ * The one-time display of a webhook signing secret, with a copy button.
19
+ *
20
+ * @param props - see {@link WebhookSecretDialogProps}.
21
+ * @returns the dialog.
22
+ *
23
+ * @extensionPoint component
24
+ * @stability experimental
25
+ */
26
+ export declare function WebhookSecretDialog({ secret, reason, previousSecretValidUntil, onClose }: WebhookSecretDialogProps): ReactElement;
27
+ //# sourceMappingURL=WebhookSecretDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebhookSecretDialog.d.ts","sourceRoot":"","sources":["../../../src/webhooks/ui/WebhookSecretDialog.tsx"],"names":[],"mappings":"AA2BA,OAAO,EAAY,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAIpD;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,oDAAoD;IACpD,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,sDAAsD;IACtD,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC;IAC9B,0EAA0E;IAC1E,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,uDAAuD;IACvD,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,wBAAwB,EAAE,OAAO,EAAE,EAAE,wBAAwB,GAAG,YAAY,CAsEjI"}