@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.
- package/LICENSE +21 -0
- package/README.md +11 -0
- package/admin/SecurityPermission.d.ts +2 -0
- package/admin/SecurityPermission.js +15 -0
- package/admin/SecurityPermission.js.map +1 -0
- package/admin/WebhookRoutes.d.ts +2 -0
- package/admin/WebhookRoutes.js +33 -0
- package/admin/WebhookRoutes.js.map +1 -0
- package/admin/Webhooks.d.ts +2 -0
- package/admin/Webhooks.js +53 -0
- package/admin/Webhooks.js.map +1 -0
- package/admin/features/ListWebhooks/ListWebhooksGateway.d.ts +11 -0
- package/admin/features/ListWebhooks/ListWebhooksGateway.js +62 -0
- package/admin/features/ListWebhooks/ListWebhooksGateway.js.map +1 -0
- package/admin/features/ListWebhooks/ListWebhooksRepository.d.ts +10 -0
- package/admin/features/ListWebhooks/ListWebhooksRepository.js +18 -0
- package/admin/features/ListWebhooks/ListWebhooksRepository.js.map +1 -0
- package/admin/features/ListWebhooks/ListWebhooksUseCase.d.ts +10 -0
- package/admin/features/ListWebhooks/ListWebhooksUseCase.js +18 -0
- package/admin/features/ListWebhooks/ListWebhooksUseCase.js.map +1 -0
- package/admin/features/ListWebhooks/abstractions.d.ts +36 -0
- package/admin/features/ListWebhooks/abstractions.js +7 -0
- package/admin/features/ListWebhooks/abstractions.js.map +1 -0
- package/admin/features/ListWebhooks/feature.d.ts +3 -0
- package/admin/features/ListWebhooks/feature.js +21 -0
- package/admin/features/ListWebhooks/feature.js.map +1 -0
- package/admin/features/ListWebhooks/index.d.ts +2 -0
- package/admin/features/ListWebhooks/index.js +2 -0
- package/admin/features/createWebhook/CreateWebhookGateway.d.ts +12 -0
- package/admin/features/createWebhook/CreateWebhookGateway.js +21 -0
- package/admin/features/createWebhook/CreateWebhookGateway.js.map +1 -0
- package/admin/features/createWebhook/CreateWebhookUseCase.d.ts +11 -0
- package/admin/features/createWebhook/CreateWebhookUseCase.js +18 -0
- package/admin/features/createWebhook/CreateWebhookUseCase.js.map +1 -0
- package/admin/features/createWebhook/abstractions.d.ts +23 -0
- package/admin/features/createWebhook/abstractions.js +6 -0
- package/admin/features/createWebhook/abstractions.js.map +1 -0
- package/admin/features/createWebhook/feature.d.ts +3 -0
- package/admin/features/createWebhook/feature.js +19 -0
- package/admin/features/createWebhook/feature.js.map +1 -0
- package/admin/features/createWebhook/index.d.ts +2 -0
- package/admin/features/createWebhook/index.js +2 -0
- package/admin/features/deleteWebhook/DeleteWebhookGateway.d.ts +11 -0
- package/admin/features/deleteWebhook/DeleteWebhookGateway.js +23 -0
- package/admin/features/deleteWebhook/DeleteWebhookGateway.js.map +1 -0
- package/admin/features/deleteWebhook/DeleteWebhookUseCase.d.ts +10 -0
- package/admin/features/deleteWebhook/DeleteWebhookUseCase.js +18 -0
- package/admin/features/deleteWebhook/DeleteWebhookUseCase.js.map +1 -0
- package/admin/features/deleteWebhook/abstractions.d.ts +14 -0
- package/admin/features/deleteWebhook/abstractions.js +6 -0
- package/admin/features/deleteWebhook/abstractions.js.map +1 -0
- package/admin/features/deleteWebhook/feature.d.ts +3 -0
- package/admin/features/deleteWebhook/feature.js +19 -0
- package/admin/features/deleteWebhook/feature.js.map +1 -0
- package/admin/features/deleteWebhook/index.d.ts +2 -0
- package/admin/features/deleteWebhook/index.js +2 -0
- package/admin/features/getWebhook/GetWebhookGateway.d.ts +12 -0
- package/admin/features/getWebhook/GetWebhookGateway.js +23 -0
- package/admin/features/getWebhook/GetWebhookGateway.js.map +1 -0
- package/admin/features/getWebhook/GetWebhookUseCase.d.ts +11 -0
- package/admin/features/getWebhook/GetWebhookUseCase.js +18 -0
- package/admin/features/getWebhook/GetWebhookUseCase.js.map +1 -0
- package/admin/features/getWebhook/abstractions.d.ts +15 -0
- package/admin/features/getWebhook/abstractions.js +6 -0
- package/admin/features/getWebhook/abstractions.js.map +1 -0
- package/admin/features/getWebhook/feature.d.ts +3 -0
- package/admin/features/getWebhook/feature.js +19 -0
- package/admin/features/getWebhook/feature.js.map +1 -0
- package/admin/features/getWebhook/index.d.ts +2 -0
- package/admin/features/getWebhook/index.js +2 -0
- package/admin/features/listAvailableEvents/ListAvailableEventsGateway.d.ts +12 -0
- package/admin/features/listAvailableEvents/ListAvailableEventsGateway.js +21 -0
- package/admin/features/listAvailableEvents/ListAvailableEventsGateway.js.map +1 -0
- package/admin/features/listAvailableEvents/ListAvailableEventsUseCase.d.ts +11 -0
- package/admin/features/listAvailableEvents/ListAvailableEventsUseCase.js +18 -0
- package/admin/features/listAvailableEvents/ListAvailableEventsUseCase.js.map +1 -0
- package/admin/features/listAvailableEvents/abstractions.d.ts +15 -0
- package/admin/features/listAvailableEvents/abstractions.js +6 -0
- package/admin/features/listAvailableEvents/abstractions.js.map +1 -0
- package/admin/features/listAvailableEvents/feature.d.ts +3 -0
- package/admin/features/listAvailableEvents/feature.js +19 -0
- package/admin/features/listAvailableEvents/feature.js.map +1 -0
- package/admin/features/listAvailableEvents/index.d.ts +2 -0
- package/admin/features/listAvailableEvents/index.js +2 -0
- package/admin/features/listWebhookDeliveries/ListWebhookDeliveriesGateway.d.ts +11 -0
- package/admin/features/listWebhookDeliveries/ListWebhookDeliveriesGateway.js +28 -0
- package/admin/features/listWebhookDeliveries/ListWebhookDeliveriesGateway.js.map +1 -0
- package/admin/features/listWebhookDeliveries/ListWebhookDeliveriesUseCase.d.ts +10 -0
- package/admin/features/listWebhookDeliveries/ListWebhookDeliveriesUseCase.js +18 -0
- package/admin/features/listWebhookDeliveries/ListWebhookDeliveriesUseCase.js.map +1 -0
- package/admin/features/listWebhookDeliveries/abstractions.d.ts +28 -0
- package/admin/features/listWebhookDeliveries/abstractions.js +6 -0
- package/admin/features/listWebhookDeliveries/abstractions.js.map +1 -0
- package/admin/features/listWebhookDeliveries/feature.d.ts +3 -0
- package/admin/features/listWebhookDeliveries/feature.js +19 -0
- package/admin/features/listWebhookDeliveries/feature.js.map +1 -0
- package/admin/features/listWebhookDeliveries/index.d.ts +2 -0
- package/admin/features/listWebhookDeliveries/index.js +2 -0
- package/admin/features/permissions/abstractions.d.ts +17 -0
- package/admin/features/permissions/abstractions.js +6 -0
- package/admin/features/permissions/abstractions.js.map +1 -0
- package/admin/features/permissions/feature.d.ts +14 -0
- package/admin/features/permissions/feature.js +7 -0
- package/admin/features/permissions/feature.js.map +1 -0
- package/admin/features/permissions/index.d.ts +2 -0
- package/admin/features/permissions/index.js +2 -0
- package/admin/features/resendWebhookDelivery/ResendWebhookDeliveryGateway.d.ts +11 -0
- package/admin/features/resendWebhookDelivery/ResendWebhookDeliveryGateway.js +23 -0
- package/admin/features/resendWebhookDelivery/ResendWebhookDeliveryGateway.js.map +1 -0
- package/admin/features/resendWebhookDelivery/ResendWebhookDeliveryUseCase.d.ts +10 -0
- package/admin/features/resendWebhookDelivery/ResendWebhookDeliveryUseCase.js +18 -0
- package/admin/features/resendWebhookDelivery/ResendWebhookDeliveryUseCase.js.map +1 -0
- package/admin/features/resendWebhookDelivery/abstractions.d.ts +14 -0
- package/admin/features/resendWebhookDelivery/abstractions.js +6 -0
- package/admin/features/resendWebhookDelivery/abstractions.js.map +1 -0
- package/admin/features/resendWebhookDelivery/feature.d.ts +3 -0
- package/admin/features/resendWebhookDelivery/feature.js +19 -0
- package/admin/features/resendWebhookDelivery/feature.js.map +1 -0
- package/admin/features/resendWebhookDelivery/index.d.ts +2 -0
- package/admin/features/resendWebhookDelivery/index.js +2 -0
- package/admin/features/triggerWebhook/TriggerWebhookGateway.d.ts +12 -0
- package/admin/features/triggerWebhook/TriggerWebhookGateway.js +24 -0
- package/admin/features/triggerWebhook/TriggerWebhookGateway.js.map +1 -0
- package/admin/features/triggerWebhook/TriggerWebhookUseCase.d.ts +11 -0
- package/admin/features/triggerWebhook/TriggerWebhookUseCase.js +18 -0
- package/admin/features/triggerWebhook/TriggerWebhookUseCase.js.map +1 -0
- package/admin/features/triggerWebhook/abstractions.d.ts +15 -0
- package/admin/features/triggerWebhook/abstractions.js +6 -0
- package/admin/features/triggerWebhook/abstractions.js.map +1 -0
- package/admin/features/triggerWebhook/feature.d.ts +3 -0
- package/admin/features/triggerWebhook/feature.js +19 -0
- package/admin/features/triggerWebhook/feature.js.map +1 -0
- package/admin/features/triggerWebhook/index.d.ts +2 -0
- package/admin/features/triggerWebhook/index.js +2 -0
- package/admin/features/updateWebhook/UpdateWebhookGateway.d.ts +12 -0
- package/admin/features/updateWebhook/UpdateWebhookGateway.js +24 -0
- package/admin/features/updateWebhook/UpdateWebhookGateway.js.map +1 -0
- package/admin/features/updateWebhook/UpdateWebhookUseCase.d.ts +11 -0
- package/admin/features/updateWebhook/UpdateWebhookUseCase.js +18 -0
- package/admin/features/updateWebhook/UpdateWebhookUseCase.js.map +1 -0
- package/admin/features/updateWebhook/abstractions.d.ts +23 -0
- package/admin/features/updateWebhook/abstractions.js +6 -0
- package/admin/features/updateWebhook/abstractions.js.map +1 -0
- package/admin/features/updateWebhook/feature.d.ts +3 -0
- package/admin/features/updateWebhook/feature.js +19 -0
- package/admin/features/updateWebhook/feature.js.map +1 -0
- package/admin/features/updateWebhook/index.d.ts +2 -0
- package/admin/features/updateWebhook/index.js +2 -0
- package/admin/index.d.ts +2 -0
- package/admin/index.js +2 -0
- package/admin/permissions.d.ts +12 -0
- package/admin/permissions.js +22 -0
- package/admin/permissions.js.map +1 -0
- package/admin/presentation/WebhookDeliveries/WebhookDeliveriesDataSource.d.ts +16 -0
- package/admin/presentation/WebhookDeliveries/WebhookDeliveriesDataSource.js +68 -0
- package/admin/presentation/WebhookDeliveries/WebhookDeliveriesDataSource.js.map +1 -0
- package/admin/presentation/WebhookDeliveries/WebhookDeliveriesPresenter.d.ts +19 -0
- package/admin/presentation/WebhookDeliveries/WebhookDeliveriesPresenter.js +77 -0
- package/admin/presentation/WebhookDeliveries/WebhookDeliveriesPresenter.js.map +1 -0
- package/admin/presentation/WebhookDeliveries/abstractions.d.ts +22 -0
- package/admin/presentation/WebhookDeliveries/abstractions.js +5 -0
- package/admin/presentation/WebhookDeliveries/abstractions.js.map +1 -0
- package/admin/presentation/WebhookDeliveries/components/DeliveryDetail.d.ts +11 -0
- package/admin/presentation/WebhookDeliveries/components/DeliveryDetail.js +73 -0
- package/admin/presentation/WebhookDeliveries/components/DeliveryDetail.js.map +1 -0
- package/admin/presentation/WebhookDeliveries/components/WebhookDeliveriesDrawer.d.ts +8 -0
- package/admin/presentation/WebhookDeliveries/components/WebhookDeliveriesDrawer.js +119 -0
- package/admin/presentation/WebhookDeliveries/components/WebhookDeliveriesDrawer.js.map +1 -0
- package/admin/presentation/WebhookDeliveries/feature.d.ts +3 -0
- package/admin/presentation/WebhookDeliveries/feature.js +17 -0
- package/admin/presentation/WebhookDeliveries/feature.js.map +1 -0
- package/admin/presentation/WebhookDeliveries/index.d.ts +2 -0
- package/admin/presentation/WebhookDeliveries/index.js +2 -0
- package/admin/presentation/WebhookForm/WebhookFormPresenter.d.ts +35 -0
- package/admin/presentation/WebhookForm/WebhookFormPresenter.js +163 -0
- package/admin/presentation/WebhookForm/WebhookFormPresenter.js.map +1 -0
- package/admin/presentation/WebhookForm/abstractions.d.ts +35 -0
- package/admin/presentation/WebhookForm/abstractions.js +5 -0
- package/admin/presentation/WebhookForm/abstractions.js.map +1 -0
- package/admin/presentation/WebhookForm/components/EventsSelector.d.ts +12 -0
- package/admin/presentation/WebhookForm/components/EventsSelector.js +44 -0
- package/admin/presentation/WebhookForm/components/EventsSelector.js.map +1 -0
- package/admin/presentation/WebhookForm/components/SigningSecret.d.ts +6 -0
- package/admin/presentation/WebhookForm/components/SigningSecret.js +43 -0
- package/admin/presentation/WebhookForm/components/SigningSecret.js.map +1 -0
- package/admin/presentation/WebhookForm/components/WebhookFormView.d.ts +2 -0
- package/admin/presentation/WebhookForm/components/WebhookFormView.js +88 -0
- package/admin/presentation/WebhookForm/components/WebhookFormView.js.map +1 -0
- package/admin/presentation/WebhookForm/feature.d.ts +3 -0
- package/admin/presentation/WebhookForm/feature.js +17 -0
- package/admin/presentation/WebhookForm/feature.js.map +1 -0
- package/admin/presentation/WebhookForm/index.d.ts +2 -0
- package/admin/presentation/WebhookForm/index.js +2 -0
- package/admin/presentation/WebhookList/WebhookListDataSource.d.ts +15 -0
- package/admin/presentation/WebhookList/WebhookListDataSource.js +67 -0
- package/admin/presentation/WebhookList/WebhookListDataSource.js.map +1 -0
- package/admin/presentation/WebhookList/WebhookListPresenter.d.ts +22 -0
- package/admin/presentation/WebhookList/WebhookListPresenter.js +90 -0
- package/admin/presentation/WebhookList/WebhookListPresenter.js.map +1 -0
- package/admin/presentation/WebhookList/abstractions.d.ts +27 -0
- package/admin/presentation/WebhookList/abstractions.js +5 -0
- package/admin/presentation/WebhookList/abstractions.js.map +1 -0
- package/admin/presentation/WebhookList/components/WebhookListView.d.ts +2 -0
- package/admin/presentation/WebhookList/components/WebhookListView.js +172 -0
- package/admin/presentation/WebhookList/components/WebhookListView.js.map +1 -0
- package/admin/presentation/WebhookList/feature.d.ts +3 -0
- package/admin/presentation/WebhookList/feature.js +17 -0
- package/admin/presentation/WebhookList/feature.js.map +1 -0
- package/admin/presentation/WebhookList/index.d.ts +2 -0
- package/admin/presentation/WebhookList/index.js +2 -0
- package/admin/presentation/security/HasPermission.d.ts +12 -0
- package/admin/presentation/security/HasPermission.js +6 -0
- package/admin/presentation/security/HasPermission.js.map +1 -0
- package/admin/presentation/security/usePermissions.d.ts +12 -0
- package/admin/presentation/security/usePermissions.js +6 -0
- package/admin/presentation/security/usePermissions.js.map +1 -0
- package/admin/routes.d.ts +7 -0
- package/admin/routes.js +17 -0
- package/admin/routes.js.map +1 -0
- package/admin/shared/types.d.ts +5 -0
- package/admin/shared/types.js +0 -0
- package/api/Extension.d.ts +1 -0
- package/api/Extension.js +1 -0
- package/api/WebhooksFeature.d.ts +4 -0
- package/api/WebhooksFeature.js +55 -0
- package/api/WebhooksFeature.js.map +1 -0
- package/api/domain/Webhook.d.ts +27 -0
- package/api/domain/Webhook.js +0 -0
- package/api/domain/WebhookDelivery.d.ts +36 -0
- package/api/domain/WebhookDelivery.js +0 -0
- package/api/domain/constants.d.ts +4 -0
- package/api/domain/constants.js +7 -0
- package/api/domain/constants.js.map +1 -0
- package/api/domain/errors.d.ts +36 -0
- package/api/domain/errors.js +70 -0
- package/api/domain/errors.js.map +1 -0
- package/api/features/CreateWebhook/CreateWebhookRepository.d.ts +18 -0
- package/api/features/CreateWebhook/CreateWebhookRepository.js +43 -0
- package/api/features/CreateWebhook/CreateWebhookRepository.js.map +1 -0
- package/api/features/CreateWebhook/CreateWebhookUseCase.d.ts +16 -0
- package/api/features/CreateWebhook/CreateWebhookUseCase.js +57 -0
- package/api/features/CreateWebhook/CreateWebhookUseCase.js.map +1 -0
- package/api/features/CreateWebhook/abstractions.d.ts +33 -0
- package/api/features/CreateWebhook/abstractions.js +6 -0
- package/api/features/CreateWebhook/abstractions.js.map +1 -0
- package/api/features/CreateWebhook/feature.d.ts +4 -0
- package/api/features/CreateWebhook/feature.js +13 -0
- package/api/features/CreateWebhook/feature.js.map +1 -0
- package/api/features/CreateWebhookDelivery/CreateWebhookDeliveryRepository.d.ts +20 -0
- package/api/features/CreateWebhookDelivery/CreateWebhookDeliveryRepository.js +58 -0
- package/api/features/CreateWebhookDelivery/CreateWebhookDeliveryRepository.js.map +1 -0
- package/api/features/CreateWebhookDelivery/abstractions.d.ts +21 -0
- package/api/features/CreateWebhookDelivery/abstractions.js +5 -0
- package/api/features/CreateWebhookDelivery/abstractions.js.map +1 -0
- package/api/features/CreateWebhookDelivery/feature.d.ts +4 -0
- package/api/features/CreateWebhookDelivery/feature.js +11 -0
- package/api/features/CreateWebhookDelivery/feature.js.map +1 -0
- package/api/features/DeleteWebhook/DeleteWebhookRepository.d.ts +19 -0
- package/api/features/DeleteWebhook/DeleteWebhookRepository.js +66 -0
- package/api/features/DeleteWebhook/DeleteWebhookRepository.js.map +1 -0
- package/api/features/DeleteWebhook/DeleteWebhookUseCase.d.ts +15 -0
- package/api/features/DeleteWebhook/DeleteWebhookUseCase.js +29 -0
- package/api/features/DeleteWebhook/DeleteWebhookUseCase.js.map +1 -0
- package/api/features/DeleteWebhook/abstractions.d.ts +20 -0
- package/api/features/DeleteWebhook/abstractions.js +6 -0
- package/api/features/DeleteWebhook/abstractions.js.map +1 -0
- package/api/features/DeleteWebhook/feature.d.ts +4 -0
- package/api/features/DeleteWebhook/feature.js +13 -0
- package/api/features/DeleteWebhook/feature.js.map +1 -0
- package/api/features/GetWebhook/GetWebhookRepository.d.ts +17 -0
- package/api/features/GetWebhook/GetWebhookRepository.js +39 -0
- package/api/features/GetWebhook/GetWebhookRepository.js.map +1 -0
- package/api/features/GetWebhook/GetWebhookUseCase.d.ts +14 -0
- package/api/features/GetWebhook/GetWebhookUseCase.js +24 -0
- package/api/features/GetWebhook/GetWebhookUseCase.js.map +1 -0
- package/api/features/GetWebhook/abstractions.d.ts +21 -0
- package/api/features/GetWebhook/abstractions.js +6 -0
- package/api/features/GetWebhook/abstractions.js.map +1 -0
- package/api/features/GetWebhook/feature.d.ts +4 -0
- package/api/features/GetWebhook/feature.js +13 -0
- package/api/features/GetWebhook/feature.js.map +1 -0
- package/api/features/GetWebhookDelivery/GetWebhookDeliveryRepository.d.ts +17 -0
- package/api/features/GetWebhookDelivery/GetWebhookDeliveryRepository.js +39 -0
- package/api/features/GetWebhookDelivery/GetWebhookDeliveryRepository.js.map +1 -0
- package/api/features/GetWebhookDelivery/GetWebhookDeliveryUseCase.d.ts +14 -0
- package/api/features/GetWebhookDelivery/GetWebhookDeliveryUseCase.js +24 -0
- package/api/features/GetWebhookDelivery/GetWebhookDeliveryUseCase.js.map +1 -0
- package/api/features/GetWebhookDelivery/abstractions.d.ts +21 -0
- package/api/features/GetWebhookDelivery/abstractions.js +6 -0
- package/api/features/GetWebhookDelivery/abstractions.js.map +1 -0
- package/api/features/GetWebhookDelivery/feature.d.ts +4 -0
- package/api/features/GetWebhookDelivery/feature.js +13 -0
- package/api/features/GetWebhookDelivery/feature.js.map +1 -0
- package/api/features/ListAvailableWebhookEvents/ListAvailableWebhookEventsUseCase.d.ts +14 -0
- package/api/features/ListAvailableWebhookEvents/ListAvailableWebhookEventsUseCase.js +30 -0
- package/api/features/ListAvailableWebhookEvents/ListAvailableWebhookEventsUseCase.js.map +1 -0
- package/api/features/ListAvailableWebhookEvents/abstractions.d.ts +9 -0
- package/api/features/ListAvailableWebhookEvents/abstractions.js +5 -0
- package/api/features/ListAvailableWebhookEvents/abstractions.js.map +1 -0
- package/api/features/ListAvailableWebhookEvents/feature.d.ts +4 -0
- package/api/features/ListAvailableWebhookEvents/feature.js +11 -0
- package/api/features/ListAvailableWebhookEvents/feature.js.map +1 -0
- package/api/features/ListWebhookDeliveries/ListWebhookDeliveriesRepository.d.ts +21 -0
- package/api/features/ListWebhookDeliveries/ListWebhookDeliveriesRepository.js +63 -0
- package/api/features/ListWebhookDeliveries/ListWebhookDeliveriesRepository.js.map +1 -0
- package/api/features/ListWebhookDeliveries/ListWebhookDeliveriesUseCase.d.ts +14 -0
- package/api/features/ListWebhookDeliveries/ListWebhookDeliveriesUseCase.js +24 -0
- package/api/features/ListWebhookDeliveries/ListWebhookDeliveriesUseCase.js.map +1 -0
- package/api/features/ListWebhookDeliveries/abstractions.d.ts +40 -0
- package/api/features/ListWebhookDeliveries/abstractions.js +6 -0
- package/api/features/ListWebhookDeliveries/abstractions.js.map +1 -0
- package/api/features/ListWebhookDeliveries/feature.d.ts +4 -0
- package/api/features/ListWebhookDeliveries/feature.js +13 -0
- package/api/features/ListWebhookDeliveries/feature.js.map +1 -0
- package/api/features/ListWebhooks/ListWebhooksRepository.d.ts +21 -0
- package/api/features/ListWebhooks/ListWebhooksRepository.js +63 -0
- package/api/features/ListWebhooks/ListWebhooksRepository.js.map +1 -0
- package/api/features/ListWebhooks/ListWebhooksUseCase.d.ts +14 -0
- package/api/features/ListWebhooks/ListWebhooksUseCase.js +24 -0
- package/api/features/ListWebhooks/ListWebhooksUseCase.js.map +1 -0
- package/api/features/ListWebhooks/abstractions.d.ts +41 -0
- package/api/features/ListWebhooks/abstractions.js +6 -0
- package/api/features/ListWebhooks/abstractions.js.map +1 -0
- package/api/features/ListWebhooks/feature.d.ts +4 -0
- package/api/features/ListWebhooks/feature.js +13 -0
- package/api/features/ListWebhooks/feature.js.map +1 -0
- package/api/features/ResendWebhookDelivery/ResendWebhookDeliveryUseCase.d.ts +20 -0
- package/api/features/ResendWebhookDelivery/ResendWebhookDeliveryUseCase.js +60 -0
- package/api/features/ResendWebhookDelivery/ResendWebhookDeliveryUseCase.js.map +1 -0
- package/api/features/ResendWebhookDelivery/abstractions.d.ts +12 -0
- package/api/features/ResendWebhookDelivery/abstractions.js +5 -0
- package/api/features/ResendWebhookDelivery/abstractions.js.map +1 -0
- package/api/features/ResendWebhookDelivery/feature.d.ts +4 -0
- package/api/features/ResendWebhookDelivery/feature.js +11 -0
- package/api/features/ResendWebhookDelivery/feature.js.map +1 -0
- package/api/features/SendWebhookTask/SendWebhookTask.d.ts +29 -0
- package/api/features/SendWebhookTask/SendWebhookTask.js +99 -0
- package/api/features/SendWebhookTask/SendWebhookTask.js.map +1 -0
- package/api/features/SendWebhookTask/feature.d.ts +4 -0
- package/api/features/SendWebhookTask/feature.js +11 -0
- package/api/features/SendWebhookTask/feature.js.map +1 -0
- package/api/features/SendWebhookTask/types.d.ts +15 -0
- package/api/features/SendWebhookTask/types.js +0 -0
- package/api/features/Transformers/WebhookDeliveryTransformer.d.ts +13 -0
- package/api/features/Transformers/WebhookDeliveryTransformer.js +57 -0
- package/api/features/Transformers/WebhookDeliveryTransformer.js.map +1 -0
- package/api/features/Transformers/WebhookTransformer.d.ts +11 -0
- package/api/features/Transformers/WebhookTransformer.js +35 -0
- package/api/features/Transformers/WebhookTransformer.js.map +1 -0
- package/api/features/Transformers/abstractions/WebhookDeliveryTransformer.d.ts +10 -0
- package/api/features/Transformers/abstractions/WebhookDeliveryTransformer.js +5 -0
- package/api/features/Transformers/abstractions/WebhookDeliveryTransformer.js.map +1 -0
- package/api/features/Transformers/abstractions/WebhookTransformer.d.ts +10 -0
- package/api/features/Transformers/abstractions/WebhookTransformer.js +5 -0
- package/api/features/Transformers/abstractions/WebhookTransformer.js.map +1 -0
- package/api/features/Transformers/feature.d.ts +4 -0
- package/api/features/Transformers/feature.js +13 -0
- package/api/features/Transformers/feature.js.map +1 -0
- package/api/features/Transformers/index.d.ts +2 -0
- package/api/features/Transformers/index.js +2 -0
- package/api/features/TriggerWebhook/TriggerWebhookUseCase.d.ts +19 -0
- package/api/features/TriggerWebhook/TriggerWebhookUseCase.js +54 -0
- package/api/features/TriggerWebhook/TriggerWebhookUseCase.js.map +1 -0
- package/api/features/TriggerWebhook/abstractions.d.ts +13 -0
- package/api/features/TriggerWebhook/abstractions.js +5 -0
- package/api/features/TriggerWebhook/abstractions.js.map +1 -0
- package/api/features/TriggerWebhook/feature.d.ts +4 -0
- package/api/features/TriggerWebhook/feature.js +11 -0
- package/api/features/TriggerWebhook/feature.js.map +1 -0
- package/api/features/UpdateWebhook/UpdateWebhookRepository.d.ts +21 -0
- package/api/features/UpdateWebhook/UpdateWebhookRepository.js +50 -0
- package/api/features/UpdateWebhook/UpdateWebhookRepository.js.map +1 -0
- package/api/features/UpdateWebhook/UpdateWebhookUseCase.d.ts +16 -0
- package/api/features/UpdateWebhook/UpdateWebhookUseCase.js +66 -0
- package/api/features/UpdateWebhook/UpdateWebhookUseCase.js.map +1 -0
- package/api/features/UpdateWebhook/abstractions.d.ts +31 -0
- package/api/features/UpdateWebhook/abstractions.js +6 -0
- package/api/features/UpdateWebhook/abstractions.js.map +1 -0
- package/api/features/UpdateWebhook/feature.d.ts +4 -0
- package/api/features/UpdateWebhook/feature.js +13 -0
- package/api/features/UpdateWebhook/feature.js.map +1 -0
- package/api/features/UpdateWebhookDelivery/UpdateWebhookDeliveryRepository.d.ts +22 -0
- package/api/features/UpdateWebhookDelivery/UpdateWebhookDeliveryRepository.js +62 -0
- package/api/features/UpdateWebhookDelivery/UpdateWebhookDeliveryRepository.js.map +1 -0
- package/api/features/UpdateWebhookDelivery/abstractions.d.ts +23 -0
- package/api/features/UpdateWebhookDelivery/abstractions.js +5 -0
- package/api/features/UpdateWebhookDelivery/abstractions.js.map +1 -0
- package/api/features/UpdateWebhookDelivery/feature.d.ts +4 -0
- package/api/features/UpdateWebhookDelivery/feature.js +11 -0
- package/api/features/UpdateWebhookDelivery/feature.js.map +1 -0
- package/api/features/WebhookDispatcher/WebhookDispatcher.d.ts +17 -0
- package/api/features/WebhookDispatcher/WebhookDispatcher.js +56 -0
- package/api/features/WebhookDispatcher/WebhookDispatcher.js.map +1 -0
- package/api/features/WebhookDispatcher/feature.d.ts +4 -0
- package/api/features/WebhookDispatcher/feature.js +11 -0
- package/api/features/WebhookDispatcher/feature.js.map +1 -0
- package/api/features/WebhookPermissions/abstractions.d.ts +17 -0
- package/api/features/WebhookPermissions/abstractions.js +6 -0
- package/api/features/WebhookPermissions/abstractions.js.map +1 -0
- package/api/features/WebhookPermissions/feature.d.ts +4 -0
- package/api/features/WebhookPermissions/feature.js +7 -0
- package/api/features/WebhookPermissions/feature.js.map +1 -0
- package/api/features/WebhookSignPayload/WebhookSignPayload.d.ts +8 -0
- package/api/features/WebhookSignPayload/WebhookSignPayload.js +20 -0
- package/api/features/WebhookSignPayload/WebhookSignPayload.js.map +1 -0
- package/api/features/WebhookSignPayload/feature.d.ts +4 -0
- package/api/features/WebhookSignPayload/feature.js +11 -0
- package/api/features/WebhookSignPayload/feature.js.map +1 -0
- package/api/features/WebhookVerifyPayload/WebhookVerifyPayload.d.ts +10 -0
- package/api/features/WebhookVerifyPayload/WebhookVerifyPayload.js +22 -0
- package/api/features/WebhookVerifyPayload/WebhookVerifyPayload.js.map +1 -0
- package/api/features/WebhookVerifyPayload/feature.d.ts +4 -0
- package/api/features/WebhookVerifyPayload/feature.js +11 -0
- package/api/features/WebhookVerifyPayload/feature.js.map +1 -0
- package/api/graphql/WebhookCrudSchema.d.ts +8 -0
- package/api/graphql/WebhookCrudSchema.js +167 -0
- package/api/graphql/WebhookCrudSchema.js.map +1 -0
- package/api/graphql/WebhookDeliverySchema.d.ts +8 -0
- package/api/graphql/WebhookDeliverySchema.js +96 -0
- package/api/graphql/WebhookDeliverySchema.js.map +1 -0
- package/api/graphql/WebhookEventSchema.d.ts +8 -0
- package/api/graphql/WebhookEventSchema.js +43 -0
- package/api/graphql/WebhookEventSchema.js.map +1 -0
- package/api/graphql/WebhookTriggerSchema.d.ts +8 -0
- package/api/graphql/WebhookTriggerSchema.js +36 -0
- package/api/graphql/WebhookTriggerSchema.js.map +1 -0
- package/api/index.d.ts +1 -0
- package/api/index.js +8 -0
- package/api/index.js.map +1 -0
- package/api/models/WebhookDeliveryModel.d.ts +8 -0
- package/api/models/WebhookDeliveryModel.js +36 -0
- package/api/models/WebhookDeliveryModel.js.map +1 -0
- package/api/models/WebhookModel.d.ts +8 -0
- package/api/models/WebhookModel.js +33 -0
- package/api/models/WebhookModel.js.map +1 -0
- package/api/permissions.d.ts +12 -0
- package/api/permissions.js +22 -0
- package/api/permissions.js.map +1 -0
- package/exports/api/webhooks.d.ts +6 -0
- package/exports/api/webhooks.js +2 -0
- package/package.json +54 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/ResendWebhookDelivery/ResendWebhookDeliveryUseCase.js","sources":["../../../../src/api/features/ResendWebhookDelivery/ResendWebhookDeliveryUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { ResendWebhookDeliveryUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { GetWebhookDeliveryRepository } from \"~/api/features/GetWebhookDelivery/abstractions.js\";\nimport { GetWebhookRepository } from \"~/api/features/GetWebhook/abstractions.js\";\nimport { CreateWebhookDeliveryRepository } from \"~/api/features/CreateWebhookDelivery/abstractions.js\";\nimport { WebhookPermissions } from \"~/api/features/WebhookPermissions/abstractions.js\";\nimport { WebhookNotAuthorizedError } from \"~/api/domain/errors.js\";\nimport { TaskService } from \"@webiny/api-core/exports/api/tasks.js\";\nimport { SEND_WEBHOOK_TASK, WEBHOOK_DELIVERY_RETENTION_DAYS } from \"~/api/domain/constants.js\";\nimport type { IWebhookPayload } from \"~/api/features/SendWebhookTask/types.js\";\n\nclass ResendWebhookDeliveryUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private permissions: WebhookPermissions.Interface,\n private getDeliveryRepository: GetWebhookDeliveryRepository.Interface,\n private getWebhookRepository: GetWebhookRepository.Interface,\n private createDeliveryRepository: CreateWebhookDeliveryRepository.Interface,\n private taskService: TaskService.Interface\n ) {}\n\n async execute(deliveryId: string): Promise<Result<boolean, UseCaseAbstraction.Error>> {\n if (!(await this.permissions.canEdit(\"webhook\"))) {\n return Result.fail(new WebhookNotAuthorizedError());\n }\n\n const deliveryResult = await this.getDeliveryRepository.execute(deliveryId);\n if (deliveryResult.isFail()) {\n return Result.fail(deliveryResult.error);\n }\n\n const delivery = deliveryResult.value;\n\n const webhookResult = await this.getWebhookRepository.execute(delivery.webhookId);\n if (webhookResult.isFail()) {\n return Result.fail(webhookResult.error);\n }\n\n const originalPayload = delivery.payload as IWebhookPayload | null;\n const data = originalPayload?.data ?? {};\n\n const expiresAt = new Date(\n Date.now() + WEBHOOK_DELIVERY_RETENTION_DAYS * 24 * 60 * 60 * 1000\n ).toISOString();\n\n const newDeliveryResult = await this.createDeliveryRepository.execute({\n webhookId: delivery.webhookId,\n eventType: delivery.eventType,\n status: \"pending\",\n payload: data as Record<string, unknown>,\n expiresAt\n });\n\n if (newDeliveryResult.isFail()) {\n return Result.fail(newDeliveryResult.error);\n }\n\n await this.taskService.trigger({\n definition: SEND_WEBHOOK_TASK,\n name: `Resend webhook: ${delivery.eventType}`,\n input: {\n webhookId: delivery.webhookId,\n eventName: delivery.eventType,\n deliveryId: newDeliveryResult.value.id\n }\n });\n\n return Result.ok(true);\n }\n}\n\nexport const ResendWebhookDeliveryUseCase = UseCaseAbstraction.createImplementation({\n implementation: ResendWebhookDeliveryUseCaseImpl,\n dependencies: [\n WebhookPermissions,\n GetWebhookDeliveryRepository,\n GetWebhookRepository,\n CreateWebhookDeliveryRepository,\n TaskService\n ]\n});\n"],"names":["ResendWebhookDeliveryUseCaseImpl","permissions","getDeliveryRepository","getWebhookRepository","createDeliveryRepository","taskService","deliveryId","Result","WebhookNotAuthorizedError","deliveryResult","delivery","webhookResult","originalPayload","data","expiresAt","Date","WEBHOOK_DELIVERY_RETENTION_DAYS","newDeliveryResult","SEND_WEBHOOK_TASK","ResendWebhookDeliveryUseCase","UseCaseAbstraction","WebhookPermissions","GetWebhookDeliveryRepository","GetWebhookRepository","CreateWebhookDeliveryRepository","TaskService"],"mappings":";;;;;;;;;AAWA,MAAMA;IACF,YACYC,WAAyC,EACzCC,qBAA6D,EAC7DC,oBAAoD,EACpDC,wBAAmE,EACnEC,WAAkC,CAC5C;aALUJ,WAAW,GAAXA;aACAC,qBAAqB,GAArBA;aACAC,oBAAoB,GAApBA;aACAC,wBAAwB,GAAxBA;aACAC,WAAW,GAAXA;IACT;IAEH,MAAM,QAAQC,UAAkB,EAAsD;QAClF,IAAI,CAAE,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,YACjC,OAAOC,OAAO,IAAI,CAAC,IAAIC;QAG3B,MAAMC,iBAAiB,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAACH;QAChE,IAAIG,eAAe,MAAM,IACrB,OAAOF,OAAO,IAAI,CAACE,eAAe,KAAK;QAG3C,MAAMC,WAAWD,eAAe,KAAK;QAErC,MAAME,gBAAgB,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAACD,SAAS,SAAS;QAChF,IAAIC,cAAc,MAAM,IACpB,OAAOJ,OAAO,IAAI,CAACI,cAAc,KAAK;QAG1C,MAAMC,kBAAkBF,SAAS,OAAO;QACxC,MAAMG,OAAOD,iBAAiB,QAAQ,CAAC;QAEvC,MAAME,YAAY,IAAIC,KAClBA,KAAK,GAAG,KAAKC,AAAkC,KAAlCA,kCAAAA,SACf,WAAW;QAEb,MAAMC,oBAAoB,MAAM,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC;YAClE,WAAWP,SAAS,SAAS;YAC7B,WAAWA,SAAS,SAAS;YAC7B,QAAQ;YACR,SAASG;YACTC;QACJ;QAEA,IAAIG,kBAAkB,MAAM,IACxB,OAAOV,OAAO,IAAI,CAACU,kBAAkB,KAAK;QAG9C,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;YAC3B,YAAYC;YACZ,MAAM,CAAC,gBAAgB,EAAER,SAAS,SAAS,EAAE;YAC7C,OAAO;gBACH,WAAWA,SAAS,SAAS;gBAC7B,WAAWA,SAAS,SAAS;gBAC7B,YAAYO,kBAAkB,KAAK,CAAC,EAAE;YAC1C;QACJ;QAEA,OAAOV,OAAO,EAAE,CAAC;IACrB;AACJ;AAEO,MAAMY,4DAA+BC,6BAAAA,oBAAuC,CAAC;IAChF,gBAAgBpB;IAChB,cAAc;QACVqB;QACAC;QACAC;QACAC;QACAC;KACH;AACL"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type Result } from "@webiny/feature/api";
|
|
2
|
+
import type { WebhookDeliveryNotFoundError, WebhookNotFoundError, WebhookPersistenceError, WebhookModelNotFoundError, WebhookNotAuthorizedError } from "../../../api/domain/errors.js";
|
|
3
|
+
type IError = WebhookDeliveryNotFoundError | WebhookNotFoundError | WebhookPersistenceError | WebhookModelNotFoundError | WebhookNotAuthorizedError;
|
|
4
|
+
export interface IResendWebhookDeliveryUseCase {
|
|
5
|
+
execute(deliveryId: string): Promise<Result<boolean, IError>>;
|
|
6
|
+
}
|
|
7
|
+
export declare const ResendWebhookDeliveryUseCase: import("@webiny/di").Abstraction<IResendWebhookDeliveryUseCase>;
|
|
8
|
+
export declare namespace ResendWebhookDeliveryUseCase {
|
|
9
|
+
type Interface = IResendWebhookDeliveryUseCase;
|
|
10
|
+
type Error = IError;
|
|
11
|
+
}
|
|
12
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/ResendWebhookDelivery/abstractions.js","sources":["../../../../src/api/features/ResendWebhookDelivery/abstractions.ts"],"sourcesContent":["import { createAbstraction, type Result } from \"@webiny/feature/api\";\nimport type {\n WebhookDeliveryNotFoundError,\n WebhookNotFoundError,\n WebhookPersistenceError,\n WebhookModelNotFoundError,\n WebhookNotAuthorizedError\n} from \"~/api/domain/errors.js\";\n\ntype IError =\n | WebhookDeliveryNotFoundError\n | WebhookNotFoundError\n | WebhookPersistenceError\n | WebhookModelNotFoundError\n | WebhookNotAuthorizedError;\n\nexport interface IResendWebhookDeliveryUseCase {\n execute(deliveryId: string): Promise<Result<boolean, IError>>;\n}\n\nexport const ResendWebhookDeliveryUseCase = createAbstraction<IResendWebhookDeliveryUseCase>(\n \"Webhooks/ResendWebhookDeliveryUseCase\"\n);\n\nexport namespace ResendWebhookDeliveryUseCase {\n export type Interface = IResendWebhookDeliveryUseCase;\n export type Error = IError;\n}\n"],"names":["ResendWebhookDeliveryUseCase","createAbstraction"],"mappings":";AAoBO,MAAMA,+BAA+BC,kBACxC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api";
|
|
2
|
+
import { ResendWebhookDeliveryUseCase } from "./ResendWebhookDeliveryUseCase.js";
|
|
3
|
+
const ResendWebhookDeliveryFeature = createFeature({
|
|
4
|
+
name: "ResendWebhookDelivery",
|
|
5
|
+
register (container) {
|
|
6
|
+
container.register(ResendWebhookDeliveryUseCase);
|
|
7
|
+
}
|
|
8
|
+
});
|
|
9
|
+
export { ResendWebhookDeliveryFeature };
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/ResendWebhookDelivery/feature.js","sources":["../../../../src/api/features/ResendWebhookDelivery/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { ResendWebhookDeliveryUseCase } from \"./ResendWebhookDeliveryUseCase.js\";\n\nexport const ResendWebhookDeliveryFeature = createFeature({\n name: \"ResendWebhookDelivery\",\n register(container) {\n container.register(ResendWebhookDeliveryUseCase);\n }\n});\n"],"names":["ResendWebhookDeliveryFeature","createFeature","container","ResendWebhookDeliveryUseCase"],"mappings":";;AAGO,MAAMA,+BAA+BC,cAAc;IACtD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;IACvB;AACJ"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import "@webiny/tasks/types.js";
|
|
2
|
+
import { TaskDefinition } from "@webiny/api-core/exports/api/tasks.js";
|
|
3
|
+
import { TenantContext } from "@webiny/api-core/exports/api/tenancy.js";
|
|
4
|
+
import { WebhookSignPayload } from "@webiny/api-core/features/webhooks/index.js";
|
|
5
|
+
import { GetWebhookRepository } from "../../../api/features/GetWebhook/abstractions.js";
|
|
6
|
+
import { GetWebhookDeliveryRepository } from "../../../api/features/GetWebhookDelivery/abstractions.js";
|
|
7
|
+
import { UpdateWebhookDeliveryRepository } from "../../../api/features/UpdateWebhookDelivery/abstractions.js";
|
|
8
|
+
import type { ISendWebhookTaskInput, ISendWebhookTaskOutput } from "./types.js";
|
|
9
|
+
type IRunParams = TaskDefinition.RunParams<ISendWebhookTaskInput, ISendWebhookTaskOutput>;
|
|
10
|
+
declare class SendWebhookTaskDefinition implements TaskDefinition.Interface<ISendWebhookTaskInput, ISendWebhookTaskOutput> {
|
|
11
|
+
private readonly getWebhookRepository;
|
|
12
|
+
private readonly getWebhookDeliveryRepository;
|
|
13
|
+
private readonly updateDeliveryRepository;
|
|
14
|
+
private readonly signPayload;
|
|
15
|
+
private readonly tenantContext;
|
|
16
|
+
readonly id = "sendWebhook";
|
|
17
|
+
readonly title = "Send Webhook";
|
|
18
|
+
readonly maxIterations = 1;
|
|
19
|
+
readonly isPrivate = true;
|
|
20
|
+
readonly databaseLogs = false;
|
|
21
|
+
readonly description = "POST a signed event payload to a webhook endpoint and log the delivery.";
|
|
22
|
+
readonly selfCleanup: ("onAbort" | "onSuccess")[];
|
|
23
|
+
constructor(getWebhookRepository: GetWebhookRepository.Interface, getWebhookDeliveryRepository: GetWebhookDeliveryRepository.Interface, updateDeliveryRepository: UpdateWebhookDeliveryRepository.Interface, signPayload: WebhookSignPayload.Interface, tenantContext: TenantContext.Interface);
|
|
24
|
+
run(params: IRunParams): Promise<import("@webiny/api-core/features/task/TaskDefinition/abstractions.js").ITaskResultError | TaskDefinition.ResultDone<ISendWebhookTaskOutput>>;
|
|
25
|
+
}
|
|
26
|
+
export declare const SendWebhookTask: typeof SendWebhookTaskDefinition & {
|
|
27
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/task/TaskDefinition/abstractions.js").ITaskDefinition<import("@webiny/api-core/features/task/TaskDefinition/abstractions.js").ITaskInput, import("@webiny/api-core/features/task/TaskDefinition/abstractions.js").ITaskOutput>>;
|
|
28
|
+
};
|
|
29
|
+
export {};
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import "@webiny/tasks/types.js";
|
|
2
|
+
import { TaskDefinition } from "@webiny/api-core/exports/api/tasks.js";
|
|
3
|
+
import { TenantContext } from "@webiny/api-core/exports/api/tenancy.js";
|
|
4
|
+
import { WebhookSignPayload } from "@webiny/api-core/features/webhooks/index.js";
|
|
5
|
+
import { GetWebhookRepository } from "../GetWebhook/abstractions.js";
|
|
6
|
+
import { GetWebhookDeliveryRepository } from "../GetWebhookDelivery/abstractions.js";
|
|
7
|
+
import { UpdateWebhookDeliveryRepository } from "../UpdateWebhookDelivery/abstractions.js";
|
|
8
|
+
import { SEND_WEBHOOK_TASK } from "../../domain/constants.js";
|
|
9
|
+
class SendWebhookTaskDefinition {
|
|
10
|
+
constructor(getWebhookRepository, getWebhookDeliveryRepository, updateDeliveryRepository, signPayload, tenantContext){
|
|
11
|
+
this.getWebhookRepository = getWebhookRepository;
|
|
12
|
+
this.getWebhookDeliveryRepository = getWebhookDeliveryRepository;
|
|
13
|
+
this.updateDeliveryRepository = updateDeliveryRepository;
|
|
14
|
+
this.signPayload = signPayload;
|
|
15
|
+
this.tenantContext = tenantContext;
|
|
16
|
+
this.id = SEND_WEBHOOK_TASK;
|
|
17
|
+
this.title = "Send Webhook";
|
|
18
|
+
this.maxIterations = 1;
|
|
19
|
+
this.isPrivate = true;
|
|
20
|
+
this.databaseLogs = false;
|
|
21
|
+
this.description = "POST a signed event payload to a webhook endpoint and log the delivery.";
|
|
22
|
+
this.selfCleanup = [
|
|
23
|
+
"onSuccess",
|
|
24
|
+
"onAbort"
|
|
25
|
+
];
|
|
26
|
+
}
|
|
27
|
+
async run(params) {
|
|
28
|
+
const { input } = params;
|
|
29
|
+
const taskId = params.controller.state.getTask().id;
|
|
30
|
+
const delivery = await this.getWebhookDeliveryRepository.execute(input.deliveryId);
|
|
31
|
+
if (delivery.isFail()) return params.controller.response.error(delivery.error);
|
|
32
|
+
await this.updateDeliveryRepository.execute(input.deliveryId, {
|
|
33
|
+
backgroundTaskId: taskId,
|
|
34
|
+
status: "delivering"
|
|
35
|
+
});
|
|
36
|
+
const webhookResult = await this.getWebhookRepository.execute(input.webhookId);
|
|
37
|
+
if (webhookResult.isFail()) {
|
|
38
|
+
await this.updateDeliveryRepository.execute(input.deliveryId, {
|
|
39
|
+
status: "failed"
|
|
40
|
+
});
|
|
41
|
+
return params.controller.response.error(webhookResult.error);
|
|
42
|
+
}
|
|
43
|
+
const webhook = webhookResult.value;
|
|
44
|
+
const now = new Date();
|
|
45
|
+
const payload = {
|
|
46
|
+
id: taskId,
|
|
47
|
+
event: input.eventName,
|
|
48
|
+
timestamp: now.toISOString(),
|
|
49
|
+
webhookId: input.webhookId,
|
|
50
|
+
tenant: this.tenantContext.getTenant().id,
|
|
51
|
+
data: delivery.value.payload
|
|
52
|
+
};
|
|
53
|
+
const rawBody = JSON.stringify(payload);
|
|
54
|
+
const signHeaders = await this.signPayload.sign(taskId, now, rawBody, webhook.signingSecret ?? "");
|
|
55
|
+
const requestHeaders = {
|
|
56
|
+
"Content-Type": "application/json",
|
|
57
|
+
...signHeaders
|
|
58
|
+
};
|
|
59
|
+
const startTime = Date.now();
|
|
60
|
+
let responseStatus = 0;
|
|
61
|
+
let responseBody = "";
|
|
62
|
+
try {
|
|
63
|
+
const response = await fetch(webhook.endpointUrl, {
|
|
64
|
+
method: "POST",
|
|
65
|
+
headers: requestHeaders,
|
|
66
|
+
body: rawBody,
|
|
67
|
+
signal: AbortSignal.timeout(600000)
|
|
68
|
+
});
|
|
69
|
+
responseStatus = response.status;
|
|
70
|
+
responseBody = await response.text();
|
|
71
|
+
} catch (error) {
|
|
72
|
+
responseStatus = 0;
|
|
73
|
+
responseBody = error.message;
|
|
74
|
+
}
|
|
75
|
+
const responseTime = Date.now() - startTime;
|
|
76
|
+
await this.updateDeliveryRepository.execute(input.deliveryId, {
|
|
77
|
+
payload,
|
|
78
|
+
requestHeaders,
|
|
79
|
+
responseTime,
|
|
80
|
+
responseStatus,
|
|
81
|
+
responseBody,
|
|
82
|
+
status: responseStatus > 0 ? "delivered" : "failed"
|
|
83
|
+
});
|
|
84
|
+
return params.controller.response.done();
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
const SendWebhookTask = TaskDefinition.createImplementation({
|
|
88
|
+
implementation: SendWebhookTaskDefinition,
|
|
89
|
+
dependencies: [
|
|
90
|
+
GetWebhookRepository,
|
|
91
|
+
GetWebhookDeliveryRepository,
|
|
92
|
+
UpdateWebhookDeliveryRepository,
|
|
93
|
+
WebhookSignPayload,
|
|
94
|
+
TenantContext
|
|
95
|
+
]
|
|
96
|
+
});
|
|
97
|
+
export { SendWebhookTask };
|
|
98
|
+
|
|
99
|
+
//# sourceMappingURL=SendWebhookTask.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/SendWebhookTask/SendWebhookTask.js","sources":["../../../../src/api/features/SendWebhookTask/SendWebhookTask.ts"],"sourcesContent":["import \"@webiny/tasks/types.js\";\nimport { TaskDefinition } from \"@webiny/api-core/exports/api/tasks.js\";\nimport { TenantContext } from \"@webiny/api-core/exports/api/tenancy.js\";\nimport { WebhookSignPayload } from \"@webiny/api-core/features/webhooks/index.js\";\nimport { GetWebhookRepository } from \"~/api/features/GetWebhook/abstractions.js\";\nimport { GetWebhookDeliveryRepository } from \"~/api/features/GetWebhookDelivery/abstractions.js\";\nimport { UpdateWebhookDeliveryRepository } from \"~/api/features/UpdateWebhookDelivery/abstractions.js\";\nimport { SEND_WEBHOOK_TASK } from \"~/api/domain/constants.js\";\nimport type { ISendWebhookTaskInput, ISendWebhookTaskOutput, IWebhookPayload } from \"./types.js\";\n\ntype IRunParams = TaskDefinition.RunParams<ISendWebhookTaskInput, ISendWebhookTaskOutput>;\n\nclass SendWebhookTaskDefinition implements TaskDefinition.Interface<\n ISendWebhookTaskInput,\n ISendWebhookTaskOutput\n> {\n public readonly id = SEND_WEBHOOK_TASK;\n public readonly title = \"Send Webhook\";\n public readonly maxIterations = 1;\n public readonly isPrivate = true;\n public readonly databaseLogs = false;\n public readonly description =\n \"POST a signed event payload to a webhook endpoint and log the delivery.\";\n public readonly selfCleanup = [\"onSuccess\" as const, \"onAbort\" as const];\n\n public constructor(\n private readonly getWebhookRepository: GetWebhookRepository.Interface,\n private readonly getWebhookDeliveryRepository: GetWebhookDeliveryRepository.Interface,\n private readonly updateDeliveryRepository: UpdateWebhookDeliveryRepository.Interface,\n private readonly signPayload: WebhookSignPayload.Interface,\n private readonly tenantContext: TenantContext.Interface\n ) {}\n\n public async run(params: IRunParams) {\n const { input } = params;\n const taskId = params.controller.state.getTask().id;\n\n const delivery = await this.getWebhookDeliveryRepository.execute(input.deliveryId);\n if (delivery.isFail()) {\n return params.controller.response.error(delivery.error);\n }\n\n await this.updateDeliveryRepository.execute(input.deliveryId, {\n backgroundTaskId: taskId,\n status: \"delivering\"\n });\n\n const webhookResult = await this.getWebhookRepository.execute(input.webhookId);\n if (webhookResult.isFail()) {\n await this.updateDeliveryRepository.execute(input.deliveryId, { status: \"failed\" });\n return params.controller.response.error(webhookResult.error);\n }\n const webhook = webhookResult.value;\n\n const now = new Date();\n const payload: IWebhookPayload = {\n id: taskId,\n event: input.eventName,\n timestamp: now.toISOString(),\n webhookId: input.webhookId,\n tenant: this.tenantContext.getTenant().id,\n data: delivery.value.payload\n };\n const rawBody = JSON.stringify(payload);\n const signHeaders = await this.signPayload.sign(\n taskId,\n now,\n rawBody,\n webhook.signingSecret ?? \"\"\n );\n\n const requestHeaders: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n ...signHeaders\n };\n\n const startTime = Date.now();\n let responseStatus = 0;\n let responseBody = \"\";\n\n try {\n const response = await fetch(webhook.endpointUrl, {\n method: \"POST\",\n headers: requestHeaders,\n body: rawBody,\n signal: AbortSignal.timeout(600_000)\n });\n responseStatus = response.status;\n responseBody = await response.text();\n } catch (error) {\n responseStatus = 0;\n responseBody = (error as Error).message;\n }\n\n const responseTime = Date.now() - startTime;\n\n await this.updateDeliveryRepository.execute(input.deliveryId, {\n payload,\n requestHeaders,\n responseTime,\n responseStatus,\n responseBody,\n status: responseStatus > 0 ? \"delivered\" : \"failed\"\n });\n\n return params.controller.response.done();\n }\n}\n\nexport const SendWebhookTask = TaskDefinition.createImplementation({\n implementation: SendWebhookTaskDefinition,\n dependencies: [\n GetWebhookRepository,\n GetWebhookDeliveryRepository,\n UpdateWebhookDeliveryRepository,\n WebhookSignPayload,\n TenantContext\n ]\n});\n"],"names":["SendWebhookTaskDefinition","getWebhookRepository","getWebhookDeliveryRepository","updateDeliveryRepository","signPayload","tenantContext","SEND_WEBHOOK_TASK","params","input","taskId","delivery","webhookResult","webhook","now","Date","payload","rawBody","JSON","signHeaders","requestHeaders","startTime","responseStatus","responseBody","response","fetch","AbortSignal","error","responseTime","SendWebhookTask","TaskDefinition","GetWebhookRepository","GetWebhookDeliveryRepository","UpdateWebhookDeliveryRepository","WebhookSignPayload","TenantContext"],"mappings":";;;;;;;;AAYA,MAAMA;IAaF,YACqBC,oBAAoD,EACpDC,4BAAoE,EACpEC,wBAAmE,EACnEC,WAAyC,EACzCC,aAAsC,CACzD;aALmBJ,oBAAoB,GAApBA;aACAC,4BAA4B,GAA5BA;aACAC,wBAAwB,GAAxBA;aACAC,WAAW,GAAXA;aACAC,aAAa,GAAbA;aAdL,EAAE,GAAGC;aACL,KAAK,GAAG;aACR,aAAa,GAAG;aAChB,SAAS,GAAG;aACZ,YAAY,GAAG;aACf,WAAW,GACvB;aACY,WAAW,GAAG;YAAC;YAAsB;SAAmB;IAQrE;IAEH,MAAa,IAAIC,MAAkB,EAAE;QACjC,MAAM,EAAEC,KAAK,EAAE,GAAGD;QAClB,MAAME,SAASF,OAAO,UAAU,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE;QAEnD,MAAMG,WAAW,MAAM,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAACF,MAAM,UAAU;QACjF,IAAIE,SAAS,MAAM,IACf,OAAOH,OAAO,UAAU,CAAC,QAAQ,CAAC,KAAK,CAACG,SAAS,KAAK;QAG1D,MAAM,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAACF,MAAM,UAAU,EAAE;YAC1D,kBAAkBC;YAClB,QAAQ;QACZ;QAEA,MAAME,gBAAgB,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAACH,MAAM,SAAS;QAC7E,IAAIG,cAAc,MAAM,IAAI;YACxB,MAAM,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAACH,MAAM,UAAU,EAAE;gBAAE,QAAQ;YAAS;YACjF,OAAOD,OAAO,UAAU,CAAC,QAAQ,CAAC,KAAK,CAACI,cAAc,KAAK;QAC/D;QACA,MAAMC,UAAUD,cAAc,KAAK;QAEnC,MAAME,MAAM,IAAIC;QAChB,MAAMC,UAA2B;YAC7B,IAAIN;YACJ,OAAOD,MAAM,SAAS;YACtB,WAAWK,IAAI,WAAW;YAC1B,WAAWL,MAAM,SAAS;YAC1B,QAAQ,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,EAAE;YACzC,MAAME,SAAS,KAAK,CAAC,OAAO;QAChC;QACA,MAAMM,UAAUC,KAAK,SAAS,CAACF;QAC/B,MAAMG,cAAc,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAC3CT,QACAI,KACAG,SACAJ,QAAQ,aAAa,IAAI;QAG7B,MAAMO,iBAAyC;YAC3C,gBAAgB;YAChB,GAAGD,WAAW;QAClB;QAEA,MAAME,YAAYN,KAAK,GAAG;QAC1B,IAAIO,iBAAiB;QACrB,IAAIC,eAAe;QAEnB,IAAI;YACA,MAAMC,WAAW,MAAMC,MAAMZ,QAAQ,WAAW,EAAE;gBAC9C,QAAQ;gBACR,SAASO;gBACT,MAAMH;gBACN,QAAQS,YAAY,OAAO,CAAC;YAChC;YACAJ,iBAAiBE,SAAS,MAAM;YAChCD,eAAe,MAAMC,SAAS,IAAI;QACtC,EAAE,OAAOG,OAAO;YACZL,iBAAiB;YACjBC,eAAgBI,MAAgB,OAAO;QAC3C;QAEA,MAAMC,eAAeb,KAAK,GAAG,KAAKM;QAElC,MAAM,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAACZ,MAAM,UAAU,EAAE;YAC1DO;YACAI;YACAQ;YACAN;YACAC;YACA,QAAQD,iBAAiB,IAAI,cAAc;QAC/C;QAEA,OAAOd,OAAO,UAAU,CAAC,QAAQ,CAAC,IAAI;IAC1C;AACJ;AAEO,MAAMqB,kBAAkBC,eAAe,oBAAoB,CAAC;IAC/D,gBAAgB7B;IAChB,cAAc;QACV8B;QACAC;QACAC;QACAC;QACAC;KACH;AACL"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api";
|
|
2
|
+
import { SendWebhookTask } from "./SendWebhookTask.js";
|
|
3
|
+
const SendWebhookTaskFeature = createFeature({
|
|
4
|
+
name: "SendWebhookTask",
|
|
5
|
+
register (container) {
|
|
6
|
+
container.register(SendWebhookTask);
|
|
7
|
+
}
|
|
8
|
+
});
|
|
9
|
+
export { SendWebhookTaskFeature };
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/SendWebhookTask/feature.js","sources":["../../../../src/api/features/SendWebhookTask/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { SendWebhookTask } from \"./SendWebhookTask.js\";\n\nexport const SendWebhookTaskFeature = createFeature({\n name: \"SendWebhookTask\",\n register(container) {\n container.register(SendWebhookTask);\n }\n});\n"],"names":["SendWebhookTaskFeature","createFeature","container","SendWebhookTask"],"mappings":";;AAGO,MAAMA,yBAAyBC,cAAc;IAChD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;IACvB;AACJ"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface ISendWebhookTaskInput {
|
|
2
|
+
webhookId: string;
|
|
3
|
+
eventName: string;
|
|
4
|
+
deliveryId: string;
|
|
5
|
+
}
|
|
6
|
+
export interface ISendWebhookTaskOutput {
|
|
7
|
+
}
|
|
8
|
+
export interface IWebhookPayload {
|
|
9
|
+
id: string;
|
|
10
|
+
event: string;
|
|
11
|
+
timestamp: string;
|
|
12
|
+
webhookId: string;
|
|
13
|
+
tenant: string;
|
|
14
|
+
data: unknown;
|
|
15
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { WebhookDeliveryTransformer as WebhookDeliveryTransformerAbstraction } from "./abstractions/WebhookDeliveryTransformer.js";
|
|
2
|
+
import type { CmsEntry } from "@webiny/api-headless-cms/types/index.js";
|
|
3
|
+
import type { WebhookDelivery, WebhookDeliveryCmsEntryValues } from "../../../api/domain/WebhookDelivery.js";
|
|
4
|
+
declare class WebhookDeliveryTransformerImpl implements WebhookDeliveryTransformerAbstraction.Interface {
|
|
5
|
+
fromStorage(entry: CmsEntry<WebhookDeliveryCmsEntryValues>): WebhookDelivery;
|
|
6
|
+
toStorage(delivery: WebhookDelivery): WebhookDeliveryCmsEntryValues;
|
|
7
|
+
private compress;
|
|
8
|
+
private decompress;
|
|
9
|
+
}
|
|
10
|
+
export declare const WebhookDeliveryTransformer: typeof WebhookDeliveryTransformerImpl & {
|
|
11
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions/WebhookDeliveryTransformer.js").IWebhookDeliveryTransformer>;
|
|
12
|
+
};
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { WebhookDeliveryTransformer } from "./abstractions/WebhookDeliveryTransformer.js";
|
|
2
|
+
class WebhookDeliveryTransformerImpl {
|
|
3
|
+
fromStorage(entry) {
|
|
4
|
+
return {
|
|
5
|
+
id: entry.entryId,
|
|
6
|
+
createdOn: entry.createdOn,
|
|
7
|
+
savedOn: entry.savedOn,
|
|
8
|
+
webhookId: entry.values.webhookId,
|
|
9
|
+
backgroundTaskId: entry.values.backgroundTaskId,
|
|
10
|
+
eventType: entry.values.eventType,
|
|
11
|
+
status: entry.values.status,
|
|
12
|
+
payload: this.decompress(entry.values.payload),
|
|
13
|
+
requestHeaders: this.decompress(entry.values.requestHeaders),
|
|
14
|
+
responseTime: entry.values.responseTime,
|
|
15
|
+
responseStatus: entry.values.responseStatus,
|
|
16
|
+
responseHeaders: this.decompress(entry.values.responseHeaders),
|
|
17
|
+
responseBody: this.decompress(entry.values.responseBody)
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
toStorage(delivery) {
|
|
21
|
+
return {
|
|
22
|
+
webhookId: delivery.webhookId,
|
|
23
|
+
backgroundTaskId: delivery.backgroundTaskId,
|
|
24
|
+
eventType: delivery.eventType,
|
|
25
|
+
status: delivery.status,
|
|
26
|
+
payload: this.compress(delivery.payload),
|
|
27
|
+
requestHeaders: this.compress(delivery.requestHeaders),
|
|
28
|
+
responseTime: delivery.responseTime,
|
|
29
|
+
responseStatus: delivery.responseStatus,
|
|
30
|
+
responseHeaders: this.compress(delivery.responseHeaders),
|
|
31
|
+
responseBody: this.compress(delivery.responseBody)
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
compress(value) {
|
|
35
|
+
if (null == value) return null;
|
|
36
|
+
try {
|
|
37
|
+
return JSON.stringify(value);
|
|
38
|
+
} catch {
|
|
39
|
+
return value;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
decompress(stored) {
|
|
43
|
+
if (!stored) return null;
|
|
44
|
+
try {
|
|
45
|
+
return JSON.parse(stored);
|
|
46
|
+
} catch {
|
|
47
|
+
return stored;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
const WebhookDeliveryTransformer_WebhookDeliveryTransformer = WebhookDeliveryTransformer.createImplementation({
|
|
52
|
+
implementation: WebhookDeliveryTransformerImpl,
|
|
53
|
+
dependencies: []
|
|
54
|
+
});
|
|
55
|
+
export { WebhookDeliveryTransformer_WebhookDeliveryTransformer as WebhookDeliveryTransformer };
|
|
56
|
+
|
|
57
|
+
//# sourceMappingURL=WebhookDeliveryTransformer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/Transformers/WebhookDeliveryTransformer.js","sources":["../../../../src/api/features/Transformers/WebhookDeliveryTransformer.ts"],"sourcesContent":["import { WebhookDeliveryTransformer as WebhookDeliveryTransformerAbstraction } from \"./abstractions/WebhookDeliveryTransformer.js\";\nimport type { CmsEntry } from \"@webiny/api-headless-cms/types/index.js\";\nimport type {\n WebhookDelivery,\n WebhookDeliveryCmsEntryValues\n} from \"~/api/domain/WebhookDelivery.js\";\n\nclass WebhookDeliveryTransformerImpl implements WebhookDeliveryTransformerAbstraction.Interface {\n public fromStorage(entry: CmsEntry<WebhookDeliveryCmsEntryValues>): WebhookDelivery {\n return {\n id: entry.entryId,\n createdOn: entry.createdOn,\n savedOn: entry.savedOn,\n webhookId: entry.values.webhookId,\n backgroundTaskId: entry.values.backgroundTaskId,\n eventType: entry.values.eventType,\n status: entry.values.status,\n payload: this.decompress(entry.values.payload),\n requestHeaders: this.decompress(entry.values.requestHeaders),\n responseTime: entry.values.responseTime,\n responseStatus: entry.values.responseStatus,\n responseHeaders: this.decompress(entry.values.responseHeaders),\n responseBody: this.decompress(entry.values.responseBody)\n };\n }\n\n public toStorage(delivery: WebhookDelivery): WebhookDeliveryCmsEntryValues {\n return {\n webhookId: delivery.webhookId,\n backgroundTaskId: delivery.backgroundTaskId,\n eventType: delivery.eventType,\n status: delivery.status,\n payload: this.compress(delivery.payload),\n requestHeaders: this.compress(delivery.requestHeaders),\n responseTime: delivery.responseTime,\n responseStatus: delivery.responseStatus,\n responseHeaders: this.compress(delivery.responseHeaders),\n responseBody: this.compress(delivery.responseBody)\n };\n }\n\n private compress(value: unknown): string {\n if (value === null || value === undefined) {\n return null as unknown as string;\n }\n try {\n return JSON.stringify(value);\n } catch {\n return value as string;\n }\n }\n\n private decompress<T>(stored: string | null | undefined): T {\n if (!stored) {\n return null as T;\n }\n try {\n return JSON.parse(stored) as T;\n } catch {\n return stored as T;\n }\n }\n}\n\nexport const WebhookDeliveryTransformer =\n WebhookDeliveryTransformerAbstraction.createImplementation({\n implementation: WebhookDeliveryTransformerImpl,\n dependencies: []\n });\n"],"names":["WebhookDeliveryTransformerImpl","entry","delivery","value","JSON","stored","WebhookDeliveryTransformer","WebhookDeliveryTransformerAbstraction"],"mappings":";AAOA,MAAMA;IACK,YAAYC,KAA8C,EAAmB;QAChF,OAAO;YACH,IAAIA,MAAM,OAAO;YACjB,WAAWA,MAAM,SAAS;YAC1B,SAASA,MAAM,OAAO;YACtB,WAAWA,MAAM,MAAM,CAAC,SAAS;YACjC,kBAAkBA,MAAM,MAAM,CAAC,gBAAgB;YAC/C,WAAWA,MAAM,MAAM,CAAC,SAAS;YACjC,QAAQA,MAAM,MAAM,CAAC,MAAM;YAC3B,SAAS,IAAI,CAAC,UAAU,CAACA,MAAM,MAAM,CAAC,OAAO;YAC7C,gBAAgB,IAAI,CAAC,UAAU,CAACA,MAAM,MAAM,CAAC,cAAc;YAC3D,cAAcA,MAAM,MAAM,CAAC,YAAY;YACvC,gBAAgBA,MAAM,MAAM,CAAC,cAAc;YAC3C,iBAAiB,IAAI,CAAC,UAAU,CAACA,MAAM,MAAM,CAAC,eAAe;YAC7D,cAAc,IAAI,CAAC,UAAU,CAACA,MAAM,MAAM,CAAC,YAAY;QAC3D;IACJ;IAEO,UAAUC,QAAyB,EAAiC;QACvE,OAAO;YACH,WAAWA,SAAS,SAAS;YAC7B,kBAAkBA,SAAS,gBAAgB;YAC3C,WAAWA,SAAS,SAAS;YAC7B,QAAQA,SAAS,MAAM;YACvB,SAAS,IAAI,CAAC,QAAQ,CAACA,SAAS,OAAO;YACvC,gBAAgB,IAAI,CAAC,QAAQ,CAACA,SAAS,cAAc;YACrD,cAAcA,SAAS,YAAY;YACnC,gBAAgBA,SAAS,cAAc;YACvC,iBAAiB,IAAI,CAAC,QAAQ,CAACA,SAAS,eAAe;YACvD,cAAc,IAAI,CAAC,QAAQ,CAACA,SAAS,YAAY;QACrD;IACJ;IAEQ,SAASC,KAAc,EAAU;QACrC,IAAIA,QAAAA,OACA,OAAO;QAEX,IAAI;YACA,OAAOC,KAAK,SAAS,CAACD;QAC1B,EAAE,OAAM;YACJ,OAAOA;QACX;IACJ;IAEQ,WAAcE,MAAiC,EAAK;QACxD,IAAI,CAACA,QACD,OAAO;QAEX,IAAI;YACA,OAAOD,KAAK,KAAK,CAACC;QACtB,EAAE,OAAM;YACJ,OAAOA;QACX;IACJ;AACJ;AAEO,MAAMC,wDACTC,2BAAAA,oBAA0D,CAAC;IACvD,gBAAgBP;IAChB,cAAc,EAAE;AACpB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { WebhookTransformer as WebhookTransformerAbstraction } from "./abstractions/WebhookTransformer.js";
|
|
2
|
+
import type { CmsEntry } from "@webiny/api-headless-cms/types/index.js";
|
|
3
|
+
import type { Webhook, WebhookCmsEntryValues } from "../../../api/domain/Webhook.js";
|
|
4
|
+
declare class WebhookTransformerImpl implements WebhookTransformerAbstraction.Interface {
|
|
5
|
+
fromStorage(entry: CmsEntry<WebhookCmsEntryValues>): Webhook;
|
|
6
|
+
toStorage(webhook: Webhook): WebhookCmsEntryValues;
|
|
7
|
+
}
|
|
8
|
+
export declare const WebhookTransformer: typeof WebhookTransformerImpl & {
|
|
9
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions/WebhookTransformer.js").IWebhookTransformer>;
|
|
10
|
+
};
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { WebhookTransformer } from "./abstractions/WebhookTransformer.js";
|
|
2
|
+
class WebhookTransformerImpl {
|
|
3
|
+
fromStorage(entry) {
|
|
4
|
+
return {
|
|
5
|
+
id: entry.entryId,
|
|
6
|
+
name: entry.values.name,
|
|
7
|
+
slug: entry.values.slug,
|
|
8
|
+
endpointUrl: entry.values.endpointUrl,
|
|
9
|
+
description: entry.values.description,
|
|
10
|
+
enabled: entry.values.enabled,
|
|
11
|
+
events: entry.values.events,
|
|
12
|
+
signingSecret: entry.values.signingSecret,
|
|
13
|
+
createdOn: entry.createdOn,
|
|
14
|
+
savedOn: entry.savedOn
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
toStorage(webhook) {
|
|
18
|
+
return {
|
|
19
|
+
name: webhook.name,
|
|
20
|
+
slug: webhook.slug,
|
|
21
|
+
endpointUrl: webhook.endpointUrl,
|
|
22
|
+
description: webhook.description,
|
|
23
|
+
enabled: webhook.enabled,
|
|
24
|
+
events: webhook.events,
|
|
25
|
+
signingSecret: webhook.signingSecret
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
const WebhookTransformer_WebhookTransformer = WebhookTransformer.createImplementation({
|
|
30
|
+
implementation: WebhookTransformerImpl,
|
|
31
|
+
dependencies: []
|
|
32
|
+
});
|
|
33
|
+
export { WebhookTransformer_WebhookTransformer as WebhookTransformer };
|
|
34
|
+
|
|
35
|
+
//# sourceMappingURL=WebhookTransformer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/Transformers/WebhookTransformer.js","sources":["../../../../src/api/features/Transformers/WebhookTransformer.ts"],"sourcesContent":["import { WebhookTransformer as WebhookTransformerAbstraction } from \"./abstractions/WebhookTransformer.js\";\nimport type { CmsEntry } from \"@webiny/api-headless-cms/types/index.js\";\nimport type { Webhook, WebhookCmsEntryValues } from \"~/api/domain/Webhook.js\";\n\nclass WebhookTransformerImpl implements WebhookTransformerAbstraction.Interface {\n public fromStorage(entry: CmsEntry<WebhookCmsEntryValues>): Webhook {\n return {\n id: entry.entryId,\n name: entry.values.name,\n slug: entry.values.slug,\n endpointUrl: entry.values.endpointUrl,\n description: entry.values.description,\n enabled: entry.values.enabled,\n events: entry.values.events,\n signingSecret: entry.values.signingSecret,\n createdOn: entry.createdOn,\n savedOn: entry.savedOn\n };\n }\n\n public toStorage(webhook: Webhook): WebhookCmsEntryValues {\n return {\n name: webhook.name,\n slug: webhook.slug,\n endpointUrl: webhook.endpointUrl,\n description: webhook.description,\n enabled: webhook.enabled,\n events: webhook.events,\n signingSecret: webhook.signingSecret\n };\n }\n}\n\nexport const WebhookTransformer = WebhookTransformerAbstraction.createImplementation({\n implementation: WebhookTransformerImpl,\n dependencies: []\n});\n"],"names":["WebhookTransformerImpl","entry","webhook","WebhookTransformer","WebhookTransformerAbstraction"],"mappings":";AAIA,MAAMA;IACK,YAAYC,KAAsC,EAAW;QAChE,OAAO;YACH,IAAIA,MAAM,OAAO;YACjB,MAAMA,MAAM,MAAM,CAAC,IAAI;YACvB,MAAMA,MAAM,MAAM,CAAC,IAAI;YACvB,aAAaA,MAAM,MAAM,CAAC,WAAW;YACrC,aAAaA,MAAM,MAAM,CAAC,WAAW;YACrC,SAASA,MAAM,MAAM,CAAC,OAAO;YAC7B,QAAQA,MAAM,MAAM,CAAC,MAAM;YAC3B,eAAeA,MAAM,MAAM,CAAC,aAAa;YACzC,WAAWA,MAAM,SAAS;YAC1B,SAASA,MAAM,OAAO;QAC1B;IACJ;IAEO,UAAUC,OAAgB,EAAyB;QACtD,OAAO;YACH,MAAMA,QAAQ,IAAI;YAClB,MAAMA,QAAQ,IAAI;YAClB,aAAaA,QAAQ,WAAW;YAChC,aAAaA,QAAQ,WAAW;YAChC,SAASA,QAAQ,OAAO;YACxB,QAAQA,QAAQ,MAAM;YACtB,eAAeA,QAAQ,aAAa;QACxC;IACJ;AACJ;AAEO,MAAMC,wCAAqBC,mBAAAA,oBAAkD,CAAC;IACjF,gBAAgBJ;IAChB,cAAc,EAAE;AACpB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { CmsEntry } from "@webiny/api-headless-cms/types/index.js";
|
|
2
|
+
import type { WebhookDelivery, WebhookDeliveryCmsEntryValues } from "../../../../api/domain/WebhookDelivery.js";
|
|
3
|
+
export interface IWebhookDeliveryTransformer {
|
|
4
|
+
fromStorage(entry: CmsEntry<WebhookDeliveryCmsEntryValues>): WebhookDelivery;
|
|
5
|
+
toStorage(delivery: WebhookDelivery): WebhookDeliveryCmsEntryValues;
|
|
6
|
+
}
|
|
7
|
+
export declare const WebhookDeliveryTransformer: import("@webiny/di").Abstraction<IWebhookDeliveryTransformer>;
|
|
8
|
+
export declare namespace WebhookDeliveryTransformer {
|
|
9
|
+
type Interface = IWebhookDeliveryTransformer;
|
|
10
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/Transformers/abstractions/WebhookDeliveryTransformer.js","sources":["../../../../../src/api/features/Transformers/abstractions/WebhookDeliveryTransformer.ts"],"sourcesContent":["import type { CmsEntry } from \"@webiny/api-headless-cms/types/index.js\";\nimport type {\n WebhookDelivery,\n WebhookDeliveryCmsEntryValues\n} from \"~/api/domain/WebhookDelivery.js\";\nimport { createAbstraction } from \"@webiny/feature/api\";\n\nexport interface IWebhookDeliveryTransformer {\n fromStorage(entry: CmsEntry<WebhookDeliveryCmsEntryValues>): WebhookDelivery;\n toStorage(delivery: WebhookDelivery): WebhookDeliveryCmsEntryValues;\n}\n\nexport const WebhookDeliveryTransformer = createAbstraction<IWebhookDeliveryTransformer>(\n \"Webhooks/WebhookDeliveryTransformer\"\n);\n\nexport namespace WebhookDeliveryTransformer {\n export type Interface = IWebhookDeliveryTransformer;\n}\n"],"names":["WebhookDeliveryTransformer","createAbstraction"],"mappings":";AAYO,MAAMA,6BAA6BC,kBACtC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { CmsEntry } from "@webiny/api-headless-cms/types/index.js";
|
|
2
|
+
import type { Webhook, WebhookCmsEntryValues } from "../../../../api/domain/Webhook.js";
|
|
3
|
+
export interface IWebhookTransformer {
|
|
4
|
+
fromStorage(entry: CmsEntry<WebhookCmsEntryValues>): Webhook;
|
|
5
|
+
toStorage(webhook: Webhook): WebhookCmsEntryValues;
|
|
6
|
+
}
|
|
7
|
+
export declare const WebhookTransformer: import("@webiny/di").Abstraction<IWebhookTransformer>;
|
|
8
|
+
export declare namespace WebhookTransformer {
|
|
9
|
+
type Interface = IWebhookTransformer;
|
|
10
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/Transformers/abstractions/WebhookTransformer.js","sources":["../../../../../src/api/features/Transformers/abstractions/WebhookTransformer.ts"],"sourcesContent":["import type { CmsEntry } from \"@webiny/api-headless-cms/types/index.js\";\nimport type { Webhook, WebhookCmsEntryValues } from \"~/api/domain/Webhook.js\";\nimport { createAbstraction } from \"@webiny/feature/api\";\n\nexport interface IWebhookTransformer {\n fromStorage(entry: CmsEntry<WebhookCmsEntryValues>): Webhook;\n toStorage(webhook: Webhook): WebhookCmsEntryValues;\n}\n\nexport const WebhookTransformer = createAbstraction<IWebhookTransformer>(\n \"Webhooks/WebhookTransformer\"\n);\n\nexport namespace WebhookTransformer {\n export type Interface = IWebhookTransformer;\n}\n"],"names":["WebhookTransformer","createAbstraction"],"mappings":";AASO,MAAMA,qBAAqBC,kBAC9B"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api";
|
|
2
|
+
import { WebhookTransformer } from "./WebhookTransformer.js";
|
|
3
|
+
import { WebhookDeliveryTransformer } from "./WebhookDeliveryTransformer.js";
|
|
4
|
+
const WebhooksTransformerFeature = createFeature({
|
|
5
|
+
name: "Webhooks/Transformer",
|
|
6
|
+
register (container) {
|
|
7
|
+
container.register(WebhookTransformer).inSingletonScope();
|
|
8
|
+
container.register(WebhookDeliveryTransformer).inSingletonScope();
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
export { WebhooksTransformerFeature };
|
|
12
|
+
|
|
13
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/Transformers/feature.js","sources":["../../../../src/api/features/Transformers/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { WebhookTransformer } from \"./WebhookTransformer.js\";\nimport { WebhookDeliveryTransformer } from \"./WebhookDeliveryTransformer.js\";\n\nexport const WebhooksTransformerFeature = createFeature({\n name: \"Webhooks/Transformer\",\n register(container) {\n container.register(WebhookTransformer).inSingletonScope();\n container.register(WebhookDeliveryTransformer).inSingletonScope();\n }\n});\n"],"names":["WebhooksTransformerFeature","createFeature","container","WebhookTransformer","WebhookDeliveryTransformer"],"mappings":";;;AAIO,MAAMA,6BAA6BC,cAAc;IACpD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC,oBAAoB,gBAAgB;QACvDD,UAAU,QAAQ,CAACE,4BAA4B,gBAAgB;IACnE;AACJ"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { TaskService } from "@webiny/api-core/exports/api/tasks.js";
|
|
3
|
+
import { TriggerWebhookUseCase as UseCaseAbstraction } from "./abstractions.js";
|
|
4
|
+
import { GetWebhookRepository } from "../../../api/features/GetWebhook/abstractions.js";
|
|
5
|
+
import { CreateWebhookDeliveryRepository } from "../../../api/features/CreateWebhookDelivery/abstractions.js";
|
|
6
|
+
import { WebhookPermissions } from "../../../api/features/WebhookPermissions/abstractions.js";
|
|
7
|
+
import type { WebhookDelivery } from "../../../api/domain/WebhookDelivery.js";
|
|
8
|
+
declare class TriggerWebhookUseCaseImpl implements UseCaseAbstraction.Interface {
|
|
9
|
+
private readonly permissions;
|
|
10
|
+
private readonly getWebhookRepository;
|
|
11
|
+
private readonly createDeliveryRepository;
|
|
12
|
+
private readonly taskService;
|
|
13
|
+
constructor(permissions: WebhookPermissions.Interface, getWebhookRepository: GetWebhookRepository.Interface, createDeliveryRepository: CreateWebhookDeliveryRepository.Interface, taskService: TaskService.Interface);
|
|
14
|
+
execute(webhookId: string, payload: Record<string, unknown>): Promise<Result<WebhookDelivery, UseCaseAbstraction.Error>>;
|
|
15
|
+
}
|
|
16
|
+
export declare const TriggerWebhookUseCase: typeof TriggerWebhookUseCaseImpl & {
|
|
17
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").ITriggerWebhookUseCase>;
|
|
18
|
+
};
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { TaskService } from "@webiny/api-core/exports/api/tasks.js";
|
|
3
|
+
import { TriggerWebhookUseCase } from "./abstractions.js";
|
|
4
|
+
import { GetWebhookRepository } from "../GetWebhook/abstractions.js";
|
|
5
|
+
import { CreateWebhookDeliveryRepository } from "../CreateWebhookDelivery/abstractions.js";
|
|
6
|
+
import { WebhookPermissions } from "../WebhookPermissions/abstractions.js";
|
|
7
|
+
import { WebhookNotAuthorizedError } from "../../domain/errors.js";
|
|
8
|
+
import { SEND_WEBHOOK_TASK, WEBHOOK_DELIVERY_RETENTION_DAYS } from "../../domain/constants.js";
|
|
9
|
+
class TriggerWebhookUseCaseImpl {
|
|
10
|
+
constructor(permissions, getWebhookRepository, createDeliveryRepository, taskService){
|
|
11
|
+
this.permissions = permissions;
|
|
12
|
+
this.getWebhookRepository = getWebhookRepository;
|
|
13
|
+
this.createDeliveryRepository = createDeliveryRepository;
|
|
14
|
+
this.taskService = taskService;
|
|
15
|
+
}
|
|
16
|
+
async execute(webhookId, payload) {
|
|
17
|
+
if (!await this.permissions.canEdit("webhook")) return Result.fail(new WebhookNotAuthorizedError());
|
|
18
|
+
const webhookResult = await this.getWebhookRepository.execute(webhookId);
|
|
19
|
+
if (webhookResult.isFail()) return Result.fail(webhookResult.error);
|
|
20
|
+
const webhook = webhookResult.value;
|
|
21
|
+
const expiresAt = new Date(Date.now() + 24 * WEBHOOK_DELIVERY_RETENTION_DAYS * 3600000).toISOString();
|
|
22
|
+
const deliveryResult = await this.createDeliveryRepository.execute({
|
|
23
|
+
webhookId: webhook.id,
|
|
24
|
+
eventType: "webhook.test",
|
|
25
|
+
status: "pending",
|
|
26
|
+
payload,
|
|
27
|
+
expiresAt
|
|
28
|
+
});
|
|
29
|
+
if (deliveryResult.isFail()) return Result.fail(deliveryResult.error);
|
|
30
|
+
const delivery = deliveryResult.value;
|
|
31
|
+
await this.taskService.trigger({
|
|
32
|
+
definition: SEND_WEBHOOK_TASK,
|
|
33
|
+
name: `Test webhook: ${webhook.slug}`,
|
|
34
|
+
input: {
|
|
35
|
+
webhookId: webhook.id,
|
|
36
|
+
eventName: "webhook.test",
|
|
37
|
+
deliveryId: delivery.id
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
return Result.ok(delivery);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
const TriggerWebhookUseCase_TriggerWebhookUseCase = TriggerWebhookUseCase.createImplementation({
|
|
44
|
+
implementation: TriggerWebhookUseCaseImpl,
|
|
45
|
+
dependencies: [
|
|
46
|
+
WebhookPermissions,
|
|
47
|
+
GetWebhookRepository,
|
|
48
|
+
CreateWebhookDeliveryRepository,
|
|
49
|
+
TaskService
|
|
50
|
+
]
|
|
51
|
+
});
|
|
52
|
+
export { TriggerWebhookUseCase_TriggerWebhookUseCase as TriggerWebhookUseCase };
|
|
53
|
+
|
|
54
|
+
//# sourceMappingURL=TriggerWebhookUseCase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/TriggerWebhook/TriggerWebhookUseCase.js","sources":["../../../../src/api/features/TriggerWebhook/TriggerWebhookUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { TaskService } from \"@webiny/api-core/exports/api/tasks.js\";\nimport { TriggerWebhookUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { GetWebhookRepository } from \"~/api/features/GetWebhook/abstractions.js\";\nimport { CreateWebhookDeliveryRepository } from \"~/api/features/CreateWebhookDelivery/abstractions.js\";\nimport { WebhookPermissions } from \"~/api/features/WebhookPermissions/abstractions.js\";\nimport { WebhookNotAuthorizedError } from \"~/api/domain/errors.js\";\nimport { SEND_WEBHOOK_TASK, WEBHOOK_DELIVERY_RETENTION_DAYS } from \"~/api/domain/constants.js\";\nimport type { ISendWebhookTaskInput } from \"~/api/features/SendWebhookTask/types.js\";\nimport type { WebhookDelivery } from \"~/api/domain/WebhookDelivery.js\";\n\nclass TriggerWebhookUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private readonly permissions: WebhookPermissions.Interface,\n private readonly getWebhookRepository: GetWebhookRepository.Interface,\n private readonly createDeliveryRepository: CreateWebhookDeliveryRepository.Interface,\n private readonly taskService: TaskService.Interface\n ) {}\n\n async execute(\n webhookId: string,\n payload: Record<string, unknown>\n ): Promise<Result<WebhookDelivery, UseCaseAbstraction.Error>> {\n if (!(await this.permissions.canEdit(\"webhook\"))) {\n return Result.fail(new WebhookNotAuthorizedError());\n }\n\n const webhookResult = await this.getWebhookRepository.execute(webhookId);\n if (webhookResult.isFail()) {\n return Result.fail(webhookResult.error);\n }\n\n const webhook = webhookResult.value;\n\n const expiresAt = new Date(\n Date.now() + WEBHOOK_DELIVERY_RETENTION_DAYS * 24 * 60 * 60 * 1000\n ).toISOString();\n\n const deliveryResult = await this.createDeliveryRepository.execute({\n webhookId: webhook.id,\n eventType: \"webhook.test\",\n status: \"pending\",\n payload,\n expiresAt\n });\n\n if (deliveryResult.isFail()) {\n return Result.fail(deliveryResult.error);\n }\n\n const delivery = deliveryResult.value;\n\n await this.taskService.trigger<ISendWebhookTaskInput>({\n definition: SEND_WEBHOOK_TASK,\n name: `Test webhook: ${webhook.slug}`,\n input: {\n webhookId: webhook.id,\n eventName: \"webhook.test\",\n deliveryId: delivery.id\n }\n });\n\n return Result.ok(delivery);\n }\n}\n\nexport const TriggerWebhookUseCase = UseCaseAbstraction.createImplementation({\n implementation: TriggerWebhookUseCaseImpl,\n dependencies: [\n WebhookPermissions,\n GetWebhookRepository,\n CreateWebhookDeliveryRepository,\n TaskService\n ]\n});\n"],"names":["TriggerWebhookUseCaseImpl","permissions","getWebhookRepository","createDeliveryRepository","taskService","webhookId","payload","Result","WebhookNotAuthorizedError","webhookResult","webhook","expiresAt","Date","WEBHOOK_DELIVERY_RETENTION_DAYS","deliveryResult","delivery","SEND_WEBHOOK_TASK","TriggerWebhookUseCase","UseCaseAbstraction","WebhookPermissions","GetWebhookRepository","CreateWebhookDeliveryRepository","TaskService"],"mappings":";;;;;;;;AAWA,MAAMA;IACF,YACqBC,WAAyC,EACzCC,oBAAoD,EACpDC,wBAAmE,EACnEC,WAAkC,CACrD;aAJmBH,WAAW,GAAXA;aACAC,oBAAoB,GAApBA;aACAC,wBAAwB,GAAxBA;aACAC,WAAW,GAAXA;IAClB;IAEH,MAAM,QACFC,SAAiB,EACjBC,OAAgC,EAC0B;QAC1D,IAAI,CAAE,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,YACjC,OAAOC,OAAO,IAAI,CAAC,IAAIC;QAG3B,MAAMC,gBAAgB,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAACJ;QAC9D,IAAII,cAAc,MAAM,IACpB,OAAOF,OAAO,IAAI,CAACE,cAAc,KAAK;QAG1C,MAAMC,UAAUD,cAAc,KAAK;QAEnC,MAAME,YAAY,IAAIC,KAClBA,KAAK,GAAG,KAAKC,AAAkC,KAAlCA,kCAAAA,SACf,WAAW;QAEb,MAAMC,iBAAiB,MAAM,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC;YAC/D,WAAWJ,QAAQ,EAAE;YACrB,WAAW;YACX,QAAQ;YACRJ;YACAK;QACJ;QAEA,IAAIG,eAAe,MAAM,IACrB,OAAOP,OAAO,IAAI,CAACO,eAAe,KAAK;QAG3C,MAAMC,WAAWD,eAAe,KAAK;QAErC,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAwB;YAClD,YAAYE;YACZ,MAAM,CAAC,cAAc,EAAEN,QAAQ,IAAI,EAAE;YACrC,OAAO;gBACH,WAAWA,QAAQ,EAAE;gBACrB,WAAW;gBACX,YAAYK,SAAS,EAAE;YAC3B;QACJ;QAEA,OAAOR,OAAO,EAAE,CAACQ;IACrB;AACJ;AAEO,MAAME,8CAAwBC,sBAAAA,oBAAuC,CAAC;IACzE,gBAAgBlB;IAChB,cAAc;QACVmB;QACAC;QACAC;QACAC;KACH;AACL"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type Result } from "@webiny/feature/api";
|
|
2
|
+
import type { WebhookDelivery } from "../../../api/domain/WebhookDelivery.js";
|
|
3
|
+
import type { WebhookNotFoundError, WebhookPersistenceError, WebhookModelNotFoundError, WebhookNotAuthorizedError } from "../../../api/domain/errors.js";
|
|
4
|
+
type IError = WebhookNotFoundError | WebhookPersistenceError | WebhookModelNotFoundError | WebhookNotAuthorizedError;
|
|
5
|
+
export interface ITriggerWebhookUseCase {
|
|
6
|
+
execute(webhookId: string, payload: Record<string, unknown>): Promise<Result<WebhookDelivery, IError>>;
|
|
7
|
+
}
|
|
8
|
+
export declare const TriggerWebhookUseCase: import("@webiny/di").Abstraction<ITriggerWebhookUseCase>;
|
|
9
|
+
export declare namespace TriggerWebhookUseCase {
|
|
10
|
+
type Interface = ITriggerWebhookUseCase;
|
|
11
|
+
type Error = IError;
|
|
12
|
+
}
|
|
13
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/features/TriggerWebhook/abstractions.js","sources":["../../../../src/api/features/TriggerWebhook/abstractions.ts"],"sourcesContent":["import { createAbstraction, type Result } from \"@webiny/feature/api\";\nimport type { WebhookDelivery } from \"~/api/domain/WebhookDelivery.js\";\nimport type {\n WebhookNotFoundError,\n WebhookPersistenceError,\n WebhookModelNotFoundError,\n WebhookNotAuthorizedError\n} from \"~/api/domain/errors.js\";\n\ntype IError =\n | WebhookNotFoundError\n | WebhookPersistenceError\n | WebhookModelNotFoundError\n | WebhookNotAuthorizedError;\n\nexport interface ITriggerWebhookUseCase {\n execute(\n webhookId: string,\n payload: Record<string, unknown>\n ): Promise<Result<WebhookDelivery, IError>>;\n}\n\nexport const TriggerWebhookUseCase = createAbstraction<ITriggerWebhookUseCase>(\n \"Webhooks/TriggerWebhookUseCase\"\n);\n\nexport namespace TriggerWebhookUseCase {\n export type Interface = ITriggerWebhookUseCase;\n export type Error = IError;\n}\n"],"names":["TriggerWebhookUseCase","createAbstraction"],"mappings":";AAsBO,MAAMA,wBAAwBC,kBACjC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api";
|
|
2
|
+
import { TriggerWebhookUseCase } from "./TriggerWebhookUseCase.js";
|
|
3
|
+
const TriggerWebhookFeature = createFeature({
|
|
4
|
+
name: "TriggerWebhook",
|
|
5
|
+
register (container) {
|
|
6
|
+
container.register(TriggerWebhookUseCase);
|
|
7
|
+
}
|
|
8
|
+
});
|
|
9
|
+
export { TriggerWebhookFeature };
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=feature.js.map
|