@webiny/webhooks 6.4.0-beta.2 → 6.4.0-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (297) hide show
  1. package/admin/WebhookRoutes.js +32 -3
  2. package/admin/WebhookRoutes.js.map +1 -1
  3. package/admin/Webhooks.js +10 -2
  4. package/admin/Webhooks.js.map +1 -1
  5. package/admin/features/getWebhookSettings/GetWebhookSettingsGateway.d.ts +12 -0
  6. package/admin/features/getWebhookSettings/GetWebhookSettingsGateway.js +41 -0
  7. package/admin/features/getWebhookSettings/GetWebhookSettingsGateway.js.map +1 -0
  8. package/admin/features/getWebhookSettings/GetWebhookSettingsUseCase.d.ts +11 -0
  9. package/admin/features/getWebhookSettings/GetWebhookSettingsUseCase.js +18 -0
  10. package/admin/features/getWebhookSettings/GetWebhookSettingsUseCase.js.map +1 -0
  11. package/admin/features/getWebhookSettings/abstractions.d.ts +15 -0
  12. package/admin/features/getWebhookSettings/abstractions.js +6 -0
  13. package/admin/features/getWebhookSettings/abstractions.js.map +1 -0
  14. package/admin/features/getWebhookSettings/feature.d.ts +3 -0
  15. package/admin/features/getWebhookSettings/feature.js +19 -0
  16. package/admin/features/getWebhookSettings/feature.js.map +1 -0
  17. package/admin/features/getWebhookSettings/index.d.ts +2 -0
  18. package/admin/features/getWebhookSettings/index.js +2 -0
  19. package/admin/features/listWebhookDeliveries/ListWebhookDeliveriesGateway.js +1 -1
  20. package/admin/features/listWebhookDeliveries/ListWebhookDeliveriesGateway.js.map +1 -1
  21. package/admin/features/listWebhookDeliveries/abstractions.d.ts +6 -1
  22. package/admin/features/listWebhookDeliveries/abstractions.js.map +1 -1
  23. package/admin/features/updateWebhookSettings/UpdateWebhookSettingsGateway.d.ts +12 -0
  24. package/admin/features/updateWebhookSettings/UpdateWebhookSettingsGateway.js +44 -0
  25. package/admin/features/updateWebhookSettings/UpdateWebhookSettingsGateway.js.map +1 -0
  26. package/admin/features/updateWebhookSettings/UpdateWebhookSettingsUseCase.d.ts +11 -0
  27. package/admin/features/updateWebhookSettings/UpdateWebhookSettingsUseCase.js +18 -0
  28. package/admin/features/updateWebhookSettings/UpdateWebhookSettingsUseCase.js.map +1 -0
  29. package/admin/features/updateWebhookSettings/abstractions.d.ts +19 -0
  30. package/admin/features/updateWebhookSettings/abstractions.js +6 -0
  31. package/admin/features/updateWebhookSettings/abstractions.js.map +1 -0
  32. package/admin/features/updateWebhookSettings/feature.d.ts +3 -0
  33. package/admin/features/updateWebhookSettings/feature.js +19 -0
  34. package/admin/features/updateWebhookSettings/feature.js.map +1 -0
  35. package/admin/features/updateWebhookSettings/index.d.ts +2 -0
  36. package/admin/features/updateWebhookSettings/index.js +2 -0
  37. package/admin/presentation/{WebhookDeliveries → WebhookDeliveriesPage}/WebhookDeliveriesDataSource.d.ts +1 -2
  38. package/admin/presentation/{WebhookDeliveries → WebhookDeliveriesPage}/WebhookDeliveriesDataSource.js +5 -7
  39. package/admin/presentation/WebhookDeliveriesPage/WebhookDeliveriesDataSource.js.map +1 -0
  40. package/admin/presentation/WebhookDeliveriesPage/WebhookDeliveriesPagePresenter.d.ts +41 -0
  41. package/admin/presentation/WebhookDeliveriesPage/WebhookDeliveriesPagePresenter.js +223 -0
  42. package/admin/presentation/WebhookDeliveriesPage/WebhookDeliveriesPagePresenter.js.map +1 -0
  43. package/admin/presentation/WebhookDeliveriesPage/abstractions.d.ts +42 -0
  44. package/admin/presentation/WebhookDeliveriesPage/abstractions.js +5 -0
  45. package/admin/presentation/WebhookDeliveriesPage/abstractions.js.map +1 -0
  46. package/admin/presentation/WebhookDeliveriesPage/components/DeliveryAccordionRow.d.ts +11 -0
  47. package/admin/presentation/WebhookDeliveriesPage/components/DeliveryAccordionRow.js +36 -0
  48. package/admin/presentation/WebhookDeliveriesPage/components/DeliveryAccordionRow.js.map +1 -0
  49. package/admin/presentation/WebhookDeliveriesPage/components/DeliveryBottomInfoBar.d.ts +9 -0
  50. package/admin/presentation/WebhookDeliveriesPage/components/DeliveryBottomInfoBar.js +43 -0
  51. package/admin/presentation/WebhookDeliveriesPage/components/DeliveryBottomInfoBar.js.map +1 -0
  52. package/admin/presentation/WebhookDeliveriesPage/components/DeliveryDetailContent.d.ts +7 -0
  53. package/admin/presentation/WebhookDeliveriesPage/components/DeliveryDetailContent.js +76 -0
  54. package/admin/presentation/WebhookDeliveriesPage/components/DeliveryDetailContent.js.map +1 -0
  55. package/admin/presentation/WebhookDeliveriesPage/components/DeliveryFilters.d.ts +9 -0
  56. package/admin/presentation/WebhookDeliveriesPage/components/DeliveryFilters.js +85 -0
  57. package/admin/presentation/WebhookDeliveriesPage/components/DeliveryFilters.js.map +1 -0
  58. package/admin/presentation/WebhookDeliveriesPage/components/DeliveryList.d.ts +9 -0
  59. package/admin/presentation/WebhookDeliveriesPage/components/DeliveryList.js +61 -0
  60. package/admin/presentation/WebhookDeliveriesPage/components/DeliveryList.js.map +1 -0
  61. package/admin/presentation/WebhookDeliveriesPage/components/WebhookDefinitionsButton.d.ts +2 -0
  62. package/admin/presentation/WebhookDeliveriesPage/components/WebhookDefinitionsButton.js +16 -0
  63. package/admin/presentation/WebhookDeliveriesPage/components/WebhookDefinitionsButton.js.map +1 -0
  64. package/admin/presentation/WebhookDeliveriesPage/components/WebhookDeliveriesPage.d.ts +2 -0
  65. package/admin/presentation/WebhookDeliveriesPage/components/WebhookDeliveriesPage.js +73 -0
  66. package/admin/presentation/WebhookDeliveriesPage/components/WebhookDeliveriesPage.js.map +1 -0
  67. package/admin/presentation/WebhookDeliveriesPage/components/statusVariant.d.ts +1 -0
  68. package/admin/presentation/WebhookDeliveriesPage/components/statusVariant.js +13 -0
  69. package/admin/presentation/WebhookDeliveriesPage/components/statusVariant.js.map +1 -0
  70. package/admin/presentation/WebhookDeliveriesPage/feature.d.ts +3 -0
  71. package/admin/presentation/WebhookDeliveriesPage/feature.js +17 -0
  72. package/admin/presentation/WebhookDeliveriesPage/feature.js.map +1 -0
  73. package/admin/presentation/WebhookDeliveriesPage/index.d.ts +5 -0
  74. package/admin/presentation/WebhookDeliveriesPage/index.js +1 -0
  75. package/admin/presentation/WebhookForm/WebhookFormPresenter.d.ts +9 -5
  76. package/admin/presentation/WebhookForm/WebhookFormPresenter.js +144 -60
  77. package/admin/presentation/WebhookForm/WebhookFormPresenter.js.map +1 -1
  78. package/admin/presentation/WebhookForm/abstractions.d.ts +2 -13
  79. package/admin/presentation/WebhookForm/abstractions.js.map +1 -1
  80. package/admin/presentation/WebhookForm/components/SigningSecret.d.ts +5 -2
  81. package/admin/presentation/WebhookForm/components/SigningSecret.js +7 -3
  82. package/admin/presentation/WebhookForm/components/SigningSecret.js.map +1 -1
  83. package/admin/presentation/WebhookForm/components/WebhookFormView.js +49 -41
  84. package/admin/presentation/WebhookForm/components/WebhookFormView.js.map +1 -1
  85. package/admin/presentation/WebhookList/WebhookListPresenter.d.ts +26 -2
  86. package/admin/presentation/WebhookList/WebhookListPresenter.js +36 -34
  87. package/admin/presentation/WebhookList/WebhookListPresenter.js.map +1 -1
  88. package/admin/presentation/WebhookList/abstractions.d.ts +25 -7
  89. package/admin/presentation/WebhookList/abstractions.js.map +1 -1
  90. package/admin/presentation/WebhookList/components/CreateWebhookButton.d.ts +2 -0
  91. package/admin/presentation/WebhookList/components/CreateWebhookButton.js +22 -0
  92. package/admin/presentation/WebhookList/components/CreateWebhookButton.js.map +1 -0
  93. package/admin/presentation/WebhookList/components/WebhookDeliveriesButton.d.ts +2 -0
  94. package/admin/presentation/WebhookList/components/WebhookDeliveriesButton.js +16 -0
  95. package/admin/presentation/WebhookList/components/WebhookDeliveriesButton.js.map +1 -0
  96. package/admin/presentation/WebhookList/components/WebhookListContent.d.ts +9 -0
  97. package/admin/presentation/WebhookList/components/WebhookListContent.js +170 -0
  98. package/admin/presentation/WebhookList/components/WebhookListContent.js.map +1 -0
  99. package/admin/presentation/WebhookList/components/WebhookListView.js +10 -133
  100. package/admin/presentation/WebhookList/components/WebhookListView.js.map +1 -1
  101. package/admin/presentation/WebhookSettings/WebhookSettingsPresenter.d.ts +21 -0
  102. package/admin/presentation/WebhookSettings/WebhookSettingsPresenter.js +91 -0
  103. package/admin/presentation/WebhookSettings/WebhookSettingsPresenter.js.map +1 -0
  104. package/admin/presentation/WebhookSettings/abstractions.d.ts +16 -0
  105. package/admin/presentation/WebhookSettings/abstractions.js +5 -0
  106. package/admin/presentation/WebhookSettings/abstractions.js.map +1 -0
  107. package/admin/presentation/WebhookSettings/components/WebhookSettingsView.d.ts +2 -0
  108. package/admin/presentation/WebhookSettings/components/WebhookSettingsView.js +56 -0
  109. package/admin/presentation/WebhookSettings/components/WebhookSettingsView.js.map +1 -0
  110. package/admin/presentation/WebhookSettings/feature.d.ts +3 -0
  111. package/admin/presentation/WebhookSettings/feature.js +17 -0
  112. package/admin/presentation/WebhookSettings/feature.js.map +1 -0
  113. package/admin/presentation/WebhookSettings/index.d.ts +2 -0
  114. package/admin/presentation/WebhookSettings/index.js +2 -0
  115. package/admin/routes.d.ts +4 -0
  116. package/admin/routes.js +11 -0
  117. package/admin/routes.js.map +1 -1
  118. package/admin/shared/types.d.ts +4 -0
  119. package/api/WebhooksFeature.js +10 -0
  120. package/api/WebhooksFeature.js.map +1 -1
  121. package/api/domain/WebhookDelivery.d.ts +0 -1
  122. package/api/domain/WebhookSettings.d.ts +4 -0
  123. package/api/domain/WebhookSettings.js +0 -0
  124. package/api/domain/constants.d.ts +2 -1
  125. package/api/domain/constants.js +3 -2
  126. package/api/domain/constants.js.map +1 -1
  127. package/api/domain/errors.d.ts +7 -2
  128. package/api/domain/errors.js +16 -3
  129. package/api/domain/errors.js.map +1 -1
  130. package/api/features/CreateWebhook/CreateWebhookUseCase.d.ts +3 -3
  131. package/api/features/CreateWebhook/CreateWebhookUseCase.js +10 -19
  132. package/api/features/CreateWebhook/CreateWebhookUseCase.js.map +1 -1
  133. package/api/features/CreateWebhook/abstractions.d.ts +1 -1
  134. package/api/features/CreateWebhook/abstractions.js.map +1 -1
  135. package/api/features/CreateWebhook/schema.d.ts +10 -0
  136. package/api/features/CreateWebhook/schema.js +16 -0
  137. package/api/features/CreateWebhook/schema.js.map +1 -0
  138. package/api/features/CreateWebhookDelivery/CreateWebhookDeliveryRepository.d.ts +1 -1
  139. package/api/features/CreateWebhookDelivery/CreateWebhookDeliveryRepository.js +3 -1
  140. package/api/features/CreateWebhookDelivery/CreateWebhookDeliveryRepository.js.map +1 -1
  141. package/api/features/CreateWebhookDelivery/abstractions.d.ts +1 -1
  142. package/api/features/CreateWebhookDelivery/abstractions.js.map +1 -1
  143. package/api/features/DeleteWebhook/DeleteWebhookUseCase.d.ts +3 -3
  144. package/api/features/DeleteWebhook/DeleteWebhookUseCase.js +8 -3
  145. package/api/features/DeleteWebhook/DeleteWebhookUseCase.js.map +1 -1
  146. package/api/features/DeleteWebhook/abstractions.d.ts +2 -2
  147. package/api/features/DeleteWebhook/abstractions.js.map +1 -1
  148. package/api/features/DeleteWebhook/schema.d.ts +4 -0
  149. package/api/features/DeleteWebhook/schema.js +7 -0
  150. package/api/features/DeleteWebhook/schema.js.map +1 -0
  151. package/api/features/GetWebhook/GetWebhookUseCase.d.ts +2 -2
  152. package/api/features/GetWebhook/GetWebhookUseCase.js +7 -2
  153. package/api/features/GetWebhook/GetWebhookUseCase.js.map +1 -1
  154. package/api/features/GetWebhook/abstractions.d.ts +2 -2
  155. package/api/features/GetWebhook/abstractions.js.map +1 -1
  156. package/api/features/GetWebhook/schema.d.ts +4 -0
  157. package/api/features/GetWebhook/schema.js +7 -0
  158. package/api/features/GetWebhook/schema.js.map +1 -0
  159. package/api/features/GetWebhookDelivery/GetWebhookDeliveryUseCase.d.ts +2 -2
  160. package/api/features/GetWebhookDelivery/GetWebhookDeliveryUseCase.js +7 -2
  161. package/api/features/GetWebhookDelivery/GetWebhookDeliveryUseCase.js.map +1 -1
  162. package/api/features/GetWebhookDelivery/abstractions.d.ts +2 -2
  163. package/api/features/GetWebhookDelivery/abstractions.js.map +1 -1
  164. package/api/features/GetWebhookDelivery/schema.d.ts +4 -0
  165. package/api/features/GetWebhookDelivery/schema.js +7 -0
  166. package/api/features/GetWebhookDelivery/schema.js.map +1 -0
  167. package/api/features/GetWebhookSettings/GetWebhookSettingsRepository.d.ts +19 -0
  168. package/api/features/GetWebhookSettings/GetWebhookSettingsRepository.js +57 -0
  169. package/api/features/GetWebhookSettings/GetWebhookSettingsRepository.js.map +1 -0
  170. package/api/features/GetWebhookSettings/abstractions.d.ts +13 -0
  171. package/api/features/GetWebhookSettings/abstractions.js +5 -0
  172. package/api/features/GetWebhookSettings/abstractions.js.map +1 -0
  173. package/api/features/GetWebhookSettings/feature.d.ts +4 -0
  174. package/api/features/GetWebhookSettings/feature.js +11 -0
  175. package/api/features/GetWebhookSettings/feature.js.map +1 -0
  176. package/api/features/ListWebhookDeliveries/ListWebhookDeliveriesUseCase.d.ts +2 -2
  177. package/api/features/ListWebhookDeliveries/ListWebhookDeliveriesUseCase.js +4 -1
  178. package/api/features/ListWebhookDeliveries/ListWebhookDeliveriesUseCase.js.map +1 -1
  179. package/api/features/ListWebhookDeliveries/abstractions.d.ts +2 -2
  180. package/api/features/ListWebhookDeliveries/abstractions.js.map +1 -1
  181. package/api/features/ListWebhookDeliveries/schema.d.ts +7 -0
  182. package/api/features/ListWebhookDeliveries/schema.js +10 -0
  183. package/api/features/ListWebhookDeliveries/schema.js.map +1 -0
  184. package/api/features/ListWebhooks/ListWebhooksUseCase.d.ts +2 -2
  185. package/api/features/ListWebhooks/ListWebhooksUseCase.js +4 -1
  186. package/api/features/ListWebhooks/ListWebhooksUseCase.js.map +1 -1
  187. package/api/features/ListWebhooks/abstractions.d.ts +2 -2
  188. package/api/features/ListWebhooks/abstractions.js.map +1 -1
  189. package/api/features/ListWebhooks/schema.d.ts +7 -0
  190. package/api/features/ListWebhooks/schema.js +10 -0
  191. package/api/features/ListWebhooks/schema.js.map +1 -0
  192. package/api/features/ResendWebhookDelivery/ResendWebhookDeliveryUseCase.d.ts +8 -6
  193. package/api/features/ResendWebhookDelivery/ResendWebhookDeliveryUseCase.js +16 -6
  194. package/api/features/ResendWebhookDelivery/ResendWebhookDeliveryUseCase.js.map +1 -1
  195. package/api/features/ResendWebhookDelivery/abstractions.d.ts +2 -2
  196. package/api/features/ResendWebhookDelivery/abstractions.js.map +1 -1
  197. package/api/features/ResendWebhookDelivery/schema.d.ts +4 -0
  198. package/api/features/ResendWebhookDelivery/schema.js +7 -0
  199. package/api/features/ResendWebhookDelivery/schema.js.map +1 -0
  200. package/api/features/SendWebhookTask/SendWebhookTask.d.ts +7 -3
  201. package/api/features/SendWebhookTask/SendWebhookTask.js +46 -34
  202. package/api/features/SendWebhookTask/SendWebhookTask.js.map +1 -1
  203. package/api/features/SendWebhookTask/types.d.ts +1 -0
  204. package/api/features/TriggerWebhook/TriggerWebhookUseCase.d.ts +3 -1
  205. package/api/features/TriggerWebhook/TriggerWebhookUseCase.js +17 -6
  206. package/api/features/TriggerWebhook/TriggerWebhookUseCase.js.map +1 -1
  207. package/api/features/TriggerWebhook/abstractions.d.ts +2 -2
  208. package/api/features/TriggerWebhook/abstractions.js.map +1 -1
  209. package/api/features/TriggerWebhook/schema.d.ts +5 -0
  210. package/api/features/TriggerWebhook/schema.js +8 -0
  211. package/api/features/TriggerWebhook/schema.js.map +1 -0
  212. package/api/features/UpdateWebhook/UpdateWebhookUseCase.d.ts +4 -4
  213. package/api/features/UpdateWebhook/UpdateWebhookUseCase.js +9 -33
  214. package/api/features/UpdateWebhook/UpdateWebhookUseCase.js.map +1 -1
  215. package/api/features/UpdateWebhook/abstractions.d.ts +0 -1
  216. package/api/features/UpdateWebhook/abstractions.js.map +1 -1
  217. package/api/features/UpdateWebhook/schema.d.ts +9 -0
  218. package/api/features/UpdateWebhook/schema.js +15 -0
  219. package/api/features/UpdateWebhook/schema.js.map +1 -0
  220. package/api/features/UpdateWebhookSettings/UpdateWebhookSettingsRepository.d.ts +21 -0
  221. package/api/features/UpdateWebhookSettings/UpdateWebhookSettingsRepository.js +62 -0
  222. package/api/features/UpdateWebhookSettings/UpdateWebhookSettingsRepository.js.map +1 -0
  223. package/api/features/UpdateWebhookSettings/UpdateWebhookSettingsUseCase.d.ts +14 -0
  224. package/api/features/UpdateWebhookSettings/UpdateWebhookSettingsUseCase.js +27 -0
  225. package/api/features/UpdateWebhookSettings/UpdateWebhookSettingsUseCase.js.map +1 -0
  226. package/api/features/UpdateWebhookSettings/abstractions.d.ts +27 -0
  227. package/api/features/UpdateWebhookSettings/abstractions.js +6 -0
  228. package/api/features/UpdateWebhookSettings/abstractions.js.map +1 -0
  229. package/api/features/UpdateWebhookSettings/feature.d.ts +4 -0
  230. package/api/features/UpdateWebhookSettings/feature.js +13 -0
  231. package/api/features/UpdateWebhookSettings/feature.js.map +1 -0
  232. package/api/features/UpdateWebhookSettings/schema.d.ts +5 -0
  233. package/api/features/UpdateWebhookSettings/schema.js +9 -0
  234. package/api/features/UpdateWebhookSettings/schema.js.map +1 -0
  235. package/api/features/WebhookDeliver/WebhookDeliver.d.ts +13 -0
  236. package/api/features/WebhookDeliver/WebhookDeliver.js +79 -0
  237. package/api/features/WebhookDeliver/WebhookDeliver.js.map +1 -0
  238. package/api/features/WebhookDeliver/abstractions.d.ts +24 -0
  239. package/api/features/WebhookDeliver/abstractions.js +5 -0
  240. package/api/features/WebhookDeliver/abstractions.js.map +1 -0
  241. package/api/features/WebhookDeliver/feature.d.ts +4 -0
  242. package/api/features/WebhookDeliver/feature.js +11 -0
  243. package/api/features/WebhookDeliver/feature.js.map +1 -0
  244. package/api/features/WebhookDeliver/index.d.ts +2 -0
  245. package/api/features/WebhookDeliver/index.js +2 -0
  246. package/api/features/WebhookDispatcher/WebhookDispatcher.d.ts +3 -1
  247. package/api/features/WebhookDispatcher/WebhookDispatcher.js +9 -4
  248. package/api/features/WebhookDispatcher/WebhookDispatcher.js.map +1 -1
  249. package/api/features/WebhookSignPayload/WebhookSignPayload.d.ts +1 -0
  250. package/api/features/WebhookSignPayload/WebhookSignPayload.js +7 -1
  251. package/api/features/WebhookSignPayload/WebhookSignPayload.js.map +1 -1
  252. package/api/graphql/WebhookCrudSchema.js +1 -2
  253. package/api/graphql/WebhookCrudSchema.js.map +1 -1
  254. package/api/graphql/WebhookDeliverySchema.js +12 -8
  255. package/api/graphql/WebhookDeliverySchema.js.map +1 -1
  256. package/api/graphql/WebhookEventSchema.js +2 -0
  257. package/api/graphql/WebhookEventSchema.js.map +1 -1
  258. package/api/graphql/WebhookSettingsSchema.d.ts +8 -0
  259. package/api/graphql/WebhookSettingsSchema.js +62 -0
  260. package/api/graphql/WebhookSettingsSchema.js.map +1 -0
  261. package/api/models/WebhookDeliveryModel.js +4 -4
  262. package/api/models/WebhookDeliveryModel.js.map +1 -1
  263. package/api/models/WebhookModel.js +1 -1
  264. package/api/models/WebhookModel.js.map +1 -1
  265. package/api/models/WebhookSettingsModel.d.ts +8 -0
  266. package/api/models/WebhookSettingsModel.js +28 -0
  267. package/api/models/WebhookSettingsModel.js.map +1 -0
  268. package/api/utils/isValidEndpointUrl.d.ts +1 -0
  269. package/api/utils/isValidEndpointUrl.js +13 -0
  270. package/api/utils/isValidEndpointUrl.js.map +1 -0
  271. package/exports/api/webhooks.d.ts +0 -1
  272. package/exports/api/webhooks.js +0 -1
  273. package/package.json +27 -23
  274. package/admin/SecurityPermission.d.ts +0 -2
  275. package/admin/SecurityPermission.js +0 -15
  276. package/admin/SecurityPermission.js.map +0 -1
  277. package/admin/presentation/WebhookDeliveries/WebhookDeliveriesDataSource.js.map +0 -1
  278. package/admin/presentation/WebhookDeliveries/WebhookDeliveriesPresenter.d.ts +0 -19
  279. package/admin/presentation/WebhookDeliveries/WebhookDeliveriesPresenter.js +0 -77
  280. package/admin/presentation/WebhookDeliveries/WebhookDeliveriesPresenter.js.map +0 -1
  281. package/admin/presentation/WebhookDeliveries/abstractions.d.ts +0 -22
  282. package/admin/presentation/WebhookDeliveries/abstractions.js +0 -5
  283. package/admin/presentation/WebhookDeliveries/abstractions.js.map +0 -1
  284. package/admin/presentation/WebhookDeliveries/components/DeliveryDetail.d.ts +0 -11
  285. package/admin/presentation/WebhookDeliveries/components/DeliveryDetail.js +0 -73
  286. package/admin/presentation/WebhookDeliveries/components/DeliveryDetail.js.map +0 -1
  287. package/admin/presentation/WebhookDeliveries/components/WebhookDeliveriesDrawer.d.ts +0 -8
  288. package/admin/presentation/WebhookDeliveries/components/WebhookDeliveriesDrawer.js +0 -119
  289. package/admin/presentation/WebhookDeliveries/components/WebhookDeliveriesDrawer.js.map +0 -1
  290. package/admin/presentation/WebhookDeliveries/feature.d.ts +0 -3
  291. package/admin/presentation/WebhookDeliveries/feature.js +0 -17
  292. package/admin/presentation/WebhookDeliveries/feature.js.map +0 -1
  293. package/admin/presentation/WebhookDeliveries/index.d.ts +0 -2
  294. package/admin/presentation/WebhookDeliveries/index.js +0 -2
  295. package/admin/presentation/WebhookForm/components/EventsSelector.d.ts +0 -12
  296. package/admin/presentation/WebhookForm/components/EventsSelector.js +0 -44
  297. package/admin/presentation/WebhookForm/components/EventsSelector.js.map +0 -1
@@ -0,0 +1,62 @@
1
+ import { Result } from "@webiny/feature/api";
2
+ import { createCacheKey } from "@webiny/utils";
3
+ import { GetModelRepository } from "@webiny/api-headless-cms/features/contentModel/GetModel/index.js";
4
+ import { GetLatestRevisionByEntryIdRepository } from "@webiny/api-headless-cms/features/contentEntry/GetLatestRevisionByEntryId/index.js";
5
+ import { UpdateEntryRepository } from "@webiny/api-headless-cms/features/contentEntry/UpdateEntry/index.js";
6
+ import { UpdateEntryDataFactory } from "@webiny/api-headless-cms/exports/api/cms/entry.js";
7
+ import { GetWebhookSettingsRepository } from "../GetWebhookSettings/abstractions.js";
8
+ import { UpdateWebhookSettingsRepository } from "./abstractions.js";
9
+ import { WebhookModelNotFoundError, WebhookPersistenceError } from "../../domain/errors.js";
10
+ import { WEBHOOK_SETTINGS_MODEL_ID } from "../../domain/constants.js";
11
+ class UpdateWebhookSettingsRepositoryImpl {
12
+ constructor(getModelRepository, getWebhookSettingsRepository, getLatestRevisionRepository, updateEntryRepository, updateEntryDataFactory){
13
+ this.getModelRepository = getModelRepository;
14
+ this.getWebhookSettingsRepository = getWebhookSettingsRepository;
15
+ this.getLatestRevisionRepository = getLatestRevisionRepository;
16
+ this.updateEntryRepository = updateEntryRepository;
17
+ this.updateEntryDataFactory = updateEntryDataFactory;
18
+ }
19
+ async execute(input) {
20
+ try {
21
+ const getResult = await this.getWebhookSettingsRepository.execute();
22
+ if (getResult.isFail()) return getResult;
23
+ const modelResult = await this.getModelRepository.execute(WEBHOOK_SETTINGS_MODEL_ID);
24
+ if (modelResult.isFail()) return Result.fail(new WebhookModelNotFoundError(WEBHOOK_SETTINGS_MODEL_ID));
25
+ const model = modelResult.value;
26
+ const singletonId = createCacheKey(model.modelId);
27
+ const entryId = `${singletonId}#0001`;
28
+ const entryResult = await this.getLatestRevisionRepository.execute(model, {
29
+ id: entryId
30
+ });
31
+ if (entryResult.isFail()) return Result.fail(WebhookPersistenceError.from(entryResult.error));
32
+ const { entry } = await this.updateEntryDataFactory.create(model, {
33
+ values: {
34
+ signingSecret: input.signingSecret,
35
+ deliveryRetentionDays: input.deliveryRetentionDays
36
+ }
37
+ }, entryResult.value);
38
+ const updateResult = await this.updateEntryRepository.execute(model, entry);
39
+ if (updateResult.isFail()) return Result.fail(WebhookPersistenceError.from(updateResult.error));
40
+ const settings = {
41
+ signingSecret: entry.values.signingSecret,
42
+ deliveryRetentionDays: entry.values.deliveryRetentionDays
43
+ };
44
+ return Result.ok(settings);
45
+ } catch (error) {
46
+ return Result.fail(WebhookPersistenceError.from(error));
47
+ }
48
+ }
49
+ }
50
+ const UpdateWebhookSettingsRepository_UpdateWebhookSettingsRepository = UpdateWebhookSettingsRepository.createImplementation({
51
+ implementation: UpdateWebhookSettingsRepositoryImpl,
52
+ dependencies: [
53
+ GetModelRepository,
54
+ GetWebhookSettingsRepository,
55
+ GetLatestRevisionByEntryIdRepository,
56
+ UpdateEntryRepository,
57
+ UpdateEntryDataFactory
58
+ ]
59
+ });
60
+ export { UpdateWebhookSettingsRepository_UpdateWebhookSettingsRepository as UpdateWebhookSettingsRepository };
61
+
62
+ //# sourceMappingURL=UpdateWebhookSettingsRepository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/features/UpdateWebhookSettings/UpdateWebhookSettingsRepository.js","sources":["../../../../src/api/features/UpdateWebhookSettings/UpdateWebhookSettingsRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { createCacheKey } from \"@webiny/utils\";\nimport { GetModelRepository } from \"@webiny/api-headless-cms/features/contentModel/GetModel/index.js\";\nimport { GetLatestRevisionByEntryIdRepository } from \"@webiny/api-headless-cms/features/contentEntry/GetLatestRevisionByEntryId/index.js\";\nimport { UpdateEntryRepository } from \"@webiny/api-headless-cms/features/contentEntry/UpdateEntry/index.js\";\nimport { UpdateEntryDataFactory } from \"@webiny/api-headless-cms/exports/api/cms/entry.js\";\nimport { GetWebhookSettingsRepository } from \"~/api/features/GetWebhookSettings/abstractions.js\";\nimport {\n UpdateWebhookSettingsRepository as RepositoryAbstraction,\n type IUpdateWebhookSettingsInput\n} from \"./abstractions.js\";\nimport { WebhookModelNotFoundError, WebhookPersistenceError } from \"~/api/domain/errors.js\";\nimport { WEBHOOK_SETTINGS_MODEL_ID } from \"~/api/domain/constants.js\";\nimport type { IWebhookSettings } from \"~/api/domain/WebhookSettings.js\";\n\ninterface WebhookSettingsValues {\n signingSecret?: string;\n deliveryRetentionDays?: number;\n}\n\nclass UpdateWebhookSettingsRepositoryImpl implements RepositoryAbstraction.Interface {\n constructor(\n private readonly getModelRepository: GetModelRepository.Interface,\n private readonly getWebhookSettingsRepository: GetWebhookSettingsRepository.Interface,\n private readonly getLatestRevisionRepository: GetLatestRevisionByEntryIdRepository.Interface,\n private readonly updateEntryRepository: UpdateEntryRepository.Interface,\n private readonly updateEntryDataFactory: UpdateEntryDataFactory.Interface\n ) {}\n\n async execute(\n input: IUpdateWebhookSettingsInput\n ): Promise<Result<IWebhookSettings, RepositoryAbstraction.Error>> {\n try {\n /* Ensure the singleton entry exists (creates if missing). */\n const getResult = await this.getWebhookSettingsRepository.execute();\n if (getResult.isFail()) {\n return getResult;\n }\n\n const modelResult = await this.getModelRepository.execute(WEBHOOK_SETTINGS_MODEL_ID);\n if (modelResult.isFail()) {\n return Result.fail(new WebhookModelNotFoundError(WEBHOOK_SETTINGS_MODEL_ID));\n }\n\n const model = modelResult.value;\n const singletonId = createCacheKey(model.modelId);\n const entryId = `${singletonId}#0001`;\n\n const entryResult =\n await this.getLatestRevisionRepository.execute<WebhookSettingsValues>(model, {\n id: entryId\n });\n\n if (entryResult.isFail()) {\n return Result.fail(WebhookPersistenceError.from(entryResult.error));\n }\n\n const { entry } = await this.updateEntryDataFactory.create<WebhookSettingsValues>(\n model,\n {\n values: {\n signingSecret: input.signingSecret,\n deliveryRetentionDays: input.deliveryRetentionDays\n }\n },\n entryResult.value\n );\n\n const updateResult = await this.updateEntryRepository.execute(model, entry);\n if (updateResult.isFail()) {\n return Result.fail(WebhookPersistenceError.from(updateResult.error));\n }\n\n const settings: IWebhookSettings = {\n signingSecret: entry.values.signingSecret,\n deliveryRetentionDays: entry.values.deliveryRetentionDays\n };\n\n return Result.ok(settings);\n } catch (error) {\n return Result.fail(WebhookPersistenceError.from(error));\n }\n }\n}\n\nexport const UpdateWebhookSettingsRepository = RepositoryAbstraction.createImplementation({\n implementation: UpdateWebhookSettingsRepositoryImpl,\n dependencies: [\n GetModelRepository,\n GetWebhookSettingsRepository,\n GetLatestRevisionByEntryIdRepository,\n UpdateEntryRepository,\n UpdateEntryDataFactory\n ]\n});\n"],"names":["UpdateWebhookSettingsRepositoryImpl","getModelRepository","getWebhookSettingsRepository","getLatestRevisionRepository","updateEntryRepository","updateEntryDataFactory","input","getResult","modelResult","WEBHOOK_SETTINGS_MODEL_ID","Result","WebhookModelNotFoundError","model","singletonId","createCacheKey","entryId","entryResult","WebhookPersistenceError","entry","updateResult","settings","error","UpdateWebhookSettingsRepository","RepositoryAbstraction","GetModelRepository","GetWebhookSettingsRepository","GetLatestRevisionByEntryIdRepository","UpdateEntryRepository","UpdateEntryDataFactory"],"mappings":";;;;;;;;;;AAoBA,MAAMA;IACF,YACqBC,kBAAgD,EAChDC,4BAAoE,EACpEC,2BAA2E,EAC3EC,qBAAsD,EACtDC,sBAAwD,CAC3E;aALmBJ,kBAAkB,GAAlBA;aACAC,4BAA4B,GAA5BA;aACAC,2BAA2B,GAA3BA;aACAC,qBAAqB,GAArBA;aACAC,sBAAsB,GAAtBA;IAClB;IAEH,MAAM,QACFC,KAAkC,EAC4B;QAC9D,IAAI;YAEA,MAAMC,YAAY,MAAM,IAAI,CAAC,4BAA4B,CAAC,OAAO;YACjE,IAAIA,UAAU,MAAM,IAChB,OAAOA;YAGX,MAAMC,cAAc,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAACC;YAC1D,IAAID,YAAY,MAAM,IAClB,OAAOE,OAAO,IAAI,CAAC,IAAIC,0BAA0BF;YAGrD,MAAMG,QAAQJ,YAAY,KAAK;YAC/B,MAAMK,cAAcC,eAAeF,MAAM,OAAO;YAChD,MAAMG,UAAU,GAAGF,YAAY,KAAK,CAAC;YAErC,MAAMG,cACF,MAAM,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAwBJ,OAAO;gBACzE,IAAIG;YACR;YAEJ,IAAIC,YAAY,MAAM,IAClB,OAAON,OAAO,IAAI,CAACO,wBAAwB,IAAI,CAACD,YAAY,KAAK;YAGrE,MAAM,EAAEE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,MAAM,CACtDN,OACA;gBACI,QAAQ;oBACJ,eAAeN,MAAM,aAAa;oBAClC,uBAAuBA,MAAM,qBAAqB;gBACtD;YACJ,GACAU,YAAY,KAAK;YAGrB,MAAMG,eAAe,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAACP,OAAOM;YACrE,IAAIC,aAAa,MAAM,IACnB,OAAOT,OAAO,IAAI,CAACO,wBAAwB,IAAI,CAACE,aAAa,KAAK;YAGtE,MAAMC,WAA6B;gBAC/B,eAAeF,MAAM,MAAM,CAAC,aAAa;gBACzC,uBAAuBA,MAAM,MAAM,CAAC,qBAAqB;YAC7D;YAEA,OAAOR,OAAO,EAAE,CAACU;QACrB,EAAE,OAAOC,OAAO;YACZ,OAAOX,OAAO,IAAI,CAACO,wBAAwB,IAAI,CAACI;QACpD;IACJ;AACJ;AAEO,MAAMC,kEAAkCC,gCAAAA,oBAA0C,CAAC;IACtF,gBAAgBvB;IAChB,cAAc;QACVwB;QACAC;QACAC;QACAC;QACAC;KACH;AACL"}
@@ -0,0 +1,14 @@
1
+ import { Result } from "@webiny/feature/api";
2
+ import { UpdateWebhookSettingsRepository, UpdateWebhookSettingsUseCase as UseCaseAbstraction } from "./abstractions.js";
3
+ import { WebhookPermissions } from "../../../api/features/WebhookPermissions/abstractions.js";
4
+ import type { IWebhookSettings } from "../../../api/domain/WebhookSettings.js";
5
+ declare class UpdateWebhookSettingsUseCaseImpl implements UseCaseAbstraction.Interface {
6
+ private readonly permissions;
7
+ private readonly repository;
8
+ constructor(permissions: WebhookPermissions.Interface, repository: UpdateWebhookSettingsRepository.Interface);
9
+ execute(input: UseCaseAbstraction.Input): Promise<Result<IWebhookSettings, UseCaseAbstraction.Error>>;
10
+ }
11
+ export declare const UpdateWebhookSettingsUseCase: typeof UpdateWebhookSettingsUseCaseImpl & {
12
+ __abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IUpdateWebhookSettingsUseCase>;
13
+ };
14
+ export {};
@@ -0,0 +1,27 @@
1
+ import { Result } from "@webiny/feature/api";
2
+ import { UpdateWebhookSettingsRepository, UpdateWebhookSettingsUseCase } from "./abstractions.js";
3
+ import { UpdateWebhookSettingsInputSchema } from "./schema.js";
4
+ import { WebhookPermissions } from "../WebhookPermissions/abstractions.js";
5
+ import { WebhookNotAuthorizedError, WebhookValidationError } from "../../domain/errors.js";
6
+ class UpdateWebhookSettingsUseCaseImpl {
7
+ constructor(permissions, repository){
8
+ this.permissions = permissions;
9
+ this.repository = repository;
10
+ }
11
+ async execute(input) {
12
+ if (!await this.permissions.canEdit("webhook")) return Result.fail(new WebhookNotAuthorizedError());
13
+ const parsed = UpdateWebhookSettingsInputSchema.safeParse(input);
14
+ if (!parsed.success) return Result.fail(new WebhookValidationError(parsed.error));
15
+ return this.repository.execute(parsed.data);
16
+ }
17
+ }
18
+ const UpdateWebhookSettingsUseCase_UpdateWebhookSettingsUseCase = UpdateWebhookSettingsUseCase.createImplementation({
19
+ implementation: UpdateWebhookSettingsUseCaseImpl,
20
+ dependencies: [
21
+ WebhookPermissions,
22
+ UpdateWebhookSettingsRepository
23
+ ]
24
+ });
25
+ export { UpdateWebhookSettingsUseCase_UpdateWebhookSettingsUseCase as UpdateWebhookSettingsUseCase };
26
+
27
+ //# sourceMappingURL=UpdateWebhookSettingsUseCase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/features/UpdateWebhookSettings/UpdateWebhookSettingsUseCase.js","sources":["../../../../src/api/features/UpdateWebhookSettings/UpdateWebhookSettingsUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n UpdateWebhookSettingsRepository,\n UpdateWebhookSettingsUseCase as UseCaseAbstraction\n} from \"./abstractions.js\";\nimport { UpdateWebhookSettingsInputSchema } from \"./schema.js\";\nimport { WebhookPermissions } from \"~/api/features/WebhookPermissions/abstractions.js\";\nimport { WebhookNotAuthorizedError, WebhookValidationError } from \"~/api/domain/errors.js\";\nimport type { IWebhookSettings } from \"~/api/domain/WebhookSettings.js\";\n\nclass UpdateWebhookSettingsUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private readonly permissions: WebhookPermissions.Interface,\n private readonly repository: UpdateWebhookSettingsRepository.Interface\n ) {}\n\n async execute(\n input: UseCaseAbstraction.Input\n ): Promise<Result<IWebhookSettings, UseCaseAbstraction.Error>> {\n if (!(await this.permissions.canEdit(\"webhook\"))) {\n return Result.fail(new WebhookNotAuthorizedError());\n }\n\n const parsed = UpdateWebhookSettingsInputSchema.safeParse(input);\n if (!parsed.success) {\n return Result.fail(new WebhookValidationError(parsed.error));\n }\n\n return this.repository.execute(parsed.data);\n }\n}\n\nexport const UpdateWebhookSettingsUseCase = UseCaseAbstraction.createImplementation({\n implementation: UpdateWebhookSettingsUseCaseImpl,\n dependencies: [WebhookPermissions, UpdateWebhookSettingsRepository]\n});\n"],"names":["UpdateWebhookSettingsUseCaseImpl","permissions","repository","input","Result","WebhookNotAuthorizedError","parsed","UpdateWebhookSettingsInputSchema","WebhookValidationError","UpdateWebhookSettingsUseCase","UseCaseAbstraction","WebhookPermissions","UpdateWebhookSettingsRepository"],"mappings":";;;;;AAUA,MAAMA;IACF,YACqBC,WAAyC,EACzCC,UAAqD,CACxE;aAFmBD,WAAW,GAAXA;aACAC,UAAU,GAAVA;IAClB;IAEH,MAAM,QACFC,KAA+B,EAC4B;QAC3D,IAAI,CAAE,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,YACjC,OAAOC,OAAO,IAAI,CAAC,IAAIC;QAG3B,MAAMC,SAASC,iCAAiC,SAAS,CAACJ;QAC1D,IAAI,CAACG,OAAO,OAAO,EACf,OAAOF,OAAO,IAAI,CAAC,IAAII,uBAAuBF,OAAO,KAAK;QAG9D,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAACA,OAAO,IAAI;IAC9C;AACJ;AAEO,MAAMG,4DAA+BC,6BAAAA,oBAAuC,CAAC;IAChF,gBAAgBV;IAChB,cAAc;QAACW;QAAoBC;KAAgC;AACvE"}
@@ -0,0 +1,27 @@
1
+ import { type Result } from "@webiny/feature/api";
2
+ import type { IWebhookSettings } from "../../../api/domain/WebhookSettings.js";
3
+ import type { WebhookModelNotFoundError, WebhookNotAuthorizedError, WebhookPersistenceError, WebhookValidationError } from "../../../api/domain/errors.js";
4
+ export interface IUpdateWebhookSettingsInput {
5
+ signingSecret?: string;
6
+ deliveryRetentionDays?: number;
7
+ }
8
+ type IError = WebhookModelNotFoundError | WebhookPersistenceError | WebhookNotAuthorizedError | WebhookValidationError;
9
+ export interface IUpdateWebhookSettingsUseCase {
10
+ execute(input: IUpdateWebhookSettingsInput): Promise<Result<IWebhookSettings, IError>>;
11
+ }
12
+ export declare const UpdateWebhookSettingsUseCase: import("@webiny/di").Abstraction<IUpdateWebhookSettingsUseCase>;
13
+ export declare namespace UpdateWebhookSettingsUseCase {
14
+ type Interface = IUpdateWebhookSettingsUseCase;
15
+ type Input = IUpdateWebhookSettingsInput;
16
+ type Error = IError;
17
+ }
18
+ type IRepositoryError = WebhookModelNotFoundError | WebhookPersistenceError;
19
+ export interface IUpdateWebhookSettingsRepository {
20
+ execute(input: IUpdateWebhookSettingsInput): Promise<Result<IWebhookSettings, IRepositoryError>>;
21
+ }
22
+ export declare const UpdateWebhookSettingsRepository: import("@webiny/di").Abstraction<IUpdateWebhookSettingsRepository>;
23
+ export declare namespace UpdateWebhookSettingsRepository {
24
+ type Interface = IUpdateWebhookSettingsRepository;
25
+ type Error = IRepositoryError;
26
+ }
27
+ export {};
@@ -0,0 +1,6 @@
1
+ import { createAbstraction } from "@webiny/feature/api";
2
+ const UpdateWebhookSettingsUseCase = createAbstraction("Webhooks/UpdateWebhookSettingsUseCase");
3
+ const UpdateWebhookSettingsRepository = createAbstraction("Webhooks/UpdateWebhookSettingsRepository");
4
+ export { UpdateWebhookSettingsRepository, UpdateWebhookSettingsUseCase };
5
+
6
+ //# sourceMappingURL=abstractions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/features/UpdateWebhookSettings/abstractions.js","sources":["../../../../src/api/features/UpdateWebhookSettings/abstractions.ts"],"sourcesContent":["import { createAbstraction, type Result } from \"@webiny/feature/api\";\nimport type { IWebhookSettings } from \"~/api/domain/WebhookSettings.js\";\nimport type {\n WebhookModelNotFoundError,\n WebhookNotAuthorizedError,\n WebhookPersistenceError,\n WebhookValidationError\n} from \"~/api/domain/errors.js\";\n\nexport interface IUpdateWebhookSettingsInput {\n signingSecret?: string;\n deliveryRetentionDays?: number;\n}\n\ntype IError =\n | WebhookModelNotFoundError\n | WebhookPersistenceError\n | WebhookNotAuthorizedError\n | WebhookValidationError;\n\nexport interface IUpdateWebhookSettingsUseCase {\n execute(input: IUpdateWebhookSettingsInput): Promise<Result<IWebhookSettings, IError>>;\n}\n\nexport const UpdateWebhookSettingsUseCase = createAbstraction<IUpdateWebhookSettingsUseCase>(\n \"Webhooks/UpdateWebhookSettingsUseCase\"\n);\n\nexport namespace UpdateWebhookSettingsUseCase {\n export type Interface = IUpdateWebhookSettingsUseCase;\n export type Input = IUpdateWebhookSettingsInput;\n export type Error = IError;\n}\n\ntype IRepositoryError = WebhookModelNotFoundError | WebhookPersistenceError;\n\nexport interface IUpdateWebhookSettingsRepository {\n execute(\n input: IUpdateWebhookSettingsInput\n ): Promise<Result<IWebhookSettings, IRepositoryError>>;\n}\n\nexport const UpdateWebhookSettingsRepository = createAbstraction<IUpdateWebhookSettingsRepository>(\n \"Webhooks/UpdateWebhookSettingsRepository\"\n);\n\nexport namespace UpdateWebhookSettingsRepository {\n export type Interface = IUpdateWebhookSettingsRepository;\n export type Error = IRepositoryError;\n}\n"],"names":["UpdateWebhookSettingsUseCase","createAbstraction","UpdateWebhookSettingsRepository"],"mappings":";AAwBO,MAAMA,+BAA+BC,kBACxC;AAiBG,MAAMC,kCAAkCD,kBAC3C"}
@@ -0,0 +1,4 @@
1
+ export declare const UpdateWebhookSettingsFeature: {
2
+ name: string;
3
+ register(container: import("@webiny/di").Container): void;
4
+ };
@@ -0,0 +1,13 @@
1
+ import { createFeature } from "@webiny/feature/api";
2
+ import { UpdateWebhookSettingsUseCase } from "./UpdateWebhookSettingsUseCase.js";
3
+ import { UpdateWebhookSettingsRepository } from "./UpdateWebhookSettingsRepository.js";
4
+ const UpdateWebhookSettingsFeature = createFeature({
5
+ name: "UpdateWebhookSettings",
6
+ register (container) {
7
+ container.register(UpdateWebhookSettingsUseCase);
8
+ container.register(UpdateWebhookSettingsRepository).inSingletonScope();
9
+ }
10
+ });
11
+ export { UpdateWebhookSettingsFeature };
12
+
13
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/features/UpdateWebhookSettings/feature.js","sources":["../../../../src/api/features/UpdateWebhookSettings/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { UpdateWebhookSettingsUseCase } from \"./UpdateWebhookSettingsUseCase.js\";\nimport { UpdateWebhookSettingsRepository } from \"./UpdateWebhookSettingsRepository.js\";\n\nexport const UpdateWebhookSettingsFeature = createFeature({\n name: \"UpdateWebhookSettings\",\n register(container) {\n container.register(UpdateWebhookSettingsUseCase);\n container.register(UpdateWebhookSettingsRepository).inSingletonScope();\n }\n});\n"],"names":["UpdateWebhookSettingsFeature","createFeature","container","UpdateWebhookSettingsUseCase","UpdateWebhookSettingsRepository"],"mappings":";;;AAIO,MAAMA,+BAA+BC,cAAc;IACtD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;QACnBD,UAAU,QAAQ,CAACE,iCAAiC,gBAAgB;IACxE;AACJ"}
@@ -0,0 +1,5 @@
1
+ import { z } from "zod";
2
+ export declare const UpdateWebhookSettingsInputSchema: z.ZodObject<{
3
+ signingSecret: z.ZodOptional<z.ZodString>;
4
+ deliveryRetentionDays: z.ZodOptional<z.ZodNumber>;
5
+ }, z.core.$strip>;
@@ -0,0 +1,9 @@
1
+ import { z } from "zod";
2
+ import { WEBHOOK_DELIVERY_MAX_RETENTION_DAYS } from "../../domain/constants.js";
3
+ const UpdateWebhookSettingsInputSchema = z.object({
4
+ signingSecret: z.string().optional(),
5
+ deliveryRetentionDays: z.number().int().min(0).max(WEBHOOK_DELIVERY_MAX_RETENTION_DAYS).optional()
6
+ });
7
+ export { UpdateWebhookSettingsInputSchema };
8
+
9
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/features/UpdateWebhookSettings/schema.js","sources":["../../../../src/api/features/UpdateWebhookSettings/schema.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { WEBHOOK_DELIVERY_MAX_RETENTION_DAYS } from \"~/api/domain/constants.js\";\n\nexport const UpdateWebhookSettingsInputSchema = z.object({\n signingSecret: z.string().optional(),\n deliveryRetentionDays: z\n .number()\n .int()\n .min(0)\n .max(WEBHOOK_DELIVERY_MAX_RETENTION_DAYS)\n .optional()\n});\n"],"names":["UpdateWebhookSettingsInputSchema","z","WEBHOOK_DELIVERY_MAX_RETENTION_DAYS"],"mappings":";;AAGO,MAAMA,mCAAmCC,EAAE,MAAM,CAAC;IACrD,eAAeA,EAAE,MAAM,GAAG,QAAQ;IAClC,uBAAuBA,EAAAA,MACZ,GACN,GAAG,GACH,GAAG,CAAC,GACJ,GAAG,CAACC,qCACJ,QAAQ;AACjB"}
@@ -0,0 +1,13 @@
1
+ import { WebhookDeliver as Abstraction, type IWebhookDeliverInput, type IWebhookDeliverResult } from "./abstractions.js";
2
+ declare class WebhookDeliverImpl implements Abstraction.Interface {
3
+ execute(input: IWebhookDeliverInput): Promise<IWebhookDeliverResult>;
4
+ private attempt;
5
+ private isRetryable;
6
+ private computeDelay;
7
+ private parseRetryAfter;
8
+ private sleep;
9
+ }
10
+ export declare const WebhookDeliver: typeof WebhookDeliverImpl & {
11
+ __abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IWebhookDeliver>;
12
+ };
13
+ export {};
@@ -0,0 +1,79 @@
1
+ import { WebhookDeliver } from "./abstractions.js";
2
+ class WebhookDeliverImpl {
3
+ async execute(input) {
4
+ const startTime = Date.now();
5
+ let attempts = 0;
6
+ let lastResult = {
7
+ status: 0,
8
+ body: "",
9
+ retryAfter: null
10
+ };
11
+ for(let i = 0; i <= input.maxRetries; i++){
12
+ if (i > 0) {
13
+ const delay = this.computeDelay(i - 1, input, lastResult);
14
+ await this.sleep(delay);
15
+ }
16
+ attempts++;
17
+ lastResult = await this.attempt(input);
18
+ if (!this.isRetryable(lastResult.status)) break;
19
+ }
20
+ return {
21
+ status: lastResult.status,
22
+ body: lastResult.body,
23
+ responseTime: Date.now() - startTime,
24
+ attempts
25
+ };
26
+ }
27
+ async attempt(input) {
28
+ try {
29
+ const response = await fetch(input.url, {
30
+ method: "POST",
31
+ headers: input.headers,
32
+ body: input.body,
33
+ signal: AbortSignal.timeout(input.timeout)
34
+ });
35
+ const body = await response.text();
36
+ const retryAfter = response.headers.get("retry-after");
37
+ return {
38
+ status: response.status,
39
+ body,
40
+ retryAfter
41
+ };
42
+ } catch (error) {
43
+ return {
44
+ status: 0,
45
+ body: error instanceof Error ? error.message : "Unknown fetch error",
46
+ retryAfter: null
47
+ };
48
+ }
49
+ }
50
+ isRetryable(status) {
51
+ if (0 === status || 429 === status) return true;
52
+ return status >= 500 && status <= 599;
53
+ }
54
+ computeDelay(retryIndex, input, lastResult) {
55
+ const exponential = Math.min(input.initialDelay * Math.pow(2, retryIndex), input.maxDelay);
56
+ if (429 === lastResult.status && lastResult.retryAfter) {
57
+ const parsed = this.parseRetryAfter(lastResult.retryAfter);
58
+ if (null !== parsed) return Math.max(parsed, exponential);
59
+ }
60
+ return exponential;
61
+ }
62
+ parseRetryAfter(value) {
63
+ const seconds = Number(value);
64
+ if (!Number.isNaN(seconds) && Number.isFinite(seconds) && seconds >= 0) return 1000 * seconds;
65
+ const dateMs = Date.parse(value);
66
+ if (!Number.isNaN(dateMs)) return Math.max(0, dateMs - Date.now());
67
+ return null;
68
+ }
69
+ sleep(ms) {
70
+ return new Promise((resolve)=>setTimeout(resolve, ms));
71
+ }
72
+ }
73
+ const WebhookDeliver_WebhookDeliver = WebhookDeliver.createImplementation({
74
+ implementation: WebhookDeliverImpl,
75
+ dependencies: []
76
+ });
77
+ export { WebhookDeliver_WebhookDeliver as WebhookDeliver };
78
+
79
+ //# sourceMappingURL=WebhookDeliver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/features/WebhookDeliver/WebhookDeliver.js","sources":["../../../../src/api/features/WebhookDeliver/WebhookDeliver.ts"],"sourcesContent":["import {\n WebhookDeliver as Abstraction,\n type IWebhookDeliverInput,\n type IWebhookDeliverResult\n} from \"./abstractions.js\";\n\ninterface IAttemptResult {\n status: number;\n body: string;\n retryAfter: string | null;\n}\n\nclass WebhookDeliverImpl implements Abstraction.Interface {\n public async execute(input: IWebhookDeliverInput): Promise<IWebhookDeliverResult> {\n const startTime = Date.now();\n let attempts = 0;\n let lastResult: IAttemptResult = { status: 0, body: \"\", retryAfter: null };\n\n for (let i = 0; i <= input.maxRetries; i++) {\n if (i > 0) {\n const delay = this.computeDelay(i - 1, input, lastResult);\n await this.sleep(delay);\n }\n\n attempts++;\n lastResult = await this.attempt(input);\n\n if (!this.isRetryable(lastResult.status)) {\n break;\n }\n }\n\n return {\n status: lastResult.status,\n body: lastResult.body,\n responseTime: Date.now() - startTime,\n attempts\n };\n }\n\n private async attempt(input: IWebhookDeliverInput): Promise<IAttemptResult> {\n try {\n const response = await fetch(input.url, {\n method: \"POST\",\n headers: input.headers,\n body: input.body,\n signal: AbortSignal.timeout(input.timeout)\n });\n\n const body = await response.text();\n const retryAfter = response.headers.get(\"retry-after\");\n\n return { status: response.status, body, retryAfter };\n } catch (error) {\n return {\n status: 0,\n body: error instanceof Error ? error.message : \"Unknown fetch error\",\n retryAfter: null\n };\n }\n }\n\n private isRetryable(status: number): boolean {\n if (status === 0 || status === 429) {\n return true;\n }\n return status >= 500 && status <= 599;\n }\n\n private computeDelay(\n retryIndex: number,\n input: IWebhookDeliverInput,\n lastResult: IAttemptResult\n ): number {\n const exponential = Math.min(input.initialDelay * Math.pow(2, retryIndex), input.maxDelay);\n\n if (lastResult.status === 429 && lastResult.retryAfter) {\n const parsed = this.parseRetryAfter(lastResult.retryAfter);\n if (parsed !== null) {\n return Math.max(parsed, exponential);\n }\n }\n\n return exponential;\n }\n\n private parseRetryAfter(value: string): number | null {\n const seconds = Number(value);\n if (!Number.isNaN(seconds) && Number.isFinite(seconds) && seconds >= 0) {\n return seconds * 1000;\n }\n\n const dateMs = Date.parse(value);\n if (!Number.isNaN(dateMs)) {\n return Math.max(0, dateMs - Date.now());\n }\n\n return null;\n }\n\n private sleep(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n }\n}\n\nexport const WebhookDeliver = Abstraction.createImplementation({\n implementation: WebhookDeliverImpl,\n dependencies: []\n});\n"],"names":["WebhookDeliverImpl","input","startTime","Date","attempts","lastResult","i","delay","response","fetch","AbortSignal","body","retryAfter","error","Error","status","retryIndex","exponential","Math","parsed","value","seconds","Number","dateMs","ms","Promise","resolve","setTimeout","WebhookDeliver","Abstraction"],"mappings":";AAYA,MAAMA;IACF,MAAa,QAAQC,KAA2B,EAAkC;QAC9E,MAAMC,YAAYC,KAAK,GAAG;QAC1B,IAAIC,WAAW;QACf,IAAIC,aAA6B;YAAE,QAAQ;YAAG,MAAM;YAAI,YAAY;QAAK;QAEzE,IAAK,IAAIC,IAAI,GAAGA,KAAKL,MAAM,UAAU,EAAEK,IAAK;YACxC,IAAIA,IAAI,GAAG;gBACP,MAAMC,QAAQ,IAAI,CAAC,YAAY,CAACD,IAAI,GAAGL,OAAOI;gBAC9C,MAAM,IAAI,CAAC,KAAK,CAACE;YACrB;YAEAH;YACAC,aAAa,MAAM,IAAI,CAAC,OAAO,CAACJ;YAEhC,IAAI,CAAC,IAAI,CAAC,WAAW,CAACI,WAAW,MAAM,GACnC;QAER;QAEA,OAAO;YACH,QAAQA,WAAW,MAAM;YACzB,MAAMA,WAAW,IAAI;YACrB,cAAcF,KAAK,GAAG,KAAKD;YAC3BE;QACJ;IACJ;IAEA,MAAc,QAAQH,KAA2B,EAA2B;QACxE,IAAI;YACA,MAAMO,WAAW,MAAMC,MAAMR,MAAM,GAAG,EAAE;gBACpC,QAAQ;gBACR,SAASA,MAAM,OAAO;gBACtB,MAAMA,MAAM,IAAI;gBAChB,QAAQS,YAAY,OAAO,CAACT,MAAM,OAAO;YAC7C;YAEA,MAAMU,OAAO,MAAMH,SAAS,IAAI;YAChC,MAAMI,aAAaJ,SAAS,OAAO,CAAC,GAAG,CAAC;YAExC,OAAO;gBAAE,QAAQA,SAAS,MAAM;gBAAEG;gBAAMC;YAAW;QACvD,EAAE,OAAOC,OAAO;YACZ,OAAO;gBACH,QAAQ;gBACR,MAAMA,iBAAiBC,QAAQD,MAAM,OAAO,GAAG;gBAC/C,YAAY;YAChB;QACJ;IACJ;IAEQ,YAAYE,MAAc,EAAW;QACzC,IAAIA,AAAW,MAAXA,UAAgBA,AAAW,QAAXA,QAChB,OAAO;QAEX,OAAOA,UAAU,OAAOA,UAAU;IACtC;IAEQ,aACJC,UAAkB,EAClBf,KAA2B,EAC3BI,UAA0B,EACpB;QACN,MAAMY,cAAcC,KAAK,GAAG,CAACjB,MAAM,YAAY,GAAGiB,KAAK,GAAG,CAAC,GAAGF,aAAaf,MAAM,QAAQ;QAEzF,IAAII,AAAsB,QAAtBA,WAAW,MAAM,IAAYA,WAAW,UAAU,EAAE;YACpD,MAAMc,SAAS,IAAI,CAAC,eAAe,CAACd,WAAW,UAAU;YACzD,IAAIc,AAAW,SAAXA,QACA,OAAOD,KAAK,GAAG,CAACC,QAAQF;QAEhC;QAEA,OAAOA;IACX;IAEQ,gBAAgBG,KAAa,EAAiB;QAClD,MAAMC,UAAUC,OAAOF;QACvB,IAAI,CAACE,OAAO,KAAK,CAACD,YAAYC,OAAO,QAAQ,CAACD,YAAYA,WAAW,GACjE,OAAOA,AAAU,OAAVA;QAGX,MAAME,SAASpB,KAAK,KAAK,CAACiB;QAC1B,IAAI,CAACE,OAAO,KAAK,CAACC,SACd,OAAOL,KAAK,GAAG,CAAC,GAAGK,SAASpB,KAAK,GAAG;QAGxC,OAAO;IACX;IAEQ,MAAMqB,EAAU,EAAiB;QACrC,OAAO,IAAIC,QAAQC,CAAAA,UAAWC,WAAWD,SAASF;IACtD;AACJ;AAEO,MAAMI,gCAAiBC,eAAAA,oBAAgC,CAAC;IAC3D,gBAAgB7B;IAChB,cAAc,EAAE;AACpB"}
@@ -0,0 +1,24 @@
1
+ export interface IWebhookDeliverInput {
2
+ url: string;
3
+ headers: Record<string, string>;
4
+ body: string;
5
+ timeout: number;
6
+ maxRetries: number;
7
+ initialDelay: number;
8
+ maxDelay: number;
9
+ }
10
+ export interface IWebhookDeliverResult {
11
+ status: number;
12
+ body: string;
13
+ responseTime: number;
14
+ attempts: number;
15
+ }
16
+ export interface IWebhookDeliver {
17
+ execute(input: IWebhookDeliverInput): Promise<IWebhookDeliverResult>;
18
+ }
19
+ export declare const WebhookDeliver: import("@webiny/di").Abstraction<IWebhookDeliver>;
20
+ export declare namespace WebhookDeliver {
21
+ type Interface = IWebhookDeliver;
22
+ type Input = IWebhookDeliverInput;
23
+ type Result = IWebhookDeliverResult;
24
+ }
@@ -0,0 +1,5 @@
1
+ import { createAbstraction } from "@webiny/feature/api";
2
+ const WebhookDeliver = createAbstraction("Webhooks/WebhookDeliver");
3
+ export { WebhookDeliver };
4
+
5
+ //# sourceMappingURL=abstractions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/features/WebhookDeliver/abstractions.js","sources":["../../../../src/api/features/WebhookDeliver/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\n\nexport interface IWebhookDeliverInput {\n url: string;\n headers: Record<string, string>;\n body: string;\n timeout: number;\n maxRetries: number;\n initialDelay: number;\n maxDelay: number;\n}\n\nexport interface IWebhookDeliverResult {\n status: number;\n body: string;\n responseTime: number;\n attempts: number;\n}\n\nexport interface IWebhookDeliver {\n execute(input: IWebhookDeliverInput): Promise<IWebhookDeliverResult>;\n}\n\nexport const WebhookDeliver = createAbstraction<IWebhookDeliver>(\"Webhooks/WebhookDeliver\");\n\nexport namespace WebhookDeliver {\n export type Interface = IWebhookDeliver;\n export type Input = IWebhookDeliverInput;\n export type Result = IWebhookDeliverResult;\n}\n"],"names":["WebhookDeliver","createAbstraction"],"mappings":";AAuBO,MAAMA,iBAAiBC,kBAAmC"}
@@ -0,0 +1,4 @@
1
+ export declare const WebhookDeliverFeature: {
2
+ name: string;
3
+ register(container: import("@webiny/di").Container): void;
4
+ };
@@ -0,0 +1,11 @@
1
+ import { createFeature } from "@webiny/feature/api";
2
+ import { WebhookDeliver } from "./WebhookDeliver.js";
3
+ const WebhookDeliverFeature = createFeature({
4
+ name: "Webhooks/WebhookDeliver",
5
+ register (container) {
6
+ container.register(WebhookDeliver).inSingletonScope();
7
+ }
8
+ });
9
+ export { WebhookDeliverFeature };
10
+
11
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/features/WebhookDeliver/feature.js","sources":["../../../../src/api/features/WebhookDeliver/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { WebhookDeliver } from \"./WebhookDeliver.js\";\n\nexport const WebhookDeliverFeature = createFeature({\n name: \"Webhooks/WebhookDeliver\",\n register(container) {\n container.register(WebhookDeliver).inSingletonScope();\n }\n});\n"],"names":["WebhookDeliverFeature","createFeature","container","WebhookDeliver"],"mappings":";;AAGO,MAAMA,wBAAwBC,cAAc;IAC/C,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC,gBAAgB,gBAAgB;IACvD;AACJ"}
@@ -0,0 +1,2 @@
1
+ export { WebhookDeliver } from "./abstractions.js";
2
+ export { WebhookDeliverFeature } from "./feature.js";
@@ -0,0 +1,2 @@
1
+ export { WebhookDeliver } from "./abstractions.js";
2
+ export { WebhookDeliverFeature } from "./feature.js";
@@ -2,13 +2,15 @@ import { WebhookDispatcher as WebhookDispatcherAbstraction, WebhookProvider } fr
2
2
  import { TaskService } from "@webiny/api-core/exports/api/tasks.js";
3
3
  import { ListWebhooksRepository } from "../../../api/features/ListWebhooks/abstractions.js";
4
4
  import { CreateWebhookDeliveryRepository } from "../../../api/features/CreateWebhookDelivery/abstractions.js";
5
+ import { GetWebhookSettingsRepository } from "../../../api/features/GetWebhookSettings/abstractions.js";
5
6
  import type { IWebhookDispatcherData } from "@webiny/api-core/features/webhooks/WebhookDispatcher/abstractions.js";
6
7
  declare class WebhookDispatcherImpl implements WebhookDispatcherAbstraction.Interface {
7
8
  private readonly listWebhooksRepository;
8
9
  private readonly createDeliveryRepository;
9
10
  private readonly taskService;
10
11
  private readonly provider;
11
- constructor(listWebhooksRepository: ListWebhooksRepository.Interface, createDeliveryRepository: CreateWebhookDeliveryRepository.Interface, taskService: TaskService.Interface, provider: WebhookProvider.Interface);
12
+ private readonly getSettingsRepository;
13
+ constructor(listWebhooksRepository: ListWebhooksRepository.Interface, createDeliveryRepository: CreateWebhookDeliveryRepository.Interface, taskService: TaskService.Interface, provider: WebhookProvider.Interface, getSettingsRepository: GetWebhookSettingsRepository.Interface);
12
14
  dispatch<T extends IWebhookDispatcherData = IWebhookDispatcherData>(eventName: string, payload: T): Promise<void>;
13
15
  }
14
16
  export declare const WebhookDispatcher: typeof WebhookDispatcherImpl & {
@@ -2,13 +2,15 @@ import { WebhookDispatcher, WebhookProvider } from "@webiny/api-core/features/we
2
2
  import { TaskService } from "@webiny/api-core/exports/api/tasks.js";
3
3
  import { ListWebhooksRepository } from "../ListWebhooks/abstractions.js";
4
4
  import { CreateWebhookDeliveryRepository } from "../CreateWebhookDelivery/abstractions.js";
5
- import { SEND_WEBHOOK_TASK, WEBHOOK_DELIVERY_RETENTION_DAYS } from "../../domain/constants.js";
5
+ import { GetWebhookSettingsRepository } from "../GetWebhookSettings/abstractions.js";
6
+ import { SEND_WEBHOOK_TASK, WEBHOOK_DELIVERY_MAX_RETENTION_DAYS } from "../../domain/constants.js";
6
7
  class WebhookDispatcherImpl {
7
- constructor(listWebhooksRepository, createDeliveryRepository, taskService, provider){
8
+ constructor(listWebhooksRepository, createDeliveryRepository, taskService, provider, getSettingsRepository){
8
9
  this.listWebhooksRepository = listWebhooksRepository;
9
10
  this.createDeliveryRepository = createDeliveryRepository;
10
11
  this.taskService = taskService;
11
12
  this.provider = provider;
13
+ this.getSettingsRepository = getSettingsRepository;
12
14
  }
13
15
  async dispatch(eventName, payload) {
14
16
  const events = await this.provider.execute();
@@ -21,7 +23,9 @@ class WebhookDispatcherImpl {
21
23
  }
22
24
  });
23
25
  if (result.isFail()) return;
24
- const expiresAt = new Date(Date.now() + 24 * WEBHOOK_DELIVERY_RETENTION_DAYS * 3600000).toISOString();
26
+ const settingsResult = await this.getSettingsRepository.execute();
27
+ const retentionDays = settingsResult.isOk() ? settingsResult.value.deliveryRetentionDays ?? WEBHOOK_DELIVERY_MAX_RETENTION_DAYS : WEBHOOK_DELIVERY_MAX_RETENTION_DAYS;
28
+ const expiresAt = new Date(Date.now() + 24 * retentionDays * 3600000);
25
29
  for (const webhook of result.value.items){
26
30
  const deliveryResult = await this.createDeliveryRepository.execute({
27
31
  webhookId: webhook.id,
@@ -48,7 +52,8 @@ const WebhookDispatcher_WebhookDispatcher = WebhookDispatcher.createImplementati
48
52
  ListWebhooksRepository,
49
53
  CreateWebhookDeliveryRepository,
50
54
  TaskService,
51
- WebhookProvider
55
+ WebhookProvider,
56
+ GetWebhookSettingsRepository
52
57
  ]
53
58
  });
54
59
  export { WebhookDispatcher_WebhookDispatcher as WebhookDispatcher };
@@ -1 +1 @@
1
- {"version":3,"file":"api/features/WebhookDispatcher/WebhookDispatcher.js","sources":["../../../../src/api/features/WebhookDispatcher/WebhookDispatcher.ts"],"sourcesContent":["import {\n WebhookDispatcher as WebhookDispatcherAbstraction,\n WebhookProvider\n} from \"@webiny/api-core/features/webhooks/index.js\";\nimport { TaskService } from \"@webiny/api-core/exports/api/tasks.js\";\nimport { ListWebhooksRepository } from \"~/api/features/ListWebhooks/abstractions.js\";\nimport { CreateWebhookDeliveryRepository } from \"~/api/features/CreateWebhookDelivery/abstractions.js\";\nimport { SEND_WEBHOOK_TASK, WEBHOOK_DELIVERY_RETENTION_DAYS } from \"~/api/domain/constants.js\";\nimport type { IWebhookDispatcherData } from \"@webiny/api-core/features/webhooks/WebhookDispatcher/abstractions.js\";\nimport type { ISendWebhookTaskInput } from \"~/api/features/SendWebhookTask/types.js\";\n\nclass WebhookDispatcherImpl implements WebhookDispatcherAbstraction.Interface {\n constructor(\n private readonly listWebhooksRepository: ListWebhooksRepository.Interface,\n private readonly createDeliveryRepository: CreateWebhookDeliveryRepository.Interface,\n private readonly taskService: TaskService.Interface,\n private readonly provider: WebhookProvider.Interface\n ) {}\n\n async dispatch<T extends IWebhookDispatcherData = IWebhookDispatcherData>(\n eventName: string,\n payload: T\n ): Promise<void> {\n /**\n * Let's first check if there is defined webhook event with the given name.\n * If not, we can just skip the dispatching process and db query.\n */\n const events = await this.provider.execute();\n const event = events.find(event => {\n return event.eventName === eventName;\n });\n if (!event) {\n return;\n }\n /**\n * Then we go and find all webhooks that are enabled and have the given event in their events list.\n */\n const result = await this.listWebhooksRepository.execute({\n where: {\n enabled: true,\n events_contains: eventName\n }\n });\n\n if (result.isFail()) {\n return;\n }\n\n const expiresAt = new Date(\n Date.now() + WEBHOOK_DELIVERY_RETENTION_DAYS * 24 * 60 * 60 * 1000\n ).toISOString();\n\n for (const webhook of result.value.items) {\n const deliveryResult = await this.createDeliveryRepository.execute({\n webhookId: webhook.id,\n eventType: event.eventName,\n status: \"pending\",\n expiresAt,\n payload\n });\n\n if (deliveryResult.isFail()) {\n continue;\n }\n\n await this.taskService.trigger<ISendWebhookTaskInput>({\n definition: SEND_WEBHOOK_TASK,\n name: `Webhook: ${webhook.slug} — ${event.eventName}`,\n input: {\n webhookId: webhook.id,\n eventName,\n deliveryId: deliveryResult.value.id\n }\n });\n }\n }\n}\n\nexport const WebhookDispatcher = WebhookDispatcherAbstraction.createImplementation({\n implementation: WebhookDispatcherImpl,\n dependencies: [\n ListWebhooksRepository,\n CreateWebhookDeliveryRepository,\n TaskService,\n WebhookProvider\n ]\n});\n"],"names":["WebhookDispatcherImpl","listWebhooksRepository","createDeliveryRepository","taskService","provider","eventName","payload","events","event","result","expiresAt","Date","WEBHOOK_DELIVERY_RETENTION_DAYS","webhook","deliveryResult","SEND_WEBHOOK_TASK","WebhookDispatcher","WebhookDispatcherAbstraction","ListWebhooksRepository","CreateWebhookDeliveryRepository","TaskService","WebhookProvider"],"mappings":";;;;;AAWA,MAAMA;IACF,YACqBC,sBAAwD,EACxDC,wBAAmE,EACnEC,WAAkC,EAClCC,QAAmC,CACtD;aAJmBH,sBAAsB,GAAtBA;aACAC,wBAAwB,GAAxBA;aACAC,WAAW,GAAXA;aACAC,QAAQ,GAARA;IAClB;IAEH,MAAM,SACFC,SAAiB,EACjBC,OAAU,EACG;QAKb,MAAMC,SAAS,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO;QAC1C,MAAMC,QAAQD,OAAO,IAAI,CAACC,CAAAA,QACfA,MAAM,SAAS,KAAKH;QAE/B,IAAI,CAACG,OACD;QAKJ,MAAMC,SAAS,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC;YACrD,OAAO;gBACH,SAAS;gBACT,iBAAiBJ;YACrB;QACJ;QAEA,IAAII,OAAO,MAAM,IACb;QAGJ,MAAMC,YAAY,IAAIC,KAClBA,KAAK,GAAG,KAAKC,AAAkC,KAAlCA,kCAAAA,SACf,WAAW;QAEb,KAAK,MAAMC,WAAWJ,OAAO,KAAK,CAAC,KAAK,CAAE;YACtC,MAAMK,iBAAiB,MAAM,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC;gBAC/D,WAAWD,QAAQ,EAAE;gBACrB,WAAWL,MAAM,SAAS;gBAC1B,QAAQ;gBACRE;gBACAJ;YACJ;YAEA,KAAIQ,eAAe,MAAM,IAIzB,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAwB;gBAClD,YAAYC;gBACZ,MAAM,CAAC,SAAS,EAAEF,QAAQ,IAAI,CAAC,GAAG,EAAEL,MAAM,SAAS,EAAE;gBACrD,OAAO;oBACH,WAAWK,QAAQ,EAAE;oBACrBR;oBACA,YAAYS,eAAe,KAAK,CAAC,EAAE;gBACvC;YACJ;QACJ;IACJ;AACJ;AAEO,MAAME,sCAAoBC,kBAAAA,oBAAiD,CAAC;IAC/E,gBAAgBjB;IAChB,cAAc;QACVkB;QACAC;QACAC;QACAC;KACH;AACL"}
1
+ {"version":3,"file":"api/features/WebhookDispatcher/WebhookDispatcher.js","sources":["../../../../src/api/features/WebhookDispatcher/WebhookDispatcher.ts"],"sourcesContent":["import {\n WebhookDispatcher as WebhookDispatcherAbstraction,\n WebhookProvider\n} from \"@webiny/api-core/features/webhooks/index.js\";\nimport { TaskService } from \"@webiny/api-core/exports/api/tasks.js\";\nimport { ListWebhooksRepository } from \"~/api/features/ListWebhooks/abstractions.js\";\nimport { CreateWebhookDeliveryRepository } from \"~/api/features/CreateWebhookDelivery/abstractions.js\";\nimport { GetWebhookSettingsRepository } from \"~/api/features/GetWebhookSettings/abstractions.js\";\nimport { SEND_WEBHOOK_TASK, WEBHOOK_DELIVERY_MAX_RETENTION_DAYS } from \"~/api/domain/constants.js\";\nimport type { IWebhookDispatcherData } from \"@webiny/api-core/features/webhooks/WebhookDispatcher/abstractions.js\";\nimport type { ISendWebhookTaskInput } from \"~/api/features/SendWebhookTask/types.js\";\n\nclass WebhookDispatcherImpl implements WebhookDispatcherAbstraction.Interface {\n constructor(\n private readonly listWebhooksRepository: ListWebhooksRepository.Interface,\n private readonly createDeliveryRepository: CreateWebhookDeliveryRepository.Interface,\n private readonly taskService: TaskService.Interface,\n private readonly provider: WebhookProvider.Interface,\n private readonly getSettingsRepository: GetWebhookSettingsRepository.Interface\n ) {}\n\n async dispatch<T extends IWebhookDispatcherData = IWebhookDispatcherData>(\n eventName: string,\n payload: T\n ): Promise<void> {\n const events = await this.provider.execute();\n const event = events.find(event => {\n return event.eventName === eventName;\n });\n if (!event) {\n return;\n }\n\n const result = await this.listWebhooksRepository.execute({\n where: {\n enabled: true,\n events_contains: eventName\n }\n });\n\n if (result.isFail()) {\n return;\n }\n\n const settingsResult = await this.getSettingsRepository.execute();\n const retentionDays = settingsResult.isOk()\n ? (settingsResult.value.deliveryRetentionDays ?? WEBHOOK_DELIVERY_MAX_RETENTION_DAYS)\n : WEBHOOK_DELIVERY_MAX_RETENTION_DAYS;\n\n const expiresAt = new Date(Date.now() + retentionDays * 24 * 60 * 60 * 1000);\n\n for (const webhook of result.value.items) {\n const deliveryResult = await this.createDeliveryRepository.execute({\n webhookId: webhook.id,\n eventType: event.eventName,\n status: \"pending\",\n expiresAt,\n payload\n });\n\n if (deliveryResult.isFail()) {\n continue;\n }\n\n await this.taskService.trigger<ISendWebhookTaskInput>({\n definition: SEND_WEBHOOK_TASK,\n name: `Webhook: ${webhook.slug} — ${event.eventName}`,\n input: {\n webhookId: webhook.id,\n eventName,\n deliveryId: deliveryResult.value.id\n }\n });\n }\n }\n}\n\nexport const WebhookDispatcher = WebhookDispatcherAbstraction.createImplementation({\n implementation: WebhookDispatcherImpl,\n dependencies: [\n ListWebhooksRepository,\n CreateWebhookDeliveryRepository,\n TaskService,\n WebhookProvider,\n GetWebhookSettingsRepository\n ]\n});\n"],"names":["WebhookDispatcherImpl","listWebhooksRepository","createDeliveryRepository","taskService","provider","getSettingsRepository","eventName","payload","events","event","result","settingsResult","retentionDays","WEBHOOK_DELIVERY_MAX_RETENTION_DAYS","expiresAt","Date","webhook","deliveryResult","SEND_WEBHOOK_TASK","WebhookDispatcher","WebhookDispatcherAbstraction","ListWebhooksRepository","CreateWebhookDeliveryRepository","TaskService","WebhookProvider","GetWebhookSettingsRepository"],"mappings":";;;;;;AAYA,MAAMA;IACF,YACqBC,sBAAwD,EACxDC,wBAAmE,EACnEC,WAAkC,EAClCC,QAAmC,EACnCC,qBAA6D,CAChF;aALmBJ,sBAAsB,GAAtBA;aACAC,wBAAwB,GAAxBA;aACAC,WAAW,GAAXA;aACAC,QAAQ,GAARA;aACAC,qBAAqB,GAArBA;IAClB;IAEH,MAAM,SACFC,SAAiB,EACjBC,OAAU,EACG;QACb,MAAMC,SAAS,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO;QAC1C,MAAMC,QAAQD,OAAO,IAAI,CAACC,CAAAA,QACfA,MAAM,SAAS,KAAKH;QAE/B,IAAI,CAACG,OACD;QAGJ,MAAMC,SAAS,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC;YACrD,OAAO;gBACH,SAAS;gBACT,iBAAiBJ;YACrB;QACJ;QAEA,IAAII,OAAO,MAAM,IACb;QAGJ,MAAMC,iBAAiB,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO;QAC/D,MAAMC,gBAAgBD,eAAe,IAAI,KAClCA,eAAe,KAAK,CAAC,qBAAqB,IAAIE,sCAC/CA;QAEN,MAAMC,YAAY,IAAIC,KAAKA,KAAK,GAAG,KAAKH,AAAgB,KAAhBA,gBAAAA;QAExC,KAAK,MAAMI,WAAWN,OAAO,KAAK,CAAC,KAAK,CAAE;YACtC,MAAMO,iBAAiB,MAAM,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC;gBAC/D,WAAWD,QAAQ,EAAE;gBACrB,WAAWP,MAAM,SAAS;gBAC1B,QAAQ;gBACRK;gBACAP;YACJ;YAEA,KAAIU,eAAe,MAAM,IAIzB,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAwB;gBAClD,YAAYC;gBACZ,MAAM,CAAC,SAAS,EAAEF,QAAQ,IAAI,CAAC,GAAG,EAAEP,MAAM,SAAS,EAAE;gBACrD,OAAO;oBACH,WAAWO,QAAQ,EAAE;oBACrBV;oBACA,YAAYW,eAAe,KAAK,CAAC,EAAE;gBACvC;YACJ;QACJ;IACJ;AACJ;AAEO,MAAME,sCAAoBC,kBAAAA,oBAAiD,CAAC;IAC/E,gBAAgBpB;IAChB,cAAc;QACVqB;QACAC;QACAC;QACAC;QACAC;KACH;AACL"}
@@ -1,6 +1,7 @@
1
1
  import { WebhookSignPayload as WebhookSignPayloadAbstraction } from "@webiny/api-core/features/webhooks/index.js";
2
2
  declare class WebhookSignPayloadImpl implements WebhookSignPayloadAbstraction.Interface {
3
3
  sign(msgId: string, timestamp: Date, rawBody: string | Buffer, secret: string): Promise<WebhookSignPayloadAbstraction.Headers>;
4
+ private ensureBase64;
4
5
  }
5
6
  export declare const WebhookSignPayload: typeof WebhookSignPayloadImpl & {
6
7
  __abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/webhooks/WebhookSignPayload/abstractions").IWebhookSignPayload>;
@@ -2,7 +2,8 @@ import { Webhook } from "standardwebhooks";
2
2
  import { WebhookSignPayload } from "@webiny/api-core/features/webhooks/index.js";
3
3
  class WebhookSignPayloadImpl {
4
4
  async sign(msgId, timestamp, rawBody, secret) {
5
- const wh = new Webhook(secret);
5
+ const encodedSecret = this.ensureBase64(secret);
6
+ const wh = new Webhook(encodedSecret);
6
7
  const signature = wh.sign(msgId, timestamp, rawBody);
7
8
  return {
8
9
  "webhook-id": msgId,
@@ -10,6 +11,11 @@ class WebhookSignPayloadImpl {
10
11
  "webhook-signature": signature
11
12
  };
12
13
  }
14
+ ensureBase64(secret) {
15
+ if (secret.startsWith("whsec_")) return secret;
16
+ const encoded = Buffer.from(secret).toString("base64");
17
+ return `whsec_${encoded}`;
18
+ }
13
19
  }
14
20
  const WebhookSignPayload_WebhookSignPayload = WebhookSignPayload.createImplementation({
15
21
  implementation: WebhookSignPayloadImpl,
@@ -1 +1 @@
1
- {"version":3,"file":"api/features/WebhookSignPayload/WebhookSignPayload.js","sources":["../../../../src/api/features/WebhookSignPayload/WebhookSignPayload.ts"],"sourcesContent":["import { Webhook } from \"standardwebhooks\";\nimport { WebhookSignPayload as WebhookSignPayloadAbstraction } from \"@webiny/api-core/features/webhooks/index.js\";\n\nclass WebhookSignPayloadImpl implements WebhookSignPayloadAbstraction.Interface {\n async sign(\n msgId: string,\n timestamp: Date,\n rawBody: string | Buffer,\n secret: string\n ): Promise<WebhookSignPayloadAbstraction.Headers> {\n const wh = new Webhook(secret);\n const signature = wh.sign(msgId, timestamp, rawBody);\n return {\n \"webhook-id\": msgId,\n \"webhook-timestamp\": String(Math.floor(timestamp.getTime() / 1000)),\n \"webhook-signature\": signature\n };\n }\n}\n\nexport const WebhookSignPayload = WebhookSignPayloadAbstraction.createImplementation({\n implementation: WebhookSignPayloadImpl,\n dependencies: []\n});\n"],"names":["WebhookSignPayloadImpl","msgId","timestamp","rawBody","secret","wh","Webhook","signature","String","Math","WebhookSignPayload","WebhookSignPayloadAbstraction"],"mappings":";;AAGA,MAAMA;IACF,MAAM,KACFC,KAAa,EACbC,SAAe,EACfC,OAAwB,EACxBC,MAAc,EACgC;QAC9C,MAAMC,KAAK,IAAIC,QAAQF;QACvB,MAAMG,YAAYF,GAAG,IAAI,CAACJ,OAAOC,WAAWC;QAC5C,OAAO;YACH,cAAcF;YACd,qBAAqBO,OAAOC,KAAK,KAAK,CAACP,UAAU,OAAO,KAAK;YAC7D,qBAAqBK;QACzB;IACJ;AACJ;AAEO,MAAMG,wCAAqBC,mBAAAA,oBAAkD,CAAC;IACjF,gBAAgBX;IAChB,cAAc,EAAE;AACpB"}
1
+ {"version":3,"file":"api/features/WebhookSignPayload/WebhookSignPayload.js","sources":["../../../../src/api/features/WebhookSignPayload/WebhookSignPayload.ts"],"sourcesContent":["import { Webhook } from \"standardwebhooks\";\nimport { WebhookSignPayload as WebhookSignPayloadAbstraction } from \"@webiny/api-core/features/webhooks/index.js\";\n\nclass WebhookSignPayloadImpl implements WebhookSignPayloadAbstraction.Interface {\n async sign(\n msgId: string,\n timestamp: Date,\n rawBody: string | Buffer,\n secret: string\n ): Promise<WebhookSignPayloadAbstraction.Headers> {\n /* The standardwebhooks library expects the secret to be base64-encoded\n (optionally prefixed with \"whsec_\"). User-provided secrets are plain\n text, so we base64-encode them before passing to the library. */\n const encodedSecret = this.ensureBase64(secret);\n const wh = new Webhook(encodedSecret);\n const signature = wh.sign(msgId, timestamp, rawBody);\n return {\n \"webhook-id\": msgId,\n \"webhook-timestamp\": String(Math.floor(timestamp.getTime() / 1000)),\n \"webhook-signature\": signature\n };\n }\n\n private ensureBase64(secret: string): string {\n if (secret.startsWith(\"whsec_\")) {\n return secret;\n }\n\n const encoded = Buffer.from(secret).toString(\"base64\");\n return `whsec_${encoded}`;\n }\n}\n\nexport const WebhookSignPayload = WebhookSignPayloadAbstraction.createImplementation({\n implementation: WebhookSignPayloadImpl,\n dependencies: []\n});\n"],"names":["WebhookSignPayloadImpl","msgId","timestamp","rawBody","secret","encodedSecret","wh","Webhook","signature","String","Math","encoded","Buffer","WebhookSignPayload","WebhookSignPayloadAbstraction"],"mappings":";;AAGA,MAAMA;IACF,MAAM,KACFC,KAAa,EACbC,SAAe,EACfC,OAAwB,EACxBC,MAAc,EACgC;QAI9C,MAAMC,gBAAgB,IAAI,CAAC,YAAY,CAACD;QACxC,MAAME,KAAK,IAAIC,QAAQF;QACvB,MAAMG,YAAYF,GAAG,IAAI,CAACL,OAAOC,WAAWC;QAC5C,OAAO;YACH,cAAcF;YACd,qBAAqBQ,OAAOC,KAAK,KAAK,CAACR,UAAU,OAAO,KAAK;YAC7D,qBAAqBM;QACzB;IACJ;IAEQ,aAAaJ,MAAc,EAAU;QACzC,IAAIA,OAAO,UAAU,CAAC,WAClB,OAAOA;QAGX,MAAMO,UAAUC,OAAO,IAAI,CAACR,QAAQ,QAAQ,CAAC;QAC7C,OAAO,CAAC,MAAM,EAAEO,SAAS;IAC7B;AACJ;AAEO,MAAME,wCAAqBC,mBAAAA,oBAAkD,CAAC;IACjF,gBAAgBd;IAChB,cAAc,EAAE;AACpB"}
@@ -28,7 +28,7 @@ class WebhookCrudSchema_ {
28
28
  description: String
29
29
  enabled: Boolean!
30
30
  events: [String!]!
31
- signingSecret: String!
31
+ signingSecret: String
32
32
  createdOn: DateTime
33
33
  modifiedOn: DateTime
34
34
  }
@@ -56,7 +56,6 @@ class WebhookCrudSchema_ {
56
56
 
57
57
  input UpdateWebhookInput {
58
58
  name: String
59
- slug: String
60
59
  endpointUrl: String
61
60
  description: String
62
61
  enabled: Boolean
@@ -1 +1 @@
1
- {"version":3,"file":"api/graphql/WebhookCrudSchema.js","sources":["../../../src/api/graphql/WebhookCrudSchema.ts"],"sourcesContent":["import { GraphQLSchemaFactory } from \"@webiny/handler-graphql/graphql/abstractions.js\";\nimport { Response } from \"@webiny/handler-graphql\";\nimport { ErrorResponse } from \"@webiny/handler-graphql\";\nimport { ListResponse } from \"@webiny/handler-graphql\";\nimport { ListErrorResponse } from \"@webiny/handler-graphql\";\nimport { ListWebhooksUseCase } from \"~/api/features/ListWebhooks/abstractions.js\";\nimport type { IListWebhooksInput } from \"~/api/features/ListWebhooks/abstractions.js\";\nimport { GetWebhookUseCase } from \"~/api/features/GetWebhook/abstractions.js\";\nimport { CreateWebhookUseCase } from \"~/api/features/CreateWebhook/abstractions.js\";\nimport { UpdateWebhookUseCase } from \"~/api/features/UpdateWebhook/abstractions.js\";\nimport { DeleteWebhookUseCase } from \"~/api/features/DeleteWebhook/abstractions.js\";\n\ninterface IIdArgs {\n id: string;\n}\n\ninterface ICreateWebhookArgs {\n input: CreateWebhookUseCase.Input;\n}\n\ninterface IUpdateWebhookArgs {\n id: string;\n input: UpdateWebhookUseCase.Input;\n}\n\nclass WebhookCrudSchema_ implements GraphQLSchemaFactory.Interface {\n async execute(\n builder: GraphQLSchemaFactory.SchemaBuilder\n ): Promise<GraphQLSchemaFactory.SchemaBuilder> {\n builder.addTypeDefs(/* GraphQL */ `\n type WebhookError {\n code: String\n message: String\n data: JSON\n }\n\n type WebhookListMeta {\n cursor: String\n hasMoreItems: Boolean!\n totalCount: Int!\n }\n\n type Webhook {\n id: ID!\n name: String!\n slug: String!\n endpointUrl: String!\n description: String\n enabled: Boolean!\n events: [String!]!\n signingSecret: String!\n createdOn: DateTime\n modifiedOn: DateTime\n }\n\n type WebhookResponse {\n data: Webhook\n error: WebhookError\n }\n\n type WebhookListResponse {\n data: [Webhook!]\n meta: WebhookListMeta\n error: WebhookError\n }\n\n input CreateWebhookInput {\n name: String!\n slug: String\n endpointUrl: String!\n description: String\n enabled: Boolean\n events: [String!]!\n signingSecret: String\n }\n\n input UpdateWebhookInput {\n name: String\n slug: String\n endpointUrl: String\n description: String\n enabled: Boolean\n events: [String!]\n }\n\n input ListWebhooksWhereInput {\n enabled: Boolean\n }\n\n type WebhookQuery {\n listWebhooks(\n where: ListWebhooksWhereInput\n limit: Int\n after: String\n ): WebhookListResponse!\n getWebhook(id: ID!): WebhookResponse!\n }\n\n type WebhookMutation {\n createWebhook(input: CreateWebhookInput!): WebhookResponse!\n updateWebhook(id: ID!, input: UpdateWebhookInput!): WebhookResponse!\n deleteWebhook(id: ID!): BooleanResponse!\n }\n\n extend type Query {\n webhooks: WebhookQuery!\n }\n\n extend type Mutation {\n webhooks: WebhookMutation!\n }\n `);\n\n builder.addResolver({\n path: \"Query.webhooks\",\n dependencies: [],\n resolver: () => () => ({})\n });\n\n builder.addResolver({\n path: \"Mutation.webhooks\",\n dependencies: [],\n resolver: () => () => ({})\n });\n\n builder.addResolver<IListWebhooksInput>({\n path: \"WebhookQuery.listWebhooks\",\n dependencies: [ListWebhooksUseCase],\n resolver: (listWebhooks: ListWebhooksUseCase.Interface) => {\n return async ({ args }) => {\n const result = await listWebhooks.execute(args);\n if (result.isFail()) {\n return new ListErrorResponse(result.error);\n }\n return new ListResponse(result.value.items, result.value.meta);\n };\n }\n });\n\n builder.addResolver<IIdArgs>({\n path: \"WebhookQuery.getWebhook\",\n dependencies: [GetWebhookUseCase],\n resolver: (getWebhook: GetWebhookUseCase.Interface) => {\n return async ({ args }) => {\n const result = await getWebhook.execute(args.id);\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n return new Response(result.value);\n };\n }\n });\n\n builder.addResolver<ICreateWebhookArgs>({\n path: \"WebhookMutation.createWebhook\",\n dependencies: [CreateWebhookUseCase],\n resolver: (createWebhook: CreateWebhookUseCase.Interface) => {\n return async ({ args }) => {\n const result = await createWebhook.execute(args.input);\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n return new Response(result.value);\n };\n }\n });\n\n builder.addResolver<IUpdateWebhookArgs>({\n path: \"WebhookMutation.updateWebhook\",\n dependencies: [UpdateWebhookUseCase],\n resolver: (updateWebhook: UpdateWebhookUseCase.Interface) => {\n return async ({ args }) => {\n const result = await updateWebhook.execute(args.id, args.input);\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n return new Response(result.value);\n };\n }\n });\n\n builder.addResolver<IIdArgs>({\n path: \"WebhookMutation.deleteWebhook\",\n dependencies: [DeleteWebhookUseCase],\n resolver: (deleteWebhook: DeleteWebhookUseCase.Interface) => {\n return async ({ args }) => {\n const result = await deleteWebhook.execute(args.id);\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n return new Response(true);\n };\n }\n });\n\n return builder;\n }\n}\n\nexport const WebhookCrudSchema = GraphQLSchemaFactory.createImplementation({\n implementation: WebhookCrudSchema_,\n dependencies: []\n});\n"],"names":["WebhookCrudSchema_","builder","ListWebhooksUseCase","listWebhooks","args","result","ListErrorResponse","ListResponse","GetWebhookUseCase","getWebhook","ErrorResponse","Response","CreateWebhookUseCase","createWebhook","UpdateWebhookUseCase","updateWebhook","DeleteWebhookUseCase","deleteWebhook","WebhookCrudSchema","GraphQLSchemaFactory"],"mappings":";;;;;;;AAyBA,MAAMA;IACF,MAAM,QACFC,OAA2C,EACA;QAC3CA,QAAQ,WAAW,CAAe,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAkFnC,CAAC;QAEDA,QAAQ,WAAW,CAAC;YAChB,MAAM;YACN,cAAc,EAAE;YAChB,UAAU,IAAM,IAAO,EAAC;QAC5B;QAEAA,QAAQ,WAAW,CAAC;YAChB,MAAM;YACN,cAAc,EAAE;YAChB,UAAU,IAAM,IAAO,EAAC;QAC5B;QAEAA,QAAQ,WAAW,CAAqB;YACpC,MAAM;YACN,cAAc;gBAACC;aAAoB;YACnC,UAAU,CAACC,eACA,OAAO,EAAEC,IAAI,EAAE;oBAClB,MAAMC,SAAS,MAAMF,aAAa,OAAO,CAACC;oBAC1C,IAAIC,OAAO,MAAM,IACb,OAAO,IAAIC,kBAAkBD,OAAO,KAAK;oBAE7C,OAAO,IAAIE,aAAaF,OAAO,KAAK,CAAC,KAAK,EAAEA,OAAO,KAAK,CAAC,IAAI;gBACjE;QAER;QAEAJ,QAAQ,WAAW,CAAU;YACzB,MAAM;YACN,cAAc;gBAACO;aAAkB;YACjC,UAAU,CAACC,aACA,OAAO,EAAEL,IAAI,EAAE;oBAClB,MAAMC,SAAS,MAAMI,WAAW,OAAO,CAACL,KAAK,EAAE;oBAC/C,IAAIC,OAAO,MAAM,IACb,OAAO,IAAIK,cAAcL,OAAO,KAAK;oBAEzC,OAAO,IAAIM,SAASN,OAAO,KAAK;gBACpC;QAER;QAEAJ,QAAQ,WAAW,CAAqB;YACpC,MAAM;YACN,cAAc;gBAACW;aAAqB;YACpC,UAAU,CAACC,gBACA,OAAO,EAAET,IAAI,EAAE;oBAClB,MAAMC,SAAS,MAAMQ,cAAc,OAAO,CAACT,KAAK,KAAK;oBACrD,IAAIC,OAAO,MAAM,IACb,OAAO,IAAIK,cAAcL,OAAO,KAAK;oBAEzC,OAAO,IAAIM,SAASN,OAAO,KAAK;gBACpC;QAER;QAEAJ,QAAQ,WAAW,CAAqB;YACpC,MAAM;YACN,cAAc;gBAACa;aAAqB;YACpC,UAAU,CAACC,gBACA,OAAO,EAAEX,IAAI,EAAE;oBAClB,MAAMC,SAAS,MAAMU,cAAc,OAAO,CAACX,KAAK,EAAE,EAAEA,KAAK,KAAK;oBAC9D,IAAIC,OAAO,MAAM,IACb,OAAO,IAAIK,cAAcL,OAAO,KAAK;oBAEzC,OAAO,IAAIM,SAASN,OAAO,KAAK;gBACpC;QAER;QAEAJ,QAAQ,WAAW,CAAU;YACzB,MAAM;YACN,cAAc;gBAACe;aAAqB;YACpC,UAAU,CAACC,gBACA,OAAO,EAAEb,IAAI,EAAE;oBAClB,MAAMC,SAAS,MAAMY,cAAc,OAAO,CAACb,KAAK,EAAE;oBAClD,IAAIC,OAAO,MAAM,IACb,OAAO,IAAIK,cAAcL,OAAO,KAAK;oBAEzC,OAAO,IAAIM,SAAS;gBACxB;QAER;QAEA,OAAOV;IACX;AACJ;AAEO,MAAMiB,oBAAoBC,qBAAqB,oBAAoB,CAAC;IACvE,gBAAgBnB;IAChB,cAAc,EAAE;AACpB"}
1
+ {"version":3,"file":"api/graphql/WebhookCrudSchema.js","sources":["../../../src/api/graphql/WebhookCrudSchema.ts"],"sourcesContent":["import { GraphQLSchemaFactory } from \"@webiny/handler-graphql/graphql/abstractions.js\";\nimport { Response } from \"@webiny/handler-graphql\";\nimport { ErrorResponse } from \"@webiny/handler-graphql\";\nimport { ListResponse } from \"@webiny/handler-graphql\";\nimport { ListErrorResponse } from \"@webiny/handler-graphql\";\nimport { ListWebhooksUseCase } from \"~/api/features/ListWebhooks/abstractions.js\";\nimport type { IListWebhooksInput } from \"~/api/features/ListWebhooks/abstractions.js\";\nimport { GetWebhookUseCase } from \"~/api/features/GetWebhook/abstractions.js\";\nimport { CreateWebhookUseCase } from \"~/api/features/CreateWebhook/abstractions.js\";\nimport { UpdateWebhookUseCase } from \"~/api/features/UpdateWebhook/abstractions.js\";\nimport { DeleteWebhookUseCase } from \"~/api/features/DeleteWebhook/abstractions.js\";\n\ninterface IIdArgs {\n id: string;\n}\n\ninterface ICreateWebhookArgs {\n input: CreateWebhookUseCase.Input;\n}\n\ninterface IUpdateWebhookArgs {\n id: string;\n input: UpdateWebhookUseCase.Input;\n}\n\nclass WebhookCrudSchema_ implements GraphQLSchemaFactory.Interface {\n async execute(\n builder: GraphQLSchemaFactory.SchemaBuilder\n ): Promise<GraphQLSchemaFactory.SchemaBuilder> {\n builder.addTypeDefs(/* GraphQL */ `\n type WebhookError {\n code: String\n message: String\n data: JSON\n }\n\n type WebhookListMeta {\n cursor: String\n hasMoreItems: Boolean!\n totalCount: Int!\n }\n\n type Webhook {\n id: ID!\n name: String!\n slug: String!\n endpointUrl: String!\n description: String\n enabled: Boolean!\n events: [String!]!\n signingSecret: String\n createdOn: DateTime\n modifiedOn: DateTime\n }\n\n type WebhookResponse {\n data: Webhook\n error: WebhookError\n }\n\n type WebhookListResponse {\n data: [Webhook!]\n meta: WebhookListMeta\n error: WebhookError\n }\n\n input CreateWebhookInput {\n name: String!\n slug: String\n endpointUrl: String!\n description: String\n enabled: Boolean\n events: [String!]!\n signingSecret: String\n }\n\n input UpdateWebhookInput {\n name: String\n endpointUrl: String\n description: String\n enabled: Boolean\n events: [String!]\n }\n\n input ListWebhooksWhereInput {\n enabled: Boolean\n }\n\n type WebhookQuery {\n listWebhooks(\n where: ListWebhooksWhereInput\n limit: Int\n after: String\n ): WebhookListResponse!\n getWebhook(id: ID!): WebhookResponse!\n }\n\n type WebhookMutation {\n createWebhook(input: CreateWebhookInput!): WebhookResponse!\n updateWebhook(id: ID!, input: UpdateWebhookInput!): WebhookResponse!\n deleteWebhook(id: ID!): BooleanResponse!\n }\n\n extend type Query {\n webhooks: WebhookQuery!\n }\n\n extend type Mutation {\n webhooks: WebhookMutation!\n }\n `);\n\n builder.addResolver({\n path: \"Query.webhooks\",\n dependencies: [],\n resolver: () => () => ({})\n });\n\n builder.addResolver({\n path: \"Mutation.webhooks\",\n dependencies: [],\n resolver: () => () => ({})\n });\n\n builder.addResolver<IListWebhooksInput>({\n path: \"WebhookQuery.listWebhooks\",\n dependencies: [ListWebhooksUseCase],\n resolver: (listWebhooks: ListWebhooksUseCase.Interface) => {\n return async ({ args }) => {\n const result = await listWebhooks.execute(args);\n if (result.isFail()) {\n return new ListErrorResponse(result.error);\n }\n return new ListResponse(result.value.items, result.value.meta);\n };\n }\n });\n\n builder.addResolver<IIdArgs>({\n path: \"WebhookQuery.getWebhook\",\n dependencies: [GetWebhookUseCase],\n resolver: (getWebhook: GetWebhookUseCase.Interface) => {\n return async ({ args }) => {\n const result = await getWebhook.execute(args.id);\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n return new Response(result.value);\n };\n }\n });\n\n builder.addResolver<ICreateWebhookArgs>({\n path: \"WebhookMutation.createWebhook\",\n dependencies: [CreateWebhookUseCase],\n resolver: (createWebhook: CreateWebhookUseCase.Interface) => {\n return async ({ args }) => {\n const result = await createWebhook.execute(args.input);\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n return new Response(result.value);\n };\n }\n });\n\n builder.addResolver<IUpdateWebhookArgs>({\n path: \"WebhookMutation.updateWebhook\",\n dependencies: [UpdateWebhookUseCase],\n resolver: (updateWebhook: UpdateWebhookUseCase.Interface) => {\n return async ({ args }) => {\n const result = await updateWebhook.execute(args.id, args.input);\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n return new Response(result.value);\n };\n }\n });\n\n builder.addResolver<IIdArgs>({\n path: \"WebhookMutation.deleteWebhook\",\n dependencies: [DeleteWebhookUseCase],\n resolver: (deleteWebhook: DeleteWebhookUseCase.Interface) => {\n return async ({ args }) => {\n const result = await deleteWebhook.execute(args.id);\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n return new Response(true);\n };\n }\n });\n\n return builder;\n }\n}\n\nexport const WebhookCrudSchema = GraphQLSchemaFactory.createImplementation({\n implementation: WebhookCrudSchema_,\n dependencies: []\n});\n"],"names":["WebhookCrudSchema_","builder","ListWebhooksUseCase","listWebhooks","args","result","ListErrorResponse","ListResponse","GetWebhookUseCase","getWebhook","ErrorResponse","Response","CreateWebhookUseCase","createWebhook","UpdateWebhookUseCase","updateWebhook","DeleteWebhookUseCase","deleteWebhook","WebhookCrudSchema","GraphQLSchemaFactory"],"mappings":";;;;;;;AAyBA,MAAMA;IACF,MAAM,QACFC,OAA2C,EACA;QAC3CA,QAAQ,WAAW,CAAe,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAiFnC,CAAC;QAEDA,QAAQ,WAAW,CAAC;YAChB,MAAM;YACN,cAAc,EAAE;YAChB,UAAU,IAAM,IAAO,EAAC;QAC5B;QAEAA,QAAQ,WAAW,CAAC;YAChB,MAAM;YACN,cAAc,EAAE;YAChB,UAAU,IAAM,IAAO,EAAC;QAC5B;QAEAA,QAAQ,WAAW,CAAqB;YACpC,MAAM;YACN,cAAc;gBAACC;aAAoB;YACnC,UAAU,CAACC,eACA,OAAO,EAAEC,IAAI,EAAE;oBAClB,MAAMC,SAAS,MAAMF,aAAa,OAAO,CAACC;oBAC1C,IAAIC,OAAO,MAAM,IACb,OAAO,IAAIC,kBAAkBD,OAAO,KAAK;oBAE7C,OAAO,IAAIE,aAAaF,OAAO,KAAK,CAAC,KAAK,EAAEA,OAAO,KAAK,CAAC,IAAI;gBACjE;QAER;QAEAJ,QAAQ,WAAW,CAAU;YACzB,MAAM;YACN,cAAc;gBAACO;aAAkB;YACjC,UAAU,CAACC,aACA,OAAO,EAAEL,IAAI,EAAE;oBAClB,MAAMC,SAAS,MAAMI,WAAW,OAAO,CAACL,KAAK,EAAE;oBAC/C,IAAIC,OAAO,MAAM,IACb,OAAO,IAAIK,cAAcL,OAAO,KAAK;oBAEzC,OAAO,IAAIM,SAASN,OAAO,KAAK;gBACpC;QAER;QAEAJ,QAAQ,WAAW,CAAqB;YACpC,MAAM;YACN,cAAc;gBAACW;aAAqB;YACpC,UAAU,CAACC,gBACA,OAAO,EAAET,IAAI,EAAE;oBAClB,MAAMC,SAAS,MAAMQ,cAAc,OAAO,CAACT,KAAK,KAAK;oBACrD,IAAIC,OAAO,MAAM,IACb,OAAO,IAAIK,cAAcL,OAAO,KAAK;oBAEzC,OAAO,IAAIM,SAASN,OAAO,KAAK;gBACpC;QAER;QAEAJ,QAAQ,WAAW,CAAqB;YACpC,MAAM;YACN,cAAc;gBAACa;aAAqB;YACpC,UAAU,CAACC,gBACA,OAAO,EAAEX,IAAI,EAAE;oBAClB,MAAMC,SAAS,MAAMU,cAAc,OAAO,CAACX,KAAK,EAAE,EAAEA,KAAK,KAAK;oBAC9D,IAAIC,OAAO,MAAM,IACb,OAAO,IAAIK,cAAcL,OAAO,KAAK;oBAEzC,OAAO,IAAIM,SAASN,OAAO,KAAK;gBACpC;QAER;QAEAJ,QAAQ,WAAW,CAAU;YACzB,MAAM;YACN,cAAc;gBAACe;aAAqB;YACpC,UAAU,CAACC,gBACA,OAAO,EAAEb,IAAI,EAAE;oBAClB,MAAMC,SAAS,MAAMY,cAAc,OAAO,CAACb,KAAK,EAAE;oBAClD,IAAIC,OAAO,MAAM,IACb,OAAO,IAAIK,cAAcL,OAAO,KAAK;oBAEzC,OAAO,IAAIM,SAAS;gBACxB;QAER;QAEA,OAAOV;IACX;AACJ;AAEO,MAAMiB,oBAAoBC,qBAAqB,oBAAoB,CAAC;IACvE,gBAAgBnB;IAChB,cAAc,EAAE;AACpB"}