@webiny/webhooks 6.4.0-beta.1

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 (441) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +11 -0
  3. package/admin/SecurityPermission.d.ts +2 -0
  4. package/admin/SecurityPermission.js +15 -0
  5. package/admin/SecurityPermission.js.map +1 -0
  6. package/admin/WebhookRoutes.d.ts +2 -0
  7. package/admin/WebhookRoutes.js +33 -0
  8. package/admin/WebhookRoutes.js.map +1 -0
  9. package/admin/Webhooks.d.ts +2 -0
  10. package/admin/Webhooks.js +53 -0
  11. package/admin/Webhooks.js.map +1 -0
  12. package/admin/features/ListWebhooks/ListWebhooksGateway.d.ts +11 -0
  13. package/admin/features/ListWebhooks/ListWebhooksGateway.js +62 -0
  14. package/admin/features/ListWebhooks/ListWebhooksGateway.js.map +1 -0
  15. package/admin/features/ListWebhooks/ListWebhooksRepository.d.ts +10 -0
  16. package/admin/features/ListWebhooks/ListWebhooksRepository.js +18 -0
  17. package/admin/features/ListWebhooks/ListWebhooksRepository.js.map +1 -0
  18. package/admin/features/ListWebhooks/ListWebhooksUseCase.d.ts +10 -0
  19. package/admin/features/ListWebhooks/ListWebhooksUseCase.js +18 -0
  20. package/admin/features/ListWebhooks/ListWebhooksUseCase.js.map +1 -0
  21. package/admin/features/ListWebhooks/abstractions.d.ts +36 -0
  22. package/admin/features/ListWebhooks/abstractions.js +7 -0
  23. package/admin/features/ListWebhooks/abstractions.js.map +1 -0
  24. package/admin/features/ListWebhooks/feature.d.ts +3 -0
  25. package/admin/features/ListWebhooks/feature.js +21 -0
  26. package/admin/features/ListWebhooks/feature.js.map +1 -0
  27. package/admin/features/ListWebhooks/index.d.ts +2 -0
  28. package/admin/features/ListWebhooks/index.js +2 -0
  29. package/admin/features/createWebhook/CreateWebhookGateway.d.ts +12 -0
  30. package/admin/features/createWebhook/CreateWebhookGateway.js +21 -0
  31. package/admin/features/createWebhook/CreateWebhookGateway.js.map +1 -0
  32. package/admin/features/createWebhook/CreateWebhookUseCase.d.ts +11 -0
  33. package/admin/features/createWebhook/CreateWebhookUseCase.js +18 -0
  34. package/admin/features/createWebhook/CreateWebhookUseCase.js.map +1 -0
  35. package/admin/features/createWebhook/abstractions.d.ts +23 -0
  36. package/admin/features/createWebhook/abstractions.js +6 -0
  37. package/admin/features/createWebhook/abstractions.js.map +1 -0
  38. package/admin/features/createWebhook/feature.d.ts +3 -0
  39. package/admin/features/createWebhook/feature.js +19 -0
  40. package/admin/features/createWebhook/feature.js.map +1 -0
  41. package/admin/features/createWebhook/index.d.ts +2 -0
  42. package/admin/features/createWebhook/index.js +2 -0
  43. package/admin/features/deleteWebhook/DeleteWebhookGateway.d.ts +11 -0
  44. package/admin/features/deleteWebhook/DeleteWebhookGateway.js +23 -0
  45. package/admin/features/deleteWebhook/DeleteWebhookGateway.js.map +1 -0
  46. package/admin/features/deleteWebhook/DeleteWebhookUseCase.d.ts +10 -0
  47. package/admin/features/deleteWebhook/DeleteWebhookUseCase.js +18 -0
  48. package/admin/features/deleteWebhook/DeleteWebhookUseCase.js.map +1 -0
  49. package/admin/features/deleteWebhook/abstractions.d.ts +14 -0
  50. package/admin/features/deleteWebhook/abstractions.js +6 -0
  51. package/admin/features/deleteWebhook/abstractions.js.map +1 -0
  52. package/admin/features/deleteWebhook/feature.d.ts +3 -0
  53. package/admin/features/deleteWebhook/feature.js +19 -0
  54. package/admin/features/deleteWebhook/feature.js.map +1 -0
  55. package/admin/features/deleteWebhook/index.d.ts +2 -0
  56. package/admin/features/deleteWebhook/index.js +2 -0
  57. package/admin/features/getWebhook/GetWebhookGateway.d.ts +12 -0
  58. package/admin/features/getWebhook/GetWebhookGateway.js +23 -0
  59. package/admin/features/getWebhook/GetWebhookGateway.js.map +1 -0
  60. package/admin/features/getWebhook/GetWebhookUseCase.d.ts +11 -0
  61. package/admin/features/getWebhook/GetWebhookUseCase.js +18 -0
  62. package/admin/features/getWebhook/GetWebhookUseCase.js.map +1 -0
  63. package/admin/features/getWebhook/abstractions.d.ts +15 -0
  64. package/admin/features/getWebhook/abstractions.js +6 -0
  65. package/admin/features/getWebhook/abstractions.js.map +1 -0
  66. package/admin/features/getWebhook/feature.d.ts +3 -0
  67. package/admin/features/getWebhook/feature.js +19 -0
  68. package/admin/features/getWebhook/feature.js.map +1 -0
  69. package/admin/features/getWebhook/index.d.ts +2 -0
  70. package/admin/features/getWebhook/index.js +2 -0
  71. package/admin/features/listAvailableEvents/ListAvailableEventsGateway.d.ts +12 -0
  72. package/admin/features/listAvailableEvents/ListAvailableEventsGateway.js +21 -0
  73. package/admin/features/listAvailableEvents/ListAvailableEventsGateway.js.map +1 -0
  74. package/admin/features/listAvailableEvents/ListAvailableEventsUseCase.d.ts +11 -0
  75. package/admin/features/listAvailableEvents/ListAvailableEventsUseCase.js +18 -0
  76. package/admin/features/listAvailableEvents/ListAvailableEventsUseCase.js.map +1 -0
  77. package/admin/features/listAvailableEvents/abstractions.d.ts +15 -0
  78. package/admin/features/listAvailableEvents/abstractions.js +6 -0
  79. package/admin/features/listAvailableEvents/abstractions.js.map +1 -0
  80. package/admin/features/listAvailableEvents/feature.d.ts +3 -0
  81. package/admin/features/listAvailableEvents/feature.js +19 -0
  82. package/admin/features/listAvailableEvents/feature.js.map +1 -0
  83. package/admin/features/listAvailableEvents/index.d.ts +2 -0
  84. package/admin/features/listAvailableEvents/index.js +2 -0
  85. package/admin/features/listWebhookDeliveries/ListWebhookDeliveriesGateway.d.ts +11 -0
  86. package/admin/features/listWebhookDeliveries/ListWebhookDeliveriesGateway.js +28 -0
  87. package/admin/features/listWebhookDeliveries/ListWebhookDeliveriesGateway.js.map +1 -0
  88. package/admin/features/listWebhookDeliveries/ListWebhookDeliveriesUseCase.d.ts +10 -0
  89. package/admin/features/listWebhookDeliveries/ListWebhookDeliveriesUseCase.js +18 -0
  90. package/admin/features/listWebhookDeliveries/ListWebhookDeliveriesUseCase.js.map +1 -0
  91. package/admin/features/listWebhookDeliveries/abstractions.d.ts +28 -0
  92. package/admin/features/listWebhookDeliveries/abstractions.js +6 -0
  93. package/admin/features/listWebhookDeliveries/abstractions.js.map +1 -0
  94. package/admin/features/listWebhookDeliveries/feature.d.ts +3 -0
  95. package/admin/features/listWebhookDeliveries/feature.js +19 -0
  96. package/admin/features/listWebhookDeliveries/feature.js.map +1 -0
  97. package/admin/features/listWebhookDeliveries/index.d.ts +2 -0
  98. package/admin/features/listWebhookDeliveries/index.js +2 -0
  99. package/admin/features/permissions/abstractions.d.ts +17 -0
  100. package/admin/features/permissions/abstractions.js +6 -0
  101. package/admin/features/permissions/abstractions.js.map +1 -0
  102. package/admin/features/permissions/feature.d.ts +14 -0
  103. package/admin/features/permissions/feature.js +7 -0
  104. package/admin/features/permissions/feature.js.map +1 -0
  105. package/admin/features/permissions/index.d.ts +2 -0
  106. package/admin/features/permissions/index.js +2 -0
  107. package/admin/features/resendWebhookDelivery/ResendWebhookDeliveryGateway.d.ts +11 -0
  108. package/admin/features/resendWebhookDelivery/ResendWebhookDeliveryGateway.js +23 -0
  109. package/admin/features/resendWebhookDelivery/ResendWebhookDeliveryGateway.js.map +1 -0
  110. package/admin/features/resendWebhookDelivery/ResendWebhookDeliveryUseCase.d.ts +10 -0
  111. package/admin/features/resendWebhookDelivery/ResendWebhookDeliveryUseCase.js +18 -0
  112. package/admin/features/resendWebhookDelivery/ResendWebhookDeliveryUseCase.js.map +1 -0
  113. package/admin/features/resendWebhookDelivery/abstractions.d.ts +14 -0
  114. package/admin/features/resendWebhookDelivery/abstractions.js +6 -0
  115. package/admin/features/resendWebhookDelivery/abstractions.js.map +1 -0
  116. package/admin/features/resendWebhookDelivery/feature.d.ts +3 -0
  117. package/admin/features/resendWebhookDelivery/feature.js +19 -0
  118. package/admin/features/resendWebhookDelivery/feature.js.map +1 -0
  119. package/admin/features/resendWebhookDelivery/index.d.ts +2 -0
  120. package/admin/features/resendWebhookDelivery/index.js +2 -0
  121. package/admin/features/triggerWebhook/TriggerWebhookGateway.d.ts +12 -0
  122. package/admin/features/triggerWebhook/TriggerWebhookGateway.js +24 -0
  123. package/admin/features/triggerWebhook/TriggerWebhookGateway.js.map +1 -0
  124. package/admin/features/triggerWebhook/TriggerWebhookUseCase.d.ts +11 -0
  125. package/admin/features/triggerWebhook/TriggerWebhookUseCase.js +18 -0
  126. package/admin/features/triggerWebhook/TriggerWebhookUseCase.js.map +1 -0
  127. package/admin/features/triggerWebhook/abstractions.d.ts +15 -0
  128. package/admin/features/triggerWebhook/abstractions.js +6 -0
  129. package/admin/features/triggerWebhook/abstractions.js.map +1 -0
  130. package/admin/features/triggerWebhook/feature.d.ts +3 -0
  131. package/admin/features/triggerWebhook/feature.js +19 -0
  132. package/admin/features/triggerWebhook/feature.js.map +1 -0
  133. package/admin/features/triggerWebhook/index.d.ts +2 -0
  134. package/admin/features/triggerWebhook/index.js +2 -0
  135. package/admin/features/updateWebhook/UpdateWebhookGateway.d.ts +12 -0
  136. package/admin/features/updateWebhook/UpdateWebhookGateway.js +24 -0
  137. package/admin/features/updateWebhook/UpdateWebhookGateway.js.map +1 -0
  138. package/admin/features/updateWebhook/UpdateWebhookUseCase.d.ts +11 -0
  139. package/admin/features/updateWebhook/UpdateWebhookUseCase.js +18 -0
  140. package/admin/features/updateWebhook/UpdateWebhookUseCase.js.map +1 -0
  141. package/admin/features/updateWebhook/abstractions.d.ts +23 -0
  142. package/admin/features/updateWebhook/abstractions.js +6 -0
  143. package/admin/features/updateWebhook/abstractions.js.map +1 -0
  144. package/admin/features/updateWebhook/feature.d.ts +3 -0
  145. package/admin/features/updateWebhook/feature.js +19 -0
  146. package/admin/features/updateWebhook/feature.js.map +1 -0
  147. package/admin/features/updateWebhook/index.d.ts +2 -0
  148. package/admin/features/updateWebhook/index.js +2 -0
  149. package/admin/index.d.ts +2 -0
  150. package/admin/index.js +2 -0
  151. package/admin/permissions.d.ts +12 -0
  152. package/admin/permissions.js +22 -0
  153. package/admin/permissions.js.map +1 -0
  154. package/admin/presentation/WebhookDeliveries/WebhookDeliveriesDataSource.d.ts +16 -0
  155. package/admin/presentation/WebhookDeliveries/WebhookDeliveriesDataSource.js +68 -0
  156. package/admin/presentation/WebhookDeliveries/WebhookDeliveriesDataSource.js.map +1 -0
  157. package/admin/presentation/WebhookDeliveries/WebhookDeliveriesPresenter.d.ts +19 -0
  158. package/admin/presentation/WebhookDeliveries/WebhookDeliveriesPresenter.js +77 -0
  159. package/admin/presentation/WebhookDeliveries/WebhookDeliveriesPresenter.js.map +1 -0
  160. package/admin/presentation/WebhookDeliveries/abstractions.d.ts +22 -0
  161. package/admin/presentation/WebhookDeliveries/abstractions.js +5 -0
  162. package/admin/presentation/WebhookDeliveries/abstractions.js.map +1 -0
  163. package/admin/presentation/WebhookDeliveries/components/DeliveryDetail.d.ts +11 -0
  164. package/admin/presentation/WebhookDeliveries/components/DeliveryDetail.js +73 -0
  165. package/admin/presentation/WebhookDeliveries/components/DeliveryDetail.js.map +1 -0
  166. package/admin/presentation/WebhookDeliveries/components/WebhookDeliveriesDrawer.d.ts +8 -0
  167. package/admin/presentation/WebhookDeliveries/components/WebhookDeliveriesDrawer.js +119 -0
  168. package/admin/presentation/WebhookDeliveries/components/WebhookDeliveriesDrawer.js.map +1 -0
  169. package/admin/presentation/WebhookDeliveries/feature.d.ts +3 -0
  170. package/admin/presentation/WebhookDeliveries/feature.js +17 -0
  171. package/admin/presentation/WebhookDeliveries/feature.js.map +1 -0
  172. package/admin/presentation/WebhookDeliveries/index.d.ts +2 -0
  173. package/admin/presentation/WebhookDeliveries/index.js +2 -0
  174. package/admin/presentation/WebhookForm/WebhookFormPresenter.d.ts +35 -0
  175. package/admin/presentation/WebhookForm/WebhookFormPresenter.js +163 -0
  176. package/admin/presentation/WebhookForm/WebhookFormPresenter.js.map +1 -0
  177. package/admin/presentation/WebhookForm/abstractions.d.ts +35 -0
  178. package/admin/presentation/WebhookForm/abstractions.js +5 -0
  179. package/admin/presentation/WebhookForm/abstractions.js.map +1 -0
  180. package/admin/presentation/WebhookForm/components/EventsSelector.d.ts +12 -0
  181. package/admin/presentation/WebhookForm/components/EventsSelector.js +44 -0
  182. package/admin/presentation/WebhookForm/components/EventsSelector.js.map +1 -0
  183. package/admin/presentation/WebhookForm/components/SigningSecret.d.ts +6 -0
  184. package/admin/presentation/WebhookForm/components/SigningSecret.js +43 -0
  185. package/admin/presentation/WebhookForm/components/SigningSecret.js.map +1 -0
  186. package/admin/presentation/WebhookForm/components/WebhookFormView.d.ts +2 -0
  187. package/admin/presentation/WebhookForm/components/WebhookFormView.js +88 -0
  188. package/admin/presentation/WebhookForm/components/WebhookFormView.js.map +1 -0
  189. package/admin/presentation/WebhookForm/feature.d.ts +3 -0
  190. package/admin/presentation/WebhookForm/feature.js +17 -0
  191. package/admin/presentation/WebhookForm/feature.js.map +1 -0
  192. package/admin/presentation/WebhookForm/index.d.ts +2 -0
  193. package/admin/presentation/WebhookForm/index.js +2 -0
  194. package/admin/presentation/WebhookList/WebhookListDataSource.d.ts +15 -0
  195. package/admin/presentation/WebhookList/WebhookListDataSource.js +67 -0
  196. package/admin/presentation/WebhookList/WebhookListDataSource.js.map +1 -0
  197. package/admin/presentation/WebhookList/WebhookListPresenter.d.ts +22 -0
  198. package/admin/presentation/WebhookList/WebhookListPresenter.js +90 -0
  199. package/admin/presentation/WebhookList/WebhookListPresenter.js.map +1 -0
  200. package/admin/presentation/WebhookList/abstractions.d.ts +27 -0
  201. package/admin/presentation/WebhookList/abstractions.js +5 -0
  202. package/admin/presentation/WebhookList/abstractions.js.map +1 -0
  203. package/admin/presentation/WebhookList/components/WebhookListView.d.ts +2 -0
  204. package/admin/presentation/WebhookList/components/WebhookListView.js +172 -0
  205. package/admin/presentation/WebhookList/components/WebhookListView.js.map +1 -0
  206. package/admin/presentation/WebhookList/feature.d.ts +3 -0
  207. package/admin/presentation/WebhookList/feature.js +17 -0
  208. package/admin/presentation/WebhookList/feature.js.map +1 -0
  209. package/admin/presentation/WebhookList/index.d.ts +2 -0
  210. package/admin/presentation/WebhookList/index.js +2 -0
  211. package/admin/presentation/security/HasPermission.d.ts +12 -0
  212. package/admin/presentation/security/HasPermission.js +6 -0
  213. package/admin/presentation/security/HasPermission.js.map +1 -0
  214. package/admin/presentation/security/usePermissions.d.ts +12 -0
  215. package/admin/presentation/security/usePermissions.js +6 -0
  216. package/admin/presentation/security/usePermissions.js.map +1 -0
  217. package/admin/routes.d.ts +7 -0
  218. package/admin/routes.js +17 -0
  219. package/admin/routes.js.map +1 -0
  220. package/admin/shared/types.d.ts +5 -0
  221. package/admin/shared/types.js +0 -0
  222. package/api/Extension.d.ts +1 -0
  223. package/api/Extension.js +1 -0
  224. package/api/WebhooksFeature.d.ts +4 -0
  225. package/api/WebhooksFeature.js +55 -0
  226. package/api/WebhooksFeature.js.map +1 -0
  227. package/api/domain/Webhook.d.ts +27 -0
  228. package/api/domain/Webhook.js +0 -0
  229. package/api/domain/WebhookDelivery.d.ts +36 -0
  230. package/api/domain/WebhookDelivery.js +0 -0
  231. package/api/domain/constants.d.ts +4 -0
  232. package/api/domain/constants.js +7 -0
  233. package/api/domain/constants.js.map +1 -0
  234. package/api/domain/errors.d.ts +36 -0
  235. package/api/domain/errors.js +70 -0
  236. package/api/domain/errors.js.map +1 -0
  237. package/api/features/CreateWebhook/CreateWebhookRepository.d.ts +18 -0
  238. package/api/features/CreateWebhook/CreateWebhookRepository.js +43 -0
  239. package/api/features/CreateWebhook/CreateWebhookRepository.js.map +1 -0
  240. package/api/features/CreateWebhook/CreateWebhookUseCase.d.ts +16 -0
  241. package/api/features/CreateWebhook/CreateWebhookUseCase.js +57 -0
  242. package/api/features/CreateWebhook/CreateWebhookUseCase.js.map +1 -0
  243. package/api/features/CreateWebhook/abstractions.d.ts +33 -0
  244. package/api/features/CreateWebhook/abstractions.js +6 -0
  245. package/api/features/CreateWebhook/abstractions.js.map +1 -0
  246. package/api/features/CreateWebhook/feature.d.ts +4 -0
  247. package/api/features/CreateWebhook/feature.js +13 -0
  248. package/api/features/CreateWebhook/feature.js.map +1 -0
  249. package/api/features/CreateWebhookDelivery/CreateWebhookDeliveryRepository.d.ts +20 -0
  250. package/api/features/CreateWebhookDelivery/CreateWebhookDeliveryRepository.js +58 -0
  251. package/api/features/CreateWebhookDelivery/CreateWebhookDeliveryRepository.js.map +1 -0
  252. package/api/features/CreateWebhookDelivery/abstractions.d.ts +21 -0
  253. package/api/features/CreateWebhookDelivery/abstractions.js +5 -0
  254. package/api/features/CreateWebhookDelivery/abstractions.js.map +1 -0
  255. package/api/features/CreateWebhookDelivery/feature.d.ts +4 -0
  256. package/api/features/CreateWebhookDelivery/feature.js +11 -0
  257. package/api/features/CreateWebhookDelivery/feature.js.map +1 -0
  258. package/api/features/DeleteWebhook/DeleteWebhookRepository.d.ts +19 -0
  259. package/api/features/DeleteWebhook/DeleteWebhookRepository.js +66 -0
  260. package/api/features/DeleteWebhook/DeleteWebhookRepository.js.map +1 -0
  261. package/api/features/DeleteWebhook/DeleteWebhookUseCase.d.ts +15 -0
  262. package/api/features/DeleteWebhook/DeleteWebhookUseCase.js +29 -0
  263. package/api/features/DeleteWebhook/DeleteWebhookUseCase.js.map +1 -0
  264. package/api/features/DeleteWebhook/abstractions.d.ts +20 -0
  265. package/api/features/DeleteWebhook/abstractions.js +6 -0
  266. package/api/features/DeleteWebhook/abstractions.js.map +1 -0
  267. package/api/features/DeleteWebhook/feature.d.ts +4 -0
  268. package/api/features/DeleteWebhook/feature.js +13 -0
  269. package/api/features/DeleteWebhook/feature.js.map +1 -0
  270. package/api/features/GetWebhook/GetWebhookRepository.d.ts +17 -0
  271. package/api/features/GetWebhook/GetWebhookRepository.js +39 -0
  272. package/api/features/GetWebhook/GetWebhookRepository.js.map +1 -0
  273. package/api/features/GetWebhook/GetWebhookUseCase.d.ts +14 -0
  274. package/api/features/GetWebhook/GetWebhookUseCase.js +24 -0
  275. package/api/features/GetWebhook/GetWebhookUseCase.js.map +1 -0
  276. package/api/features/GetWebhook/abstractions.d.ts +21 -0
  277. package/api/features/GetWebhook/abstractions.js +6 -0
  278. package/api/features/GetWebhook/abstractions.js.map +1 -0
  279. package/api/features/GetWebhook/feature.d.ts +4 -0
  280. package/api/features/GetWebhook/feature.js +13 -0
  281. package/api/features/GetWebhook/feature.js.map +1 -0
  282. package/api/features/GetWebhookDelivery/GetWebhookDeliveryRepository.d.ts +17 -0
  283. package/api/features/GetWebhookDelivery/GetWebhookDeliveryRepository.js +39 -0
  284. package/api/features/GetWebhookDelivery/GetWebhookDeliveryRepository.js.map +1 -0
  285. package/api/features/GetWebhookDelivery/GetWebhookDeliveryUseCase.d.ts +14 -0
  286. package/api/features/GetWebhookDelivery/GetWebhookDeliveryUseCase.js +24 -0
  287. package/api/features/GetWebhookDelivery/GetWebhookDeliveryUseCase.js.map +1 -0
  288. package/api/features/GetWebhookDelivery/abstractions.d.ts +21 -0
  289. package/api/features/GetWebhookDelivery/abstractions.js +6 -0
  290. package/api/features/GetWebhookDelivery/abstractions.js.map +1 -0
  291. package/api/features/GetWebhookDelivery/feature.d.ts +4 -0
  292. package/api/features/GetWebhookDelivery/feature.js +13 -0
  293. package/api/features/GetWebhookDelivery/feature.js.map +1 -0
  294. package/api/features/ListAvailableWebhookEvents/ListAvailableWebhookEventsUseCase.d.ts +14 -0
  295. package/api/features/ListAvailableWebhookEvents/ListAvailableWebhookEventsUseCase.js +30 -0
  296. package/api/features/ListAvailableWebhookEvents/ListAvailableWebhookEventsUseCase.js.map +1 -0
  297. package/api/features/ListAvailableWebhookEvents/abstractions.d.ts +9 -0
  298. package/api/features/ListAvailableWebhookEvents/abstractions.js +5 -0
  299. package/api/features/ListAvailableWebhookEvents/abstractions.js.map +1 -0
  300. package/api/features/ListAvailableWebhookEvents/feature.d.ts +4 -0
  301. package/api/features/ListAvailableWebhookEvents/feature.js +11 -0
  302. package/api/features/ListAvailableWebhookEvents/feature.js.map +1 -0
  303. package/api/features/ListWebhookDeliveries/ListWebhookDeliveriesRepository.d.ts +21 -0
  304. package/api/features/ListWebhookDeliveries/ListWebhookDeliveriesRepository.js +63 -0
  305. package/api/features/ListWebhookDeliveries/ListWebhookDeliveriesRepository.js.map +1 -0
  306. package/api/features/ListWebhookDeliveries/ListWebhookDeliveriesUseCase.d.ts +14 -0
  307. package/api/features/ListWebhookDeliveries/ListWebhookDeliveriesUseCase.js +24 -0
  308. package/api/features/ListWebhookDeliveries/ListWebhookDeliveriesUseCase.js.map +1 -0
  309. package/api/features/ListWebhookDeliveries/abstractions.d.ts +40 -0
  310. package/api/features/ListWebhookDeliveries/abstractions.js +6 -0
  311. package/api/features/ListWebhookDeliveries/abstractions.js.map +1 -0
  312. package/api/features/ListWebhookDeliveries/feature.d.ts +4 -0
  313. package/api/features/ListWebhookDeliveries/feature.js +13 -0
  314. package/api/features/ListWebhookDeliveries/feature.js.map +1 -0
  315. package/api/features/ListWebhooks/ListWebhooksRepository.d.ts +21 -0
  316. package/api/features/ListWebhooks/ListWebhooksRepository.js +63 -0
  317. package/api/features/ListWebhooks/ListWebhooksRepository.js.map +1 -0
  318. package/api/features/ListWebhooks/ListWebhooksUseCase.d.ts +14 -0
  319. package/api/features/ListWebhooks/ListWebhooksUseCase.js +24 -0
  320. package/api/features/ListWebhooks/ListWebhooksUseCase.js.map +1 -0
  321. package/api/features/ListWebhooks/abstractions.d.ts +41 -0
  322. package/api/features/ListWebhooks/abstractions.js +6 -0
  323. package/api/features/ListWebhooks/abstractions.js.map +1 -0
  324. package/api/features/ListWebhooks/feature.d.ts +4 -0
  325. package/api/features/ListWebhooks/feature.js +13 -0
  326. package/api/features/ListWebhooks/feature.js.map +1 -0
  327. package/api/features/ResendWebhookDelivery/ResendWebhookDeliveryUseCase.d.ts +20 -0
  328. package/api/features/ResendWebhookDelivery/ResendWebhookDeliveryUseCase.js +60 -0
  329. package/api/features/ResendWebhookDelivery/ResendWebhookDeliveryUseCase.js.map +1 -0
  330. package/api/features/ResendWebhookDelivery/abstractions.d.ts +12 -0
  331. package/api/features/ResendWebhookDelivery/abstractions.js +5 -0
  332. package/api/features/ResendWebhookDelivery/abstractions.js.map +1 -0
  333. package/api/features/ResendWebhookDelivery/feature.d.ts +4 -0
  334. package/api/features/ResendWebhookDelivery/feature.js +11 -0
  335. package/api/features/ResendWebhookDelivery/feature.js.map +1 -0
  336. package/api/features/SendWebhookTask/SendWebhookTask.d.ts +29 -0
  337. package/api/features/SendWebhookTask/SendWebhookTask.js +99 -0
  338. package/api/features/SendWebhookTask/SendWebhookTask.js.map +1 -0
  339. package/api/features/SendWebhookTask/feature.d.ts +4 -0
  340. package/api/features/SendWebhookTask/feature.js +11 -0
  341. package/api/features/SendWebhookTask/feature.js.map +1 -0
  342. package/api/features/SendWebhookTask/types.d.ts +15 -0
  343. package/api/features/SendWebhookTask/types.js +0 -0
  344. package/api/features/Transformers/WebhookDeliveryTransformer.d.ts +13 -0
  345. package/api/features/Transformers/WebhookDeliveryTransformer.js +57 -0
  346. package/api/features/Transformers/WebhookDeliveryTransformer.js.map +1 -0
  347. package/api/features/Transformers/WebhookTransformer.d.ts +11 -0
  348. package/api/features/Transformers/WebhookTransformer.js +35 -0
  349. package/api/features/Transformers/WebhookTransformer.js.map +1 -0
  350. package/api/features/Transformers/abstractions/WebhookDeliveryTransformer.d.ts +10 -0
  351. package/api/features/Transformers/abstractions/WebhookDeliveryTransformer.js +5 -0
  352. package/api/features/Transformers/abstractions/WebhookDeliveryTransformer.js.map +1 -0
  353. package/api/features/Transformers/abstractions/WebhookTransformer.d.ts +10 -0
  354. package/api/features/Transformers/abstractions/WebhookTransformer.js +5 -0
  355. package/api/features/Transformers/abstractions/WebhookTransformer.js.map +1 -0
  356. package/api/features/Transformers/feature.d.ts +4 -0
  357. package/api/features/Transformers/feature.js +13 -0
  358. package/api/features/Transformers/feature.js.map +1 -0
  359. package/api/features/Transformers/index.d.ts +2 -0
  360. package/api/features/Transformers/index.js +2 -0
  361. package/api/features/TriggerWebhook/TriggerWebhookUseCase.d.ts +19 -0
  362. package/api/features/TriggerWebhook/TriggerWebhookUseCase.js +54 -0
  363. package/api/features/TriggerWebhook/TriggerWebhookUseCase.js.map +1 -0
  364. package/api/features/TriggerWebhook/abstractions.d.ts +13 -0
  365. package/api/features/TriggerWebhook/abstractions.js +5 -0
  366. package/api/features/TriggerWebhook/abstractions.js.map +1 -0
  367. package/api/features/TriggerWebhook/feature.d.ts +4 -0
  368. package/api/features/TriggerWebhook/feature.js +11 -0
  369. package/api/features/TriggerWebhook/feature.js.map +1 -0
  370. package/api/features/UpdateWebhook/UpdateWebhookRepository.d.ts +21 -0
  371. package/api/features/UpdateWebhook/UpdateWebhookRepository.js +50 -0
  372. package/api/features/UpdateWebhook/UpdateWebhookRepository.js.map +1 -0
  373. package/api/features/UpdateWebhook/UpdateWebhookUseCase.d.ts +16 -0
  374. package/api/features/UpdateWebhook/UpdateWebhookUseCase.js +66 -0
  375. package/api/features/UpdateWebhook/UpdateWebhookUseCase.js.map +1 -0
  376. package/api/features/UpdateWebhook/abstractions.d.ts +31 -0
  377. package/api/features/UpdateWebhook/abstractions.js +6 -0
  378. package/api/features/UpdateWebhook/abstractions.js.map +1 -0
  379. package/api/features/UpdateWebhook/feature.d.ts +4 -0
  380. package/api/features/UpdateWebhook/feature.js +13 -0
  381. package/api/features/UpdateWebhook/feature.js.map +1 -0
  382. package/api/features/UpdateWebhookDelivery/UpdateWebhookDeliveryRepository.d.ts +22 -0
  383. package/api/features/UpdateWebhookDelivery/UpdateWebhookDeliveryRepository.js +62 -0
  384. package/api/features/UpdateWebhookDelivery/UpdateWebhookDeliveryRepository.js.map +1 -0
  385. package/api/features/UpdateWebhookDelivery/abstractions.d.ts +23 -0
  386. package/api/features/UpdateWebhookDelivery/abstractions.js +5 -0
  387. package/api/features/UpdateWebhookDelivery/abstractions.js.map +1 -0
  388. package/api/features/UpdateWebhookDelivery/feature.d.ts +4 -0
  389. package/api/features/UpdateWebhookDelivery/feature.js +11 -0
  390. package/api/features/UpdateWebhookDelivery/feature.js.map +1 -0
  391. package/api/features/WebhookDispatcher/WebhookDispatcher.d.ts +17 -0
  392. package/api/features/WebhookDispatcher/WebhookDispatcher.js +56 -0
  393. package/api/features/WebhookDispatcher/WebhookDispatcher.js.map +1 -0
  394. package/api/features/WebhookDispatcher/feature.d.ts +4 -0
  395. package/api/features/WebhookDispatcher/feature.js +11 -0
  396. package/api/features/WebhookDispatcher/feature.js.map +1 -0
  397. package/api/features/WebhookPermissions/abstractions.d.ts +17 -0
  398. package/api/features/WebhookPermissions/abstractions.js +6 -0
  399. package/api/features/WebhookPermissions/abstractions.js.map +1 -0
  400. package/api/features/WebhookPermissions/feature.d.ts +4 -0
  401. package/api/features/WebhookPermissions/feature.js +7 -0
  402. package/api/features/WebhookPermissions/feature.js.map +1 -0
  403. package/api/features/WebhookSignPayload/WebhookSignPayload.d.ts +8 -0
  404. package/api/features/WebhookSignPayload/WebhookSignPayload.js +20 -0
  405. package/api/features/WebhookSignPayload/WebhookSignPayload.js.map +1 -0
  406. package/api/features/WebhookSignPayload/feature.d.ts +4 -0
  407. package/api/features/WebhookSignPayload/feature.js +11 -0
  408. package/api/features/WebhookSignPayload/feature.js.map +1 -0
  409. package/api/features/WebhookVerifyPayload/WebhookVerifyPayload.d.ts +10 -0
  410. package/api/features/WebhookVerifyPayload/WebhookVerifyPayload.js +22 -0
  411. package/api/features/WebhookVerifyPayload/WebhookVerifyPayload.js.map +1 -0
  412. package/api/features/WebhookVerifyPayload/feature.d.ts +4 -0
  413. package/api/features/WebhookVerifyPayload/feature.js +11 -0
  414. package/api/features/WebhookVerifyPayload/feature.js.map +1 -0
  415. package/api/graphql/WebhookCrudSchema.d.ts +8 -0
  416. package/api/graphql/WebhookCrudSchema.js +167 -0
  417. package/api/graphql/WebhookCrudSchema.js.map +1 -0
  418. package/api/graphql/WebhookDeliverySchema.d.ts +8 -0
  419. package/api/graphql/WebhookDeliverySchema.js +96 -0
  420. package/api/graphql/WebhookDeliverySchema.js.map +1 -0
  421. package/api/graphql/WebhookEventSchema.d.ts +8 -0
  422. package/api/graphql/WebhookEventSchema.js +43 -0
  423. package/api/graphql/WebhookEventSchema.js.map +1 -0
  424. package/api/graphql/WebhookTriggerSchema.d.ts +8 -0
  425. package/api/graphql/WebhookTriggerSchema.js +36 -0
  426. package/api/graphql/WebhookTriggerSchema.js.map +1 -0
  427. package/api/index.d.ts +1 -0
  428. package/api/index.js +8 -0
  429. package/api/index.js.map +1 -0
  430. package/api/models/WebhookDeliveryModel.d.ts +8 -0
  431. package/api/models/WebhookDeliveryModel.js +36 -0
  432. package/api/models/WebhookDeliveryModel.js.map +1 -0
  433. package/api/models/WebhookModel.d.ts +8 -0
  434. package/api/models/WebhookModel.js +33 -0
  435. package/api/models/WebhookModel.js.map +1 -0
  436. package/api/permissions.d.ts +12 -0
  437. package/api/permissions.js +22 -0
  438. package/api/permissions.js.map +1 -0
  439. package/exports/api/webhooks.d.ts +6 -0
  440. package/exports/api/webhooks.js +2 -0
  441. package/package.json +54 -0
@@ -0,0 +1,163 @@
1
+ import { computed, makeAutoObservable, runInAction } from "mobx";
2
+ import { WebhookFormPresenter } from "./abstractions.js";
3
+ import { GetWebhookUseCase } from "../../features/getWebhook/abstractions.js";
4
+ import { CreateWebhookUseCase } from "../../features/createWebhook/abstractions.js";
5
+ import { UpdateWebhookUseCase } from "../../features/updateWebhook/abstractions.js";
6
+ import { DeleteWebhookUseCase } from "../../features/deleteWebhook/abstractions.js";
7
+ import { ListAvailableEventsUseCase } from "../../features/listAvailableEvents/abstractions.js";
8
+ import { WebhookPermissions } from "../../features/permissions/abstractions.js";
9
+ import { FormModelFactory } from "@webiny/app-admin/features/formModel/abstractions.js";
10
+ class WebhookFormPresenterImpl {
11
+ get vm() {
12
+ return {
13
+ loading: this._loading,
14
+ saving: this._saving,
15
+ isNew: this._isNew,
16
+ webhook: this._webhook,
17
+ showDeliveries: this._showDeliveries,
18
+ availableEvents: this._availableEvents,
19
+ permissions: {
20
+ canEdit: this.permissions.canEdit("webhook"),
21
+ canDelete: this.permissions.canDelete("webhook")
22
+ },
23
+ form: this._form.vm,
24
+ selectedEvents: Array.from(this._selectedEvents)
25
+ };
26
+ }
27
+ constructor(formModelFactory, getWebhookUseCase, createWebhookUseCase, updateWebhookUseCase, deleteWebhookUseCase, listAvailableEventsUseCase, permissions){
28
+ this.formModelFactory = formModelFactory;
29
+ this.getWebhookUseCase = getWebhookUseCase;
30
+ this.createWebhookUseCase = createWebhookUseCase;
31
+ this.updateWebhookUseCase = updateWebhookUseCase;
32
+ this.deleteWebhookUseCase = deleteWebhookUseCase;
33
+ this.listAvailableEventsUseCase = listAvailableEventsUseCase;
34
+ this.permissions = permissions;
35
+ this._loading = false;
36
+ this._saving = false;
37
+ this._isNew = false;
38
+ this._webhook = null;
39
+ this._showDeliveries = false;
40
+ this._availableEvents = [];
41
+ this._webhookId = null;
42
+ this._selectedEvents = new Set();
43
+ this.actions = {
44
+ save: async ()=>{
45
+ const data = await this._form.submit();
46
+ if (false === data) return;
47
+ this._saving = true;
48
+ try {
49
+ const merged = {
50
+ name: data.name,
51
+ slug: data.slug,
52
+ endpointUrl: data.endpointUrl,
53
+ description: data.description || void 0,
54
+ enabled: data.enabled,
55
+ events: Array.from(this._selectedEvents)
56
+ };
57
+ if (this._isNew) {
58
+ const created = await this.createWebhookUseCase.execute(merged);
59
+ runInAction(()=>{
60
+ this._webhook = created;
61
+ this._webhookId = created.id;
62
+ this._isNew = false;
63
+ this._form.field("slug").setDisabled(true);
64
+ });
65
+ } else {
66
+ const updated = await this.updateWebhookUseCase.execute(this._webhookId, merged);
67
+ runInAction(()=>{
68
+ this._webhook = updated;
69
+ });
70
+ }
71
+ } finally{
72
+ runInAction(()=>{
73
+ this._saving = false;
74
+ });
75
+ }
76
+ },
77
+ deleteWebhook: async ()=>{
78
+ if (!this._webhookId || this._isNew) return;
79
+ await this.deleteWebhookUseCase.execute(this._webhookId);
80
+ },
81
+ openDeliveries: ()=>{
82
+ this._showDeliveries = true;
83
+ },
84
+ closeDeliveries: ()=>{
85
+ this._showDeliveries = false;
86
+ },
87
+ toggleEvent: (eventName)=>{
88
+ if (this._selectedEvents.has(eventName)) this._selectedEvents.delete(eventName);
89
+ else this._selectedEvents.add(eventName);
90
+ }
91
+ };
92
+ this._form = this.buildForm();
93
+ makeAutoObservable(this, {
94
+ vm: computed
95
+ });
96
+ }
97
+ buildForm() {
98
+ return this.formModelFactory.create({
99
+ fields: (fields)=>({
100
+ name: fields.text().label("Name").required("Name is required"),
101
+ slug: fields.text().label("Slug").required("Slug is required"),
102
+ endpointUrl: fields.text().label("Endpoint URL").required("Endpoint URL is required").placeholder("https://"),
103
+ description: fields.text().label("Description").renderer("textarea"),
104
+ enabled: fields.boolean().label("Enabled").defaultValue(false)
105
+ }),
106
+ layout: (layout)=>[
107
+ layout.row("name", "slug"),
108
+ layout.row("endpointUrl"),
109
+ layout.row("description"),
110
+ layout.row("enabled")
111
+ ]
112
+ });
113
+ }
114
+ async init(id) {
115
+ this._loading = true;
116
+ this._isNew = "new" === id;
117
+ this._webhookId = "new" === id ? null : id;
118
+ const eventsPromise = this.listAvailableEventsUseCase.execute();
119
+ if (this._isNew) {
120
+ const events = await eventsPromise;
121
+ runInAction(()=>{
122
+ this._availableEvents = events;
123
+ this._form = this.buildForm();
124
+ this._loading = false;
125
+ });
126
+ } else {
127
+ const [webhook, events] = await Promise.all([
128
+ this.getWebhookUseCase.execute(id),
129
+ eventsPromise
130
+ ]);
131
+ runInAction(()=>{
132
+ this._webhook = webhook;
133
+ this._availableEvents = events;
134
+ this._form = this.buildForm();
135
+ this._form.setData({
136
+ name: webhook.name,
137
+ slug: webhook.slug,
138
+ endpointUrl: webhook.endpointUrl,
139
+ description: webhook.description ?? "",
140
+ enabled: webhook.enabled
141
+ });
142
+ this._form.field("slug").setDisabled(true);
143
+ this._selectedEvents = new Set(webhook.events);
144
+ this._loading = false;
145
+ });
146
+ }
147
+ }
148
+ }
149
+ const WebhookFormPresenter_WebhookFormPresenter = WebhookFormPresenter.createImplementation({
150
+ implementation: WebhookFormPresenterImpl,
151
+ dependencies: [
152
+ FormModelFactory,
153
+ GetWebhookUseCase,
154
+ CreateWebhookUseCase,
155
+ UpdateWebhookUseCase,
156
+ DeleteWebhookUseCase,
157
+ ListAvailableEventsUseCase,
158
+ WebhookPermissions
159
+ ]
160
+ });
161
+ export { WebhookFormPresenter_WebhookFormPresenter as WebhookFormPresenter };
162
+
163
+ //# sourceMappingURL=WebhookFormPresenter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin/presentation/WebhookForm/WebhookFormPresenter.js","sources":["../../../../src/admin/presentation/WebhookForm/WebhookFormPresenter.ts"],"sourcesContent":["import { computed, makeAutoObservable, runInAction } from \"mobx\";\nimport type { Webhook } from \"~/admin/shared/types.js\";\nimport type { WebhookEvent } from \"~/admin/shared/types.js\";\nimport {\n WebhookFormPresenter as Abstraction,\n type IWebhookFormPresenter,\n type IWebhookFormViewModel,\n type IWebhookFormActions\n} from \"./abstractions.js\";\nimport { GetWebhookUseCase } from \"~/admin/features/getWebhook/abstractions.js\";\nimport { CreateWebhookUseCase } from \"~/admin/features/createWebhook/abstractions.js\";\nimport { UpdateWebhookUseCase } from \"~/admin/features/updateWebhook/abstractions.js\";\nimport { DeleteWebhookUseCase } from \"~/admin/features/deleteWebhook/abstractions.js\";\nimport { ListAvailableEventsUseCase } from \"~/admin/features/listAvailableEvents/abstractions.js\";\nimport { WebhookPermissions } from \"~/admin/features/permissions/abstractions.js\";\nimport {\n FormModelFactory,\n type IFormModel\n} from \"@webiny/app-admin/features/formModel/abstractions.js\";\n\nclass WebhookFormPresenterImpl implements IWebhookFormPresenter {\n private _loading = false;\n private _saving = false;\n private _isNew = false;\n private _webhook: Webhook | null = null;\n private _showDeliveries = false;\n private _availableEvents: WebhookEvent[] = [];\n private _webhookId: string | null = null;\n private _form;\n private _selectedEvents: Set<string> = new Set();\n\n public get vm(): IWebhookFormViewModel {\n return {\n loading: this._loading,\n saving: this._saving,\n isNew: this._isNew,\n webhook: this._webhook,\n showDeliveries: this._showDeliveries,\n availableEvents: this._availableEvents,\n permissions: {\n canEdit: this.permissions.canEdit(\"webhook\"),\n canDelete: this.permissions.canDelete(\"webhook\")\n },\n form: this._form.vm,\n selectedEvents: Array.from(this._selectedEvents)\n };\n }\n\n public constructor(\n private readonly formModelFactory: FormModelFactory.Interface,\n private readonly getWebhookUseCase: GetWebhookUseCase.Interface,\n private readonly createWebhookUseCase: CreateWebhookUseCase.Interface,\n private readonly updateWebhookUseCase: UpdateWebhookUseCase.Interface,\n private readonly deleteWebhookUseCase: DeleteWebhookUseCase.Interface,\n private readonly listAvailableEventsUseCase: ListAvailableEventsUseCase.Interface,\n private readonly permissions: WebhookPermissions.Interface\n ) {\n this._form = this.buildForm();\n\n makeAutoObservable(this, { vm: computed });\n }\n\n private buildForm(): IFormModel {\n return this.formModelFactory.create({\n fields: fields => ({\n name: fields.text().label(\"Name\").required(\"Name is required\"),\n slug: fields.text().label(\"Slug\").required(\"Slug is required\"),\n endpointUrl: fields\n .text()\n .label(\"Endpoint URL\")\n .required(\"Endpoint URL is required\")\n .placeholder(\"https://\"),\n description: fields.text().label(\"Description\").renderer(\"textarea\"),\n enabled: fields.boolean().label(\"Enabled\").defaultValue(false)\n }),\n layout: layout => [\n layout.row(\"name\", \"slug\"),\n layout.row(\"endpointUrl\"),\n layout.row(\"description\"),\n layout.row(\"enabled\")\n ]\n });\n }\n\n public actions: IWebhookFormActions = {\n save: async () => {\n const data = await this._form.submit<Record<string, unknown>>();\n if (data === false) {\n return;\n }\n\n this._saving = true;\n\n try {\n const merged = {\n name: data.name as string,\n slug: data.slug as string,\n endpointUrl: data.endpointUrl as string,\n description: (data.description as string) || undefined,\n enabled: data.enabled as boolean,\n events: Array.from(this._selectedEvents)\n };\n\n if (this._isNew) {\n const created = await this.createWebhookUseCase.execute(merged);\n\n runInAction(() => {\n this._webhook = created;\n this._webhookId = created.id;\n this._isNew = false;\n this._form.field(\"slug\").setDisabled(true);\n });\n } else {\n const updated = await this.updateWebhookUseCase.execute(\n this._webhookId!,\n merged\n );\n\n runInAction(() => {\n this._webhook = updated;\n });\n }\n } finally {\n runInAction(() => {\n this._saving = false;\n });\n }\n },\n deleteWebhook: async () => {\n if (!this._webhookId || this._isNew) {\n return;\n }\n await this.deleteWebhookUseCase.execute(this._webhookId);\n },\n openDeliveries: () => {\n this._showDeliveries = true;\n },\n closeDeliveries: () => {\n this._showDeliveries = false;\n },\n toggleEvent: (eventName: string) => {\n if (this._selectedEvents.has(eventName)) {\n this._selectedEvents.delete(eventName);\n } else {\n this._selectedEvents.add(eventName);\n }\n }\n };\n\n public async init(id: string): Promise<void> {\n this._loading = true;\n this._isNew = id === \"new\";\n this._webhookId = id === \"new\" ? null : id;\n\n const eventsPromise = this.listAvailableEventsUseCase.execute();\n\n if (!this._isNew) {\n const [webhook, events] = await Promise.all([\n this.getWebhookUseCase.execute(id),\n eventsPromise\n ]);\n\n runInAction(() => {\n this._webhook = webhook;\n this._availableEvents = events;\n this._form = this.buildForm();\n this._form.setData({\n name: webhook.name,\n slug: webhook.slug,\n endpointUrl: webhook.endpointUrl,\n description: webhook.description ?? \"\",\n enabled: webhook.enabled\n });\n this._form.field(\"slug\").setDisabled(true);\n this._selectedEvents = new Set(webhook.events);\n this._loading = false;\n });\n } else {\n const events = await eventsPromise;\n\n runInAction(() => {\n this._availableEvents = events;\n this._form = this.buildForm();\n this._loading = false;\n });\n }\n }\n}\n\nexport const WebhookFormPresenter = Abstraction.createImplementation({\n implementation: WebhookFormPresenterImpl,\n dependencies: [\n FormModelFactory,\n GetWebhookUseCase,\n CreateWebhookUseCase,\n UpdateWebhookUseCase,\n DeleteWebhookUseCase,\n ListAvailableEventsUseCase,\n WebhookPermissions\n ]\n});\n"],"names":["WebhookFormPresenterImpl","Array","formModelFactory","getWebhookUseCase","createWebhookUseCase","updateWebhookUseCase","deleteWebhookUseCase","listAvailableEventsUseCase","permissions","Set","data","merged","undefined","created","runInAction","updated","eventName","makeAutoObservable","computed","fields","layout","id","eventsPromise","events","webhook","Promise","WebhookFormPresenter","Abstraction","FormModelFactory","GetWebhookUseCase","CreateWebhookUseCase","UpdateWebhookUseCase","DeleteWebhookUseCase","ListAvailableEventsUseCase","WebhookPermissions"],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import type { Webhook } from "../../../admin/shared/types.js";
2
+ import type { WebhookEvent } from "../../../admin/shared/types.js";
3
+ import type { IFormVM } from "@webiny/app-admin/features/formModel/abstractions.js";
4
+ export interface IWebhookFormViewModel {
5
+ loading: boolean;
6
+ saving: boolean;
7
+ isNew: boolean;
8
+ webhook: Webhook | null;
9
+ showDeliveries: boolean;
10
+ availableEvents: WebhookEvent[];
11
+ permissions: {
12
+ canEdit: boolean;
13
+ canDelete: boolean;
14
+ };
15
+ form: IFormVM;
16
+ selectedEvents: string[];
17
+ }
18
+ export interface IWebhookFormActions {
19
+ save(): Promise<void>;
20
+ deleteWebhook(): Promise<void>;
21
+ openDeliveries(): void;
22
+ closeDeliveries(): void;
23
+ toggleEvent(eventName: string): void;
24
+ }
25
+ export interface IWebhookFormPresenter {
26
+ vm: IWebhookFormViewModel;
27
+ actions: IWebhookFormActions;
28
+ init(id: string): void;
29
+ }
30
+ export declare const WebhookFormPresenter: import("@webiny/di").Abstraction<IWebhookFormPresenter>;
31
+ export declare namespace WebhookFormPresenter {
32
+ type Interface = IWebhookFormPresenter;
33
+ type ViewModel = IWebhookFormViewModel;
34
+ type Actions = IWebhookFormActions;
35
+ }
@@ -0,0 +1,5 @@
1
+ import { createAbstraction } from "@webiny/feature/admin";
2
+ const WebhookFormPresenter = createAbstraction("WebhookFormPresenter");
3
+ export { WebhookFormPresenter };
4
+
5
+ //# sourceMappingURL=abstractions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin/presentation/WebhookForm/abstractions.js","sources":["../../../../src/admin/presentation/WebhookForm/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/admin\";\nimport type { Webhook } from \"~/admin/shared/types.js\";\nimport type { WebhookEvent } from \"~/admin/shared/types.js\";\nimport type { IFormVM } from \"@webiny/app-admin/features/formModel/abstractions.js\";\n\nexport interface IWebhookFormViewModel {\n loading: boolean;\n saving: boolean;\n isNew: boolean;\n webhook: Webhook | null;\n showDeliveries: boolean;\n availableEvents: WebhookEvent[];\n permissions: {\n canEdit: boolean;\n canDelete: boolean;\n };\n form: IFormVM;\n selectedEvents: string[];\n}\n\nexport interface IWebhookFormActions {\n save(): Promise<void>;\n deleteWebhook(): Promise<void>;\n openDeliveries(): void;\n closeDeliveries(): void;\n toggleEvent(eventName: string): void;\n}\n\nexport interface IWebhookFormPresenter {\n vm: IWebhookFormViewModel;\n actions: IWebhookFormActions;\n init(id: string): void;\n}\n\nexport const WebhookFormPresenter =\n createAbstraction<IWebhookFormPresenter>(\"WebhookFormPresenter\");\n\nexport namespace WebhookFormPresenter {\n export type Interface = IWebhookFormPresenter;\n export type ViewModel = IWebhookFormViewModel;\n export type Actions = IWebhookFormActions;\n}\n"],"names":["WebhookFormPresenter","createAbstraction"],"mappings":";AAkCO,MAAMA,uBACTC,kBAAyC"}
@@ -0,0 +1,12 @@
1
+ import React from "react";
2
+ import type { WebhookEvent } from "../../../../admin/shared/types.js";
3
+ interface EventsSelectorProps {
4
+ availableEvents: WebhookEvent[];
5
+ selectedEvents: string[];
6
+ onToggle: (eventName: string) => void;
7
+ disabled?: boolean;
8
+ }
9
+ export declare const EventsSelector: (({ availableEvents, selectedEvents, onToggle, disabled }: EventsSelectorProps) => React.JSX.Element) & {
10
+ displayName: string;
11
+ };
12
+ export {};
@@ -0,0 +1,44 @@
1
+ import react, { useMemo } from "react";
2
+ import { observer } from "mobx-react-lite";
3
+ import { CheckboxGroup, Heading, Separator } from "@webiny/admin-ui";
4
+ const EventsSelector_EventsSelector = observer(function({ availableEvents, selectedEvents, onToggle, disabled }) {
5
+ const grouped = useMemo(()=>{
6
+ const map = new Map();
7
+ for (const event of availableEvents){
8
+ const existing = map.get(event.app) ?? [];
9
+ existing.push(event);
10
+ map.set(event.app, existing);
11
+ }
12
+ return map;
13
+ }, [
14
+ availableEvents
15
+ ]);
16
+ return /*#__PURE__*/ react.createElement("div", {
17
+ className: "flex flex-col gap-md"
18
+ }, /*#__PURE__*/ react.createElement(Heading, {
19
+ level: 6
20
+ }, "Events"), Array.from(grouped.entries()).map(([app, events])=>/*#__PURE__*/ react.createElement("div", {
21
+ key: app,
22
+ className: "flex flex-col gap-sm"
23
+ }, /*#__PURE__*/ react.createElement(Heading, {
24
+ level: 6,
25
+ className: "text-neutral-strong"
26
+ }, app), /*#__PURE__*/ react.createElement(CheckboxGroup, {
27
+ items: events.map((e)=>({
28
+ id: e.eventName,
29
+ label: e.label,
30
+ value: e.eventName
31
+ })),
32
+ value: selectedEvents,
33
+ onChange: (values)=>{
34
+ const current = new Set(selectedEvents);
35
+ const next = new Set(values);
36
+ for (const v of next)if (!current.has(v)) onToggle(v);
37
+ for (const v of current)if (!next.has(v) && events.some((e)=>e.eventName === v)) onToggle(v);
38
+ },
39
+ disabled: disabled
40
+ }), /*#__PURE__*/ react.createElement(Separator, null))));
41
+ });
42
+ export { EventsSelector_EventsSelector as EventsSelector };
43
+
44
+ //# sourceMappingURL=EventsSelector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin/presentation/WebhookForm/components/EventsSelector.js","sources":["../../../../../src/admin/presentation/WebhookForm/components/EventsSelector.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { CheckboxGroup } from \"@webiny/admin-ui\";\nimport { Heading } from \"@webiny/admin-ui\";\nimport { Separator } from \"@webiny/admin-ui\";\nimport type { WebhookEvent } from \"~/admin/shared/types.js\";\n\ninterface EventsSelectorProps {\n availableEvents: WebhookEvent[];\n selectedEvents: string[];\n onToggle: (eventName: string) => void;\n disabled?: boolean;\n}\n\nexport const EventsSelector = observer(function EventsSelector({\n availableEvents,\n selectedEvents,\n onToggle,\n disabled\n}: EventsSelectorProps) {\n const grouped = useMemo(() => {\n const map = new Map<string, WebhookEvent[]>();\n\n for (const event of availableEvents) {\n const existing = map.get(event.app) ?? [];\n existing.push(event);\n map.set(event.app, existing);\n }\n\n return map;\n }, [availableEvents]);\n\n return (\n <div className=\"flex flex-col gap-md\">\n <Heading level={6}>Events</Heading>\n {Array.from(grouped.entries()).map(([app, events]) => (\n <div key={app} className=\"flex flex-col gap-sm\">\n <Heading level={6} className=\"text-neutral-strong\">\n {app}\n </Heading>\n <CheckboxGroup\n items={events.map(e => ({\n id: e.eventName,\n label: e.label,\n value: e.eventName\n }))}\n value={selectedEvents}\n onChange={values => {\n const current = new Set(selectedEvents);\n const next = new Set(values as string[]);\n\n for (const v of next) {\n if (!current.has(v)) {\n onToggle(v);\n }\n }\n\n for (const v of current) {\n if (!next.has(v) && events.some(e => e.eventName === v)) {\n onToggle(v);\n }\n }\n }}\n disabled={disabled}\n />\n <Separator />\n </div>\n ))}\n </div>\n );\n});\n"],"names":["EventsSelector","observer","availableEvents","selectedEvents","onToggle","disabled","grouped","useMemo","map","Map","event","existing","Heading","Array","app","events","CheckboxGroup","e","values","current","Set","next","v","Separator"],"mappings":";;;AAcO,MAAMA,gCAAiBC,SAAS,SAAwB,EAC3DC,eAAe,EACfC,cAAc,EACdC,QAAQ,EACRC,QAAQ,EACU;IAClB,MAAMC,UAAUC,QAAQ;QACpB,MAAMC,MAAM,IAAIC;QAEhB,KAAK,MAAMC,SAASR,gBAAiB;YACjC,MAAMS,WAAWH,IAAI,GAAG,CAACE,MAAM,GAAG,KAAK,EAAE;YACzCC,SAAS,IAAI,CAACD;YACdF,IAAI,GAAG,CAACE,MAAM,GAAG,EAAEC;QACvB;QAEA,OAAOH;IACX,GAAG;QAACN;KAAgB;IAEpB,OAAO,WAAP,GACI,oBAAC;QAAI,WAAU;qBACX,oBAACU,SAAOA;QAAC,OAAO;OAAG,WAClBC,MAAM,IAAI,CAACP,QAAQ,OAAO,IAAI,GAAG,CAAC,CAAC,CAACQ,KAAKC,OAAO,iBAC7C,oBAAC;YAAI,KAAKD;YAAK,WAAU;yBACrB,oBAACF,SAAOA;YAAC,OAAO;YAAG,WAAU;WACxBE,MAAAA,WAAAA,GAEL,oBAACE,eAAaA;YACV,OAAOD,OAAO,GAAG,CAACE,CAAAA,IAAM;oBACpB,IAAIA,EAAE,SAAS;oBACf,OAAOA,EAAE,KAAK;oBACd,OAAOA,EAAE,SAAS;gBACtB;YACA,OAAOd;YACP,UAAUe,CAAAA;gBACN,MAAMC,UAAU,IAAIC,IAAIjB;gBACxB,MAAMkB,OAAO,IAAID,IAAIF;gBAErB,KAAK,MAAMI,KAAKD,KACZ,IAAI,CAACF,QAAQ,GAAG,CAACG,IACblB,SAASkB;gBAIjB,KAAK,MAAMA,KAAKH,QACZ,IAAI,CAACE,KAAK,GAAG,CAACC,MAAMP,OAAO,IAAI,CAACE,CAAAA,IAAKA,EAAE,SAAS,KAAKK,IACjDlB,SAASkB;YAGrB;YACA,UAAUjB;0BAEd,oBAACkB,WAASA;AAK9B"}
@@ -0,0 +1,6 @@
1
+ import React from "react";
2
+ interface SigningSecretProps {
3
+ secret: string;
4
+ }
5
+ export declare const SigningSecret: ({ secret }: SigningSecretProps) => React.JSX.Element;
6
+ export {};
@@ -0,0 +1,43 @@
1
+ import react, { useCallback, useState } from "react";
2
+ import { IconButton, Text } from "@webiny/admin-ui";
3
+ import { useSnackbar } from "@webiny/app-admin/hooks/index.js";
4
+ import { ReactComponent } from "@webiny/icons/visibility.svg";
5
+ import { ReactComponent as visibility_off_svg_ReactComponent } from "@webiny/icons/visibility_off.svg";
6
+ import { ReactComponent as content_copy_svg_ReactComponent } from "@webiny/icons/content_copy.svg";
7
+ const SigningSecret = ({ secret })=>{
8
+ const [revealed, setRevealed] = useState(false);
9
+ const { showSnackbar } = useSnackbar();
10
+ const handleCopy = useCallback(async ()=>{
11
+ await navigator.clipboard.writeText(secret);
12
+ showSnackbar("Signing secret copied to clipboard.");
13
+ }, [
14
+ secret,
15
+ showSnackbar
16
+ ]);
17
+ return /*#__PURE__*/ react.createElement("div", {
18
+ className: "flex flex-col gap-xs"
19
+ }, /*#__PURE__*/ react.createElement(Text, {
20
+ size: "sm",
21
+ className: "text-neutral-strong"
22
+ }, "Signing Secret"), /*#__PURE__*/ react.createElement("div", {
23
+ className: "flex items-center gap-sm rounded-sm border-sm border-neutral-muted px-sm py-xs"
24
+ }, /*#__PURE__*/ react.createElement(Text, {
25
+ size: "sm",
26
+ className: "flex-1 font-mono select-all"
27
+ }, revealed ? secret : "•".repeat(24)), /*#__PURE__*/ react.createElement(IconButton, {
28
+ icon: revealed ? /*#__PURE__*/ react.createElement(visibility_off_svg_ReactComponent, null) : /*#__PURE__*/ react.createElement(ReactComponent, null),
29
+ variant: "secondary",
30
+ size: "sm",
31
+ onClick: ()=>setRevealed((prev)=>!prev),
32
+ "aria-label": revealed ? "Hide secret" : "Reveal secret"
33
+ }), /*#__PURE__*/ react.createElement(IconButton, {
34
+ icon: /*#__PURE__*/ react.createElement(content_copy_svg_ReactComponent, null),
35
+ variant: "secondary",
36
+ size: "sm",
37
+ onClick: ()=>void handleCopy(),
38
+ "aria-label": "Copy secret"
39
+ })));
40
+ };
41
+ export { SigningSecret };
42
+
43
+ //# sourceMappingURL=SigningSecret.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin/presentation/WebhookForm/components/SigningSecret.js","sources":["../../../../../src/admin/presentation/WebhookForm/components/SigningSecret.tsx"],"sourcesContent":["import React, { useState, useCallback } from \"react\";\nimport { IconButton, Text } from \"@webiny/admin-ui\";\nimport { useSnackbar } from \"@webiny/app-admin/hooks/index.js\";\nimport { ReactComponent as VisibilityIcon } from \"@webiny/icons/visibility.svg\";\nimport { ReactComponent as VisibilityOffIcon } from \"@webiny/icons/visibility_off.svg\";\nimport { ReactComponent as CopyIcon } from \"@webiny/icons/content_copy.svg\";\n\ninterface SigningSecretProps {\n secret: string;\n}\n\nexport const SigningSecret = ({ secret }: SigningSecretProps) => {\n const [revealed, setRevealed] = useState(false);\n const { showSnackbar } = useSnackbar();\n\n const handleCopy = useCallback(async () => {\n await navigator.clipboard.writeText(secret);\n showSnackbar(\"Signing secret copied to clipboard.\");\n }, [secret, showSnackbar]);\n\n return (\n <div className=\"flex flex-col gap-xs\">\n <Text size=\"sm\" className=\"text-neutral-strong\">\n Signing Secret\n </Text>\n <div className=\"flex items-center gap-sm rounded-sm border-sm border-neutral-muted px-sm py-xs\">\n <Text size=\"sm\" className=\"flex-1 font-mono select-all\">\n {revealed ? secret : \"•\".repeat(24)}\n </Text>\n <IconButton\n icon={revealed ? <VisibilityOffIcon /> : <VisibilityIcon />}\n variant=\"secondary\"\n size=\"sm\"\n onClick={() => setRevealed(prev => !prev)}\n aria-label={revealed ? \"Hide secret\" : \"Reveal secret\"}\n />\n <IconButton\n icon={<CopyIcon />}\n variant=\"secondary\"\n size=\"sm\"\n onClick={() => void handleCopy()}\n aria-label=\"Copy secret\"\n />\n </div>\n </div>\n );\n};\n"],"names":["SigningSecret","secret","revealed","setRevealed","useState","showSnackbar","useSnackbar","handleCopy","useCallback","navigator","Text","IconButton","VisibilityOffIcon","VisibilityIcon","prev","CopyIcon"],"mappings":";;;;;;AAWO,MAAMA,gBAAgB,CAAC,EAAEC,MAAM,EAAsB;IACxD,MAAM,CAACC,UAAUC,YAAY,GAAGC,SAAS;IACzC,MAAM,EAAEC,YAAY,EAAE,GAAGC;IAEzB,MAAMC,aAAaC,YAAY;QAC3B,MAAMC,UAAU,SAAS,CAAC,SAAS,CAACR;QACpCI,aAAa;IACjB,GAAG;QAACJ;QAAQI;KAAa;IAEzB,OAAO,WAAP,GACI,oBAAC;QAAI,WAAU;qBACX,oBAACK,MAAIA;QAAC,MAAK;QAAK,WAAU;OAAsB,iCAGhD,oBAAC;QAAI,WAAU;qBACX,oBAACA,MAAIA;QAAC,MAAK;QAAK,WAAU;OACrBR,WAAWD,SAAS,IAAI,MAAM,CAAC,oBAEpC,oBAACU,YAAUA;QACP,MAAMT,WAAW,WAAXA,GAAW,oBAACU,mCAAiBA,QAAAA,WAAAA,GAAM,oBAACC,gBAAcA;QACxD,SAAQ;QACR,MAAK;QACL,SAAS,IAAMV,YAAYW,CAAAA,OAAQ,CAACA;QACpC,cAAYZ,WAAW,gBAAgB;sBAE3C,oBAACS,YAAUA;QACP,oBAAM,oBAACI,iCAAQA;QACf,SAAQ;QACR,MAAK;QACL,SAAS,IAAM,KAAKR;QACpB,cAAW;;AAK/B"}
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export declare const WebhookFormView: () => React.JSX.Element;
@@ -0,0 +1,88 @@
1
+ import react, { useEffect, useMemo } from "react";
2
+ import { observer } from "mobx-react-lite";
3
+ import { DiContainerProvider, useContainer, useFeature, useRoute } from "@webiny/app";
4
+ import { useRouter } from "@webiny/app-admin";
5
+ import { Button, Heading, OverlayLoader, Separator } from "@webiny/admin-ui";
6
+ import { FormView } from "@webiny/app-admin/features/formModel/FormView.js";
7
+ import { WebhookFormPresenterFeature } from "../feature.js";
8
+ import { GetWebhookFeature } from "../../../features/getWebhook/feature.js";
9
+ import { CreateWebhookFeature } from "../../../features/createWebhook/feature.js";
10
+ import { UpdateWebhookFeature } from "../../../features/updateWebhook/feature.js";
11
+ import { DeleteWebhookFeature } from "../../../features/deleteWebhook/feature.js";
12
+ import { ListAvailableEventsFeature } from "../../../features/listAvailableEvents/feature.js";
13
+ import { WebhookPermissionsFeature } from "../../../features/permissions/feature.js";
14
+ import { Routes } from "../../../routes.js";
15
+ import { EventsSelector } from "./EventsSelector.js";
16
+ import { SigningSecret } from "./SigningSecret.js";
17
+ import { WebhookDeliveriesDrawer } from "../../WebhookDeliveries/components/WebhookDeliveriesDrawer.js";
18
+ const WebhookFormView_WebhookFormViewInner = observer(function() {
19
+ const { presenter } = useFeature(WebhookFormPresenterFeature);
20
+ const { goToRoute } = useRouter();
21
+ const { route } = useRoute(Routes.Form);
22
+ const id = route.params.id;
23
+ useEffect(()=>{
24
+ presenter.init(id);
25
+ }, [
26
+ presenter,
27
+ id
28
+ ]);
29
+ const { vm, actions } = presenter;
30
+ if (vm.loading) return /*#__PURE__*/ react.createElement(OverlayLoader, null);
31
+ return /*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement("div", {
32
+ className: "flex flex-col h-main-content"
33
+ }, /*#__PURE__*/ react.createElement("div", {
34
+ className: "flex items-center justify-between py-sm px-md"
35
+ }, /*#__PURE__*/ react.createElement(Heading, {
36
+ level: 5
37
+ }, vm.isNew ? "Create Webhook" : vm.webhook?.name ?? "Edit Webhook"), /*#__PURE__*/ react.createElement("div", {
38
+ className: "flex gap-sm"
39
+ }, !vm.isNew && /*#__PURE__*/ react.createElement(Button, {
40
+ variant: "secondary",
41
+ onClick: ()=>actions.openDeliveries()
42
+ }, "Deliveries"), /*#__PURE__*/ react.createElement(Button, {
43
+ variant: "secondary",
44
+ onClick: ()=>goToRoute(Routes.List)
45
+ }, "Cancel"), vm.permissions.canEdit && /*#__PURE__*/ react.createElement(Button, {
46
+ variant: "primary",
47
+ onClick: ()=>void actions.save(),
48
+ disabled: vm.saving
49
+ }, vm.saving ? "Saving..." : "Save"))), /*#__PURE__*/ react.createElement(Separator, null), /*#__PURE__*/ react.createElement("div", {
50
+ className: "flex-1 overflow-auto p-md"
51
+ }, /*#__PURE__*/ react.createElement("div", {
52
+ className: "flex flex-col gap-lg max-w-[720px]"
53
+ }, /*#__PURE__*/ react.createElement(FormView, {
54
+ name: "Webhook",
55
+ form: vm.form
56
+ }), /*#__PURE__*/ react.createElement(EventsSelector, {
57
+ availableEvents: vm.availableEvents,
58
+ selectedEvents: vm.selectedEvents,
59
+ onToggle: actions.toggleEvent,
60
+ disabled: !vm.permissions.canEdit
61
+ }), !vm.isNew && vm.webhook?.signingSecret && /*#__PURE__*/ react.createElement(SigningSecret, {
62
+ secret: vm.webhook.signingSecret
63
+ })))), vm.showDeliveries && vm.webhook && /*#__PURE__*/ react.createElement(WebhookDeliveriesDrawer, {
64
+ webhookId: vm.webhook.id,
65
+ open: vm.showDeliveries,
66
+ onClose: ()=>actions.closeDeliveries()
67
+ }));
68
+ });
69
+ const WebhookFormView = ()=>{
70
+ const container = useContainer();
71
+ const scopedContainer = useMemo(()=>{
72
+ const child = container.createChildContainer();
73
+ GetWebhookFeature.register(child);
74
+ CreateWebhookFeature.register(child);
75
+ UpdateWebhookFeature.register(child);
76
+ DeleteWebhookFeature.register(child);
77
+ ListAvailableEventsFeature.register(child);
78
+ WebhookPermissionsFeature.register(child);
79
+ WebhookFormPresenterFeature.register(child);
80
+ return child;
81
+ }, []);
82
+ return /*#__PURE__*/ react.createElement(DiContainerProvider, {
83
+ container: scopedContainer
84
+ }, /*#__PURE__*/ react.createElement(WebhookFormView_WebhookFormViewInner, null));
85
+ };
86
+ export { WebhookFormView };
87
+
88
+ //# sourceMappingURL=WebhookFormView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin/presentation/WebhookForm/components/WebhookFormView.js","sources":["../../../../../src/admin/presentation/WebhookForm/components/WebhookFormView.tsx"],"sourcesContent":["import React, { useMemo, useEffect } from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { DiContainerProvider, useContainer, useFeature } from \"@webiny/app\";\nimport { useRouter } from \"@webiny/app-admin\";\nimport { useRoute } from \"@webiny/app\";\nimport { Button, Heading, OverlayLoader, Separator } from \"@webiny/admin-ui\";\nimport { FormView } from \"@webiny/app-admin/features/formModel/FormView.js\";\nimport { WebhookFormPresenterFeature } from \"../feature.js\";\nimport { GetWebhookFeature } from \"~/admin/features/getWebhook/feature.js\";\nimport { CreateWebhookFeature } from \"~/admin/features/createWebhook/feature.js\";\nimport { UpdateWebhookFeature } from \"~/admin/features/updateWebhook/feature.js\";\nimport { DeleteWebhookFeature } from \"~/admin/features/deleteWebhook/feature.js\";\nimport { ListAvailableEventsFeature } from \"~/admin/features/listAvailableEvents/feature.js\";\nimport { WebhookPermissionsFeature } from \"~/admin/features/permissions/feature.js\";\nimport { Routes } from \"~/admin/routes.js\";\nimport { EventsSelector } from \"./EventsSelector.js\";\nimport { SigningSecret } from \"./SigningSecret.js\";\nimport { WebhookDeliveriesDrawer } from \"~/admin/presentation/WebhookDeliveries/components/WebhookDeliveriesDrawer.js\";\n\nconst WebhookFormViewInner = observer(function WebhookFormViewInner() {\n const { presenter } = useFeature(WebhookFormPresenterFeature);\n const { goToRoute } = useRouter();\n const { route } = useRoute(Routes.Form);\n const id = route.params.id;\n\n useEffect(() => {\n void presenter.init(id);\n }, [presenter, id]);\n\n const { vm, actions } = presenter;\n\n if (vm.loading) {\n return <OverlayLoader />;\n }\n\n return (\n <>\n <div className=\"flex flex-col h-main-content\">\n <div className=\"flex items-center justify-between py-sm px-md\">\n <Heading level={5}>\n {vm.isNew ? \"Create Webhook\" : (vm.webhook?.name ?? \"Edit Webhook\")}\n </Heading>\n <div className=\"flex gap-sm\">\n {!vm.isNew && (\n <Button variant=\"secondary\" onClick={() => actions.openDeliveries()}>\n Deliveries\n </Button>\n )}\n <Button variant=\"secondary\" onClick={() => goToRoute(Routes.List)}>\n Cancel\n </Button>\n {vm.permissions.canEdit && (\n <Button\n variant=\"primary\"\n onClick={() => void actions.save()}\n disabled={vm.saving}\n >\n {vm.saving ? \"Saving...\" : \"Save\"}\n </Button>\n )}\n </div>\n </div>\n <Separator />\n <div className=\"flex-1 overflow-auto p-md\">\n <div className=\"flex flex-col gap-lg max-w-[720px]\">\n <FormView name=\"Webhook\" form={vm.form} />\n <EventsSelector\n availableEvents={vm.availableEvents}\n selectedEvents={vm.selectedEvents}\n onToggle={actions.toggleEvent}\n disabled={!vm.permissions.canEdit}\n />\n {!vm.isNew && vm.webhook?.signingSecret && (\n <SigningSecret secret={vm.webhook.signingSecret} />\n )}\n </div>\n </div>\n </div>\n {vm.showDeliveries && vm.webhook && (\n <WebhookDeliveriesDrawer\n webhookId={vm.webhook.id}\n open={vm.showDeliveries}\n onClose={() => actions.closeDeliveries()}\n />\n )}\n </>\n );\n});\n\nexport const WebhookFormView = () => {\n const container = useContainer();\n\n const scopedContainer = useMemo(() => {\n const child = container.createChildContainer();\n GetWebhookFeature.register(child);\n CreateWebhookFeature.register(child);\n UpdateWebhookFeature.register(child);\n DeleteWebhookFeature.register(child);\n ListAvailableEventsFeature.register(child);\n WebhookPermissionsFeature.register(child);\n WebhookFormPresenterFeature.register(child);\n return child;\n }, []);\n\n return (\n <DiContainerProvider container={scopedContainer}>\n <WebhookFormViewInner />\n </DiContainerProvider>\n );\n};\n"],"names":["WebhookFormViewInner","observer","presenter","useFeature","WebhookFormPresenterFeature","goToRoute","useRouter","route","useRoute","Routes","id","useEffect","vm","actions","OverlayLoader","Heading","Button","Separator","FormView","EventsSelector","SigningSecret","WebhookDeliveriesDrawer","WebhookFormView","container","useContainer","scopedContainer","useMemo","child","GetWebhookFeature","CreateWebhookFeature","UpdateWebhookFeature","DeleteWebhookFeature","ListAvailableEventsFeature","WebhookPermissionsFeature","DiContainerProvider"],"mappings":";;;;;;;;;;;;;;;;;AAmBA,MAAMA,uCAAuBC,SAAS;IAClC,MAAM,EAAEC,SAAS,EAAE,GAAGC,WAAWC;IACjC,MAAM,EAAEC,SAAS,EAAE,GAAGC;IACtB,MAAM,EAAEC,KAAK,EAAE,GAAGC,SAASC,OAAO,IAAI;IACtC,MAAMC,KAAKH,MAAM,MAAM,CAAC,EAAE;IAE1BI,UAAU;QACDT,UAAU,IAAI,CAACQ;IACxB,GAAG;QAACR;QAAWQ;KAAG;IAElB,MAAM,EAAEE,EAAE,EAAEC,OAAO,EAAE,GAAGX;IAExB,IAAIU,GAAG,OAAO,EACV,OAAO,WAAP,GAAO,oBAACE,eAAaA;IAGzB,OAAO,WAAP,GACI,wDACI,oBAAC;QAAI,WAAU;qBACX,oBAAC;QAAI,WAAU;qBACX,oBAACC,SAAOA;QAAC,OAAO;OACXH,GAAG,KAAK,GAAG,mBAAoBA,GAAG,OAAO,EAAE,QAAQ,+BAExD,oBAAC;QAAI,WAAU;OACV,CAACA,GAAG,KAAK,IAAI,WAAJ,GACN,oBAACI,QAAMA;QAAC,SAAQ;QAAY,SAAS,IAAMH,QAAQ,cAAc;OAAI,6BAIzE,oBAACG,QAAMA;QAAC,SAAQ;QAAY,SAAS,IAAMX,UAAUI,OAAO,IAAI;OAAG,WAGlEG,GAAG,WAAW,CAAC,OAAO,IAAI,WAAJ,GACnB,oBAACI,QAAMA;QACH,SAAQ;QACR,SAAS,IAAM,KAAKH,QAAQ,IAAI;QAChC,UAAUD,GAAG,MAAM;OAElBA,GAAG,MAAM,GAAG,cAAc,yBAK3C,oBAACK,WAASA,OAAAA,WAAAA,GACV,oBAAC;QAAI,WAAU;qBACX,oBAAC;QAAI,WAAU;qBACX,oBAACC,UAAQA;QAAC,MAAK;QAAU,MAAMN,GAAG,IAAI;sBACtC,oBAACO,gBAAcA;QACX,iBAAiBP,GAAG,eAAe;QACnC,gBAAgBA,GAAG,cAAc;QACjC,UAAUC,QAAQ,WAAW;QAC7B,UAAU,CAACD,GAAG,WAAW,CAAC,OAAO;QAEpC,CAACA,GAAG,KAAK,IAAIA,GAAG,OAAO,EAAE,iBAAiB,WAAjB,GACtB,oBAACQ,eAAaA;QAAC,QAAQR,GAAG,OAAO,CAAC,aAAa;WAK9DA,GAAG,cAAc,IAAIA,GAAG,OAAO,IAAI,WAAJ,GAC5B,oBAACS,yBAAuBA;QACpB,WAAWT,GAAG,OAAO,CAAC,EAAE;QACxB,MAAMA,GAAG,cAAc;QACvB,SAAS,IAAMC,QAAQ,eAAe;;AAK1D;AAEO,MAAMS,kBAAkB;IAC3B,MAAMC,YAAYC;IAElB,MAAMC,kBAAkBC,QAAQ;QAC5B,MAAMC,QAAQJ,UAAU,oBAAoB;QAC5CK,kBAAkB,QAAQ,CAACD;QAC3BE,qBAAqB,QAAQ,CAACF;QAC9BG,qBAAqB,QAAQ,CAACH;QAC9BI,qBAAqB,QAAQ,CAACJ;QAC9BK,2BAA2B,QAAQ,CAACL;QACpCM,0BAA0B,QAAQ,CAACN;QACnCvB,4BAA4B,QAAQ,CAACuB;QACrC,OAAOA;IACX,GAAG,EAAE;IAEL,OAAO,WAAP,GACI,oBAACO,qBAAmBA;QAAC,WAAWT;qBAC5B,oBAACzB,sCAAoBA;AAGjC"}
@@ -0,0 +1,3 @@
1
+ export declare const WebhookFormPresenterFeature: import("@webiny/feature/admin").FeatureDefinition<{
2
+ presenter: import("./abstractions.js").IWebhookFormPresenter;
3
+ }, []>;
@@ -0,0 +1,17 @@
1
+ import { createFeature } from "@webiny/feature/admin";
2
+ import { WebhookFormPresenter } from "./abstractions.js";
3
+ import { WebhookFormPresenter as external_WebhookFormPresenter_js_WebhookFormPresenter } from "./WebhookFormPresenter.js";
4
+ const WebhookFormPresenterFeature = createFeature({
5
+ name: "Webhooks/WebhookFormPresenter",
6
+ register (container) {
7
+ container.register(external_WebhookFormPresenter_js_WebhookFormPresenter).inSingletonScope();
8
+ },
9
+ resolve (container) {
10
+ return {
11
+ presenter: container.resolve(WebhookFormPresenter)
12
+ };
13
+ }
14
+ });
15
+ export { WebhookFormPresenterFeature };
16
+
17
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin/presentation/WebhookForm/feature.js","sources":["../../../../src/admin/presentation/WebhookForm/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { WebhookFormPresenter as PresenterAbstraction } from \"./abstractions.js\";\nimport { WebhookFormPresenter } from \"./WebhookFormPresenter.js\";\n\nexport const WebhookFormPresenterFeature = createFeature({\n name: \"Webhooks/WebhookFormPresenter\",\n register(container) {\n container.register(WebhookFormPresenter).inSingletonScope();\n },\n resolve(container) {\n return {\n presenter: container.resolve(PresenterAbstraction)\n };\n }\n});\n"],"names":["WebhookFormPresenterFeature","createFeature","container","WebhookFormPresenter","PresenterAbstraction"],"mappings":";;;AAIO,MAAMA,8BAA8BC,cAAc;IACrD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC,uDAAsB,gBAAgB;IAC7D;IACA,SAAQD,SAAS;QACb,OAAO;YACH,WAAWA,UAAU,OAAO,CAACE;QACjC;IACJ;AACJ"}
@@ -0,0 +1,2 @@
1
+ export { WebhookFormPresenter } from "./abstractions.js";
2
+ export { WebhookFormPresenterFeature } from "./feature.js";
@@ -0,0 +1,2 @@
1
+ export { WebhookFormPresenter } from "./abstractions.js";
2
+ export { WebhookFormPresenterFeature } from "./feature.js";
@@ -0,0 +1,15 @@
1
+ import type { IDataSource, IDataSourceQuery, IDataSourceMeta } from "@webiny/app-admin/presentation/listPresenter/abstractions.js";
2
+ import type { Webhook } from "../../../admin/shared/types.js";
3
+ import type { IListWebhooksUseCase } from "../../../admin/features/ListWebhooks/abstractions.js";
4
+ export declare class WebhookListDataSource implements IDataSource<Webhook> {
5
+ private readonly listWebhooksUseCase;
6
+ private _rows;
7
+ private _meta;
8
+ private _loading;
9
+ constructor(listWebhooksUseCase: IListWebhooksUseCase);
10
+ get rows(): Webhook[];
11
+ get meta(): IDataSourceMeta;
12
+ get loading(): boolean;
13
+ query(params: IDataSourceQuery): Promise<void>;
14
+ loadMore(params: IDataSourceQuery): Promise<void>;
15
+ }
@@ -0,0 +1,67 @@
1
+ import { computed, makeAutoObservable, runInAction } from "mobx";
2
+ class WebhookListDataSource {
3
+ constructor(listWebhooksUseCase){
4
+ this.listWebhooksUseCase = listWebhooksUseCase;
5
+ this._rows = [];
6
+ this._meta = {
7
+ cursor: null,
8
+ hasMoreItems: false,
9
+ totalCount: 0
10
+ };
11
+ this._loading = false;
12
+ makeAutoObservable(this, {
13
+ listWebhooksUseCase: false,
14
+ rows: computed
15
+ });
16
+ }
17
+ get rows() {
18
+ return this._rows;
19
+ }
20
+ get meta() {
21
+ return this._meta;
22
+ }
23
+ get loading() {
24
+ return this._loading;
25
+ }
26
+ async query(params) {
27
+ this._loading = true;
28
+ const result = await this.listWebhooksUseCase.execute({
29
+ where: params.filters,
30
+ limit: params.limit,
31
+ after: params.cursor
32
+ });
33
+ runInAction(()=>{
34
+ this._rows = result.items;
35
+ this._meta = {
36
+ cursor: result.meta.cursor,
37
+ hasMoreItems: result.meta.hasMoreItems,
38
+ totalCount: result.meta.totalCount
39
+ };
40
+ this._loading = false;
41
+ });
42
+ }
43
+ async loadMore(params) {
44
+ if (!this._meta.hasMoreItems || this._loading) return;
45
+ this._loading = true;
46
+ const result = await this.listWebhooksUseCase.execute({
47
+ where: params.filters,
48
+ limit: params.limit,
49
+ after: this._meta.cursor ?? void 0
50
+ });
51
+ runInAction(()=>{
52
+ this._rows = [
53
+ ...this._rows,
54
+ ...result.items
55
+ ];
56
+ this._meta = {
57
+ cursor: result.meta.cursor,
58
+ hasMoreItems: result.meta.hasMoreItems,
59
+ totalCount: result.meta.totalCount
60
+ };
61
+ this._loading = false;
62
+ });
63
+ }
64
+ }
65
+ export { WebhookListDataSource };
66
+
67
+ //# sourceMappingURL=WebhookListDataSource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin/presentation/WebhookList/WebhookListDataSource.js","sources":["../../../../src/admin/presentation/WebhookList/WebhookListDataSource.ts"],"sourcesContent":["import { makeAutoObservable, runInAction, computed } from \"mobx\";\nimport type {\n IDataSource,\n IDataSourceQuery,\n IDataSourceMeta\n} from \"@webiny/app-admin/presentation/listPresenter/abstractions.js\";\nimport type { Webhook } from \"~/admin/shared/types.js\";\nimport type { IListWebhooksUseCase } from \"~/admin/features/ListWebhooks/abstractions.js\";\n\nexport class WebhookListDataSource implements IDataSource<Webhook> {\n private _rows: Webhook[] = [];\n private _meta: IDataSourceMeta = { cursor: null, hasMoreItems: false, totalCount: 0 };\n private _loading = false;\n\n constructor(private readonly listWebhooksUseCase: IListWebhooksUseCase) {\n makeAutoObservable<WebhookListDataSource, \"listWebhooksUseCase\">(this, {\n listWebhooksUseCase: false,\n rows: computed\n });\n }\n\n get rows(): Webhook[] {\n return this._rows;\n }\n\n get meta(): IDataSourceMeta {\n return this._meta;\n }\n\n get loading(): boolean {\n return this._loading;\n }\n\n async query(params: IDataSourceQuery): Promise<void> {\n this._loading = true;\n const result = await this.listWebhooksUseCase.execute({\n where: params.filters as { enabled?: boolean } | undefined,\n limit: params.limit,\n after: params.cursor\n });\n runInAction(() => {\n this._rows = result.items;\n this._meta = {\n cursor: result.meta.cursor,\n hasMoreItems: result.meta.hasMoreItems,\n totalCount: result.meta.totalCount\n };\n this._loading = false;\n });\n }\n\n async loadMore(params: IDataSourceQuery): Promise<void> {\n if (!this._meta.hasMoreItems || this._loading) {\n return;\n }\n this._loading = true;\n const result = await this.listWebhooksUseCase.execute({\n where: params.filters as { enabled?: boolean } | undefined,\n limit: params.limit,\n after: this._meta.cursor ?? undefined\n });\n runInAction(() => {\n this._rows = [...this._rows, ...result.items];\n this._meta = {\n cursor: result.meta.cursor,\n hasMoreItems: result.meta.hasMoreItems,\n totalCount: result.meta.totalCount\n };\n this._loading = false;\n });\n }\n}\n"],"names":["WebhookListDataSource","listWebhooksUseCase","makeAutoObservable","computed","params","result","runInAction","undefined"],"mappings":";AASO,MAAMA;IAKT,YAA6BC,mBAAyC,CAAE;aAA3CA,mBAAmB,GAAnBA;aAJrB,KAAK,GAAc,EAAE;aACrB,KAAK,GAAoB;YAAE,QAAQ;YAAM,cAAc;YAAO,YAAY;QAAE;aAC5E,QAAQ,GAAG;QAGfC,mBAAiE,IAAI,EAAE;YACnE,qBAAqB;YACrB,MAAMC;QACV;IACJ;IAEA,IAAI,OAAkB;QAClB,OAAO,IAAI,CAAC,KAAK;IACrB;IAEA,IAAI,OAAwB;QACxB,OAAO,IAAI,CAAC,KAAK;IACrB;IAEA,IAAI,UAAmB;QACnB,OAAO,IAAI,CAAC,QAAQ;IACxB;IAEA,MAAM,MAAMC,MAAwB,EAAiB;QACjD,IAAI,CAAC,QAAQ,GAAG;QAChB,MAAMC,SAAS,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;YAClD,OAAOD,OAAO,OAAO;YACrB,OAAOA,OAAO,KAAK;YACnB,OAAOA,OAAO,MAAM;QACxB;QACAE,YAAY;YACR,IAAI,CAAC,KAAK,GAAGD,OAAO,KAAK;YACzB,IAAI,CAAC,KAAK,GAAG;gBACT,QAAQA,OAAO,IAAI,CAAC,MAAM;gBAC1B,cAAcA,OAAO,IAAI,CAAC,YAAY;gBACtC,YAAYA,OAAO,IAAI,CAAC,UAAU;YACtC;YACA,IAAI,CAAC,QAAQ,GAAG;QACpB;IACJ;IAEA,MAAM,SAASD,MAAwB,EAAiB;QACpD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,EACzC;QAEJ,IAAI,CAAC,QAAQ,GAAG;QAChB,MAAMC,SAAS,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;YAClD,OAAOD,OAAO,OAAO;YACrB,OAAOA,OAAO,KAAK;YACnB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,IAAIG;QAChC;QACAD,YAAY;YACR,IAAI,CAAC,KAAK,GAAG;mBAAI,IAAI,CAAC,KAAK;mBAAKD,OAAO,KAAK;aAAC;YAC7C,IAAI,CAAC,KAAK,GAAG;gBACT,QAAQA,OAAO,IAAI,CAAC,MAAM;gBAC1B,cAAcA,OAAO,IAAI,CAAC,YAAY;gBACtC,YAAYA,OAAO,IAAI,CAAC,UAAU;YACtC;YACA,IAAI,CAAC,QAAQ,GAAG;QACpB;IACJ;AACJ"}