@webiny/api-workflows 6.3.0 → 6.4.0-beta.0
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/constants.js +4 -3
- package/constants.js.map +1 -1
- package/domain/notifications/abstractions.js +8 -7
- package/domain/notifications/abstractions.js.map +1 -1
- package/domain/notifications/errors.js +7 -7
- package/domain/notifications/errors.js.map +1 -1
- package/domain/workflow/WorkflowMapper.js +22 -23
- package/domain/workflow/WorkflowMapper.js.map +1 -1
- package/domain/workflow/abstractions.js +3 -3
- package/domain/workflow/abstractions.js.map +1 -1
- package/domain/workflow/errors.js +26 -29
- package/domain/workflow/errors.js.map +1 -1
- package/domain/workflow/workflowModel.js +27 -25
- package/domain/workflow/workflowModel.js.map +1 -1
- package/domain/workflowState/WorkflowState.js +216 -319
- package/domain/workflowState/WorkflowState.js.map +1 -1
- package/domain/workflowState/WorkflowStateMapper.js +36 -35
- package/domain/workflowState/WorkflowStateMapper.js.map +1 -1
- package/domain/workflowState/abstractions.js +9 -9
- package/domain/workflowState/abstractions.js.map +1 -1
- package/domain/workflowState/errors.js +109 -122
- package/domain/workflowState/errors.js.map +1 -1
- package/domain/workflowState/guards/canReview.js +2 -3
- package/domain/workflowState/guards/canReview.js.map +1 -1
- package/domain/workflowState/guards/canTakeOver.js +2 -3
- package/domain/workflowState/guards/canTakeOver.js.map +1 -1
- package/domain/workflowState/guards/isInReview.js +2 -3
- package/domain/workflowState/guards/isInReview.js.map +1 -1
- package/domain/workflowState/guards/isRejected.js +2 -3
- package/domain/workflowState/guards/isRejected.js.map +1 -1
- package/domain/workflowState/guards/isStepOwner.js +2 -3
- package/domain/workflowState/guards/isStepOwner.js.map +1 -1
- package/domain/workflowState/stateModel.js +59 -51
- package/domain/workflowState/stateModel.js.map +1 -1
- package/features/internal/GetUserTeams/GetUserTeamsUseCase.js +20 -27
- package/features/internal/GetUserTeams/GetUserTeamsUseCase.js.map +1 -1
- package/features/internal/GetUserTeams/abstractions.js +2 -1
- package/features/internal/GetUserTeams/abstractions.js.map +1 -1
- package/features/internal/GetUserTeams/feature.js +6 -5
- package/features/internal/GetUserTeams/feature.js.map +1 -1
- package/features/internal/GetUserTeams/index.js +0 -2
- package/features/notifications/ListNotificationTypes/ListNotificationTypesRepository.js +21 -17
- package/features/notifications/ListNotificationTypes/ListNotificationTypesRepository.js.map +1 -1
- package/features/notifications/ListNotificationTypes/ListNotificationTypesUseCase.js +22 -27
- package/features/notifications/ListNotificationTypes/ListNotificationTypesUseCase.js.map +1 -1
- package/features/notifications/ListNotificationTypes/abstractions.js +3 -12
- package/features/notifications/ListNotificationTypes/abstractions.js.map +1 -1
- package/features/notifications/ListNotificationTypes/feature.js +7 -6
- package/features/notifications/ListNotificationTypes/feature.js.map +1 -1
- package/features/notifications/ListNotificationTypes/index.js +0 -2
- package/features/notifications/NotificationTransport/MailNotificationTransport.js +29 -38
- package/features/notifications/NotificationTransport/MailNotificationTransport.js.map +1 -1
- package/features/notifications/NotificationTransport/abstractions.js +2 -1
- package/features/notifications/NotificationTransport/abstractions.js.map +1 -1
- package/features/notifications/NotificationTransport/feature.js +6 -5
- package/features/notifications/NotificationTransport/feature.js.map +1 -1
- package/features/notifications/NotificationTransport/index.js +0 -2
- package/features/shared/abstractions.js +0 -3
- package/features/workflow/CreateWorkflow/CreateWorkflowRepository.js +35 -34
- package/features/workflow/CreateWorkflow/CreateWorkflowRepository.js.map +1 -1
- package/features/workflow/CreateWorkflow/CreateWorkflowUseCase.js +38 -42
- package/features/workflow/CreateWorkflow/CreateWorkflowUseCase.js.map +1 -1
- package/features/workflow/CreateWorkflow/abstractions.js +3 -16
- package/features/workflow/CreateWorkflow/abstractions.js.map +1 -1
- package/features/workflow/CreateWorkflow/events.js +17 -14
- package/features/workflow/CreateWorkflow/events.js.map +1 -1
- package/features/workflow/CreateWorkflow/feature.js +7 -6
- package/features/workflow/CreateWorkflow/feature.js.map +1 -1
- package/features/workflow/CreateWorkflow/index.js +2 -4
- package/features/workflow/DeleteWorkflow/DeleteWorkflowRepository.js +24 -22
- package/features/workflow/DeleteWorkflow/DeleteWorkflowRepository.js.map +1 -1
- package/features/workflow/DeleteWorkflow/DeleteWorkflowUseCase.js +38 -43
- package/features/workflow/DeleteWorkflow/DeleteWorkflowUseCase.js.map +1 -1
- package/features/workflow/DeleteWorkflow/abstractions.js +3 -16
- package/features/workflow/DeleteWorkflow/abstractions.js.map +1 -1
- package/features/workflow/DeleteWorkflow/events.js +17 -14
- package/features/workflow/DeleteWorkflow/events.js.map +1 -1
- package/features/workflow/DeleteWorkflow/feature.js +7 -6
- package/features/workflow/DeleteWorkflow/feature.js.map +1 -1
- package/features/workflow/DeleteWorkflow/index.js +2 -4
- package/features/workflow/GetWorkflow/GetWorkflowRepository.js +33 -34
- package/features/workflow/GetWorkflow/GetWorkflowRepository.js.map +1 -1
- package/features/workflow/GetWorkflow/GetWorkflowUseCase.js +21 -23
- package/features/workflow/GetWorkflow/GetWorkflowUseCase.js.map +1 -1
- package/features/workflow/GetWorkflow/abstractions.js +3 -12
- package/features/workflow/GetWorkflow/abstractions.js.map +1 -1
- package/features/workflow/GetWorkflow/feature.js +7 -6
- package/features/workflow/GetWorkflow/feature.js.map +1 -1
- package/features/workflow/GetWorkflow/index.js +0 -2
- package/features/workflow/ListWorkflows/ListWorkflowsRepository.js +47 -52
- package/features/workflow/ListWorkflows/ListWorkflowsRepository.js.map +1 -1
- package/features/workflow/ListWorkflows/ListWorkflowsUseCase.js +14 -13
- package/features/workflow/ListWorkflows/ListWorkflowsUseCase.js.map +1 -1
- package/features/workflow/ListWorkflows/abstractions.js +3 -12
- package/features/workflow/ListWorkflows/abstractions.js.map +1 -1
- package/features/workflow/ListWorkflows/feature.js +7 -6
- package/features/workflow/ListWorkflows/feature.js.map +1 -1
- package/features/workflow/ListWorkflows/index.js +0 -2
- package/features/workflow/StoreWorkflow/StoreWorkflowUseCase.js +24 -26
- package/features/workflow/StoreWorkflow/StoreWorkflowUseCase.js.map +1 -1
- package/features/workflow/StoreWorkflow/abstractions.js +2 -8
- package/features/workflow/StoreWorkflow/abstractions.js.map +1 -1
- package/features/workflow/StoreWorkflow/feature.js +8 -10
- package/features/workflow/StoreWorkflow/feature.js.map +1 -1
- package/features/workflow/StoreWorkflow/index.js +0 -2
- package/features/workflow/UpdateWorkflow/UpdateWorkflowRepository.js +38 -37
- package/features/workflow/UpdateWorkflow/UpdateWorkflowRepository.js.map +1 -1
- package/features/workflow/UpdateWorkflow/UpdateWorkflowUseCase.js +40 -44
- package/features/workflow/UpdateWorkflow/UpdateWorkflowUseCase.js.map +1 -1
- package/features/workflow/UpdateWorkflow/abstractions.js +3 -16
- package/features/workflow/UpdateWorkflow/abstractions.js.map +1 -1
- package/features/workflow/UpdateWorkflow/events.js +17 -14
- package/features/workflow/UpdateWorkflow/events.js.map +1 -1
- package/features/workflow/UpdateWorkflow/feature.js +7 -6
- package/features/workflow/UpdateWorkflow/feature.js.map +1 -1
- package/features/workflow/UpdateWorkflow/index.js +2 -4
- package/features/workflowState/ApproveWorkflowStateStep/ApproveWorkflowStateStepUseCase.js +26 -27
- package/features/workflowState/ApproveWorkflowStateStep/ApproveWorkflowStateStepUseCase.js.map +1 -1
- package/features/workflowState/ApproveWorkflowStateStep/abstractions.js +2 -1
- package/features/workflowState/ApproveWorkflowStateStep/abstractions.js.map +1 -1
- package/features/workflowState/ApproveWorkflowStateStep/events.js +9 -6
- package/features/workflowState/ApproveWorkflowStateStep/events.js.map +1 -1
- package/features/workflowState/ApproveWorkflowStateStep/feature.js +6 -5
- package/features/workflowState/ApproveWorkflowStateStep/feature.js.map +1 -1
- package/features/workflowState/ApproveWorkflowStateStep/index.js +0 -2
- package/features/workflowState/CancelWorkflowState/CancelWorkflowStateUseCase.js +21 -19
- package/features/workflowState/CancelWorkflowState/CancelWorkflowStateUseCase.js.map +1 -1
- package/features/workflowState/CancelWorkflowState/abstractions.js +2 -6
- package/features/workflowState/CancelWorkflowState/abstractions.js.map +1 -1
- package/features/workflowState/CancelWorkflowState/events.js +9 -6
- package/features/workflowState/CancelWorkflowState/events.js.map +1 -1
- package/features/workflowState/CancelWorkflowState/feature.js +6 -5
- package/features/workflowState/CancelWorkflowState/feature.js.map +1 -1
- package/features/workflowState/CancelWorkflowState/index.js +0 -2
- package/features/workflowState/CreateWorkflowState/CreateWorkflowStateRepository.js +25 -22
- package/features/workflowState/CreateWorkflowState/CreateWorkflowStateRepository.js.map +1 -1
- package/features/workflowState/CreateWorkflowState/CreateWorkflowStateUseCase.js +78 -90
- package/features/workflowState/CreateWorkflowState/CreateWorkflowStateUseCase.js.map +1 -1
- package/features/workflowState/CreateWorkflowState/abstractions.js +3 -12
- package/features/workflowState/CreateWorkflowState/abstractions.js.map +1 -1
- package/features/workflowState/CreateWorkflowState/events.js +9 -6
- package/features/workflowState/CreateWorkflowState/events.js.map +1 -1
- package/features/workflowState/CreateWorkflowState/feature.js +7 -6
- package/features/workflowState/CreateWorkflowState/feature.js.map +1 -1
- package/features/workflowState/CreateWorkflowState/index.js +1 -3
- package/features/workflowState/DeleteTargetWorkflowState/DeleteTargetWorkflowStateUseCase.js +44 -42
- package/features/workflowState/DeleteTargetWorkflowState/DeleteTargetWorkflowStateUseCase.js.map +1 -1
- package/features/workflowState/DeleteTargetWorkflowState/abstractions.js +2 -1
- package/features/workflowState/DeleteTargetWorkflowState/abstractions.js.map +1 -1
- package/features/workflowState/DeleteTargetWorkflowState/events.js +9 -6
- package/features/workflowState/DeleteTargetWorkflowState/events.js.map +1 -1
- package/features/workflowState/DeleteTargetWorkflowState/feature.js +6 -5
- package/features/workflowState/DeleteTargetWorkflowState/feature.js.map +1 -1
- package/features/workflowState/DeleteTargetWorkflowState/index.js +0 -2
- package/features/workflowState/DeleteWorkflowState/DeleteWorkflowStateRepository.js +16 -12
- package/features/workflowState/DeleteWorkflowState/DeleteWorkflowStateRepository.js.map +1 -1
- package/features/workflowState/DeleteWorkflowState/DeleteWorkflowStateUseCase.js +22 -21
- package/features/workflowState/DeleteWorkflowState/DeleteWorkflowStateUseCase.js.map +1 -1
- package/features/workflowState/DeleteWorkflowState/abstractions.js +3 -2
- package/features/workflowState/DeleteWorkflowState/abstractions.js.map +1 -1
- package/features/workflowState/DeleteWorkflowState/feature.js +7 -6
- package/features/workflowState/DeleteWorkflowState/feature.js.map +1 -1
- package/features/workflowState/DeleteWorkflowState/index.js +1 -3
- package/features/workflowState/GetTargetWorkflowState/GetTargetWorkflowStateRepository.js +39 -43
- package/features/workflowState/GetTargetWorkflowState/GetTargetWorkflowStateRepository.js.map +1 -1
- package/features/workflowState/GetTargetWorkflowState/GetTargetWorkflowStateUseCase.js +24 -25
- package/features/workflowState/GetTargetWorkflowState/GetTargetWorkflowStateUseCase.js.map +1 -1
- package/features/workflowState/GetTargetWorkflowState/abstractions.js +3 -12
- package/features/workflowState/GetTargetWorkflowState/abstractions.js.map +1 -1
- package/features/workflowState/GetTargetWorkflowState/feature.js +7 -6
- package/features/workflowState/GetTargetWorkflowState/feature.js.map +1 -1
- package/features/workflowState/GetTargetWorkflowState/index.js +1 -3
- package/features/workflowState/GetWorkflowState/GetWorkflowStateRepository.js +26 -23
- package/features/workflowState/GetWorkflowState/GetWorkflowStateRepository.js.map +1 -1
- package/features/workflowState/GetWorkflowState/GetWorkflowStateUseCase.js +23 -20
- package/features/workflowState/GetWorkflowState/GetWorkflowStateUseCase.js.map +1 -1
- package/features/workflowState/GetWorkflowState/abstractions.js +3 -12
- package/features/workflowState/GetWorkflowState/abstractions.js.map +1 -1
- package/features/workflowState/GetWorkflowState/feature.js +7 -6
- package/features/workflowState/GetWorkflowState/feature.js.map +1 -1
- package/features/workflowState/GetWorkflowState/index.js +1 -3
- package/features/workflowState/ListOwnWorkflowStates/ListOwnWorkflowStatesUseCase.js +33 -32
- package/features/workflowState/ListOwnWorkflowStates/ListOwnWorkflowStatesUseCase.js.map +1 -1
- package/features/workflowState/ListOwnWorkflowStates/abstractions.js +2 -6
- package/features/workflowState/ListOwnWorkflowStates/abstractions.js.map +1 -1
- package/features/workflowState/ListOwnWorkflowStates/feature.js +6 -5
- package/features/workflowState/ListOwnWorkflowStates/feature.js.map +1 -1
- package/features/workflowState/ListOwnWorkflowStates/index.js +0 -2
- package/features/workflowState/ListRequestedWorkflowStates/ListRequestedWorkflowStatesUseCase.js +41 -38
- package/features/workflowState/ListRequestedWorkflowStates/ListRequestedWorkflowStatesUseCase.js.map +1 -1
- package/features/workflowState/ListRequestedWorkflowStates/abstractions.js +2 -6
- package/features/workflowState/ListRequestedWorkflowStates/abstractions.js.map +1 -1
- package/features/workflowState/ListRequestedWorkflowStates/feature.js +6 -5
- package/features/workflowState/ListRequestedWorkflowStates/feature.js.map +1 -1
- package/features/workflowState/ListRequestedWorkflowStates/index.js +0 -2
- package/features/workflowState/ListWorkflowStates/ListWorkflowStatesRepository.js +35 -32
- package/features/workflowState/ListWorkflowStates/ListWorkflowStatesRepository.js.map +1 -1
- package/features/workflowState/ListWorkflowStates/ListWorkflowStatesUseCase.js +26 -26
- package/features/workflowState/ListWorkflowStates/ListWorkflowStatesUseCase.js.map +1 -1
- package/features/workflowState/ListWorkflowStates/abstractions.js +3 -12
- package/features/workflowState/ListWorkflowStates/abstractions.js.map +1 -1
- package/features/workflowState/ListWorkflowStates/feature.js +7 -6
- package/features/workflowState/ListWorkflowStates/feature.js.map +1 -1
- package/features/workflowState/ListWorkflowStates/index.js +1 -3
- package/features/workflowState/RejectWorkflowStateStep/RejectWorkflowStateStepUseCase.js +26 -27
- package/features/workflowState/RejectWorkflowStateStep/RejectWorkflowStateStepUseCase.js.map +1 -1
- package/features/workflowState/RejectWorkflowStateStep/abstractions.js +2 -1
- package/features/workflowState/RejectWorkflowStateStep/abstractions.js.map +1 -1
- package/features/workflowState/RejectWorkflowStateStep/events.js +9 -6
- package/features/workflowState/RejectWorkflowStateStep/events.js.map +1 -1
- package/features/workflowState/RejectWorkflowStateStep/feature.js +6 -5
- package/features/workflowState/RejectWorkflowStateStep/feature.js.map +1 -1
- package/features/workflowState/RejectWorkflowStateStep/index.js +0 -2
- package/features/workflowState/StartWorkflowStateStep/StartWorkflowStateStepUseCase.js +26 -27
- package/features/workflowState/StartWorkflowStateStep/StartWorkflowStateStepUseCase.js.map +1 -1
- package/features/workflowState/StartWorkflowStateStep/abstractions.js +2 -1
- package/features/workflowState/StartWorkflowStateStep/abstractions.js.map +1 -1
- package/features/workflowState/StartWorkflowStateStep/events.js +9 -6
- package/features/workflowState/StartWorkflowStateStep/events.js.map +1 -1
- package/features/workflowState/StartWorkflowStateStep/feature.js +6 -5
- package/features/workflowState/StartWorkflowStateStep/feature.js.map +1 -1
- package/features/workflowState/StartWorkflowStateStep/index.js +0 -2
- package/features/workflowState/TakeOverWorkflowStateStep/TakeOverWorkflowStateStepUseCase.js +26 -27
- package/features/workflowState/TakeOverWorkflowStateStep/TakeOverWorkflowStateStepUseCase.js.map +1 -1
- package/features/workflowState/TakeOverWorkflowStateStep/abstractions.js +2 -1
- package/features/workflowState/TakeOverWorkflowStateStep/abstractions.js.map +1 -1
- package/features/workflowState/TakeOverWorkflowStateStep/events.js +9 -6
- package/features/workflowState/TakeOverWorkflowStateStep/events.js.map +1 -1
- package/features/workflowState/TakeOverWorkflowStateStep/feature.js +6 -5
- package/features/workflowState/TakeOverWorkflowStateStep/feature.js.map +1 -1
- package/features/workflowState/TakeOverWorkflowStateStep/index.js +0 -2
- package/features/workflowState/UpdateWorkflowState/UpdateWorkflowStateRepository.js +39 -37
- package/features/workflowState/UpdateWorkflowState/UpdateWorkflowStateRepository.js.map +1 -1
- package/features/workflowState/UpdateWorkflowState/UpdateWorkflowStateUseCase.js +43 -41
- package/features/workflowState/UpdateWorkflowState/UpdateWorkflowStateUseCase.js.map +1 -1
- package/features/workflowState/UpdateWorkflowState/abstractions.js +3 -12
- package/features/workflowState/UpdateWorkflowState/abstractions.js.map +1 -1
- package/features/workflowState/UpdateWorkflowState/events.js +9 -6
- package/features/workflowState/UpdateWorkflowState/events.js.map +1 -1
- package/features/workflowState/UpdateWorkflowState/feature.js +7 -6
- package/features/workflowState/UpdateWorkflowState/feature.js.map +1 -1
- package/features/workflowState/UpdateWorkflowState/index.js +1 -3
- package/graphql/notifications.js +21 -24
- package/graphql/notifications.js.map +1 -1
- package/graphql/validation/approveWorkflowState.js +4 -3
- package/graphql/validation/approveWorkflowState.js.map +1 -1
- package/graphql/validation/cancelWorkflowState.js +3 -2
- package/graphql/validation/cancelWorkflowState.js.map +1 -1
- package/graphql/validation/createWorkflowState.js +5 -4
- package/graphql/validation/createWorkflowState.js.map +1 -1
- package/graphql/validation/deleteWorkflow.js +4 -3
- package/graphql/validation/deleteWorkflow.js.map +1 -1
- package/graphql/validation/getTargetWorkflowState.js +4 -3
- package/graphql/validation/getTargetWorkflowState.js.map +1 -1
- package/graphql/validation/getWorkflow.js +4 -3
- package/graphql/validation/getWorkflow.js.map +1 -1
- package/graphql/validation/getWorkflowState.js +3 -2
- package/graphql/validation/getWorkflowState.js.map +1 -1
- package/graphql/validation/listWorkflowStates.d.ts +4 -4
- package/graphql/validation/listWorkflowStates.js +30 -36
- package/graphql/validation/listWorkflowStates.js.map +1 -1
- package/graphql/validation/listWorkflows.js +15 -18
- package/graphql/validation/listWorkflows.js.map +1 -1
- package/graphql/validation/rejectWorkflowState.js +4 -3
- package/graphql/validation/rejectWorkflowState.js.map +1 -1
- package/graphql/validation/startWorkflowState.js +3 -2
- package/graphql/validation/startWorkflowState.js.map +1 -1
- package/graphql/validation/step.js +12 -17
- package/graphql/validation/step.js.map +1 -1
- package/graphql/validation/storeWorkflow.js +5 -4
- package/graphql/validation/storeWorkflow.js.map +1 -1
- package/graphql/validation/takeOverWorkflowStateStep.js +3 -2
- package/graphql/validation/takeOverWorkflowStateStep.js.map +1 -1
- package/graphql/validation/workflow.js +4 -5
- package/graphql/validation/workflow.js.map +1 -1
- package/graphql/workflowState.js +132 -202
- package/graphql/workflowState.js.map +1 -1
- package/graphql/workflows.js +54 -79
- package/graphql/workflows.js.map +1 -1
- package/index.js +53 -67
- package/index.js.map +1 -1
- package/package.json +16 -16
- package/types.js +0 -3
- package/features/internal/GetUserTeams/index.js.map +0 -1
- package/features/notifications/ListNotificationTypes/index.js.map +0 -1
- package/features/notifications/NotificationTransport/index.js.map +0 -1
- package/features/shared/abstractions.js.map +0 -1
- package/features/workflow/CreateWorkflow/index.js.map +0 -1
- package/features/workflow/DeleteWorkflow/index.js.map +0 -1
- package/features/workflow/GetWorkflow/index.js.map +0 -1
- package/features/workflow/ListWorkflows/index.js.map +0 -1
- package/features/workflow/StoreWorkflow/index.js.map +0 -1
- package/features/workflow/UpdateWorkflow/index.js.map +0 -1
- package/features/workflowState/ApproveWorkflowStateStep/index.js.map +0 -1
- package/features/workflowState/CancelWorkflowState/index.js.map +0 -1
- package/features/workflowState/CreateWorkflowState/index.js.map +0 -1
- package/features/workflowState/DeleteTargetWorkflowState/index.js.map +0 -1
- package/features/workflowState/DeleteWorkflowState/index.js.map +0 -1
- package/features/workflowState/GetTargetWorkflowState/index.js.map +0 -1
- package/features/workflowState/GetWorkflowState/index.js.map +0 -1
- package/features/workflowState/ListOwnWorkflowStates/index.js.map +0 -1
- package/features/workflowState/ListRequestedWorkflowStates/index.js.map +0 -1
- package/features/workflowState/ListWorkflowStates/index.js.map +0 -1
- package/features/workflowState/RejectWorkflowStateStep/index.js.map +0 -1
- package/features/workflowState/StartWorkflowStateStep/index.js.map +0 -1
- package/features/workflowState/TakeOverWorkflowStateStep/index.js.map +0 -1
- package/features/workflowState/UpdateWorkflowState/index.js.map +0 -1
- package/types.js.map +0 -1
|
@@ -1,47 +1,38 @@
|
|
|
1
1
|
import { MailerService } from "@webiny/api-mailer";
|
|
2
2
|
import { NotificationTransport } from "./abstractions.js";
|
|
3
3
|
class MailNotificationTransportImpl {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
9
|
-
async send(params) {
|
|
10
|
-
const {
|
|
11
|
-
users,
|
|
12
|
-
message
|
|
13
|
-
} = params;
|
|
14
|
-
const bcc = users.map(user => {
|
|
15
|
-
if (!user.displayName) {
|
|
16
|
-
return user.email;
|
|
17
|
-
}
|
|
18
|
-
return `"${user.displayName}" <${user.email}>`;
|
|
19
|
-
})
|
|
20
|
-
/**
|
|
21
|
-
* Just in case...
|
|
22
|
-
*/.filter(user => !!user);
|
|
23
|
-
if (bcc.length === 0) {
|
|
24
|
-
return;
|
|
4
|
+
constructor(mailer){
|
|
5
|
+
this.id = "e-mail";
|
|
6
|
+
this.title = "E-Mail";
|
|
7
|
+
this.mailer = mailer;
|
|
25
8
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
9
|
+
async send(params) {
|
|
10
|
+
const { users, message } = params;
|
|
11
|
+
const bcc = users.map((user)=>{
|
|
12
|
+
if (!user.displayName) return user.email;
|
|
13
|
+
return `"${user.displayName}" <${user.email}>`;
|
|
14
|
+
}).filter((user)=>!!user);
|
|
15
|
+
if (0 === bcc.length) return;
|
|
16
|
+
const result = await this.mailer.sendMail({
|
|
17
|
+
bcc,
|
|
18
|
+
subject: message.title,
|
|
19
|
+
text: message.body,
|
|
20
|
+
html: `<p>${message.body.replace(/\n/g, "<br/>")}</p>`
|
|
21
|
+
});
|
|
22
|
+
if (result.isOk()) return;
|
|
23
|
+
console.error({
|
|
24
|
+
message: "Failed to send e-mail notification.",
|
|
25
|
+
error: result.error,
|
|
26
|
+
users: users.map((u)=>u.email)
|
|
27
|
+
});
|
|
34
28
|
}
|
|
35
|
-
console.error({
|
|
36
|
-
message: "Failed to send e-mail notification.",
|
|
37
|
-
error: result.error,
|
|
38
|
-
users: users.map(u => u.email)
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
29
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
30
|
+
const MailNotificationTransport = NotificationTransport.createImplementation({
|
|
31
|
+
implementation: MailNotificationTransportImpl,
|
|
32
|
+
dependencies: [
|
|
33
|
+
MailerService
|
|
34
|
+
]
|
|
45
35
|
});
|
|
36
|
+
export { MailNotificationTransport };
|
|
46
37
|
|
|
47
38
|
//# sourceMappingURL=MailNotificationTransport.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/notifications/NotificationTransport/MailNotificationTransport.js","sources":["../../../../src/features/notifications/NotificationTransport/MailNotificationTransport.ts"],"sourcesContent":["import { MailerService } from \"@webiny/api-mailer\";\nimport { NotificationTransport } from \"./abstractions.js\";\n\nclass MailNotificationTransportImpl implements NotificationTransport.Interface {\n public readonly id = \"e-mail\";\n public readonly title = \"E-Mail\";\n\n private readonly mailer: MailerService.Interface;\n\n public constructor(mailer: MailerService.Interface) {\n this.mailer = mailer;\n }\n\n public async send(params: NotificationTransport.SendParams): Promise<void> {\n const { users, message } = params;\n\n const bcc = users\n .map(user => {\n if (!user.displayName) {\n return user.email;\n }\n return `\"${user.displayName}\" <${user.email}>`;\n })\n /**\n * Just in case...\n */\n .filter(user => !!user);\n\n if (bcc.length === 0) {\n return;\n }\n\n const result = await this.mailer.sendMail({\n bcc,\n subject: message.title,\n text: message.body,\n html: `<p>${message.body.replace(/\\n/g, \"<br/>\")}</p>`\n });\n if (result.isOk()) {\n return;\n }\n console.error({\n message: \"Failed to send e-mail notification.\",\n error: result.error,\n users: users.map(u => u.email)\n });\n }\n}\n\nexport const MailNotificationTransport = NotificationTransport.createImplementation({\n implementation: MailNotificationTransportImpl,\n dependencies: [MailerService]\n});\n"],"names":["MailNotificationTransportImpl","mailer","params","users","message","bcc","user","result","console","u","MailNotificationTransport","NotificationTransport","MailerService"],"mappings":";;AAGA,MAAMA;IAMF,YAAmBC,MAA+B,CAAE;aALpC,EAAE,GAAG;aACL,KAAK,GAAG;QAKpB,IAAI,CAAC,MAAM,GAAGA;IAClB;IAEA,MAAa,KAAKC,MAAwC,EAAiB;QACvE,MAAM,EAAEC,KAAK,EAAEC,OAAO,EAAE,GAAGF;QAE3B,MAAMG,MAAMF,MACP,GAAG,CAACG,CAAAA;YACD,IAAI,CAACA,KAAK,WAAW,EACjB,OAAOA,KAAK,KAAK;YAErB,OAAO,CAAC,CAAC,EAAEA,KAAK,WAAW,CAAC,GAAG,EAAEA,KAAK,KAAK,CAAC,CAAC,CAAC;QAClD,GAIC,MAAM,CAACA,CAAAA,OAAQ,CAAC,CAACA;QAEtB,IAAID,AAAe,MAAfA,IAAI,MAAM,EACV;QAGJ,MAAME,SAAS,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;YACtCF;YACA,SAASD,QAAQ,KAAK;YACtB,MAAMA,QAAQ,IAAI;YAClB,MAAM,CAAC,GAAG,EAAEA,QAAQ,IAAI,CAAC,OAAO,CAAC,OAAO,SAAS,IAAI,CAAC;QAC1D;QACA,IAAIG,OAAO,IAAI,IACX;QAEJC,QAAQ,KAAK,CAAC;YACV,SAAS;YACT,OAAOD,OAAO,KAAK;YACnB,OAAOJ,MAAM,GAAG,CAACM,CAAAA,IAAKA,EAAE,KAAK;QACjC;IACJ;AACJ;AAEO,MAAMC,4BAA4BC,sBAAsB,oBAAoB,CAAC;IAChF,gBAAgBX;IAChB,cAAc;QAACY;KAAc;AACjC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createAbstraction } from "@webiny/feature/api";
|
|
2
|
-
|
|
2
|
+
const NotificationTransport = createAbstraction("WorkflowNotificationTransport");
|
|
3
|
+
export { NotificationTransport };
|
|
3
4
|
|
|
4
5
|
//# sourceMappingURL=abstractions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/notifications/NotificationTransport/abstractions.js","sources":["../../../../src/features/notifications/NotificationTransport/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type {\n INotificationType,\n INotificationTypeMessage\n} from \"~/domain/notifications/abstractions.js\";\nimport type { NonEmptyArray } from \"@webiny/api/types.js\";\n\nexport interface INotificationTransportUser {\n id: string;\n email: string;\n displayName: string;\n}\n\nexport interface INotificationTransportSendParams {\n users: NonEmptyArray<INotificationTransportUser>;\n message: INotificationTypeMessage;\n}\n\nexport interface INotificationTransport {\n id: INotificationType[\"id\"];\n title: INotificationType[\"title\"];\n send(params: INotificationTransportSendParams): Promise<void>;\n}\n\nexport const NotificationTransport = createAbstraction<INotificationTransport>(\n \"WorkflowNotificationTransport\"\n);\n\nexport namespace NotificationTransport {\n export type Interface = INotificationTransport;\n export type SendParams = INotificationTransportSendParams;\n}\n"],"names":["NotificationTransport","createAbstraction"],"mappings":";AAwBO,MAAMA,wBAAwBC,kBACjC"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { createFeature } from "@webiny/feature/api";
|
|
2
2
|
import { MailNotificationTransport } from "./MailNotificationTransport.js";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
const NotificationTransportFeature = createFeature({
|
|
4
|
+
name: "WorkflowNotifications/NotificationTransport",
|
|
5
|
+
register (container) {
|
|
6
|
+
container.register(MailNotificationTransport);
|
|
7
|
+
}
|
|
8
8
|
});
|
|
9
|
+
export { NotificationTransportFeature };
|
|
9
10
|
|
|
10
11
|
//# sourceMappingURL=feature.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/notifications/NotificationTransport/feature.js","sources":["../../../../src/features/notifications/NotificationTransport/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { MailNotificationTransport } from \"./MailNotificationTransport.js\";\n\nexport const NotificationTransportFeature = createFeature({\n name: \"WorkflowNotifications/NotificationTransport\",\n register(container) {\n container.register(MailNotificationTransport);\n }\n});\n"],"names":["NotificationTransportFeature","createFeature","container","MailNotificationTransport"],"mappings":";;AAGO,MAAMA,+BAA+BC,cAAc;IACtD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;IACvB;AACJ"}
|
|
@@ -3,43 +3,44 @@ import { parseIdentifier } from "@webiny/utils/parseIdentifier.js";
|
|
|
3
3
|
import { CreateEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/CreateEntry/index.js";
|
|
4
4
|
import { WorkflowMapper, WorkflowModel } from "../../../domain/workflow/abstractions.js";
|
|
5
5
|
import { WorkflowPersistenceError } from "../../../domain/workflow/errors.js";
|
|
6
|
-
import { CreateWorkflowRepository
|
|
6
|
+
import { CreateWorkflowRepository } from "./abstractions.js";
|
|
7
7
|
class CreateWorkflowRepositoryImpl {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
});
|
|
35
|
-
} catch (error) {
|
|
36
|
-
return Result.fail(new WorkflowPersistenceError(error));
|
|
8
|
+
constructor(createEntry, model, mapper){
|
|
9
|
+
this.createEntry = createEntry;
|
|
10
|
+
this.model = model;
|
|
11
|
+
this.mapper = mapper;
|
|
12
|
+
}
|
|
13
|
+
async execute(input) {
|
|
14
|
+
const { id } = parseIdentifier(input.id);
|
|
15
|
+
const values = this.mapper.toCmsEntry({
|
|
16
|
+
id,
|
|
17
|
+
app: input.app,
|
|
18
|
+
name: input.name,
|
|
19
|
+
steps: input.steps
|
|
20
|
+
});
|
|
21
|
+
try {
|
|
22
|
+
const createResult = await this.createEntry.execute(this.model, {
|
|
23
|
+
id,
|
|
24
|
+
values
|
|
25
|
+
});
|
|
26
|
+
if (createResult.isFail()) return Result.fail(new WorkflowPersistenceError(createResult.error));
|
|
27
|
+
return Result.ok({
|
|
28
|
+
...values,
|
|
29
|
+
id
|
|
30
|
+
});
|
|
31
|
+
} catch (error) {
|
|
32
|
+
return Result.fail(new WorkflowPersistenceError(error));
|
|
33
|
+
}
|
|
37
34
|
}
|
|
38
|
-
}
|
|
39
35
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
36
|
+
const CreateWorkflowRepository_CreateWorkflowRepository = CreateWorkflowRepository.createImplementation({
|
|
37
|
+
implementation: CreateWorkflowRepositoryImpl,
|
|
38
|
+
dependencies: [
|
|
39
|
+
CreateEntryUseCase,
|
|
40
|
+
WorkflowModel,
|
|
41
|
+
WorkflowMapper
|
|
42
|
+
]
|
|
43
43
|
});
|
|
44
|
+
export { CreateWorkflowRepository_CreateWorkflowRepository as CreateWorkflowRepository };
|
|
44
45
|
|
|
45
46
|
//# sourceMappingURL=CreateWorkflowRepository.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/workflow/CreateWorkflow/CreateWorkflowRepository.js","sources":["../../../../src/features/workflow/CreateWorkflow/CreateWorkflowRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { parseIdentifier } from \"@webiny/utils/parseIdentifier.js\";\nimport { CreateEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/CreateEntry/index.js\";\nimport { type IWorkflow, WorkflowMapper, WorkflowModel } from \"~/domain/workflow/abstractions.js\";\nimport { WorkflowPersistenceError } from \"~/domain/workflow/errors.js\";\nimport { CreateWorkflowRepository as Repository } from \"./abstractions.js\";\n\nclass CreateWorkflowRepositoryImpl implements Repository.Interface {\n constructor(\n private createEntry: CreateEntryUseCase.Interface,\n private model: WorkflowModel.Interface,\n private mapper: WorkflowMapper.Interface\n ) {}\n\n async execute(input: Repository.Input): Repository.Return {\n const { id } = parseIdentifier(input.id);\n\n const values = this.mapper.toCmsEntry({\n id,\n app: input.app,\n name: input.name,\n steps: input.steps\n });\n try {\n const createResult = await this.createEntry.execute<IWorkflow>(this.model, {\n id,\n values\n });\n\n if (createResult.isFail()) {\n return Result.fail(new WorkflowPersistenceError(createResult.error));\n }\n\n return Result.ok({ ...values, id });\n } catch (error) {\n return Result.fail(new WorkflowPersistenceError(error));\n }\n }\n}\n\nexport const CreateWorkflowRepository = Repository.createImplementation({\n implementation: CreateWorkflowRepositoryImpl,\n dependencies: [CreateEntryUseCase, WorkflowModel, WorkflowMapper]\n});\n"],"names":["CreateWorkflowRepositoryImpl","createEntry","model","mapper","input","id","parseIdentifier","values","createResult","Result","WorkflowPersistenceError","error","CreateWorkflowRepository","Repository","CreateEntryUseCase","WorkflowModel","WorkflowMapper"],"mappings":";;;;;;AAOA,MAAMA;IACF,YACYC,WAAyC,EACzCC,KAA8B,EAC9BC,MAAgC,CAC1C;aAHUF,WAAW,GAAXA;aACAC,KAAK,GAALA;aACAC,MAAM,GAANA;IACT;IAEH,MAAM,QAAQC,KAAuB,EAAqB;QACtD,MAAM,EAAEC,EAAE,EAAE,GAAGC,gBAAgBF,MAAM,EAAE;QAEvC,MAAMG,SAAS,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;YAClCF;YACA,KAAKD,MAAM,GAAG;YACd,MAAMA,MAAM,IAAI;YAChB,OAAOA,MAAM,KAAK;QACtB;QACA,IAAI;YACA,MAAMI,eAAe,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAY,IAAI,CAAC,KAAK,EAAE;gBACvEH;gBACAE;YACJ;YAEA,IAAIC,aAAa,MAAM,IACnB,OAAOC,OAAO,IAAI,CAAC,IAAIC,yBAAyBF,aAAa,KAAK;YAGtE,OAAOC,OAAO,EAAE,CAAC;gBAAE,GAAGF,MAAM;gBAAEF;YAAG;QACrC,EAAE,OAAOM,OAAO;YACZ,OAAOF,OAAO,IAAI,CAAC,IAAIC,yBAAyBC;QACpD;IACJ;AACJ;AAEO,MAAMC,oDAA2BC,yBAAAA,oBAA+B,CAAC;IACpE,gBAAgBb;IAChB,cAAc;QAACc;QAAoBC;QAAeC;KAAe;AACrE"}
|
|
@@ -1,56 +1,52 @@
|
|
|
1
1
|
import { Result } from "@webiny/feature/api";
|
|
2
2
|
import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
|
|
3
3
|
import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
4
|
-
import { CreateWorkflowRepository, CreateWorkflowUseCase
|
|
4
|
+
import { CreateWorkflowRepository, CreateWorkflowUseCase } from "./abstractions.js";
|
|
5
5
|
import { WorkflowAfterCreateEvent, WorkflowBeforeCreateEvent } from "./events.js";
|
|
6
6
|
import { WorkflowNotAuthorizedError } from "../../../domain/workflow/errors.js";
|
|
7
7
|
import { WORKFLOWS_PERMISSION } from "../../../constants.js";
|
|
8
8
|
class CreateWorkflowUseCaseImpl {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
}
|
|
14
|
-
async execute(input) {
|
|
15
|
-
const hasAccess = await this.ensureManageAccess();
|
|
16
|
-
if (hasAccess.isFail()) {
|
|
17
|
-
return Result.fail(hasAccess.error);
|
|
9
|
+
constructor(identityContext, eventPublisher, repository){
|
|
10
|
+
this.identityContext = identityContext;
|
|
11
|
+
this.eventPublisher = eventPublisher;
|
|
12
|
+
this.repository = repository;
|
|
18
13
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
14
|
+
async execute(input) {
|
|
15
|
+
const hasAccess = await this.ensureManageAccess();
|
|
16
|
+
if (hasAccess.isFail()) return Result.fail(hasAccess.error);
|
|
17
|
+
const workflow = {
|
|
18
|
+
id: input.id,
|
|
19
|
+
app: input.app,
|
|
20
|
+
name: input.name,
|
|
21
|
+
steps: input.steps
|
|
22
|
+
};
|
|
23
|
+
await this.eventPublisher.publish(new WorkflowBeforeCreateEvent({
|
|
24
|
+
workflow,
|
|
25
|
+
input
|
|
26
|
+
}));
|
|
27
|
+
const result = await this.repository.execute(input);
|
|
28
|
+
if (result.isFail()) return result;
|
|
29
|
+
await this.eventPublisher.publish(new WorkflowAfterCreateEvent({
|
|
30
|
+
workflow: result.value,
|
|
31
|
+
input
|
|
32
|
+
}));
|
|
33
|
+
return Result.ok(result.value);
|
|
32
34
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
async ensureManageAccess() {
|
|
40
|
-
const permissions = await this.identityContext.getPermissions(WORKFLOWS_PERMISSION);
|
|
41
|
-
for (const permission of permissions) {
|
|
42
|
-
if (permission.name === "*") {
|
|
43
|
-
return Result.ok();
|
|
44
|
-
} else if (permission.editor) {
|
|
45
|
-
return Result.ok();
|
|
46
|
-
}
|
|
35
|
+
async ensureManageAccess() {
|
|
36
|
+
const permissions = await this.identityContext.getPermissions(WORKFLOWS_PERMISSION);
|
|
37
|
+
for (const permission of permissions)if ("*" === permission.name) return Result.ok();
|
|
38
|
+
else if (permission.editor) return Result.ok();
|
|
39
|
+
return Result.fail(new WorkflowNotAuthorizedError("You cannot manage workflows."));
|
|
47
40
|
}
|
|
48
|
-
return Result.fail(new WorkflowNotAuthorizedError("You cannot manage workflows."));
|
|
49
|
-
}
|
|
50
41
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
42
|
+
const CreateWorkflowUseCase_CreateWorkflowUseCase = CreateWorkflowUseCase.createImplementation({
|
|
43
|
+
implementation: CreateWorkflowUseCaseImpl,
|
|
44
|
+
dependencies: [
|
|
45
|
+
IdentityContext,
|
|
46
|
+
EventPublisher,
|
|
47
|
+
CreateWorkflowRepository
|
|
48
|
+
]
|
|
54
49
|
});
|
|
50
|
+
export { CreateWorkflowUseCase_CreateWorkflowUseCase as CreateWorkflowUseCase };
|
|
55
51
|
|
|
56
52
|
//# sourceMappingURL=CreateWorkflowUseCase.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/workflow/CreateWorkflow/CreateWorkflowUseCase.js","sources":["../../../../src/features/workflow/CreateWorkflow/CreateWorkflowUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { EventPublisher } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { CreateWorkflowRepository, CreateWorkflowUseCase as UseCase } from \"./abstractions.js\";\nimport { WorkflowAfterCreateEvent, WorkflowBeforeCreateEvent } from \"./events.js\";\nimport { WorkflowNotAuthorizedError } from \"~/domain/workflow/errors.js\";\nimport { WORKFLOWS_PERMISSION } from \"~/constants.js\";\nimport type { IWorkflowsSecurityPermission } from \"~/types.js\";\n\nclass CreateWorkflowUseCaseImpl implements UseCase.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private eventPublisher: EventPublisher.Interface,\n private repository: CreateWorkflowRepository.Interface\n ) {}\n\n async execute(input: UseCase.Input): UseCase.Return {\n const hasAccess = await this.ensureManageAccess();\n if (hasAccess.isFail()) {\n return Result.fail(hasAccess.error);\n }\n\n const workflow = {\n id: input.id,\n app: input.app,\n name: input.name,\n steps: input.steps\n };\n\n await this.eventPublisher.publish(\n new WorkflowBeforeCreateEvent({\n workflow,\n input\n })\n );\n\n const result = await this.repository.execute(input);\n if (result.isFail()) {\n return result;\n }\n\n await this.eventPublisher.publish(\n new WorkflowAfterCreateEvent({\n workflow: result.value,\n input\n })\n );\n\n return Result.ok(result.value);\n }\n\n private async ensureManageAccess(): Promise<Result<void, WorkflowNotAuthorizedError>> {\n const permissions =\n await this.identityContext.getPermissions<IWorkflowsSecurityPermission>(\n WORKFLOWS_PERMISSION\n );\n\n for (const permission of permissions) {\n if (permission.name === \"*\") {\n return Result.ok();\n } else if (permission.editor) {\n return Result.ok();\n }\n }\n\n return Result.fail(new WorkflowNotAuthorizedError(\"You cannot manage workflows.\"));\n }\n}\n\nexport const CreateWorkflowUseCase = UseCase.createImplementation({\n implementation: CreateWorkflowUseCaseImpl,\n dependencies: [IdentityContext, EventPublisher, CreateWorkflowRepository]\n});\n"],"names":["CreateWorkflowUseCaseImpl","identityContext","eventPublisher","repository","input","hasAccess","Result","workflow","WorkflowBeforeCreateEvent","result","WorkflowAfterCreateEvent","permissions","WORKFLOWS_PERMISSION","permission","WorkflowNotAuthorizedError","CreateWorkflowUseCase","UseCase","IdentityContext","EventPublisher","CreateWorkflowRepository"],"mappings":";;;;;;;AASA,MAAMA;IACF,YACYC,eAA0C,EAC1CC,cAAwC,EACxCC,UAA8C,CACxD;aAHUF,eAAe,GAAfA;aACAC,cAAc,GAAdA;aACAC,UAAU,GAAVA;IACT;IAEH,MAAM,QAAQC,KAAoB,EAAkB;QAChD,MAAMC,YAAY,MAAM,IAAI,CAAC,kBAAkB;QAC/C,IAAIA,UAAU,MAAM,IAChB,OAAOC,OAAO,IAAI,CAACD,UAAU,KAAK;QAGtC,MAAME,WAAW;YACb,IAAIH,MAAM,EAAE;YACZ,KAAKA,MAAM,GAAG;YACd,MAAMA,MAAM,IAAI;YAChB,OAAOA,MAAM,KAAK;QACtB;QAEA,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC7B,IAAII,0BAA0B;YAC1BD;YACAH;QACJ;QAGJ,MAAMK,SAAS,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAACL;QAC7C,IAAIK,OAAO,MAAM,IACb,OAAOA;QAGX,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC7B,IAAIC,yBAAyB;YACzB,UAAUD,OAAO,KAAK;YACtBL;QACJ;QAGJ,OAAOE,OAAO,EAAE,CAACG,OAAO,KAAK;IACjC;IAEA,MAAc,qBAAwE;QAClF,MAAME,cACF,MAAM,IAAI,CAAC,eAAe,CAAC,cAAc,CACrCC;QAGR,KAAK,MAAMC,cAAcF,YACrB,IAAIE,AAAoB,QAApBA,WAAW,IAAI,EACf,OAAOP,OAAO,EAAE;aACb,IAAIO,WAAW,MAAM,EACxB,OAAOP,OAAO,EAAE;QAIxB,OAAOA,OAAO,IAAI,CAAC,IAAIQ,2BAA2B;IACtD;AACJ;AAEO,MAAMC,8CAAwBC,sBAAAA,oBAA4B,CAAC;IAC9D,gBAAgBhB;IAChB,cAAc;QAACiB;QAAiBC;QAAgBC;KAAyB;AAC7E"}
|
|
@@ -1,19 +1,6 @@
|
|
|
1
1
|
import { createAbstraction } from "@webiny/feature/api";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
// Event payloads
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* CreateWorkflow use case interface
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
export const CreateWorkflowUseCase = createAbstraction("CreateWorkflowUseCase");
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* CreateWorkflow repository interface
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
export const CreateWorkflowRepository = createAbstraction("CreateWorkflowRepository");
|
|
2
|
+
const CreateWorkflowUseCase = createAbstraction("CreateWorkflowUseCase");
|
|
3
|
+
const CreateWorkflowRepository = createAbstraction("CreateWorkflowRepository");
|
|
4
|
+
export { CreateWorkflowRepository, CreateWorkflowUseCase };
|
|
18
5
|
|
|
19
6
|
//# sourceMappingURL=abstractions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/workflow/CreateWorkflow/abstractions.js","sources":["../../../../src/features/workflow/CreateWorkflow/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { Result } from \"@webiny/feature/api\";\nimport type { IWorkflow } from \"~/domain/workflow/abstractions.js\";\nimport type { NonEmptyArray } from \"@webiny/api/types.js\";\nimport {\n type WorkflowNotAuthorizedError,\n type WorkflowPersistenceError,\n type WorkflowValidationError\n} from \"~/domain/workflow/errors.js\";\nimport type { IWorkflowStepInput } from \"~/features/shared/abstractions.js\";\n\n// Input types\nexport interface ICreateWorkflowInput {\n app: string;\n id: string;\n name: string;\n steps: NonEmptyArray<IWorkflowStepInput>;\n}\n\n// Event payloads\nexport interface WorkflowBeforeCreatePayload {\n workflow: IWorkflow;\n input: ICreateWorkflowInput;\n}\n\nexport interface WorkflowAfterCreatePayload {\n workflow: IWorkflow;\n input: ICreateWorkflowInput;\n}\n\n/**\n * CreateWorkflow use case interface\n */\nexport interface ICreateWorkflowUseCase {\n execute(input: ICreateWorkflowInput): Promise<Result<IWorkflow, UseCaseError>>;\n}\n\nexport interface ICreateWorkflowUseCaseErrors {\n notAuthorized: WorkflowNotAuthorizedError;\n persistence: WorkflowPersistenceError;\n validation: WorkflowValidationError;\n}\n\ntype UseCaseError = ICreateWorkflowUseCaseErrors[keyof ICreateWorkflowUseCaseErrors];\n\nexport const CreateWorkflowUseCase =\n createAbstraction<ICreateWorkflowUseCase>(\"CreateWorkflowUseCase\");\n\nexport namespace CreateWorkflowUseCase {\n export type Interface = ICreateWorkflowUseCase;\n export type Input = ICreateWorkflowInput;\n export type Return = Promise<Result<IWorkflow, UseCaseError>>;\n export type Error = UseCaseError;\n}\n\n/**\n * CreateWorkflow repository interface\n */\nexport interface ICreateWorkflowRepository {\n execute(input: ICreateWorkflowInput): Promise<Result<IWorkflow, RepositoryError>>;\n}\n\nexport interface ICreateWorkflowRepositoryErrors {\n persistence: WorkflowPersistenceError;\n}\n\ntype RepositoryError = ICreateWorkflowRepositoryErrors[keyof ICreateWorkflowRepositoryErrors];\n\nexport const CreateWorkflowRepository = createAbstraction<ICreateWorkflowRepository>(\n \"CreateWorkflowRepository\"\n);\n\nexport namespace CreateWorkflowRepository {\n export type Interface = ICreateWorkflowRepository;\n export type Input = ICreateWorkflowInput;\n export type Return = Promise<Result<IWorkflow, RepositoryError>>;\n export type Error = RepositoryError;\n}\n"],"names":["CreateWorkflowUseCase","createAbstraction","CreateWorkflowRepository"],"mappings":";AA6CO,MAAMA,wBACTC,kBAA0C;AAsBvC,MAAMC,2BAA2BD,kBACpC"}
|
|
@@ -1,20 +1,23 @@
|
|
|
1
1
|
import { createAbstraction } from "@webiny/feature/api";
|
|
2
2
|
import { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
class WorkflowBeforeCreateEvent extends DomainEvent {
|
|
4
|
+
getHandlerAbstraction() {
|
|
5
|
+
return WorkflowBeforeCreateHandler;
|
|
6
|
+
}
|
|
7
|
+
constructor(...args){
|
|
8
|
+
super(...args), this.eventType = "workflow.beforeCreate";
|
|
9
|
+
}
|
|
9
10
|
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
11
|
+
const WorkflowBeforeCreateHandler = createAbstraction("WorkflowBeforeCreateHandler");
|
|
12
|
+
class WorkflowAfterCreateEvent extends DomainEvent {
|
|
13
|
+
getHandlerAbstraction() {
|
|
14
|
+
return WorkflowAfterCreateHandler;
|
|
15
|
+
}
|
|
16
|
+
constructor(...args){
|
|
17
|
+
super(...args), this.eventType = "workflow.afterCreate";
|
|
18
|
+
}
|
|
17
19
|
}
|
|
18
|
-
|
|
20
|
+
const WorkflowAfterCreateHandler = createAbstraction("WorkflowAfterCreateHandler");
|
|
21
|
+
export { WorkflowAfterCreateEvent, WorkflowAfterCreateHandler, WorkflowBeforeCreateEvent, WorkflowBeforeCreateHandler };
|
|
19
22
|
|
|
20
23
|
//# sourceMappingURL=events.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/workflow/CreateWorkflow/events.js","sources":["../../../../src/features/workflow/CreateWorkflow/events.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { IEventHandler } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { WorkflowBeforeCreatePayload, WorkflowAfterCreatePayload } from \"./abstractions.js\";\n\n// Before create event\nexport class WorkflowBeforeCreateEvent extends DomainEvent<WorkflowBeforeCreatePayload> {\n eventType = \"workflow.beforeCreate\" as const;\n\n getHandlerAbstraction() {\n return WorkflowBeforeCreateHandler;\n }\n}\n\nexport const WorkflowBeforeCreateHandler = createAbstraction<\n IEventHandler<WorkflowBeforeCreateEvent>\n>(\"WorkflowBeforeCreateHandler\");\n\nexport namespace WorkflowBeforeCreateHandler {\n export type Interface = IEventHandler<WorkflowBeforeCreateEvent>;\n export type Event = WorkflowBeforeCreateEvent;\n}\n\n// After create event\nexport class WorkflowAfterCreateEvent extends DomainEvent<WorkflowAfterCreatePayload> {\n eventType = \"workflow.afterCreate\" as const;\n\n getHandlerAbstraction() {\n return WorkflowAfterCreateHandler;\n }\n}\n\nexport const WorkflowAfterCreateHandler = createAbstraction<\n IEventHandler<WorkflowAfterCreateEvent>\n>(\"WorkflowAfterCreateHandler\");\n\nexport namespace WorkflowAfterCreateHandler {\n export type Interface = IEventHandler<WorkflowAfterCreateEvent>;\n export type Event = WorkflowAfterCreateEvent;\n}\n"],"names":["WorkflowBeforeCreateEvent","DomainEvent","WorkflowBeforeCreateHandler","createAbstraction","WorkflowAfterCreateEvent","WorkflowAfterCreateHandler"],"mappings":";;AAMO,MAAMA,kCAAkCC;IAG3C,wBAAwB;QACpB,OAAOC;IACX;;QALG,qBACH,SAAS,GAAG;;AAKhB;AAEO,MAAMA,8BAA8BC,kBAEzC;AAQK,MAAMC,iCAAiCH;IAG1C,wBAAwB;QACpB,OAAOI;IACX;;QALG,qBACH,SAAS,GAAG;;AAKhB;AAEO,MAAMA,6BAA6BF,kBAExC"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { createFeature } from "@webiny/feature/api";
|
|
2
2
|
import { CreateWorkflowUseCase } from "./CreateWorkflowUseCase.js";
|
|
3
3
|
import { CreateWorkflowRepository } from "./CreateWorkflowRepository.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
4
|
+
const CreateWorkflowFeature = createFeature({
|
|
5
|
+
name: "Workflows/CreateWorkflow",
|
|
6
|
+
register (container) {
|
|
7
|
+
container.register(CreateWorkflowRepository).inSingletonScope();
|
|
8
|
+
container.register(CreateWorkflowUseCase);
|
|
9
|
+
}
|
|
10
10
|
});
|
|
11
|
+
export { CreateWorkflowFeature };
|
|
11
12
|
|
|
12
13
|
//# sourceMappingURL=feature.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/workflow/CreateWorkflow/feature.js","sources":["../../../../src/features/workflow/CreateWorkflow/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { CreateWorkflowUseCase } from \"./CreateWorkflowUseCase.js\";\nimport { CreateWorkflowRepository } from \"./CreateWorkflowRepository.js\";\n\nexport const CreateWorkflowFeature = createFeature({\n name: \"Workflows/CreateWorkflow\",\n register(container) {\n container.register(CreateWorkflowRepository).inSingletonScope();\n container.register(CreateWorkflowUseCase);\n }\n});\n"],"names":["CreateWorkflowFeature","createFeature","container","CreateWorkflowRepository","CreateWorkflowUseCase"],"mappings":";;;AAIO,MAAMA,wBAAwBC,cAAc;IAC/C,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC,0BAA0B,gBAAgB;QAC7DD,UAAU,QAAQ,CAACE;IACvB;AACJ"}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
1
|
export { CreateWorkflowFeature } from "./feature.js";
|
|
2
|
-
export {
|
|
3
|
-
export {
|
|
4
|
-
|
|
5
|
-
//# sourceMappingURL=index.js.map
|
|
2
|
+
export { CreateWorkflowRepository, CreateWorkflowUseCase } from "./abstractions.js";
|
|
3
|
+
export { WorkflowAfterCreateEvent, WorkflowAfterCreateHandler, WorkflowBeforeCreateEvent, WorkflowBeforeCreateHandler } from "./events.js";
|
|
@@ -3,31 +3,33 @@ import { createIdentifier } from "@webiny/utils";
|
|
|
3
3
|
import { DeleteEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/DeleteEntry/index.js";
|
|
4
4
|
import { WorkflowModel } from "../../../domain/workflow/abstractions.js";
|
|
5
5
|
import { WorkflowPersistenceError } from "../../../domain/workflow/errors.js";
|
|
6
|
-
import { DeleteWorkflowRepository
|
|
6
|
+
import { DeleteWorkflowRepository } from "./abstractions.js";
|
|
7
7
|
class DeleteWorkflowRepositoryImpl {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
return Result.fail(new WorkflowPersistenceError(error));
|
|
8
|
+
constructor(deleteEntry, model){
|
|
9
|
+
this.deleteEntry = deleteEntry;
|
|
10
|
+
this.model = model;
|
|
11
|
+
}
|
|
12
|
+
async execute(input) {
|
|
13
|
+
const workflowId = createIdentifier({
|
|
14
|
+
id: input.id,
|
|
15
|
+
version: 1
|
|
16
|
+
});
|
|
17
|
+
try {
|
|
18
|
+
const result = await this.deleteEntry.execute(this.model, workflowId);
|
|
19
|
+
if (result.isFail()) return Result.fail(new WorkflowPersistenceError(result.error));
|
|
20
|
+
return Result.ok();
|
|
21
|
+
} catch (error) {
|
|
22
|
+
return Result.fail(new WorkflowPersistenceError(error));
|
|
23
|
+
}
|
|
25
24
|
}
|
|
26
|
-
}
|
|
27
25
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
26
|
+
const DeleteWorkflowRepository_DeleteWorkflowRepository = DeleteWorkflowRepository.createImplementation({
|
|
27
|
+
implementation: DeleteWorkflowRepositoryImpl,
|
|
28
|
+
dependencies: [
|
|
29
|
+
DeleteEntryUseCase,
|
|
30
|
+
WorkflowModel
|
|
31
|
+
]
|
|
31
32
|
});
|
|
33
|
+
export { DeleteWorkflowRepository_DeleteWorkflowRepository as DeleteWorkflowRepository };
|
|
32
34
|
|
|
33
35
|
//# sourceMappingURL=DeleteWorkflowRepository.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/workflow/DeleteWorkflow/DeleteWorkflowRepository.js","sources":["../../../../src/features/workflow/DeleteWorkflow/DeleteWorkflowRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { createIdentifier } from \"@webiny/utils\";\nimport { DeleteEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/DeleteEntry/index.js\";\nimport { WorkflowModel } from \"~/domain/workflow/abstractions.js\";\nimport { WorkflowPersistenceError } from \"~/domain/workflow/errors.js\";\nimport { DeleteWorkflowRepository as Repository } from \"./abstractions.js\";\n\nclass DeleteWorkflowRepositoryImpl implements Repository.Interface {\n constructor(\n private deleteEntry: DeleteEntryUseCase.Interface,\n private model: WorkflowModel.Interface\n ) {}\n\n async execute(input: Repository.Params): Repository.Return {\n const workflowId = createIdentifier({\n id: input.id,\n version: 1\n });\n\n try {\n const result = await this.deleteEntry.execute(this.model, workflowId);\n\n if (result.isFail()) {\n return Result.fail(new WorkflowPersistenceError(result.error));\n }\n\n return Result.ok();\n } catch (error) {\n return Result.fail(new WorkflowPersistenceError(error as Error));\n }\n }\n}\n\nexport const DeleteWorkflowRepository = Repository.createImplementation({\n implementation: DeleteWorkflowRepositoryImpl,\n dependencies: [DeleteEntryUseCase, WorkflowModel]\n});\n"],"names":["DeleteWorkflowRepositoryImpl","deleteEntry","model","input","workflowId","createIdentifier","result","Result","WorkflowPersistenceError","error","DeleteWorkflowRepository","Repository","DeleteEntryUseCase","WorkflowModel"],"mappings":";;;;;;AAOA,MAAMA;IACF,YACYC,WAAyC,EACzCC,KAA8B,CACxC;aAFUD,WAAW,GAAXA;aACAC,KAAK,GAALA;IACT;IAEH,MAAM,QAAQC,KAAwB,EAAqB;QACvD,MAAMC,aAAaC,iBAAiB;YAChC,IAAIF,MAAM,EAAE;YACZ,SAAS;QACb;QAEA,IAAI;YACA,MAAMG,SAAS,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAEF;YAE1D,IAAIE,OAAO,MAAM,IACb,OAAOC,OAAO,IAAI,CAAC,IAAIC,yBAAyBF,OAAO,KAAK;YAGhE,OAAOC,OAAO,EAAE;QACpB,EAAE,OAAOE,OAAO;YACZ,OAAOF,OAAO,IAAI,CAAC,IAAIC,yBAAyBC;QACpD;IACJ;AACJ;AAEO,MAAMC,oDAA2BC,yBAAAA,oBAA+B,CAAC;IACpE,gBAAgBX;IAChB,cAAc;QAACY;QAAoBC;KAAc;AACrD"}
|