@webiny/api-workflows 0.0.0-unstable.e6f0dc8ca7 → 0.0.0-unstable.e9333b3f0b
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/WorkflowsFeature.d.ts +5 -0
- package/WorkflowsFeature.js +70 -0
- package/WorkflowsFeature.js.map +1 -0
- package/WorkflowsSchemaFactory.d.ts +9 -0
- package/WorkflowsSchemaFactory.js +23 -0
- package/WorkflowsSchemaFactory.js.map +1 -0
- 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.d.ts +13 -3
- 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 +28 -25
- package/domain/workflow/workflowModel.js.map +1 -1
- package/domain/workflowState/WorkflowState.d.ts +1 -0
- package/domain/workflowState/WorkflowState.js +219 -319
- package/domain/workflowState/WorkflowState.js.map +1 -1
- package/domain/workflowState/WorkflowStateMapper.js +38 -35
- package/domain/workflowState/WorkflowStateMapper.js.map +1 -1
- package/domain/workflowState/abstractions.d.ts +16 -3
- 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 +61 -51
- package/domain/workflowState/stateModel.js.map +1 -1
- package/features/WorkflowModelProviders.d.ts +34 -0
- package/features/WorkflowModelProviders.js +40 -0
- package/features/WorkflowModelProviders.js.map +1 -0
- 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.d.ts +3 -3
- package/features/workflow/CreateWorkflow/CreateWorkflowRepository.js +37 -35
- 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.d.ts +3 -3
- package/features/workflow/DeleteWorkflow/DeleteWorkflowRepository.js +26 -23
- 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.d.ts +3 -3
- package/features/workflow/GetWorkflow/GetWorkflowRepository.js +35 -35
- 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.d.ts +3 -3
- package/features/workflow/ListWorkflows/ListWorkflowsRepository.js +49 -53
- 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.d.ts +3 -3
- package/features/workflow/UpdateWorkflow/UpdateWorkflowRepository.js +40 -38
- 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.d.ts +3 -3
- package/features/workflowState/CreateWorkflowState/CreateWorkflowStateRepository.js +27 -23
- package/features/workflowState/CreateWorkflowState/CreateWorkflowStateRepository.js.map +1 -1
- package/features/workflowState/CreateWorkflowState/CreateWorkflowStateUseCase.d.ts +3 -1
- package/features/workflowState/CreateWorkflowState/CreateWorkflowStateUseCase.js +86 -90
- package/features/workflowState/CreateWorkflowState/CreateWorkflowStateUseCase.js.map +1 -1
- package/features/workflowState/CreateWorkflowState/DefaultWorkflowStateContextProvider.d.ts +9 -0
- package/features/workflowState/CreateWorkflowState/DefaultWorkflowStateContextProvider.js +13 -0
- package/features/workflowState/CreateWorkflowState/DefaultWorkflowStateContextProvider.js.map +1 -0
- package/features/workflowState/CreateWorkflowState/WorkflowStateContextProvider.d.ts +13 -0
- package/features/workflowState/CreateWorkflowState/WorkflowStateContextProvider.js +5 -0
- package/features/workflowState/CreateWorkflowState/WorkflowStateContextProvider.js.map +1 -0
- 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 +9 -6
- package/features/workflowState/CreateWorkflowState/feature.js.map +1 -1
- package/features/workflowState/CreateWorkflowState/index.d.ts +1 -0
- package/features/workflowState/CreateWorkflowState/index.js +2 -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.d.ts +3 -3
- package/features/workflowState/DeleteWorkflowState/DeleteWorkflowStateRepository.js +18 -13
- 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.d.ts +3 -3
- package/features/workflowState/GetTargetWorkflowState/GetTargetWorkflowStateRepository.js +40 -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.d.ts +3 -3
- package/features/workflowState/GetWorkflowState/GetWorkflowStateRepository.js +27 -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/DefaultWorkflowStateFilter.d.ts +9 -0
- package/features/workflowState/ListWorkflowStates/DefaultWorkflowStateFilter.js +13 -0
- package/features/workflowState/ListWorkflowStates/DefaultWorkflowStateFilter.js.map +1 -0
- package/features/workflowState/ListWorkflowStates/ListWorkflowStatesRepository.d.ts +3 -3
- package/features/workflowState/ListWorkflowStates/ListWorkflowStatesRepository.js +37 -33
- package/features/workflowState/ListWorkflowStates/ListWorkflowStatesRepository.js.map +1 -1
- package/features/workflowState/ListWorkflowStates/ListWorkflowStatesUseCase.d.ts +3 -1
- package/features/workflowState/ListWorkflowStates/ListWorkflowStatesUseCase.js +57 -26
- package/features/workflowState/ListWorkflowStates/ListWorkflowStatesUseCase.js.map +1 -1
- package/features/workflowState/ListWorkflowStates/WorkflowStateFilter.d.ts +8 -0
- package/features/workflowState/ListWorkflowStates/WorkflowStateFilter.js +5 -0
- package/features/workflowState/ListWorkflowStates/WorkflowStateFilter.js.map +1 -0
- package/features/workflowState/ListWorkflowStates/abstractions.js +3 -12
- package/features/workflowState/ListWorkflowStates/abstractions.js.map +1 -1
- package/features/workflowState/ListWorkflowStates/feature.js +9 -6
- package/features/workflowState/ListWorkflowStates/feature.js.map +1 -1
- package/features/workflowState/ListWorkflowStates/index.d.ts +1 -0
- package/features/workflowState/ListWorkflowStates/index.js +2 -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.d.ts +3 -3
- package/features/workflowState/UpdateWorkflowState/UpdateWorkflowStateRepository.js +40 -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.d.ts +2 -2
- package/graphql/notifications.js +44 -46
- 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 +1 -1
- package/graphql/validation/listWorkflowStates.js +30 -36
- package/graphql/validation/listWorkflowStates.js.map +1 -1
- package/graphql/validation/listWorkflows.d.ts +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.d.ts +2 -2
- package/graphql/workflowState.js +383 -381
- package/graphql/workflowState.js.map +1 -1
- package/graphql/workflows.d.ts +2 -2
- package/graphql/workflows.js +201 -204
- package/graphql/workflows.js.map +1 -1
- package/index.d.ts +1 -2
- package/index.js +1 -104
- package/package.json +20 -19
- 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/index.js.map +0 -1
- package/types.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"domain/workflowState/guards/canTakeOver.js","sources":["../../../../src/domain/workflowState/guards/canTakeOver.ts"],"sourcesContent":["import type { IEnrichedWorkflowStateRecordStep } from \"../abstractions.js\";\n\nexport const canTakeOver = (step: IEnrichedWorkflowStateRecordStep): boolean => {\n return step.canTakeOver;\n};\n"],"names":["canTakeOver","step"],"mappings":"AAEO,MAAMA,cAAc,CAACC,OACjBA,KAAK,WAAW"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { WorkflowStateRecordState } from "../abstractions.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
2
|
+
const isInReview = (state)=>state.state === WorkflowStateRecordState.inReview;
|
|
3
|
+
export { isInReview };
|
|
5
4
|
|
|
6
5
|
//# sourceMappingURL=isInReview.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"domain/workflowState/guards/isInReview.js","sources":["../../../../src/domain/workflowState/guards/isInReview.ts"],"sourcesContent":["import { type IWorkflowStateRecord, WorkflowStateRecordState } from \"../abstractions.js\";\n\nexport const isInReview = (state: IWorkflowStateRecord): boolean => {\n return state.state === WorkflowStateRecordState.inReview;\n};\n"],"names":["isInReview","state","WorkflowStateRecordState"],"mappings":";AAEO,MAAMA,aAAa,CAACC,QAChBA,MAAM,KAAK,KAAKC,yBAAyB,QAAQ"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { WorkflowStateRecordState } from "../abstractions.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
2
|
+
const isRejected = (state)=>state.state === WorkflowStateRecordState.rejected;
|
|
3
|
+
export { isRejected };
|
|
5
4
|
|
|
6
5
|
//# sourceMappingURL=isRejected.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"domain/workflowState/guards/isRejected.js","sources":["../../../../src/domain/workflowState/guards/isRejected.ts"],"sourcesContent":["import { type IWorkflowStateRecord, WorkflowStateRecordState } from \"../abstractions.js\";\n\nexport const isRejected = (state: IWorkflowStateRecord): boolean => {\n return state.state === WorkflowStateRecordState.rejected;\n};\n"],"names":["isRejected","state","WorkflowStateRecordState"],"mappings":";AAEO,MAAMA,aAAa,CAACC,QAChBA,MAAM,KAAK,KAAKC,yBAAyB,QAAQ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"domain/workflowState/guards/isStepOwner.js","sources":["../../../../src/domain/workflowState/guards/isStepOwner.ts"],"sourcesContent":["import type { IEnrichedWorkflowStateRecordStep } from \"../abstractions.js\";\n\nexport const isStepOwner = (step: IEnrichedWorkflowStateRecordStep): boolean => {\n return step.isOwner;\n};\n"],"names":["isStepOwner","step"],"mappings":"AAEO,MAAMA,cAAc,CAACC,OACjBA,KAAK,OAAO"}
|
|
@@ -1,58 +1,68 @@
|
|
|
1
1
|
import { ModelFactory } from "@webiny/api-headless-cms/features/modelBuilder/index.js";
|
|
2
2
|
import { WorkflowStateRecordState } from "./abstractions.js";
|
|
3
|
-
|
|
4
|
-
const states = [
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
3
|
+
const WORKFLOW_STATE_MODEL_ID = "wbyWorkflowState";
|
|
4
|
+
const states = [
|
|
5
|
+
{
|
|
6
|
+
label: "Pending",
|
|
7
|
+
value: WorkflowStateRecordState.pending
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
label: "In Review",
|
|
11
|
+
value: WorkflowStateRecordState.inReview
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
label: "Approved",
|
|
15
|
+
value: WorkflowStateRecordState.approved
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
label: "Rejected",
|
|
19
|
+
value: WorkflowStateRecordState.rejected
|
|
20
|
+
}
|
|
21
|
+
];
|
|
17
22
|
class WorkflowStateModelImpl {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
23
|
+
async execute(builder) {
|
|
24
|
+
return [
|
|
25
|
+
builder.private({
|
|
26
|
+
modelId: WORKFLOW_STATE_MODEL_ID,
|
|
27
|
+
name: "RecordWorkflow State",
|
|
28
|
+
lifecycleEvents: false
|
|
29
|
+
}).fields((fields)=>({
|
|
30
|
+
workflowId: fields.text().label("Workflow ID"),
|
|
31
|
+
app: fields.text().label("App").required("App is required."),
|
|
32
|
+
title: fields.text().label("Title").required("Title is required."),
|
|
33
|
+
targetRevisionId: fields.text().label("Target Revision ID"),
|
|
34
|
+
targetId: fields.text().label("Target ID"),
|
|
35
|
+
isActive: fields.boolean().label("Is Active"),
|
|
36
|
+
comment: fields.text().label("Comment"),
|
|
37
|
+
state: fields.text().label("State").predefinedValues(states),
|
|
38
|
+
targetContext: fields.json().label("Target Context"),
|
|
39
|
+
steps: fields.object().label("Steps").list().required("Steps are required.").listMinLength(1, "At least one step is required.").fields((stepFields)=>({
|
|
40
|
+
id: stepFields.text().label("ID").required("ID is required."),
|
|
41
|
+
title: stepFields.text().label("Title").required("Title is required."),
|
|
42
|
+
color: stepFields.text().label("Color").required("Color is required."),
|
|
43
|
+
description: stepFields.text().label("Description"),
|
|
44
|
+
teams: stepFields.object().label("Teams").list().required("At least one team is required.").listMinLength(1, "At least one team is required.").fields((teamFields)=>({
|
|
45
|
+
id: teamFields.text().label("ID").required("ID is required.")
|
|
46
|
+
})),
|
|
47
|
+
notifications: stepFields.object().label("Notifications").list().fields((notificationFields)=>({
|
|
48
|
+
id: notificationFields.text().label("ID").required("ID is required.")
|
|
49
|
+
})),
|
|
50
|
+
state: stepFields.text().label("State").predefinedValues(states),
|
|
51
|
+
savedBy: stepFields.object().label("User").fields((userFields)=>({
|
|
52
|
+
id: userFields.text().label("ID").required("ID is required."),
|
|
53
|
+
displayName: userFields.text().label("Display Name").required("Display name is required."),
|
|
54
|
+
type: userFields.text().label("Type").required("Type is required.")
|
|
55
|
+
})),
|
|
56
|
+
comment: stepFields.text().label("Comment")
|
|
57
|
+
}))
|
|
58
|
+
}))
|
|
59
|
+
];
|
|
60
|
+
}
|
|
52
61
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
62
|
+
const WorkflowStateModel = ModelFactory.createImplementation({
|
|
63
|
+
implementation: WorkflowStateModelImpl,
|
|
64
|
+
dependencies: []
|
|
56
65
|
});
|
|
66
|
+
export { WORKFLOW_STATE_MODEL_ID, WorkflowStateModel };
|
|
57
67
|
|
|
58
68
|
//# sourceMappingURL=stateModel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"domain/workflowState/stateModel.js","sources":["../../../src/domain/workflowState/stateModel.ts"],"sourcesContent":["import { ModelFactory } from \"@webiny/api-headless-cms/features/modelBuilder/index.js\";\nimport { WorkflowStateRecordState } from \"~/domain/workflowState/abstractions.js\";\n\nexport const WORKFLOW_STATE_MODEL_ID = \"wbyWorkflowState\";\n\nconst states = [\n {\n label: \"Pending\",\n value: WorkflowStateRecordState.pending\n },\n {\n label: \"In Review\",\n value: WorkflowStateRecordState.inReview\n },\n {\n label: \"Approved\",\n value: WorkflowStateRecordState.approved\n },\n {\n label: \"Rejected\",\n value: WorkflowStateRecordState.rejected\n }\n];\n\nclass WorkflowStateModelImpl implements ModelFactory.Interface {\n public async execute(builder: ModelFactory.Builder) {\n return [\n builder\n .private({\n modelId: WORKFLOW_STATE_MODEL_ID,\n name: \"RecordWorkflow State\",\n lifecycleEvents: false\n })\n .fields(fields => ({\n workflowId: fields.text().label(\"Workflow ID\"),\n app: fields.text().label(\"App\").required(\"App is required.\"),\n title: fields.text().label(\"Title\").required(\"Title is required.\"),\n targetRevisionId: fields.text().label(\"Target Revision ID\"),\n targetId: fields.text().label(\"Target ID\"),\n isActive: fields.boolean().label(\"Is Active\"),\n comment: fields.text().label(\"Comment\"),\n state: fields.text().label(\"State\").predefinedValues(states),\n targetContext: fields.json().label(\"Target Context\"),\n steps: fields\n .object()\n .label(\"Steps\")\n .list()\n .required(\"Steps are required.\")\n .listMinLength(1, \"At least one step is required.\")\n .fields(stepFields => ({\n id: stepFields.text().label(\"ID\").required(\"ID is required.\"),\n title: stepFields.text().label(\"Title\").required(\"Title is required.\"),\n color: stepFields.text().label(\"Color\").required(\"Color is required.\"),\n description: stepFields.text().label(\"Description\"),\n teams: stepFields\n .object()\n .label(\"Teams\")\n .list()\n .required(\"At least one team is required.\")\n .listMinLength(1, \"At least one team is required.\")\n .fields(teamFields => ({\n id: teamFields.text().label(\"ID\").required(\"ID is required.\")\n })),\n notifications: stepFields\n .object()\n .label(\"Notifications\")\n .list()\n .fields(notificationFields => ({\n id: notificationFields\n .text()\n .label(\"ID\")\n .required(\"ID is required.\")\n })),\n state: stepFields.text().label(\"State\").predefinedValues(states),\n savedBy: stepFields\n .object()\n .label(\"User\")\n .fields(userFields => ({\n id: userFields.text().label(\"ID\").required(\"ID is required.\"),\n displayName: userFields\n .text()\n .label(\"Display Name\")\n .required(\"Display name is required.\"),\n type: userFields\n .text()\n .label(\"Type\")\n .required(\"Type is required.\")\n })),\n comment: stepFields.text().label(\"Comment\")\n }))\n }))\n ];\n }\n}\n\nexport const WorkflowStateModel = ModelFactory.createImplementation({\n implementation: WorkflowStateModelImpl,\n dependencies: []\n});\n"],"names":["WORKFLOW_STATE_MODEL_ID","states","WorkflowStateRecordState","WorkflowStateModelImpl","builder","fields","stepFields","teamFields","notificationFields","userFields","WorkflowStateModel","ModelFactory"],"mappings":";;AAGO,MAAMA,0BAA0B;AAEvC,MAAMC,SAAS;IACX;QACI,OAAO;QACP,OAAOC,yBAAyB,OAAO;IAC3C;IACA;QACI,OAAO;QACP,OAAOA,yBAAyB,QAAQ;IAC5C;IACA;QACI,OAAO;QACP,OAAOA,yBAAyB,QAAQ;IAC5C;IACA;QACI,OAAO;QACP,OAAOA,yBAAyB,QAAQ;IAC5C;CACH;AAED,MAAMC;IACF,MAAa,QAAQC,OAA6B,EAAE;QAChD,OAAO;YACHA,QACK,OAAO,CAAC;gBACL,SAASJ;gBACT,MAAM;gBACN,iBAAiB;YACrB,GACC,MAAM,CAACK,CAAAA,SAAW;oBACf,YAAYA,OAAO,IAAI,GAAG,KAAK,CAAC;oBAChC,KAAKA,OAAO,IAAI,GAAG,KAAK,CAAC,OAAO,QAAQ,CAAC;oBACzC,OAAOA,OAAO,IAAI,GAAG,KAAK,CAAC,SAAS,QAAQ,CAAC;oBAC7C,kBAAkBA,OAAO,IAAI,GAAG,KAAK,CAAC;oBACtC,UAAUA,OAAO,IAAI,GAAG,KAAK,CAAC;oBAC9B,UAAUA,OAAO,OAAO,GAAG,KAAK,CAAC;oBACjC,SAASA,OAAO,IAAI,GAAG,KAAK,CAAC;oBAC7B,OAAOA,OAAO,IAAI,GAAG,KAAK,CAAC,SAAS,gBAAgB,CAACJ;oBACrD,eAAeI,OAAO,IAAI,GAAG,KAAK,CAAC;oBACnC,OAAOA,OACF,MAAM,GACN,KAAK,CAAC,SACN,IAAI,GACJ,QAAQ,CAAC,uBACT,aAAa,CAAC,GAAG,kCACjB,MAAM,CAACC,CAAAA,aAAe;4BACnB,IAAIA,WAAW,IAAI,GAAG,KAAK,CAAC,MAAM,QAAQ,CAAC;4BAC3C,OAAOA,WAAW,IAAI,GAAG,KAAK,CAAC,SAAS,QAAQ,CAAC;4BACjD,OAAOA,WAAW,IAAI,GAAG,KAAK,CAAC,SAAS,QAAQ,CAAC;4BACjD,aAAaA,WAAW,IAAI,GAAG,KAAK,CAAC;4BACrC,OAAOA,WACF,MAAM,GACN,KAAK,CAAC,SACN,IAAI,GACJ,QAAQ,CAAC,kCACT,aAAa,CAAC,GAAG,kCACjB,MAAM,CAACC,CAAAA,aAAe;oCACnB,IAAIA,WAAW,IAAI,GAAG,KAAK,CAAC,MAAM,QAAQ,CAAC;gCAC/C;4BACJ,eAAeD,WACV,MAAM,GACN,KAAK,CAAC,iBACN,IAAI,GACJ,MAAM,CAACE,CAAAA,qBAAuB;oCAC3B,IAAIA,mBACC,IAAI,GACJ,KAAK,CAAC,MACN,QAAQ,CAAC;gCAClB;4BACJ,OAAOF,WAAW,IAAI,GAAG,KAAK,CAAC,SAAS,gBAAgB,CAACL;4BACzD,SAASK,WACJ,MAAM,GACN,KAAK,CAAC,QACN,MAAM,CAACG,CAAAA,aAAe;oCACnB,IAAIA,WAAW,IAAI,GAAG,KAAK,CAAC,MAAM,QAAQ,CAAC;oCAC3C,aAAaA,WACR,IAAI,GACJ,KAAK,CAAC,gBACN,QAAQ,CAAC;oCACd,MAAMA,WACD,IAAI,GACJ,KAAK,CAAC,QACN,QAAQ,CAAC;gCAClB;4BACJ,SAASH,WAAW,IAAI,GAAG,KAAK,CAAC;wBACrC;gBACR;SACP;IACL;AACJ;AAEO,MAAMI,qBAAqBC,aAAa,oBAAoB,CAAC;IAChE,gBAAgBR;IAChB,cAAc,EAAE;AACpB"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { CmsModel } from "@webiny/api-headless-cms/types";
|
|
2
|
+
import { GetModelUseCase } from "@webiny/api-headless-cms/features/contentModel/GetModel/index.js";
|
|
3
|
+
import { WorkflowModelProvider } from "../domain/workflow/abstractions.js";
|
|
4
|
+
import { WorkflowStateModelProvider } from "../domain/workflowState/abstractions.js";
|
|
5
|
+
/**
|
|
6
|
+
* Resolve the tenant's workflow models on demand, replacing the per-request hook
|
|
7
|
+
* (`WorkflowsInitializer`) that used to push already-resolved models into the container.
|
|
8
|
+
*
|
|
9
|
+
* No memoization: `ModelsFetcher` already caches the model list per request (`ModelCache` is a
|
|
10
|
+
* per-request `createMemoryCache()`). No `withoutAuthorization` either — both models are private,
|
|
11
|
+
* and `PrivateModelBuilder` sets `authorization: false`, which short-circuits `canAccessModel()` to
|
|
12
|
+
* true for every identity, so the wrapper the initializer used changed nothing.
|
|
13
|
+
*
|
|
14
|
+
* `GetModelUseCase` is an ordinary constructor dependency: a provider is only constructed when a
|
|
15
|
+
* consumer first awaits `get()`, during request handling — after the CMS has registered everything
|
|
16
|
+
* the use case needs. That timing is what forced the initializer's lazy `container.resolve()`.
|
|
17
|
+
*/
|
|
18
|
+
declare class WorkflowModelProviderImplementation implements WorkflowModelProvider.Interface {
|
|
19
|
+
private getModel;
|
|
20
|
+
constructor(getModel: GetModelUseCase.Interface);
|
|
21
|
+
get(): Promise<CmsModel>;
|
|
22
|
+
}
|
|
23
|
+
declare class WorkflowStateModelProviderImplementation implements WorkflowStateModelProvider.Interface {
|
|
24
|
+
private getModel;
|
|
25
|
+
constructor(getModel: GetModelUseCase.Interface);
|
|
26
|
+
get(): Promise<CmsModel>;
|
|
27
|
+
}
|
|
28
|
+
export declare const WorkflowModelProviderImpl: typeof WorkflowModelProviderImplementation & {
|
|
29
|
+
__abstraction: import("@webiny/di").Abstraction<import("~/domain/workflow/abstractions.js").IWorkflowModelProvider>;
|
|
30
|
+
};
|
|
31
|
+
export declare const WorkflowStateModelProviderImpl: typeof WorkflowStateModelProviderImplementation & {
|
|
32
|
+
__abstraction: import("@webiny/di").Abstraction<import("~/domain/workflowState/abstractions.js").IWorkflowStateModelProvider>;
|
|
33
|
+
};
|
|
34
|
+
export {};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { GetModelUseCase } from "@webiny/api-headless-cms/features/contentModel/GetModel/index.js";
|
|
2
|
+
import { WorkflowModelProvider } from "../domain/workflow/abstractions.js";
|
|
3
|
+
import { WorkflowStateModelProvider } from "../domain/workflowState/abstractions.js";
|
|
4
|
+
import { WORKFLOW_MODEL_ID } from "../constants.js";
|
|
5
|
+
import { WORKFLOW_STATE_MODEL_ID } from "../domain/workflowState/stateModel.js";
|
|
6
|
+
class WorkflowModelProviderImplementation {
|
|
7
|
+
constructor(getModel){
|
|
8
|
+
this.getModel = getModel;
|
|
9
|
+
}
|
|
10
|
+
async get() {
|
|
11
|
+
const result = await this.getModel.execute(WORKFLOW_MODEL_ID);
|
|
12
|
+
if (result.isFail()) throw result.error;
|
|
13
|
+
return result.value;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
class WorkflowStateModelProviderImplementation {
|
|
17
|
+
constructor(getModel){
|
|
18
|
+
this.getModel = getModel;
|
|
19
|
+
}
|
|
20
|
+
async get() {
|
|
21
|
+
const result = await this.getModel.execute(WORKFLOW_STATE_MODEL_ID);
|
|
22
|
+
if (result.isFail()) throw result.error;
|
|
23
|
+
return result.value;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
const WorkflowModelProviderImpl = WorkflowModelProvider.createImplementation({
|
|
27
|
+
implementation: WorkflowModelProviderImplementation,
|
|
28
|
+
dependencies: [
|
|
29
|
+
GetModelUseCase
|
|
30
|
+
]
|
|
31
|
+
});
|
|
32
|
+
const WorkflowStateModelProviderImpl = WorkflowStateModelProvider.createImplementation({
|
|
33
|
+
implementation: WorkflowStateModelProviderImplementation,
|
|
34
|
+
dependencies: [
|
|
35
|
+
GetModelUseCase
|
|
36
|
+
]
|
|
37
|
+
});
|
|
38
|
+
export { WorkflowModelProviderImpl, WorkflowStateModelProviderImpl };
|
|
39
|
+
|
|
40
|
+
//# sourceMappingURL=WorkflowModelProviders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/WorkflowModelProviders.js","sources":["../../src/features/WorkflowModelProviders.ts"],"sourcesContent":["import type { CmsModel } from \"@webiny/api-headless-cms/types\";\nimport { GetModelUseCase } from \"@webiny/api-headless-cms/features/contentModel/GetModel/index.js\";\nimport { WorkflowModelProvider } from \"~/domain/workflow/abstractions.js\";\nimport { WorkflowStateModelProvider } from \"~/domain/workflowState/abstractions.js\";\nimport { WORKFLOW_MODEL_ID } from \"~/constants.js\";\nimport { WORKFLOW_STATE_MODEL_ID } from \"~/domain/workflowState/stateModel.js\";\n\n/**\n * Resolve the tenant's workflow models on demand, replacing the per-request hook\n * (`WorkflowsInitializer`) that used to push already-resolved models into the container.\n *\n * No memoization: `ModelsFetcher` already caches the model list per request (`ModelCache` is a\n * per-request `createMemoryCache()`). No `withoutAuthorization` either — both models are private,\n * and `PrivateModelBuilder` sets `authorization: false`, which short-circuits `canAccessModel()` to\n * true for every identity, so the wrapper the initializer used changed nothing.\n *\n * `GetModelUseCase` is an ordinary constructor dependency: a provider is only constructed when a\n * consumer first awaits `get()`, during request handling — after the CMS has registered everything\n * the use case needs. That timing is what forced the initializer's lazy `container.resolve()`.\n */\nclass WorkflowModelProviderImplementation implements WorkflowModelProvider.Interface {\n constructor(private getModel: GetModelUseCase.Interface) {}\n\n async get(): Promise<CmsModel> {\n const result = await this.getModel.execute(WORKFLOW_MODEL_ID);\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n }\n}\n\nclass WorkflowStateModelProviderImplementation implements WorkflowStateModelProvider.Interface {\n constructor(private getModel: GetModelUseCase.Interface) {}\n\n async get(): Promise<CmsModel> {\n const result = await this.getModel.execute(WORKFLOW_STATE_MODEL_ID);\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n }\n}\n\nexport const WorkflowModelProviderImpl = WorkflowModelProvider.createImplementation({\n implementation: WorkflowModelProviderImplementation,\n dependencies: [GetModelUseCase]\n});\n\nexport const WorkflowStateModelProviderImpl = WorkflowStateModelProvider.createImplementation({\n implementation: WorkflowStateModelProviderImplementation,\n dependencies: [GetModelUseCase]\n});\n"],"names":["WorkflowModelProviderImplementation","getModel","result","WORKFLOW_MODEL_ID","WorkflowStateModelProviderImplementation","WORKFLOW_STATE_MODEL_ID","WorkflowModelProviderImpl","WorkflowModelProvider","GetModelUseCase","WorkflowStateModelProviderImpl","WorkflowStateModelProvider"],"mappings":";;;;;AAoBA,MAAMA;IACF,YAAoBC,QAAmC,CAAE;aAArCA,QAAQ,GAARA;IAAsC;IAE1D,MAAM,MAAyB;QAC3B,MAAMC,SAAS,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAACC;QAC3C,IAAID,OAAO,MAAM,IACb,MAAMA,OAAO,KAAK;QAEtB,OAAOA,OAAO,KAAK;IACvB;AACJ;AAEA,MAAME;IACF,YAAoBH,QAAmC,CAAE;aAArCA,QAAQ,GAARA;IAAsC;IAE1D,MAAM,MAAyB;QAC3B,MAAMC,SAAS,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAACG;QAC3C,IAAIH,OAAO,MAAM,IACb,MAAMA,OAAO,KAAK;QAEtB,OAAOA,OAAO,KAAK;IACvB;AACJ;AAEO,MAAMI,4BAA4BC,sBAAsB,oBAAoB,CAAC;IAChF,gBAAgBP;IAChB,cAAc;QAACQ;KAAgB;AACnC;AAEO,MAAMC,iCAAiCC,2BAA2B,oBAAoB,CAAC;IAC1F,gBAAgBN;IAChB,cAAc;QAACI;KAAgB;AACnC"}
|
|
@@ -1,36 +1,29 @@
|
|
|
1
1
|
import { Result } from "@webiny/feature/api";
|
|
2
2
|
import { ListUserTeamsUseCase } from "@webiny/api-core/features/users/ListUserTeams";
|
|
3
|
-
import { GetUserTeamsUseCase
|
|
3
|
+
import { GetUserTeamsUseCase } from "./abstractions.js";
|
|
4
4
|
class GetUserTeamsUseCaseImpl {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
9
|
-
async execute(userId) {
|
|
10
|
-
// Check cache first
|
|
11
|
-
const cached = this.cache.get(userId);
|
|
12
|
-
if (cached) {
|
|
13
|
-
return Result.ok(cached);
|
|
5
|
+
constructor(listUserTeams){
|
|
6
|
+
this.listUserTeams = listUserTeams;
|
|
7
|
+
this.cache = new Map();
|
|
14
8
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
9
|
+
async execute(userId) {
|
|
10
|
+
const cached = this.cache.get(userId);
|
|
11
|
+
if (cached) return Result.ok(cached);
|
|
12
|
+
const result = await this.listUserTeams.execute(userId);
|
|
13
|
+
if (result.isFail()) return Result.ok([]);
|
|
14
|
+
const teams = result.value.map((team)=>({
|
|
15
|
+
id: team.id
|
|
16
|
+
}));
|
|
17
|
+
this.cache.set(userId, teams);
|
|
18
|
+
return Result.ok(teams);
|
|
21
19
|
}
|
|
22
|
-
const teams = result.value.map(team => ({
|
|
23
|
-
id: team.id
|
|
24
|
-
}));
|
|
25
|
-
|
|
26
|
-
// Cache the result
|
|
27
|
-
this.cache.set(userId, teams);
|
|
28
|
-
return Result.ok(teams);
|
|
29
|
-
}
|
|
30
20
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
21
|
+
const GetUserTeamsUseCase_GetUserTeamsUseCase = GetUserTeamsUseCase.createImplementation({
|
|
22
|
+
implementation: GetUserTeamsUseCaseImpl,
|
|
23
|
+
dependencies: [
|
|
24
|
+
ListUserTeamsUseCase
|
|
25
|
+
]
|
|
34
26
|
});
|
|
27
|
+
export { GetUserTeamsUseCase_GetUserTeamsUseCase as GetUserTeamsUseCase };
|
|
35
28
|
|
|
36
29
|
//# sourceMappingURL=GetUserTeamsUseCase.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/internal/GetUserTeams/GetUserTeamsUseCase.js","sources":["../../../../src/features/internal/GetUserTeams/GetUserTeamsUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { ListUserTeamsUseCase } from \"@webiny/api-core/features/users/ListUserTeams\";\nimport { GetUserTeamsUseCase as UseCase } from \"./abstractions.js\";\nimport type { IWorkflowStepTeam } from \"~/domain/workflow/abstractions.js\";\n\nclass GetUserTeamsUseCaseImpl implements UseCase.Interface {\n private cache = new Map<string, IWorkflowStepTeam[]>();\n\n constructor(private listUserTeams: ListUserTeamsUseCase.Interface) {}\n\n async execute(userId: string): UseCase.Return {\n // Check cache first\n const cached = this.cache.get(userId);\n if (cached) {\n return Result.ok(cached);\n }\n\n // Fetch teams\n const result = await this.listUserTeams.execute(userId);\n\n if (result.isFail()) {\n // If fetching teams fails, return an empty array (user has no teams)\n return Result.ok([]);\n }\n\n const teams = result.value.map(team => ({ id: team.id }));\n\n // Cache the result\n this.cache.set(userId, teams);\n\n return Result.ok(teams);\n }\n}\n\nexport const GetUserTeamsUseCase = UseCase.createImplementation({\n implementation: GetUserTeamsUseCaseImpl,\n dependencies: [ListUserTeamsUseCase]\n});\n"],"names":["GetUserTeamsUseCaseImpl","listUserTeams","Map","userId","cached","Result","result","teams","team","GetUserTeamsUseCase","UseCase","ListUserTeamsUseCase"],"mappings":";;;AAKA,MAAMA;IAGF,YAAoBC,aAA6C,CAAE;aAA/CA,aAAa,GAAbA;aAFZ,KAAK,GAAG,IAAIC;IAEgD;IAEpE,MAAM,QAAQC,MAAc,EAAkB;QAE1C,MAAMC,SAAS,IAAI,CAAC,KAAK,CAAC,GAAG,CAACD;QAC9B,IAAIC,QACA,OAAOC,OAAO,EAAE,CAACD;QAIrB,MAAME,SAAS,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAACH;QAEhD,IAAIG,OAAO,MAAM,IAEb,OAAOD,OAAO,EAAE,CAAC,EAAE;QAGvB,MAAME,QAAQD,OAAO,KAAK,CAAC,GAAG,CAACE,CAAAA,OAAS;gBAAE,IAAIA,KAAK,EAAE;YAAC;QAGtD,IAAI,CAAC,KAAK,CAAC,GAAG,CAACL,QAAQI;QAEvB,OAAOF,OAAO,EAAE,CAACE;IACrB;AACJ;AAEO,MAAME,0CAAsBC,oBAAAA,oBAA4B,CAAC;IAC5D,gBAAgBV;IAChB,cAAc;QAACW;KAAqB;AACxC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createAbstraction } from "@webiny/feature/api";
|
|
2
|
-
|
|
2
|
+
const GetUserTeamsUseCase = createAbstraction("GetUserTeamsUseCase");
|
|
3
|
+
export { GetUserTeamsUseCase };
|
|
3
4
|
|
|
4
5
|
//# sourceMappingURL=abstractions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/internal/GetUserTeams/abstractions.js","sources":["../../../../src/features/internal/GetUserTeams/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { IWorkflowStepTeam } from \"~/domain/workflow/abstractions.js\";\n\nexport interface IGetUserTeamsUseCase {\n execute(userId: string): Promise<Result<IWorkflowStepTeam[], never>>;\n}\n\nexport const GetUserTeamsUseCase = createAbstraction<IGetUserTeamsUseCase>(\"GetUserTeamsUseCase\");\n\nexport namespace GetUserTeamsUseCase {\n export type Interface = IGetUserTeamsUseCase;\n export type Return = ReturnType<Interface[\"execute\"]>;\n}\n"],"names":["GetUserTeamsUseCase","createAbstraction"],"mappings":";AAQO,MAAMA,sBAAsBC,kBAAwC"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { createFeature } from "@webiny/feature/api";
|
|
2
2
|
import { GetUserTeamsUseCase } from "./GetUserTeamsUseCase.js";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
const GetUserTeamsFeature = createFeature({
|
|
4
|
+
name: "workflows.internal.getUserTeams",
|
|
5
|
+
register (container) {
|
|
6
|
+
container.register(GetUserTeamsUseCase).inSingletonScope();
|
|
7
|
+
}
|
|
8
8
|
});
|
|
9
|
+
export { GetUserTeamsFeature };
|
|
9
10
|
|
|
10
11
|
//# sourceMappingURL=feature.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/internal/GetUserTeams/feature.js","sources":["../../../../src/features/internal/GetUserTeams/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { GetUserTeamsUseCase } from \"./GetUserTeamsUseCase.js\";\n\nexport const GetUserTeamsFeature = createFeature({\n name: \"workflows.internal.getUserTeams\",\n register(container) {\n container.register(GetUserTeamsUseCase).inSingletonScope();\n }\n});\n"],"names":["GetUserTeamsFeature","createFeature","container","GetUserTeamsUseCase"],"mappings":";;AAGO,MAAMA,sBAAsBC,cAAc;IAC7C,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC,qBAAqB,gBAAgB;IAC5D;AACJ"}
|
|
@@ -1,24 +1,28 @@
|
|
|
1
1
|
import { Result } from "@webiny/feature/api";
|
|
2
|
-
import { ListNotificationTypesRepository
|
|
2
|
+
import { ListNotificationTypesRepository } from "./abstractions.js";
|
|
3
3
|
import { NotificationTransport } from "../NotificationTransport/index.js";
|
|
4
4
|
class ListNotificationTypesRepositoryImpl {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}));
|
|
15
|
-
}
|
|
5
|
+
constructor(types){
|
|
6
|
+
this.types = types;
|
|
7
|
+
}
|
|
8
|
+
async execute() {
|
|
9
|
+
return Result.ok(this.types.map((type)=>({
|
|
10
|
+
id: type.id,
|
|
11
|
+
title: type.title
|
|
12
|
+
})));
|
|
13
|
+
}
|
|
16
14
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
15
|
+
const ListNotificationTypesRepository_ListNotificationTypesRepository = ListNotificationTypesRepository.createImplementation({
|
|
16
|
+
implementation: ListNotificationTypesRepositoryImpl,
|
|
17
|
+
dependencies: [
|
|
18
|
+
[
|
|
19
|
+
NotificationTransport,
|
|
20
|
+
{
|
|
21
|
+
multiple: true
|
|
22
|
+
}
|
|
23
|
+
]
|
|
24
|
+
]
|
|
22
25
|
});
|
|
26
|
+
export { ListNotificationTypesRepository_ListNotificationTypesRepository as ListNotificationTypesRepository };
|
|
23
27
|
|
|
24
28
|
//# sourceMappingURL=ListNotificationTypesRepository.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/notifications/ListNotificationTypes/ListNotificationTypesRepository.js","sources":["../../../../src/features/notifications/ListNotificationTypes/ListNotificationTypesRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { ListNotificationTypesRepository as Repository } from \"./abstractions.js\";\nimport { NotificationTransport } from \"~/features/notifications/NotificationTransport/index.js\";\n\nclass ListNotificationTypesRepositoryImpl implements Repository.Interface {\n private readonly types;\n\n public constructor(types: NotificationTransport.Interface[]) {\n this.types = types;\n }\n\n public async execute(): Repository.Return {\n return Result.ok(\n this.types.map(type => {\n return {\n id: type.id,\n title: type.title\n };\n })\n );\n }\n}\n\nexport const ListNotificationTypesRepository = Repository.createImplementation({\n implementation: ListNotificationTypesRepositoryImpl,\n dependencies: [[NotificationTransport, { multiple: true }]]\n});\n"],"names":["ListNotificationTypesRepositoryImpl","types","Result","type","ListNotificationTypesRepository","Repository","NotificationTransport"],"mappings":";;;AAIA,MAAMA;IAGF,YAAmBC,KAAwC,CAAE;QACzD,IAAI,CAAC,KAAK,GAAGA;IACjB;IAEA,MAAa,UAA6B;QACtC,OAAOC,OAAO,EAAE,CACZ,IAAI,CAAC,KAAK,CAAC,GAAG,CAACC,CAAAA,OACJ;gBACH,IAAIA,KAAK,EAAE;gBACX,OAAOA,KAAK,KAAK;YACrB;IAGZ;AACJ;AAEO,MAAMC,kEAAkCC,gCAAAA,oBAA+B,CAAC;IAC3E,gBAAgBL;IAChB,cAAc;QAAC;YAACM;YAAuB;gBAAE,UAAU;YAAK;SAAE;KAAC;AAC/D"}
|
|
@@ -1,39 +1,34 @@
|
|
|
1
1
|
import { Result } from "@webiny/feature/api";
|
|
2
2
|
import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
|
|
3
|
-
import { ListNotificationTypesRepository, ListNotificationTypesUseCase
|
|
3
|
+
import { ListNotificationTypesRepository, ListNotificationTypesUseCase } from "./abstractions.js";
|
|
4
4
|
import { WORKFLOWS_PERMISSION } from "../../../constants.js";
|
|
5
5
|
import { NotificationAuthorizedError } from "../../../domain/notifications/errors.js";
|
|
6
6
|
class ListNotificationTypesUseCaseImpl {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
}
|
|
11
|
-
async execute() {
|
|
12
|
-
const hasAccess = await this.ensureAccess();
|
|
13
|
-
if (hasAccess.isFail()) {
|
|
14
|
-
return Result.fail(hasAccess.error);
|
|
7
|
+
constructor(identityContext, repository){
|
|
8
|
+
this.identityContext = identityContext;
|
|
9
|
+
this.repository = repository;
|
|
15
10
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
11
|
+
async execute() {
|
|
12
|
+
const hasAccess = await this.ensureAccess();
|
|
13
|
+
if (hasAccess.isFail()) return Result.fail(hasAccess.error);
|
|
14
|
+
const result = await this.repository.execute();
|
|
15
|
+
if (result.isFail()) return result;
|
|
16
|
+
return Result.ok(result.value);
|
|
19
17
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
if (permission.name === "*") {
|
|
26
|
-
return Result.ok();
|
|
27
|
-
} else if (permission.editor) {
|
|
28
|
-
return Result.ok();
|
|
29
|
-
}
|
|
18
|
+
async ensureAccess() {
|
|
19
|
+
const permissions = await this.identityContext.getPermissions(WORKFLOWS_PERMISSION);
|
|
20
|
+
for (const permission of permissions)if ("*" === permission.name) return Result.ok();
|
|
21
|
+
else if (permission.editor) return Result.ok();
|
|
22
|
+
return Result.fail(new NotificationAuthorizedError("You cannot list notifications."));
|
|
30
23
|
}
|
|
31
|
-
return Result.fail(new NotificationAuthorizedError("You cannot list notifications."));
|
|
32
|
-
}
|
|
33
24
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
25
|
+
const ListNotificationTypesUseCase_ListNotificationTypesUseCase = ListNotificationTypesUseCase.createImplementation({
|
|
26
|
+
implementation: ListNotificationTypesUseCaseImpl,
|
|
27
|
+
dependencies: [
|
|
28
|
+
IdentityContext,
|
|
29
|
+
ListNotificationTypesRepository
|
|
30
|
+
]
|
|
37
31
|
});
|
|
32
|
+
export { ListNotificationTypesUseCase_ListNotificationTypesUseCase as ListNotificationTypesUseCase };
|
|
38
33
|
|
|
39
34
|
//# sourceMappingURL=ListNotificationTypesUseCase.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/notifications/ListNotificationTypes/ListNotificationTypesUseCase.js","sources":["../../../../src/features/notifications/ListNotificationTypes/ListNotificationTypesUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport {\n ListNotificationTypesRepository,\n ListNotificationTypesUseCase as UseCase\n} from \"./abstractions.js\";\nimport { WORKFLOWS_PERMISSION } from \"~/constants.js\";\nimport type { IWorkflowsSecurityPermission } from \"~/types.js\";\nimport { NotificationAuthorizedError } from \"~/domain/notifications/errors.js\";\n\nclass ListNotificationTypesUseCaseImpl implements UseCase.Interface {\n public constructor(\n private identityContext: IdentityContext.Interface,\n private repository: ListNotificationTypesRepository.Interface\n ) {}\n\n public async execute(): UseCase.Return {\n const hasAccess = await this.ensureAccess();\n if (hasAccess.isFail()) {\n return Result.fail(hasAccess.error);\n }\n\n const result = await this.repository.execute();\n if (result.isFail()) {\n return result;\n }\n\n return Result.ok(result.value);\n }\n\n private async ensureAccess(): Promise<Result<void, NotificationAuthorizedError>> {\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 NotificationAuthorizedError(\"You cannot list notifications.\"));\n }\n}\n\nexport const ListNotificationTypesUseCase = UseCase.createImplementation({\n implementation: ListNotificationTypesUseCaseImpl,\n dependencies: [IdentityContext, ListNotificationTypesRepository]\n});\n"],"names":["ListNotificationTypesUseCaseImpl","identityContext","repository","hasAccess","Result","result","permissions","WORKFLOWS_PERMISSION","permission","NotificationAuthorizedError","ListNotificationTypesUseCase","UseCase","IdentityContext","ListNotificationTypesRepository"],"mappings":";;;;;AAUA,MAAMA;IACF,YACYC,eAA0C,EAC1CC,UAAqD,CAC/D;aAFUD,eAAe,GAAfA;aACAC,UAAU,GAAVA;IACT;IAEH,MAAa,UAA0B;QACnC,MAAMC,YAAY,MAAM,IAAI,CAAC,YAAY;QACzC,IAAIA,UAAU,MAAM,IAChB,OAAOC,OAAO,IAAI,CAACD,UAAU,KAAK;QAGtC,MAAME,SAAS,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO;QAC5C,IAAIA,OAAO,MAAM,IACb,OAAOA;QAGX,OAAOD,OAAO,EAAE,CAACC,OAAO,KAAK;IACjC;IAEA,MAAc,eAAmE;QAC7E,MAAMC,cACF,MAAM,IAAI,CAAC,eAAe,CAAC,cAAc,CACrCC;QAGR,KAAK,MAAMC,cAAcF,YACrB,IAAIE,AAAoB,QAApBA,WAAW,IAAI,EACf,OAAOJ,OAAO,EAAE;aACb,IAAII,WAAW,MAAM,EACxB,OAAOJ,OAAO,EAAE;QAIxB,OAAOA,OAAO,IAAI,CAAC,IAAIK,4BAA4B;IACvD;AACJ;AAEO,MAAMC,4DAA+BC,6BAAAA,oBAA4B,CAAC;IACrE,gBAAgBX;IAChB,cAAc;QAACY;QAAiBC;KAAgC;AACpE"}
|