@webiny/api-headless-cms-workflows 0.0.0-unstable.a4f3e4ea8b → 0.0.0-unstable.a85ef555b2
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/{features/EntryWorkflows/feature.d.ts → CmsWorkflowsFeature.d.ts} +1 -1
- package/CmsWorkflowsFeature.js +28 -0
- package/CmsWorkflowsFeature.js.map +1 -0
- package/domain/errors.d.ts +27 -0
- package/domain/errors.js +14 -0
- package/domain/errors.js.map +1 -0
- package/features/Workflows/feature.js +2 -0
- package/features/Workflows/feature.js.map +1 -1
- package/features/Workflows/handlers/DisallowUnpublishableModelsOnBeforeCreate.d.ts +18 -6
- package/features/Workflows/handlers/DisallowUnpublishableModelsOnBeforeCreate.js +30 -13
- package/features/Workflows/handlers/DisallowUnpublishableModelsOnBeforeCreate.js.map +1 -1
- package/features/Workflows/handlers/DisallowUnpublishableModelsOnBeforeUpdate.d.ts +23 -0
- package/features/Workflows/handlers/DisallowUnpublishableModelsOnBeforeUpdate.js +44 -0
- package/features/Workflows/handlers/DisallowUnpublishableModelsOnBeforeUpdate.js.map +1 -0
- package/features/hooks/BlockDeleteMultipleWhileInReview.d.ts +22 -0
- package/features/hooks/BlockDeleteMultipleWhileInReview.js +64 -0
- package/features/hooks/BlockDeleteMultipleWhileInReview.js.map +1 -0
- package/features/hooks/BlockDeleteWhileInReview.d.ts +18 -0
- package/features/hooks/BlockDeleteWhileInReview.js +45 -0
- package/features/hooks/BlockDeleteWhileInReview.js.map +1 -0
- package/features/hooks/BlockFolderChangeWhileInReview.d.ts +21 -0
- package/features/hooks/BlockFolderChangeWhileInReview.js +44 -0
- package/features/hooks/BlockFolderChangeWhileInReview.js.map +1 -0
- package/features/hooks/BlockMoveWhileInReview.d.ts +19 -0
- package/features/hooks/BlockMoveWhileInReview.js +46 -0
- package/features/hooks/BlockMoveWhileInReview.js.map +1 -0
- package/features/hooks/BlockRevisionDeleteWhileInReview.d.ts +17 -0
- package/features/hooks/BlockRevisionDeleteWhileInReview.js +46 -0
- package/features/hooks/BlockRevisionDeleteWhileInReview.js.map +1 -0
- package/features/hooks/BlockUpdateWhileInReview.d.ts +25 -0
- package/features/hooks/BlockUpdateWhileInReview.js +43 -0
- package/features/hooks/BlockUpdateWhileInReview.js.map +1 -0
- package/features/hooks/DeleteModelBoundToWorkflowDecorator.d.ts +22 -0
- package/features/hooks/DeleteModelBoundToWorkflowDecorator.js +52 -0
- package/features/hooks/DeleteModelBoundToWorkflowDecorator.js.map +1 -0
- package/features/hooks/DeleteModelTaskBoundToWorkflowDecorator.d.ts +27 -0
- package/features/hooks/DeleteModelTaskBoundToWorkflowDecorator.js +64 -0
- package/features/hooks/DeleteModelTaskBoundToWorkflowDecorator.js.map +1 -0
- package/features/hooks/DeleteReviewsOnEntriesDeleteMultiple.d.ts +19 -0
- package/features/hooks/DeleteReviewsOnEntriesDeleteMultiple.js +47 -0
- package/features/hooks/DeleteReviewsOnEntriesDeleteMultiple.js.map +1 -0
- package/features/hooks/DeleteReviewsOnEntryDelete.d.ts +19 -0
- package/features/hooks/DeleteReviewsOnEntryDelete.js +46 -0
- package/features/hooks/DeleteReviewsOnEntryDelete.js.map +1 -0
- package/features/hooks/DeleteReviewsOnRevisionDelete.d.ts +18 -0
- package/features/hooks/DeleteReviewsOnRevisionDelete.js +46 -0
- package/features/hooks/DeleteReviewsOnRevisionDelete.js.map +1 -0
- package/features/hooks/FullyDeleteModelBoundToWorkflowDecorator.d.ts +28 -0
- package/features/hooks/FullyDeleteModelBoundToWorkflowDecorator.js +63 -0
- package/features/hooks/FullyDeleteModelBoundToWorkflowDecorator.js.map +1 -0
- package/features/hooks/NullReviewStateOnRevisionCreate.d.ts +15 -0
- package/features/hooks/NullReviewStateOnRevisionCreate.js +17 -0
- package/features/hooks/NullReviewStateOnRevisionCreate.js.map +1 -0
- package/features/hooks/RequireApprovedReviewOnPublish.d.ts +22 -0
- package/features/hooks/RequireApprovedReviewOnPublish.js +43 -0
- package/features/hooks/RequireApprovedReviewOnPublish.js.map +1 -0
- package/features/hooks/RequireApprovedReviewOnRepublish.d.ts +23 -0
- package/features/hooks/RequireApprovedReviewOnRepublish.js +49 -0
- package/features/hooks/RequireApprovedReviewOnRepublish.js.map +1 -0
- package/features/hooks/feature.d.ts +8 -0
- package/features/hooks/feature.js +39 -0
- package/features/hooks/feature.js.map +1 -0
- package/features/target/CandidateFolderReadRules/CandidateFolderReadRules.d.ts +18 -0
- package/features/target/CandidateFolderReadRules/CandidateFolderReadRules.js +97 -0
- package/features/target/CandidateFolderReadRules/CandidateFolderReadRules.js.map +1 -0
- package/features/target/CandidateFolderReadRules/abstractions.d.ts +35 -0
- package/features/target/CandidateFolderReadRules/abstractions.js +5 -0
- package/features/target/CandidateFolderReadRules/abstractions.js.map +1 -0
- package/features/target/CandidateFolderReadRules/index.d.ts +1 -0
- package/features/target/CandidateFolderReadRules/index.js +1 -0
- package/features/target/CmsEntryAccess/CmsEntryAccess.d.ts +32 -0
- package/features/target/CmsEntryAccess/CmsEntryAccess.js +141 -0
- package/features/target/CmsEntryAccess/CmsEntryAccess.js.map +1 -0
- package/features/target/CmsEntryAccess/abstractions.d.ts +48 -0
- package/features/target/CmsEntryAccess/abstractions.js +5 -0
- package/features/target/CmsEntryAccess/abstractions.js.map +1 -0
- package/features/target/CmsEntryAccess/index.d.ts +2 -0
- package/features/target/CmsEntryAccess/index.js +2 -0
- package/features/target/CmsEntryAccess/unreadableCodes.d.ts +1 -0
- package/features/target/CmsEntryAccess/unreadableCodes.js +9 -0
- package/features/target/CmsEntryAccess/unreadableCodes.js.map +1 -0
- package/features/target/CmsEntryDeniedFolders/CmsEntryDeniedFolders.d.ts +21 -0
- package/features/target/CmsEntryDeniedFolders/CmsEntryDeniedFolders.js +66 -0
- package/features/target/CmsEntryDeniedFolders/CmsEntryDeniedFolders.js.map +1 -0
- package/features/target/CmsEntryDeniedFolders/abstractions.d.ts +23 -0
- package/features/target/CmsEntryDeniedFolders/abstractions.js +5 -0
- package/features/target/CmsEntryDeniedFolders/abstractions.js.map +1 -0
- package/features/target/CmsEntryDeniedFolders/index.d.ts +1 -0
- package/features/target/CmsEntryDeniedFolders/index.js +1 -0
- package/features/target/CmsEntryFolderExistsService/CmsEntryFolderExistsService.d.ts +18 -0
- package/features/target/CmsEntryFolderExistsService/CmsEntryFolderExistsService.js +43 -0
- package/features/target/CmsEntryFolderExistsService/CmsEntryFolderExistsService.js.map +1 -0
- package/features/target/CmsEntryFolderExistsService/abstractions.d.ts +23 -0
- package/features/target/CmsEntryFolderExistsService/abstractions.js +5 -0
- package/features/target/CmsEntryFolderExistsService/abstractions.js.map +1 -0
- package/features/target/CmsEntryFolderExistsService/index.d.ts +1 -0
- package/features/target/CmsEntryFolderExistsService/index.js +1 -0
- package/features/target/CmsEntryReviewNamespace/CmsModelReviewNamespace.d.ts +10 -0
- package/features/target/CmsEntryReviewNamespace/CmsModelReviewNamespace.js +14 -0
- package/features/target/CmsEntryReviewNamespace/CmsModelReviewNamespace.js.map +1 -0
- package/features/target/CmsEntryReviewNamespace/abstractions.d.ts +17 -0
- package/features/target/CmsEntryReviewNamespace/abstractions.js +5 -0
- package/features/target/CmsEntryReviewNamespace/abstractions.js.map +1 -0
- package/features/target/CmsEntryReviewNamespace/index.d.ts +1 -0
- package/features/target/CmsEntryReviewNamespace/index.js +1 -0
- package/features/target/CmsEntryReviewReadFilter/CmsEntryReviewReadFilter.d.ts +20 -0
- package/features/target/CmsEntryReviewReadFilter/CmsEntryReviewReadFilter.js +80 -0
- package/features/target/CmsEntryReviewReadFilter/CmsEntryReviewReadFilter.js.map +1 -0
- package/features/target/CmsEntryReviewReadFilter/abstractions.d.ts +24 -0
- package/features/target/CmsEntryReviewReadFilter/abstractions.js +5 -0
- package/features/target/CmsEntryReviewReadFilter/abstractions.js.map +1 -0
- package/features/target/CmsEntryReviewReadFilter/index.d.ts +1 -0
- package/features/target/CmsEntryReviewReadFilter/index.js +1 -0
- package/features/target/CmsEntryReviewTargetEditor.d.ts +28 -0
- package/features/target/CmsEntryReviewTargetEditor.js +128 -0
- package/features/target/CmsEntryReviewTargetEditor.js.map +1 -0
- package/features/target/CmsEntryReviewTargetFolderChain.d.ts +22 -0
- package/features/target/CmsEntryReviewTargetFolderChain.js +37 -0
- package/features/target/CmsEntryReviewTargetFolderChain.js.map +1 -0
- package/features/target/CmsEntryReviewTargetLink.d.ts +17 -0
- package/features/target/CmsEntryReviewTargetLink.js +18 -0
- package/features/target/CmsEntryReviewTargetLink.js.map +1 -0
- package/features/target/CmsEntryReviewTargetLoader.d.ts +16 -0
- package/features/target/CmsEntryReviewTargetLoader.js +29 -0
- package/features/target/CmsEntryReviewTargetLoader.js.map +1 -0
- package/features/target/CmsEntryReviewTargetReadAccess.d.ts +41 -0
- package/features/target/CmsEntryReviewTargetReadAccess.js +91 -0
- package/features/target/CmsEntryReviewTargetReadAccess.js.map +1 -0
- package/features/target/CmsEntryReviewTargetSync.d.ts +23 -0
- package/features/target/CmsEntryReviewTargetSync.js +42 -0
- package/features/target/CmsEntryReviewTargetSync.js.map +1 -0
- package/features/target/CmsEntryTargetReader/CmsEntryTargetReader.d.ts +27 -0
- package/features/target/CmsEntryTargetReader/CmsEntryTargetReader.js +81 -0
- package/features/target/CmsEntryTargetReader/CmsEntryTargetReader.js.map +1 -0
- package/features/target/CmsEntryTargetReader/abstractions.d.ts +40 -0
- package/features/target/CmsEntryTargetReader/abstractions.js +5 -0
- package/features/target/CmsEntryTargetReader/abstractions.js.map +1 -0
- package/features/target/CmsEntryTargetReader/index.d.ts +1 -0
- package/features/target/CmsEntryTargetReader/index.js +1 -0
- package/features/target/CmsModelGroupService/CmsModelGroupService.d.ts +12 -0
- package/features/target/CmsModelGroupService/CmsModelGroupService.js +25 -0
- package/features/target/CmsModelGroupService/CmsModelGroupService.js.map +1 -0
- package/features/target/CmsModelGroupService/abstractions.d.ts +24 -0
- package/features/target/CmsModelGroupService/abstractions.js +5 -0
- package/features/target/CmsModelGroupService/abstractions.js.map +1 -0
- package/features/target/CmsModelGroupService/index.d.ts +1 -0
- package/features/target/CmsModelGroupService/index.js +1 -0
- package/features/target/CmsWorkflowModelParser.d.ts +9 -0
- package/features/target/CmsWorkflowModelParser.js +18 -0
- package/features/target/CmsWorkflowModelParser.js.map +1 -0
- package/features/target/FolderReadRule.d.ts +9 -0
- package/features/target/FolderReadRule.js +0 -0
- package/features/target/WorkflowEntrySystemField.d.ts +13 -0
- package/features/target/WorkflowEntrySystemField.js +35 -0
- package/features/target/WorkflowEntrySystemField.js.map +1 -0
- package/features/target/feature.d.ts +5 -0
- package/features/target/feature.js +41 -0
- package/features/target/feature.js.map +1 -0
- package/features/target/getModelSafeValidationMessage.d.ts +11 -0
- package/features/target/getModelSafeValidationMessage.js +28 -0
- package/features/target/getModelSafeValidationMessage.js.map +1 -0
- package/features/target/isEditorFieldValue.d.ts +9 -0
- package/features/target/isEditorFieldValue.js +30 -0
- package/features/target/isEditorFieldValue.js.map +1 -0
- package/features/target/toCmsReviewTarget.d.ts +4 -0
- package/features/target/toCmsReviewTarget.js +26 -0
- package/features/target/toCmsReviewTarget.js.map +1 -0
- package/features/target/toEditorFields.d.ts +9 -0
- package/features/target/toEditorFields.js +48 -0
- package/features/target/toEditorFields.js.map +1 -0
- package/features/target/toEntryValuesPatch.d.ts +9 -0
- package/features/target/toEntryValuesPatch.js +31 -0
- package/features/target/toEntryValuesPatch.js.map +1 -0
- package/features/wrappers/ApproveCmsEntryReviewStep/ApproveCmsEntryReviewStepUseCase.d.ts +13 -0
- package/features/wrappers/ApproveCmsEntryReviewStep/ApproveCmsEntryReviewStepUseCase.js +35 -0
- package/features/wrappers/ApproveCmsEntryReviewStep/ApproveCmsEntryReviewStepUseCase.js.map +1 -0
- package/features/wrappers/ApproveCmsEntryReviewStep/abstractions.d.ts +26 -0
- package/features/wrappers/ApproveCmsEntryReviewStep/abstractions.js +5 -0
- package/features/wrappers/ApproveCmsEntryReviewStep/abstractions.js.map +1 -0
- package/features/wrappers/ApproveCmsEntryReviewStep/feature.d.ts +4 -0
- package/features/wrappers/ApproveCmsEntryReviewStep/feature.js +11 -0
- package/features/wrappers/ApproveCmsEntryReviewStep/feature.js.map +1 -0
- package/features/wrappers/ApproveCmsEntryReviewStep/index.d.ts +1 -0
- package/features/wrappers/ApproveCmsEntryReviewStep/index.js +1 -0
- package/features/wrappers/CancelCmsEntryReview/CancelCmsEntryReviewUseCase.d.ts +13 -0
- package/features/wrappers/CancelCmsEntryReview/CancelCmsEntryReviewUseCase.js +37 -0
- package/features/wrappers/CancelCmsEntryReview/CancelCmsEntryReviewUseCase.js.map +1 -0
- package/features/wrappers/CancelCmsEntryReview/abstractions.d.ts +30 -0
- package/features/wrappers/CancelCmsEntryReview/abstractions.js +5 -0
- package/features/wrappers/CancelCmsEntryReview/abstractions.js.map +1 -0
- package/features/wrappers/CancelCmsEntryReview/feature.d.ts +4 -0
- package/features/wrappers/CancelCmsEntryReview/feature.js +11 -0
- package/features/wrappers/CancelCmsEntryReview/feature.js.map +1 -0
- package/features/wrappers/CancelCmsEntryReview/index.d.ts +1 -0
- package/features/wrappers/CancelCmsEntryReview/index.js +1 -0
- package/features/wrappers/CancelCmsEntryReviewsForDelete/CancelCmsEntryReviewsForDeleteUseCase.d.ts +19 -0
- package/features/wrappers/CancelCmsEntryReviewsForDelete/CancelCmsEntryReviewsForDeleteUseCase.js +85 -0
- package/features/wrappers/CancelCmsEntryReviewsForDelete/CancelCmsEntryReviewsForDeleteUseCase.js.map +1 -0
- package/features/wrappers/CancelCmsEntryReviewsForDelete/abstractions.d.ts +41 -0
- package/features/wrappers/CancelCmsEntryReviewsForDelete/abstractions.js +5 -0
- package/features/wrappers/CancelCmsEntryReviewsForDelete/abstractions.js.map +1 -0
- package/features/wrappers/CancelCmsEntryReviewsForDelete/feature.d.ts +4 -0
- package/features/wrappers/CancelCmsEntryReviewsForDelete/feature.js +11 -0
- package/features/wrappers/CancelCmsEntryReviewsForDelete/feature.js.map +1 -0
- package/features/wrappers/CancelCmsEntryReviewsForDelete/index.d.ts +1 -0
- package/features/wrappers/CancelCmsEntryReviewsForDelete/index.js +1 -0
- package/features/wrappers/CmsEntryFolderExists/CmsEntryFolderExistsUseCase.d.ts +15 -0
- package/features/wrappers/CmsEntryFolderExists/CmsEntryFolderExistsUseCase.js +46 -0
- package/features/wrappers/CmsEntryFolderExists/CmsEntryFolderExistsUseCase.js.map +1 -0
- package/features/wrappers/CmsEntryFolderExists/abstractions.d.ts +29 -0
- package/features/wrappers/CmsEntryFolderExists/abstractions.js +5 -0
- package/features/wrappers/CmsEntryFolderExists/abstractions.js.map +1 -0
- package/features/wrappers/CmsEntryFolderExists/feature.d.ts +4 -0
- package/features/wrappers/CmsEntryFolderExists/feature.js +11 -0
- package/features/wrappers/CmsEntryFolderExists/feature.js.map +1 -0
- package/features/wrappers/CmsEntryFolderExists/index.d.ts +1 -0
- package/features/wrappers/CmsEntryFolderExists/index.js +1 -0
- package/features/wrappers/CmsEntryReviewGuardService/CmsEntryReviewGuardService.d.ts +17 -0
- package/features/wrappers/CmsEntryReviewGuardService/CmsEntryReviewGuardService.js +63 -0
- package/features/wrappers/CmsEntryReviewGuardService/CmsEntryReviewGuardService.js.map +1 -0
- package/features/wrappers/CmsEntryReviewGuardService/abstractions.d.ts +37 -0
- package/features/wrappers/CmsEntryReviewGuardService/abstractions.js +5 -0
- package/features/wrappers/CmsEntryReviewGuardService/abstractions.js.map +1 -0
- package/features/wrappers/CmsEntryReviewGuardService/index.d.ts +1 -0
- package/features/wrappers/CmsEntryReviewGuardService/index.js +1 -0
- package/features/wrappers/DeleteCmsEntryWorkflow/DeleteCmsEntryWorkflowUseCase.d.ts +25 -0
- package/features/wrappers/DeleteCmsEntryWorkflow/DeleteCmsEntryWorkflowUseCase.js +98 -0
- package/features/wrappers/DeleteCmsEntryWorkflow/DeleteCmsEntryWorkflowUseCase.js.map +1 -0
- package/features/wrappers/DeleteCmsEntryWorkflow/abstractions.d.ts +32 -0
- package/features/wrappers/DeleteCmsEntryWorkflow/abstractions.js +5 -0
- package/features/wrappers/DeleteCmsEntryWorkflow/abstractions.js.map +1 -0
- package/features/wrappers/DeleteCmsEntryWorkflow/feature.d.ts +4 -0
- package/features/wrappers/DeleteCmsEntryWorkflow/feature.js +11 -0
- package/features/wrappers/DeleteCmsEntryWorkflow/feature.js.map +1 -0
- package/features/wrappers/DeleteCmsEntryWorkflow/index.d.ts +1 -0
- package/features/wrappers/DeleteCmsEntryWorkflow/index.js +1 -0
- package/features/wrappers/GetCmsEntryReview/GetCmsEntryReviewUseCase.d.ts +13 -0
- package/features/wrappers/GetCmsEntryReview/GetCmsEntryReviewUseCase.js +40 -0
- package/features/wrappers/GetCmsEntryReview/GetCmsEntryReviewUseCase.js.map +1 -0
- package/features/wrappers/GetCmsEntryReview/abstractions.d.ts +28 -0
- package/features/wrappers/GetCmsEntryReview/abstractions.js +5 -0
- package/features/wrappers/GetCmsEntryReview/abstractions.js.map +1 -0
- package/features/wrappers/GetCmsEntryReview/feature.d.ts +4 -0
- package/features/wrappers/GetCmsEntryReview/feature.js +11 -0
- package/features/wrappers/GetCmsEntryReview/feature.js.map +1 -0
- package/features/wrappers/GetCmsEntryReview/index.d.ts +1 -0
- package/features/wrappers/GetCmsEntryReview/index.js +1 -0
- package/features/wrappers/GetCmsEntryReviewStepRun/GetCmsEntryReviewStepRunUseCase.d.ts +13 -0
- package/features/wrappers/GetCmsEntryReviewStepRun/GetCmsEntryReviewStepRunUseCase.js +39 -0
- package/features/wrappers/GetCmsEntryReviewStepRun/GetCmsEntryReviewStepRunUseCase.js.map +1 -0
- package/features/wrappers/GetCmsEntryReviewStepRun/abstractions.d.ts +33 -0
- package/features/wrappers/GetCmsEntryReviewStepRun/abstractions.js +5 -0
- package/features/wrappers/GetCmsEntryReviewStepRun/abstractions.js.map +1 -0
- package/features/wrappers/GetCmsEntryReviewStepRun/feature.d.ts +4 -0
- package/features/wrappers/GetCmsEntryReviewStepRun/feature.js +11 -0
- package/features/wrappers/GetCmsEntryReviewStepRun/feature.js.map +1 -0
- package/features/wrappers/GetCmsEntryReviewStepRun/index.d.ts +1 -0
- package/features/wrappers/GetCmsEntryReviewStepRun/index.js +1 -0
- package/features/wrappers/GetCmsEntryTargetReview/GetCmsEntryTargetReviewUseCase.d.ts +19 -0
- package/features/wrappers/GetCmsEntryTargetReview/GetCmsEntryTargetReviewUseCase.js +76 -0
- package/features/wrappers/GetCmsEntryTargetReview/GetCmsEntryTargetReviewUseCase.js.map +1 -0
- package/features/wrappers/GetCmsEntryTargetReview/abstractions.d.ts +36 -0
- package/features/wrappers/GetCmsEntryTargetReview/abstractions.js +5 -0
- package/features/wrappers/GetCmsEntryTargetReview/abstractions.js.map +1 -0
- package/features/wrappers/GetCmsEntryTargetReview/feature.d.ts +4 -0
- package/features/wrappers/GetCmsEntryTargetReview/feature.js +11 -0
- package/features/wrappers/GetCmsEntryTargetReview/feature.js.map +1 -0
- package/features/wrappers/GetCmsEntryTargetReview/index.d.ts +1 -0
- package/features/wrappers/GetCmsEntryTargetReview/index.js +1 -0
- package/features/wrappers/GetCmsEntryWorkflow/GetCmsEntryWorkflowUseCase.d.ts +13 -0
- package/features/wrappers/GetCmsEntryWorkflow/GetCmsEntryWorkflowUseCase.js +34 -0
- package/features/wrappers/GetCmsEntryWorkflow/GetCmsEntryWorkflowUseCase.js.map +1 -0
- package/features/wrappers/GetCmsEntryWorkflow/abstractions.d.ts +24 -0
- package/features/wrappers/GetCmsEntryWorkflow/abstractions.js +5 -0
- package/features/wrappers/GetCmsEntryWorkflow/abstractions.js.map +1 -0
- package/features/wrappers/GetCmsEntryWorkflow/feature.d.ts +4 -0
- package/features/wrappers/GetCmsEntryWorkflow/feature.js +11 -0
- package/features/wrappers/GetCmsEntryWorkflow/feature.js.map +1 -0
- package/features/wrappers/GetCmsEntryWorkflow/index.d.ts +1 -0
- package/features/wrappers/GetCmsEntryWorkflow/index.js +1 -0
- package/features/wrappers/InspectCmsEntryRouting/InspectCmsEntryRoutingUseCase.d.ts +19 -0
- package/features/wrappers/InspectCmsEntryRouting/InspectCmsEntryRoutingUseCase.js +54 -0
- package/features/wrappers/InspectCmsEntryRouting/InspectCmsEntryRoutingUseCase.js.map +1 -0
- package/features/wrappers/InspectCmsEntryRouting/abstractions.d.ts +37 -0
- package/features/wrappers/InspectCmsEntryRouting/abstractions.js +5 -0
- package/features/wrappers/InspectCmsEntryRouting/abstractions.js.map +1 -0
- package/features/wrappers/InspectCmsEntryRouting/feature.d.ts +4 -0
- package/features/wrappers/InspectCmsEntryRouting/feature.js +11 -0
- package/features/wrappers/InspectCmsEntryRouting/feature.js.map +1 -0
- package/features/wrappers/InspectCmsEntryRouting/index.d.ts +1 -0
- package/features/wrappers/InspectCmsEntryRouting/index.js +1 -0
- package/features/wrappers/ListCmsEntryBlockingReviews/ListCmsEntryBlockingReviewsUseCase.d.ts +25 -0
- package/features/wrappers/ListCmsEntryBlockingReviews/ListCmsEntryBlockingReviewsUseCase.js +109 -0
- package/features/wrappers/ListCmsEntryBlockingReviews/ListCmsEntryBlockingReviewsUseCase.js.map +1 -0
- package/features/wrappers/ListCmsEntryBlockingReviews/abstractions.d.ts +36 -0
- package/features/wrappers/ListCmsEntryBlockingReviews/abstractions.js +6 -0
- package/features/wrappers/ListCmsEntryBlockingReviews/abstractions.js.map +1 -0
- package/features/wrappers/ListCmsEntryBlockingReviews/feature.d.ts +4 -0
- package/features/wrappers/ListCmsEntryBlockingReviews/feature.js +11 -0
- package/features/wrappers/ListCmsEntryBlockingReviews/feature.js.map +1 -0
- package/features/wrappers/ListCmsEntryBlockingReviews/index.d.ts +1 -0
- package/features/wrappers/ListCmsEntryBlockingReviews/index.js +1 -0
- package/features/wrappers/ListCmsEntryReviewStepCandidates/ListCmsEntryReviewStepCandidatesUseCase.d.ts +13 -0
- package/features/wrappers/ListCmsEntryReviewStepCandidates/ListCmsEntryReviewStepCandidatesUseCase.js +41 -0
- package/features/wrappers/ListCmsEntryReviewStepCandidates/ListCmsEntryReviewStepCandidatesUseCase.js.map +1 -0
- package/features/wrappers/ListCmsEntryReviewStepCandidates/abstractions.d.ts +30 -0
- package/features/wrappers/ListCmsEntryReviewStepCandidates/abstractions.js +5 -0
- package/features/wrappers/ListCmsEntryReviewStepCandidates/abstractions.js.map +1 -0
- package/features/wrappers/ListCmsEntryReviewStepCandidates/feature.d.ts +4 -0
- package/features/wrappers/ListCmsEntryReviewStepCandidates/feature.js +11 -0
- package/features/wrappers/ListCmsEntryReviewStepCandidates/feature.js.map +1 -0
- package/features/wrappers/ListCmsEntryReviewStepCandidates/index.d.ts +1 -0
- package/features/wrappers/ListCmsEntryReviewStepCandidates/index.js +1 -0
- package/features/wrappers/ListCmsEntryReviews/ListCmsEntryReviewsUseCase.d.ts +17 -0
- package/features/wrappers/ListCmsEntryReviews/ListCmsEntryReviewsUseCase.js +85 -0
- package/features/wrappers/ListCmsEntryReviews/ListCmsEntryReviewsUseCase.js.map +1 -0
- package/features/wrappers/ListCmsEntryReviews/abstractions.d.ts +50 -0
- package/features/wrappers/ListCmsEntryReviews/abstractions.js +5 -0
- package/features/wrappers/ListCmsEntryReviews/abstractions.js.map +1 -0
- package/features/wrappers/ListCmsEntryReviews/feature.d.ts +4 -0
- package/features/wrappers/ListCmsEntryReviews/feature.js +11 -0
- package/features/wrappers/ListCmsEntryReviews/feature.js.map +1 -0
- package/features/wrappers/ListCmsEntryReviews/index.d.ts +1 -0
- package/features/wrappers/ListCmsEntryReviews/index.js +1 -0
- package/features/wrappers/ListCmsEntryStepCandidates/ListCmsEntryStepCandidatesUseCase.d.ts +25 -0
- package/features/wrappers/ListCmsEntryStepCandidates/ListCmsEntryStepCandidatesUseCase.js +83 -0
- package/features/wrappers/ListCmsEntryStepCandidates/ListCmsEntryStepCandidatesUseCase.js.map +1 -0
- package/features/wrappers/ListCmsEntryStepCandidates/abstractions.d.ts +41 -0
- package/features/wrappers/ListCmsEntryStepCandidates/abstractions.js +5 -0
- package/features/wrappers/ListCmsEntryStepCandidates/abstractions.js.map +1 -0
- package/features/wrappers/ListCmsEntryStepCandidates/feature.d.ts +4 -0
- package/features/wrappers/ListCmsEntryStepCandidates/feature.js +11 -0
- package/features/wrappers/ListCmsEntryStepCandidates/feature.js.map +1 -0
- package/features/wrappers/ListCmsEntryStepCandidates/index.d.ts +1 -0
- package/features/wrappers/ListCmsEntryStepCandidates/index.js +1 -0
- package/features/wrappers/ListCmsEntryWorkflowModels/ListCmsEntryWorkflowModelsUseCase.d.ts +17 -0
- package/features/wrappers/ListCmsEntryWorkflowModels/ListCmsEntryWorkflowModelsUseCase.js +106 -0
- package/features/wrappers/ListCmsEntryWorkflowModels/ListCmsEntryWorkflowModelsUseCase.js.map +1 -0
- package/features/wrappers/ListCmsEntryWorkflowModels/abstractions.d.ts +58 -0
- package/features/wrappers/ListCmsEntryWorkflowModels/abstractions.js +5 -0
- package/features/wrappers/ListCmsEntryWorkflowModels/abstractions.js.map +1 -0
- package/features/wrappers/ListCmsEntryWorkflowModels/feature.d.ts +4 -0
- package/features/wrappers/ListCmsEntryWorkflowModels/feature.js +11 -0
- package/features/wrappers/ListCmsEntryWorkflowModels/feature.js.map +1 -0
- package/features/wrappers/ListCmsEntryWorkflowModels/index.d.ts +2 -0
- package/features/wrappers/ListCmsEntryWorkflowModels/index.js +1 -0
- package/features/wrappers/ListCmsEntryWorkflowModels/modelListCursor.d.ts +8 -0
- package/features/wrappers/ListCmsEntryWorkflowModels/modelListCursor.js +20 -0
- package/features/wrappers/ListCmsEntryWorkflowModels/modelListCursor.js.map +1 -0
- package/features/wrappers/ListCmsEntryWorkflows/ListCmsEntryWorkflowsUseCase.d.ts +17 -0
- package/features/wrappers/ListCmsEntryWorkflows/ListCmsEntryWorkflowsUseCase.js +43 -0
- package/features/wrappers/ListCmsEntryWorkflows/ListCmsEntryWorkflowsUseCase.js.map +1 -0
- package/features/wrappers/ListCmsEntryWorkflows/abstractions.d.ts +24 -0
- package/features/wrappers/ListCmsEntryWorkflows/abstractions.js +5 -0
- package/features/wrappers/ListCmsEntryWorkflows/abstractions.js.map +1 -0
- package/features/wrappers/ListCmsEntryWorkflows/feature.d.ts +4 -0
- package/features/wrappers/ListCmsEntryWorkflows/feature.js +11 -0
- package/features/wrappers/ListCmsEntryWorkflows/feature.js.map +1 -0
- package/features/wrappers/ListCmsEntryWorkflows/index.d.ts +1 -0
- package/features/wrappers/ListCmsEntryWorkflows/index.js +1 -0
- package/features/wrappers/ReassignCmsEntryReviewStep/ReassignCmsEntryReviewStepUseCase.d.ts +13 -0
- package/features/wrappers/ReassignCmsEntryReviewStep/ReassignCmsEntryReviewStepUseCase.js +40 -0
- package/features/wrappers/ReassignCmsEntryReviewStep/ReassignCmsEntryReviewStepUseCase.js.map +1 -0
- package/features/wrappers/ReassignCmsEntryReviewStep/abstractions.d.ts +32 -0
- package/features/wrappers/ReassignCmsEntryReviewStep/abstractions.js +5 -0
- package/features/wrappers/ReassignCmsEntryReviewStep/abstractions.js.map +1 -0
- package/features/wrappers/ReassignCmsEntryReviewStep/feature.d.ts +4 -0
- package/features/wrappers/ReassignCmsEntryReviewStep/feature.js +11 -0
- package/features/wrappers/ReassignCmsEntryReviewStep/feature.js.map +1 -0
- package/features/wrappers/ReassignCmsEntryReviewStep/index.d.ts +1 -0
- package/features/wrappers/ReassignCmsEntryReviewStep/index.js +1 -0
- package/features/wrappers/RejectCmsEntryReviewStep/RejectCmsEntryReviewStepUseCase.d.ts +13 -0
- package/features/wrappers/RejectCmsEntryReviewStep/RejectCmsEntryReviewStepUseCase.js +35 -0
- package/features/wrappers/RejectCmsEntryReviewStep/RejectCmsEntryReviewStepUseCase.js.map +1 -0
- package/features/wrappers/RejectCmsEntryReviewStep/abstractions.d.ts +26 -0
- package/features/wrappers/RejectCmsEntryReviewStep/abstractions.js +5 -0
- package/features/wrappers/RejectCmsEntryReviewStep/abstractions.js.map +1 -0
- package/features/wrappers/RejectCmsEntryReviewStep/feature.d.ts +4 -0
- package/features/wrappers/RejectCmsEntryReviewStep/feature.js +11 -0
- package/features/wrappers/RejectCmsEntryReviewStep/feature.js.map +1 -0
- package/features/wrappers/RejectCmsEntryReviewStep/index.d.ts +1 -0
- package/features/wrappers/RejectCmsEntryReviewStep/index.js +1 -0
- package/features/wrappers/RequestCmsEntryReview/RequestCmsEntryReviewUseCase.d.ts +21 -0
- package/features/wrappers/RequestCmsEntryReview/RequestCmsEntryReviewUseCase.js +63 -0
- package/features/wrappers/RequestCmsEntryReview/RequestCmsEntryReviewUseCase.js.map +1 -0
- package/features/wrappers/RequestCmsEntryReview/abstractions.d.ts +38 -0
- package/features/wrappers/RequestCmsEntryReview/abstractions.js +5 -0
- package/features/wrappers/RequestCmsEntryReview/abstractions.js.map +1 -0
- package/features/wrappers/RequestCmsEntryReview/feature.d.ts +4 -0
- package/features/wrappers/RequestCmsEntryReview/feature.js +11 -0
- package/features/wrappers/RequestCmsEntryReview/feature.js.map +1 -0
- package/features/wrappers/RequestCmsEntryReview/index.d.ts +1 -0
- package/features/wrappers/RequestCmsEntryReview/index.js +1 -0
- package/features/wrappers/RestartCmsEntryReviewStep/RestartCmsEntryReviewStepUseCase.d.ts +13 -0
- package/features/wrappers/RestartCmsEntryReviewStep/RestartCmsEntryReviewStepUseCase.js +39 -0
- package/features/wrappers/RestartCmsEntryReviewStep/RestartCmsEntryReviewStepUseCase.js.map +1 -0
- package/features/wrappers/RestartCmsEntryReviewStep/abstractions.d.ts +30 -0
- package/features/wrappers/RestartCmsEntryReviewStep/abstractions.js +5 -0
- package/features/wrappers/RestartCmsEntryReviewStep/abstractions.js.map +1 -0
- package/features/wrappers/RestartCmsEntryReviewStep/feature.d.ts +4 -0
- package/features/wrappers/RestartCmsEntryReviewStep/feature.js +11 -0
- package/features/wrappers/RestartCmsEntryReviewStep/feature.js.map +1 -0
- package/features/wrappers/RestartCmsEntryReviewStep/index.d.ts +1 -0
- package/features/wrappers/RestartCmsEntryReviewStep/index.js +1 -0
- package/features/wrappers/StartCmsEntryReviewStep/StartCmsEntryReviewStepUseCase.d.ts +13 -0
- package/features/wrappers/StartCmsEntryReviewStep/StartCmsEntryReviewStepUseCase.js +34 -0
- package/features/wrappers/StartCmsEntryReviewStep/StartCmsEntryReviewStepUseCase.js.map +1 -0
- package/features/wrappers/StartCmsEntryReviewStep/abstractions.d.ts +25 -0
- package/features/wrappers/StartCmsEntryReviewStep/abstractions.js +5 -0
- package/features/wrappers/StartCmsEntryReviewStep/abstractions.js.map +1 -0
- package/features/wrappers/StartCmsEntryReviewStep/feature.d.ts +4 -0
- package/features/wrappers/StartCmsEntryReviewStep/feature.js +11 -0
- package/features/wrappers/StartCmsEntryReviewStep/feature.js.map +1 -0
- package/features/wrappers/StartCmsEntryReviewStep/index.d.ts +1 -0
- package/features/wrappers/StartCmsEntryReviewStep/index.js +1 -0
- package/features/wrappers/StoreCmsEntryWorkflow/StoreCmsEntryWorkflowUseCase.d.ts +17 -0
- package/features/wrappers/StoreCmsEntryWorkflow/StoreCmsEntryWorkflowUseCase.js +57 -0
- package/features/wrappers/StoreCmsEntryWorkflow/StoreCmsEntryWorkflowUseCase.js.map +1 -0
- package/features/wrappers/StoreCmsEntryWorkflow/abstractions.d.ts +32 -0
- package/features/wrappers/StoreCmsEntryWorkflow/abstractions.js +5 -0
- package/features/wrappers/StoreCmsEntryWorkflow/abstractions.js.map +1 -0
- package/features/wrappers/StoreCmsEntryWorkflow/feature.d.ts +4 -0
- package/features/wrappers/StoreCmsEntryWorkflow/feature.js +11 -0
- package/features/wrappers/StoreCmsEntryWorkflow/feature.js.map +1 -0
- package/features/wrappers/StoreCmsEntryWorkflow/index.d.ts +1 -0
- package/features/wrappers/StoreCmsEntryWorkflow/index.js +1 -0
- package/features/wrappers/TakeOverCmsEntryReviewStep/TakeOverCmsEntryReviewStepUseCase.d.ts +13 -0
- package/features/wrappers/TakeOverCmsEntryReviewStep/TakeOverCmsEntryReviewStepUseCase.js +35 -0
- package/features/wrappers/TakeOverCmsEntryReviewStep/TakeOverCmsEntryReviewStepUseCase.js.map +1 -0
- package/features/wrappers/TakeOverCmsEntryReviewStep/abstractions.d.ts +27 -0
- package/features/wrappers/TakeOverCmsEntryReviewStep/abstractions.js +5 -0
- package/features/wrappers/TakeOverCmsEntryReviewStep/abstractions.js.map +1 -0
- package/features/wrappers/TakeOverCmsEntryReviewStep/feature.d.ts +4 -0
- package/features/wrappers/TakeOverCmsEntryReviewStep/feature.js +11 -0
- package/features/wrappers/TakeOverCmsEntryReviewStep/feature.js.map +1 -0
- package/features/wrappers/TakeOverCmsEntryReviewStep/index.d.ts +1 -0
- package/features/wrappers/TakeOverCmsEntryReviewStep/index.js +1 -0
- package/features/wrappers/feature.d.ts +9 -0
- package/features/wrappers/feature.js +57 -0
- package/features/wrappers/feature.js.map +1 -0
- package/features/wrappers/shared/cmsWorkflows.d.ts +6 -0
- package/features/wrappers/shared/cmsWorkflows.js +8 -0
- package/features/wrappers/shared/cmsWorkflows.js.map +1 -0
- package/graphql/CmsWorkflowsSchemaFactory.d.ts +14 -0
- package/graphql/CmsWorkflowsSchemaFactory.js +695 -0
- package/graphql/CmsWorkflowsSchemaFactory.js.map +1 -0
- package/graphql/entrySystemSchema.d.ts +5 -1
- package/graphql/entrySystemSchema.js +3 -2
- package/graphql/entrySystemSchema.js.map +1 -1
- package/graphql/isValidRevisionId.d.ts +6 -0
- package/graphql/isValidRevisionId.js +9 -0
- package/graphql/isValidRevisionId.js.map +1 -0
- package/index.d.ts +2 -1
- package/index.js +1 -19
- package/package.json +22 -16
- package/types.d.ts +24 -0
- package/types.js +0 -0
- package/utils/appName.d.ts +9 -5
- package/utils/appName.js +6 -4
- package/utils/appName.js.map +1 -1
- package/utils/folderType.d.ts +4 -0
- package/utils/folderType.js +9 -0
- package/utils/folderType.js.map +1 -0
- package/utils/isBindableModel.d.ts +9 -0
- package/utils/isBindableModel.js +8 -0
- package/utils/isBindableModel.js.map +1 -0
- package/features/EntryWorkflows/decorators/CmsWorkflowStateContextProvider.d.ts +0 -15
- package/features/EntryWorkflows/decorators/CmsWorkflowStateContextProvider.js +0 -35
- package/features/EntryWorkflows/decorators/CmsWorkflowStateContextProvider.js.map +0 -1
- package/features/EntryWorkflows/decorators/CmsWorkflowStateFilter.d.ts +0 -13
- package/features/EntryWorkflows/decorators/CmsWorkflowStateFilter.js +0 -45
- package/features/EntryWorkflows/decorators/CmsWorkflowStateFilter.js.map +0 -1
- package/features/EntryWorkflows/errors.d.ts +0 -11
- package/features/EntryWorkflows/errors.js +0 -12
- package/features/EntryWorkflows/errors.js.map +0 -1
- package/features/EntryWorkflows/feature.js +0 -29
- package/features/EntryWorkflows/feature.js.map +0 -1
- package/features/EntryWorkflows/handlers/BlockMoveOnActiveWorkflowState.d.ts +0 -11
- package/features/EntryWorkflows/handlers/BlockMoveOnActiveWorkflowState.js +0 -37
- package/features/EntryWorkflows/handlers/BlockMoveOnActiveWorkflowState.js.map +0 -1
- package/features/EntryWorkflows/handlers/ClearEntryStateOnWorkflowStateAfterDelete.d.ts +0 -13
- package/features/EntryWorkflows/handlers/ClearEntryStateOnWorkflowStateAfterDelete.js +0 -35
- package/features/EntryWorkflows/handlers/ClearEntryStateOnWorkflowStateAfterDelete.js.map +0 -1
- package/features/EntryWorkflows/handlers/ClearEntryStateOnWorkflowStateCancel.d.ts +0 -13
- package/features/EntryWorkflows/handlers/ClearEntryStateOnWorkflowStateCancel.js +0 -35
- package/features/EntryWorkflows/handlers/ClearEntryStateOnWorkflowStateCancel.js.map +0 -1
- package/features/EntryWorkflows/handlers/DeleteWorkflowStateOnEntryAfterDelete.d.ts +0 -11
- package/features/EntryWorkflows/handlers/DeleteWorkflowStateOnEntryAfterDelete.js +0 -26
- package/features/EntryWorkflows/handlers/DeleteWorkflowStateOnEntryAfterDelete.js.map +0 -1
- package/features/EntryWorkflows/handlers/DeleteWorkflowsOnModelAfterDelete.d.ts +0 -13
- package/features/EntryWorkflows/handlers/DeleteWorkflowsOnModelAfterDelete.js +0 -42
- package/features/EntryWorkflows/handlers/DeleteWorkflowsOnModelAfterDelete.js.map +0 -1
- package/features/EntryWorkflows/handlers/UpdateEntryOnWorkflowStateAfterCreate.d.ts +0 -13
- package/features/EntryWorkflows/handlers/UpdateEntryOnWorkflowStateAfterCreate.js +0 -37
- package/features/EntryWorkflows/handlers/UpdateEntryOnWorkflowStateAfterCreate.js.map +0 -1
- package/features/EntryWorkflows/handlers/UpdateEntryOnWorkflowStateAfterUpdate.d.ts +0 -13
- package/features/EntryWorkflows/handlers/UpdateEntryOnWorkflowStateAfterUpdate.js +0 -36
- package/features/EntryWorkflows/handlers/UpdateEntryOnWorkflowStateAfterUpdate.js.map +0 -1
- package/features/EntryWorkflows/handlers/ValidateWorkflowStateOnEntryBeforePublish.d.ts +0 -11
- package/features/EntryWorkflows/handlers/ValidateWorkflowStateOnEntryBeforePublish.js +0 -46
- package/features/EntryWorkflows/handlers/ValidateWorkflowStateOnEntryBeforePublish.js.map +0 -1
- package/features/EntryWorkflows/index.d.ts +0 -1
- package/features/EntryWorkflows/index.js +0 -1
- package/index.js.map +0 -1
- package/utils/modelAllowed.d.ts +0 -2
- package/utils/modelAllowed.js +0 -9
- package/utils/modelAllowed.js.map +0 -1
- package/utils/state.d.ts +0 -3
- package/utils/state.js +0 -12
- package/utils/state.js.map +0 -1
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { CurrentReviewViewer } from "@webiny/api-workflows/features/identity/CurrentReviewViewer/index.js";
|
|
3
|
+
import { WorkflowsPermissions } from "@webiny/api-workflows/features/permissions/WorkflowsPermissions/index.js";
|
|
4
|
+
import { GetWorkflowUseCase } from "@webiny/api-workflows/features/workflow/GetWorkflow/index.js";
|
|
5
|
+
import { DeleteWorkflowUseCase } from "@webiny/api-workflows/features/workflow/DeleteWorkflow/index.js";
|
|
6
|
+
import { WorkflowsNotAuthorizedError } from "@webiny/api-workflows/domain/permissions/errors.js";
|
|
7
|
+
import { WorkflowHasActiveReviewsError, WorkflowNotFoundError, WorkflowPersistenceError } from "@webiny/api-workflows/domain/workflow/errors.js";
|
|
8
|
+
import { ReadableBlockingReviewsService } from "@webiny/api-workflows/features/workflow/ReadableBlockingReviews/index.js";
|
|
9
|
+
import { CmsEntryTargetReader } from "../../target/CmsEntryTargetReader/index.js";
|
|
10
|
+
import { CmsEntryDeniedFolders } from "../../target/CmsEntryDeniedFolders/index.js";
|
|
11
|
+
import { CmsEntryAccess } from "../../target/CmsEntryAccess/index.js";
|
|
12
|
+
import { isCmsWorkflow } from "../shared/cmsWorkflows.js";
|
|
13
|
+
import { DeleteCmsEntryWorkflowUseCase } from "./abstractions.js";
|
|
14
|
+
class DeleteCmsEntryWorkflowUseCaseImpl {
|
|
15
|
+
constructor(viewer, permissions, getWorkflow, deleteWorkflow, targets, access, readableBlockingReviews, deniedFolders){
|
|
16
|
+
this.viewer = viewer;
|
|
17
|
+
this.permissions = permissions;
|
|
18
|
+
this.getWorkflow = getWorkflow;
|
|
19
|
+
this.deleteWorkflow = deleteWorkflow;
|
|
20
|
+
this.targets = targets;
|
|
21
|
+
this.access = access;
|
|
22
|
+
this.readableBlockingReviews = readableBlockingReviews;
|
|
23
|
+
this.deniedFolders = deniedFolders;
|
|
24
|
+
}
|
|
25
|
+
async execute(input) {
|
|
26
|
+
const actor = this.viewer.getActor();
|
|
27
|
+
if (actor.isFail()) return Result.fail(actor.error);
|
|
28
|
+
let canEdit;
|
|
29
|
+
try {
|
|
30
|
+
canEdit = await this.permissions.canEdit();
|
|
31
|
+
} catch (error) {
|
|
32
|
+
return Result.fail(new WorkflowPersistenceError(error instanceof Error ? error : new Error(String(error))));
|
|
33
|
+
}
|
|
34
|
+
if (!canEdit) return Result.fail(new WorkflowsNotAuthorizedError({
|
|
35
|
+
action: "manage workflows"
|
|
36
|
+
}));
|
|
37
|
+
const existing = await this.getWorkflow.execute({
|
|
38
|
+
id: input.id
|
|
39
|
+
});
|
|
40
|
+
if (existing.isFail()) return Result.fail(existing.error);
|
|
41
|
+
if (!isCmsWorkflow(existing.value)) return Result.fail(new WorkflowNotFoundError({
|
|
42
|
+
id: input.id
|
|
43
|
+
}));
|
|
44
|
+
const deleted = await this.deleteWorkflow.execute({
|
|
45
|
+
id: input.id,
|
|
46
|
+
actor: actor.value
|
|
47
|
+
});
|
|
48
|
+
if (deleted.isFail() && deleted.error instanceof WorkflowHasActiveReviewsError) {
|
|
49
|
+
const reviews = await this.readableBlockingReviews.filter(deleted.error.data.reviews, async (blockingReviews)=>{
|
|
50
|
+
const revisionIdsByModel = new Map();
|
|
51
|
+
for (const review of blockingReviews){
|
|
52
|
+
const revisionIds = revisionIdsByModel.get(review.model) ?? [];
|
|
53
|
+
revisionIds.push(review.targetRevisionId);
|
|
54
|
+
revisionIdsByModel.set(review.model, revisionIds);
|
|
55
|
+
}
|
|
56
|
+
const targets = new Map();
|
|
57
|
+
for (const [model, targetRevisionIds] of revisionIdsByModel){
|
|
58
|
+
const read = await this.targets.readMany({
|
|
59
|
+
model,
|
|
60
|
+
targetRevisionIds
|
|
61
|
+
});
|
|
62
|
+
for (const target of read)targets.set(`${model}:${target.entry.id}`, target);
|
|
63
|
+
}
|
|
64
|
+
const modelIds = Array.from(targets.values()).map((target)=>target.model.modelId);
|
|
65
|
+
const folderRule = await this.deniedFolders.createFolderReadRule(modelIds);
|
|
66
|
+
const readable = [];
|
|
67
|
+
for (const review of blockingReviews){
|
|
68
|
+
const target = targets.get(`${review.model}:${review.targetRevisionId}`);
|
|
69
|
+
if (target && target.entry.entryId === review.targetId) {
|
|
70
|
+
if (await this.access.canRead(target, folderRule)) readable.push(review);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return readable;
|
|
74
|
+
});
|
|
75
|
+
return Result.fail(new WorkflowHasActiveReviewsError({
|
|
76
|
+
count: deleted.error.data.count,
|
|
77
|
+
reviews
|
|
78
|
+
}));
|
|
79
|
+
}
|
|
80
|
+
return deleted;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
const DeleteCmsEntryWorkflowUseCase_DeleteCmsEntryWorkflowUseCase = DeleteCmsEntryWorkflowUseCase.createImplementation({
|
|
84
|
+
implementation: DeleteCmsEntryWorkflowUseCaseImpl,
|
|
85
|
+
dependencies: [
|
|
86
|
+
CurrentReviewViewer,
|
|
87
|
+
WorkflowsPermissions,
|
|
88
|
+
GetWorkflowUseCase,
|
|
89
|
+
DeleteWorkflowUseCase,
|
|
90
|
+
CmsEntryTargetReader,
|
|
91
|
+
CmsEntryAccess,
|
|
92
|
+
ReadableBlockingReviewsService,
|
|
93
|
+
CmsEntryDeniedFolders
|
|
94
|
+
]
|
|
95
|
+
});
|
|
96
|
+
export { DeleteCmsEntryWorkflowUseCase_DeleteCmsEntryWorkflowUseCase as DeleteCmsEntryWorkflowUseCase };
|
|
97
|
+
|
|
98
|
+
//# sourceMappingURL=DeleteCmsEntryWorkflowUseCase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/wrappers/DeleteCmsEntryWorkflow/DeleteCmsEntryWorkflowUseCase.js","sources":["../../../../src/features/wrappers/DeleteCmsEntryWorkflow/DeleteCmsEntryWorkflowUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { CurrentReviewViewer } from \"@webiny/api-workflows/features/identity/CurrentReviewViewer/index.js\";\nimport { WorkflowsPermissions } from \"@webiny/api-workflows/features/permissions/WorkflowsPermissions/index.js\";\nimport { GetWorkflowUseCase } from \"@webiny/api-workflows/features/workflow/GetWorkflow/index.js\";\nimport { DeleteWorkflowUseCase } from \"@webiny/api-workflows/features/workflow/DeleteWorkflow/index.js\";\nimport { WorkflowsNotAuthorizedError } from \"@webiny/api-workflows/domain/permissions/errors.js\";\nimport {\n WorkflowHasActiveReviewsError,\n WorkflowNotFoundError,\n WorkflowPersistenceError\n} from \"@webiny/api-workflows/domain/workflow/errors.js\";\nimport { ReadableBlockingReviewsService } from \"@webiny/api-workflows/features/workflow/ReadableBlockingReviews/index.js\";\nimport type { WorkflowBlockingReview } from \"@webiny/api-workflows/domain/workflow/types.js\";\nimport { CmsEntryTargetReader } from \"~/features/target/CmsEntryTargetReader/index.js\";\nimport { CmsEntryDeniedFolders } from \"~/features/target/CmsEntryDeniedFolders/index.js\";\nimport { CmsEntryAccess } from \"~/features/target/CmsEntryAccess/index.js\";\nimport { isCmsWorkflow } from \"../shared/cmsWorkflows.js\";\nimport { DeleteCmsEntryWorkflowUseCase as UseCase } from \"./abstractions.js\";\n\nclass DeleteCmsEntryWorkflowUseCaseImpl implements UseCase.Interface {\n public constructor(\n private viewer: CurrentReviewViewer.Interface,\n private permissions: WorkflowsPermissions.Interface,\n private getWorkflow: GetWorkflowUseCase.Interface,\n private deleteWorkflow: DeleteWorkflowUseCase.Interface,\n private targets: CmsEntryTargetReader.Interface,\n private access: CmsEntryAccess.Interface,\n private readableBlockingReviews: ReadableBlockingReviewsService.Interface,\n private deniedFolders: CmsEntryDeniedFolders.Interface\n ) {}\n\n public async execute(input: UseCase.Input): UseCase.Return {\n const actor = this.viewer.getActor();\n if (actor.isFail()) {\n return Result.fail(actor.error);\n }\n let canEdit: boolean;\n try {\n canEdit = await this.permissions.canEdit();\n } catch (error) {\n return Result.fail(\n new WorkflowPersistenceError(\n error instanceof Error ? error : new Error(String(error))\n )\n );\n }\n if (!canEdit) {\n return Result.fail(new WorkflowsNotAuthorizedError({ action: \"manage workflows\" }));\n }\n\n const existing = await this.getWorkflow.execute({ id: input.id });\n if (existing.isFail()) {\n return Result.fail(existing.error);\n }\n if (!isCmsWorkflow(existing.value)) {\n return Result.fail(new WorkflowNotFoundError({ id: input.id }));\n }\n\n const deleted = await this.deleteWorkflow.execute({ id: input.id, actor: actor.value });\n if (deleted.isFail() && deleted.error instanceof WorkflowHasActiveReviewsError) {\n // The first 5 the caller can read, at most 50 checked; the count stays exact (D115, R76).\n // The targets are read in one batch per model and checked in memory (Q79); a failed\n // read throws, which the service counts as unreadable.\n const reviews = await this.readableBlockingReviews.filter(\n deleted.error.data.reviews,\n async blockingReviews => {\n const revisionIdsByModel = new Map<string, string[]>();\n for (const review of blockingReviews) {\n const revisionIds = revisionIdsByModel.get(review.model) ?? [];\n revisionIds.push(review.targetRevisionId);\n revisionIdsByModel.set(review.model, revisionIds);\n }\n // Keyed by namespace and revision id.\n const targets = new Map<string, CmsEntryTargetReader.Target>();\n for (const [model, targetRevisionIds] of revisionIdsByModel) {\n // One read per model of the workflow, not per review.\n // oxlint-disable-next-line no-await-in-loop -- one batch read per model of the workflow.\n const read = await this.targets.readMany({ model, targetRevisionIds });\n for (const target of read) {\n targets.set(`${model}:${target.entry.id}`, target);\n }\n }\n const modelIds = Array.from(targets.values()).map(target => {\n return target.model.modelId;\n });\n const folderRule = await this.deniedFolders.createFolderReadRule(modelIds);\n\n const readable: WorkflowBlockingReview[] = [];\n for (const review of blockingReviews) {\n const target = targets.get(`${review.model}:${review.targetRevisionId}`);\n if (!target || target.entry.entryId !== review.targetId) {\n continue;\n }\n // oxlint-disable-next-line no-await-in-loop -- in memory: the folder rule and permissions are already loaded.\n if (await this.access.canRead(target, folderRule)) {\n readable.push(review);\n }\n }\n return readable;\n }\n );\n return Result.fail(\n new WorkflowHasActiveReviewsError({ count: deleted.error.data.count, reviews })\n );\n }\n return deleted;\n }\n}\n\nexport const DeleteCmsEntryWorkflowUseCase = UseCase.createImplementation({\n implementation: DeleteCmsEntryWorkflowUseCaseImpl,\n dependencies: [\n CurrentReviewViewer,\n WorkflowsPermissions,\n GetWorkflowUseCase,\n DeleteWorkflowUseCase,\n CmsEntryTargetReader,\n CmsEntryAccess,\n ReadableBlockingReviewsService,\n CmsEntryDeniedFolders\n ]\n});\n"],"names":["DeleteCmsEntryWorkflowUseCaseImpl","viewer","permissions","getWorkflow","deleteWorkflow","targets","access","readableBlockingReviews","deniedFolders","input","actor","Result","canEdit","error","WorkflowPersistenceError","Error","String","WorkflowsNotAuthorizedError","existing","isCmsWorkflow","WorkflowNotFoundError","deleted","WorkflowHasActiveReviewsError","reviews","blockingReviews","revisionIdsByModel","Map","review","revisionIds","model","targetRevisionIds","read","target","modelIds","Array","folderRule","readable","DeleteCmsEntryWorkflowUseCase","UseCase","CurrentReviewViewer","WorkflowsPermissions","GetWorkflowUseCase","DeleteWorkflowUseCase","CmsEntryTargetReader","CmsEntryAccess","ReadableBlockingReviewsService","CmsEntryDeniedFolders"],"mappings":";;;;;;;;;;;;;AAmBA,MAAMA;IACF,YACYC,MAAqC,EACrCC,WAA2C,EAC3CC,WAAyC,EACzCC,cAA+C,EAC/CC,OAAuC,EACvCC,MAAgC,EAChCC,uBAAiE,EACjEC,aAA8C,CACxD;aARUP,MAAM,GAANA;aACAC,WAAW,GAAXA;aACAC,WAAW,GAAXA;aACAC,cAAc,GAAdA;aACAC,OAAO,GAAPA;aACAC,MAAM,GAANA;aACAC,uBAAuB,GAAvBA;aACAC,aAAa,GAAbA;IACT;IAEH,MAAa,QAAQC,KAAoB,EAAkB;QACvD,MAAMC,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ;QAClC,IAAIA,MAAM,MAAM,IACZ,OAAOC,OAAO,IAAI,CAACD,MAAM,KAAK;QAElC,IAAIE;QACJ,IAAI;YACAA,UAAU,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO;QAC5C,EAAE,OAAOC,OAAO;YACZ,OAAOF,OAAO,IAAI,CACd,IAAIG,yBACAD,iBAAiBE,QAAQF,QAAQ,IAAIE,MAAMC,OAAOH;QAG9D;QACA,IAAI,CAACD,SACD,OAAOD,OAAO,IAAI,CAAC,IAAIM,4BAA4B;YAAE,QAAQ;QAAmB;QAGpF,MAAMC,WAAW,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;YAAE,IAAIT,MAAM,EAAE;QAAC;QAC/D,IAAIS,SAAS,MAAM,IACf,OAAOP,OAAO,IAAI,CAACO,SAAS,KAAK;QAErC,IAAI,CAACC,cAAcD,SAAS,KAAK,GAC7B,OAAOP,OAAO,IAAI,CAAC,IAAIS,sBAAsB;YAAE,IAAIX,MAAM,EAAE;QAAC;QAGhE,MAAMY,UAAU,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;YAAE,IAAIZ,MAAM,EAAE;YAAE,OAAOC,MAAM,KAAK;QAAC;QACrF,IAAIW,QAAQ,MAAM,MAAMA,QAAQ,KAAK,YAAYC,+BAA+B;YAI5E,MAAMC,UAAU,MAAM,IAAI,CAAC,uBAAuB,CAAC,MAAM,CACrDF,QAAQ,KAAK,CAAC,IAAI,CAAC,OAAO,EAC1B,OAAMG;gBACF,MAAMC,qBAAqB,IAAIC;gBAC/B,KAAK,MAAMC,UAAUH,gBAAiB;oBAClC,MAAMI,cAAcH,mBAAmB,GAAG,CAACE,OAAO,KAAK,KAAK,EAAE;oBAC9DC,YAAY,IAAI,CAACD,OAAO,gBAAgB;oBACxCF,mBAAmB,GAAG,CAACE,OAAO,KAAK,EAAEC;gBACzC;gBAEA,MAAMvB,UAAU,IAAIqB;gBACpB,KAAK,MAAM,CAACG,OAAOC,kBAAkB,IAAIL,mBAAoB;oBAGzD,MAAMM,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;wBAAEF;wBAAOC;oBAAkB;oBACpE,KAAK,MAAME,UAAUD,KACjB1B,QAAQ,GAAG,CAAC,GAAGwB,MAAM,CAAC,EAAEG,OAAO,KAAK,CAAC,EAAE,EAAE,EAAEA;gBAEnD;gBACA,MAAMC,WAAWC,MAAM,IAAI,CAAC7B,QAAQ,MAAM,IAAI,GAAG,CAAC2B,CAAAA,SACvCA,OAAO,KAAK,CAAC,OAAO;gBAE/B,MAAMG,aAAa,MAAM,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAACF;gBAEjE,MAAMG,WAAqC,EAAE;gBAC7C,KAAK,MAAMT,UAAUH,gBAAiB;oBAClC,MAAMQ,SAAS3B,QAAQ,GAAG,CAAC,GAAGsB,OAAO,KAAK,CAAC,CAAC,EAAEA,OAAO,gBAAgB,EAAE;oBACvE,IAAI,AAACK,UAAUA,OAAO,KAAK,CAAC,OAAO,KAAKL,OAAO,QAAQ,EAIvD;wBAAA,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAACK,QAAQG,aAClCC,SAAS,IAAI,CAACT;oBAClB;gBACJ;gBACA,OAAOS;YACX;YAEJ,OAAOzB,OAAO,IAAI,CACd,IAAIW,8BAA8B;gBAAE,OAAOD,QAAQ,KAAK,CAAC,IAAI,CAAC,KAAK;gBAAEE;YAAQ;QAErF;QACA,OAAOF;IACX;AACJ;AAEO,MAAMgB,8DAAgCC,8BAAAA,oBAA4B,CAAC;IACtE,gBAAgBtC;IAChB,cAAc;QACVuC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;KACH;AACL"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { type Result } from "@webiny/feature/api";
|
|
2
|
+
import type { Workflow } from "@webiny/api-workflows/domain/workflow/types.js";
|
|
3
|
+
import type { WorkflowsNotAuthenticatedError, WorkflowsNotAuthorizedError } from "@webiny/api-workflows/domain/permissions/errors.js";
|
|
4
|
+
import type { WorkflowPersistenceError } from "@webiny/api-workflows/domain/workflow/errors.js";
|
|
5
|
+
import type { GetWorkflowUseCase } from "@webiny/api-workflows/features/workflow/GetWorkflow/index.js";
|
|
6
|
+
import type { DeleteWorkflowUseCase } from "@webiny/api-workflows/features/workflow/DeleteWorkflow/index.js";
|
|
7
|
+
export interface DeleteCmsEntryWorkflowInput {
|
|
8
|
+
id: string;
|
|
9
|
+
}
|
|
10
|
+
export interface IDeleteCmsEntryWorkflowUseCaseErrors {
|
|
11
|
+
notAuthenticated: WorkflowsNotAuthenticatedError;
|
|
12
|
+
notAuthorized: WorkflowsNotAuthorizedError;
|
|
13
|
+
persistence: WorkflowPersistenceError;
|
|
14
|
+
get: GetWorkflowUseCase.Error;
|
|
15
|
+
delete: DeleteWorkflowUseCase.Error;
|
|
16
|
+
}
|
|
17
|
+
type UseCaseError = IDeleteCmsEntryWorkflowUseCaseErrors[keyof IDeleteCmsEntryWorkflowUseCaseErrors];
|
|
18
|
+
export interface IDeleteCmsEntryWorkflowUseCase {
|
|
19
|
+
execute(input: DeleteCmsEntryWorkflowInput): Promise<Result<Workflow, UseCaseError>>;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Delete a Headless CMS workflow (spec 4.1, D132): needs `workflows.editor`. When reviews are in
|
|
23
|
+
* progress, the error keeps the exact count and lists up to 5 the caller can read (D115, R57).
|
|
24
|
+
*/
|
|
25
|
+
export declare const DeleteCmsEntryWorkflowUseCase: import("@webiny/di").Abstraction<IDeleteCmsEntryWorkflowUseCase>;
|
|
26
|
+
export declare namespace DeleteCmsEntryWorkflowUseCase {
|
|
27
|
+
type Interface = IDeleteCmsEntryWorkflowUseCase;
|
|
28
|
+
type Input = DeleteCmsEntryWorkflowInput;
|
|
29
|
+
type Error = UseCaseError;
|
|
30
|
+
type Return = Promise<Result<Workflow, UseCaseError>>;
|
|
31
|
+
}
|
|
32
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/wrappers/DeleteCmsEntryWorkflow/abstractions.js","sources":["../../../../src/features/wrappers/DeleteCmsEntryWorkflow/abstractions.ts"],"sourcesContent":["import { createAbstraction, type Result } from \"@webiny/feature/api\";\nimport type { Workflow } from \"@webiny/api-workflows/domain/workflow/types.js\";\nimport type {\n WorkflowsNotAuthenticatedError,\n WorkflowsNotAuthorizedError\n} from \"@webiny/api-workflows/domain/permissions/errors.js\";\nimport type { WorkflowPersistenceError } from \"@webiny/api-workflows/domain/workflow/errors.js\";\nimport type { GetWorkflowUseCase } from \"@webiny/api-workflows/features/workflow/GetWorkflow/index.js\";\nimport type { DeleteWorkflowUseCase } from \"@webiny/api-workflows/features/workflow/DeleteWorkflow/index.js\";\n\nexport interface DeleteCmsEntryWorkflowInput {\n id: string;\n}\n\nexport interface IDeleteCmsEntryWorkflowUseCaseErrors {\n notAuthenticated: WorkflowsNotAuthenticatedError;\n notAuthorized: WorkflowsNotAuthorizedError;\n persistence: WorkflowPersistenceError;\n get: GetWorkflowUseCase.Error;\n delete: DeleteWorkflowUseCase.Error;\n}\n\ntype UseCaseError =\n IDeleteCmsEntryWorkflowUseCaseErrors[keyof IDeleteCmsEntryWorkflowUseCaseErrors];\n\nexport interface IDeleteCmsEntryWorkflowUseCase {\n execute(input: DeleteCmsEntryWorkflowInput): Promise<Result<Workflow, UseCaseError>>;\n}\n\n/**\n * Delete a Headless CMS workflow (spec 4.1, D132): needs `workflows.editor`. When reviews are in\n * progress, the error keeps the exact count and lists up to 5 the caller can read (D115, R57).\n */\nexport const DeleteCmsEntryWorkflowUseCase = createAbstraction<IDeleteCmsEntryWorkflowUseCase>(\n \"DeleteCmsEntryWorkflowUseCase\"\n);\n\nexport namespace DeleteCmsEntryWorkflowUseCase {\n export type Interface = IDeleteCmsEntryWorkflowUseCase;\n export type Input = DeleteCmsEntryWorkflowInput;\n export type Error = UseCaseError;\n export type Return = Promise<Result<Workflow, UseCaseError>>;\n}\n"],"names":["DeleteCmsEntryWorkflowUseCase","createAbstraction"],"mappings":";AAiCO,MAAMA,gCAAgCC,kBACzC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api";
|
|
2
|
+
import { DeleteCmsEntryWorkflowUseCase } from "./DeleteCmsEntryWorkflowUseCase.js";
|
|
3
|
+
const DeleteCmsEntryWorkflowFeature = createFeature({
|
|
4
|
+
name: "CmsWorkflows/DeleteCmsEntryWorkflow",
|
|
5
|
+
register (container) {
|
|
6
|
+
container.register(DeleteCmsEntryWorkflowUseCase);
|
|
7
|
+
}
|
|
8
|
+
});
|
|
9
|
+
export { DeleteCmsEntryWorkflowFeature };
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/wrappers/DeleteCmsEntryWorkflow/feature.js","sources":["../../../../src/features/wrappers/DeleteCmsEntryWorkflow/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { DeleteCmsEntryWorkflowUseCase } from \"./DeleteCmsEntryWorkflowUseCase.js\";\n\nexport const DeleteCmsEntryWorkflowFeature = createFeature({\n name: \"CmsWorkflows/DeleteCmsEntryWorkflow\",\n register(container) {\n container.register(DeleteCmsEntryWorkflowUseCase);\n }\n});\n"],"names":["DeleteCmsEntryWorkflowFeature","createFeature","container","DeleteCmsEntryWorkflowUseCase"],"mappings":";;AAGO,MAAMA,gCAAgCC,cAAc;IACvD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;IACvB;AACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { DeleteCmsEntryWorkflowUseCase } from "./abstractions.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { DeleteCmsEntryWorkflowUseCase } from "./abstractions.js";
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ListReviewAssignmentsUseCase } from "@webiny/api-workflows/features/assignment/ListReviewAssignments/index.js";
|
|
2
|
+
import { CmsEntryReviewGuardService } from "../CmsEntryReviewGuardService/index.js";
|
|
3
|
+
import { GetCmsEntryReviewUseCase as UseCase } from "./abstractions.js";
|
|
4
|
+
declare class GetCmsEntryReviewUseCaseImpl implements UseCase.Interface {
|
|
5
|
+
private guard;
|
|
6
|
+
private listAssignments;
|
|
7
|
+
constructor(guard: CmsEntryReviewGuardService.Interface, listAssignments: ListReviewAssignmentsUseCase.Interface);
|
|
8
|
+
execute(input: UseCase.Input): UseCase.Return;
|
|
9
|
+
}
|
|
10
|
+
export declare const GetCmsEntryReviewUseCase: typeof GetCmsEntryReviewUseCaseImpl & {
|
|
11
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IGetCmsEntryReviewUseCase>;
|
|
12
|
+
};
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { ListReviewAssignmentsUseCase } from "@webiny/api-workflows/features/assignment/ListReviewAssignments/index.js";
|
|
3
|
+
import { getReviewViewerFlags } from "@webiny/api-workflows/domain/review/getReviewViewerFlags.js";
|
|
4
|
+
import { redactAssignmentRecords } from "@webiny/api-workflows/domain/assignment/redactAssignmentRecords.js";
|
|
5
|
+
import { attachAssignmentRecords } from "@webiny/api-workflows/domain/assignment/attachAssignmentRecords.js";
|
|
6
|
+
import { CmsEntryReviewGuardService } from "../CmsEntryReviewGuardService/index.js";
|
|
7
|
+
import { GetCmsEntryReviewUseCase } from "./abstractions.js";
|
|
8
|
+
class GetCmsEntryReviewUseCaseImpl {
|
|
9
|
+
constructor(guard, listAssignments){
|
|
10
|
+
this.guard = guard;
|
|
11
|
+
this.listAssignments = listAssignments;
|
|
12
|
+
}
|
|
13
|
+
async execute(input) {
|
|
14
|
+
const authorized = await this.guard.authorize({
|
|
15
|
+
reviewId: input.id,
|
|
16
|
+
action: "view this review"
|
|
17
|
+
});
|
|
18
|
+
if (authorized.isFail()) return Result.fail(authorized.error);
|
|
19
|
+
const { review, viewer } = authorized.value;
|
|
20
|
+
const records = await this.listAssignments.execute({
|
|
21
|
+
reviewId: review.id
|
|
22
|
+
});
|
|
23
|
+
if (records.isFail()) return Result.fail(records.error);
|
|
24
|
+
const visible = redactAssignmentRecords(records.value, viewer.permissions);
|
|
25
|
+
return Result.ok({
|
|
26
|
+
review: attachAssignmentRecords(review, visible),
|
|
27
|
+
flags: getReviewViewerFlags(review, viewer)
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
const GetCmsEntryReviewUseCase_GetCmsEntryReviewUseCase = GetCmsEntryReviewUseCase.createImplementation({
|
|
32
|
+
implementation: GetCmsEntryReviewUseCaseImpl,
|
|
33
|
+
dependencies: [
|
|
34
|
+
CmsEntryReviewGuardService,
|
|
35
|
+
ListReviewAssignmentsUseCase
|
|
36
|
+
]
|
|
37
|
+
});
|
|
38
|
+
export { GetCmsEntryReviewUseCase_GetCmsEntryReviewUseCase as GetCmsEntryReviewUseCase };
|
|
39
|
+
|
|
40
|
+
//# sourceMappingURL=GetCmsEntryReviewUseCase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/wrappers/GetCmsEntryReview/GetCmsEntryReviewUseCase.js","sources":["../../../../src/features/wrappers/GetCmsEntryReview/GetCmsEntryReviewUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { ListReviewAssignmentsUseCase } from \"@webiny/api-workflows/features/assignment/ListReviewAssignments/index.js\";\nimport { getReviewViewerFlags } from \"@webiny/api-workflows/domain/review/getReviewViewerFlags.js\";\nimport { redactAssignmentRecords } from \"@webiny/api-workflows/domain/assignment/redactAssignmentRecords.js\";\nimport { attachAssignmentRecords } from \"@webiny/api-workflows/domain/assignment/attachAssignmentRecords.js\";\nimport { CmsEntryReviewGuardService } from \"../CmsEntryReviewGuardService/index.js\";\nimport { GetCmsEntryReviewUseCase as UseCase } from \"./abstractions.js\";\n\nclass GetCmsEntryReviewUseCaseImpl implements UseCase.Interface {\n public constructor(\n private guard: CmsEntryReviewGuardService.Interface,\n private listAssignments: ListReviewAssignmentsUseCase.Interface\n ) {}\n\n public async execute(input: UseCase.Input): UseCase.Return {\n const authorized = await this.guard.authorize({\n reviewId: input.id,\n action: \"view this review\"\n });\n if (authorized.isFail()) {\n return Result.fail(authorized.error);\n }\n const { review, viewer } = authorized.value;\n\n const records = await this.listAssignments.execute({ reviewId: review.id });\n if (records.isFail()) {\n return Result.fail(records.error);\n }\n const visible = redactAssignmentRecords(records.value, viewer.permissions);\n\n // The guard has proven read access to the target, so the viewer flags apply as they are.\n return Result.ok({\n review: attachAssignmentRecords(review, visible),\n flags: getReviewViewerFlags(review, viewer)\n });\n }\n}\n\nexport const GetCmsEntryReviewUseCase = UseCase.createImplementation({\n implementation: GetCmsEntryReviewUseCaseImpl,\n dependencies: [CmsEntryReviewGuardService, ListReviewAssignmentsUseCase]\n});\n"],"names":["GetCmsEntryReviewUseCaseImpl","guard","listAssignments","input","authorized","Result","review","viewer","records","visible","redactAssignmentRecords","attachAssignmentRecords","getReviewViewerFlags","GetCmsEntryReviewUseCase","UseCase","CmsEntryReviewGuardService","ListReviewAssignmentsUseCase"],"mappings":";;;;;;;AAQA,MAAMA;IACF,YACYC,KAA2C,EAC3CC,eAAuD,CACjE;aAFUD,KAAK,GAALA;aACAC,eAAe,GAAfA;IACT;IAEH,MAAa,QAAQC,KAAoB,EAAkB;QACvD,MAAMC,aAAa,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;YAC1C,UAAUD,MAAM,EAAE;YAClB,QAAQ;QACZ;QACA,IAAIC,WAAW,MAAM,IACjB,OAAOC,OAAO,IAAI,CAACD,WAAW,KAAK;QAEvC,MAAM,EAAEE,MAAM,EAAEC,MAAM,EAAE,GAAGH,WAAW,KAAK;QAE3C,MAAMI,UAAU,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;YAAE,UAAUF,OAAO,EAAE;QAAC;QACzE,IAAIE,QAAQ,MAAM,IACd,OAAOH,OAAO,IAAI,CAACG,QAAQ,KAAK;QAEpC,MAAMC,UAAUC,wBAAwBF,QAAQ,KAAK,EAAED,OAAO,WAAW;QAGzE,OAAOF,OAAO,EAAE,CAAC;YACb,QAAQM,wBAAwBL,QAAQG;YACxC,OAAOG,qBAAqBN,QAAQC;QACxC;IACJ;AACJ;AAEO,MAAMM,oDAA2BC,yBAAAA,oBAA4B,CAAC;IACjE,gBAAgBd;IAChB,cAAc;QAACe;QAA4BC;KAA6B;AAC5E"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type Result } from "@webiny/feature/api";
|
|
2
|
+
import type { ReviewWithAssignmentsAndViewerFlags } from "@webiny/api-workflows/domain/assignment/types.js";
|
|
3
|
+
import type { ListReviewAssignmentsUseCase } from "@webiny/api-workflows/features/assignment/ListReviewAssignments/index.js";
|
|
4
|
+
import type { CmsEntryReviewGuardService } from "../CmsEntryReviewGuardService/index.js";
|
|
5
|
+
export interface GetCmsEntryReviewInput {
|
|
6
|
+
id: string;
|
|
7
|
+
}
|
|
8
|
+
export interface IGetCmsEntryReviewUseCaseErrors {
|
|
9
|
+
guard: CmsEntryReviewGuardService.Error;
|
|
10
|
+
assignments: ListReviewAssignmentsUseCase.Error;
|
|
11
|
+
}
|
|
12
|
+
type UseCaseError = IGetCmsEntryReviewUseCaseErrors[keyof IGetCmsEntryReviewUseCaseErrors];
|
|
13
|
+
export interface IGetCmsEntryReviewUseCase {
|
|
14
|
+
execute(input: GetCmsEntryReviewInput): Promise<Result<ReviewWithAssignmentsAndViewerFlags, UseCaseError>>;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* A CMS review with the reading user's flags (spec 5.3, R62) and the assignment-log entries of
|
|
18
|
+
* each step (D127); needs read access to the target. Skip entries are dropped for viewers without
|
|
19
|
+
* `editor` / `reassign` here, in the wrapper and not in the resolver (spec 8, D89, R96).
|
|
20
|
+
*/
|
|
21
|
+
export declare const GetCmsEntryReviewUseCase: import("@webiny/di").Abstraction<IGetCmsEntryReviewUseCase>;
|
|
22
|
+
export declare namespace GetCmsEntryReviewUseCase {
|
|
23
|
+
type Interface = IGetCmsEntryReviewUseCase;
|
|
24
|
+
type Input = GetCmsEntryReviewInput;
|
|
25
|
+
type Error = UseCaseError;
|
|
26
|
+
type Return = Promise<Result<ReviewWithAssignmentsAndViewerFlags, UseCaseError>>;
|
|
27
|
+
}
|
|
28
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/wrappers/GetCmsEntryReview/abstractions.js","sources":["../../../../src/features/wrappers/GetCmsEntryReview/abstractions.ts"],"sourcesContent":["import { createAbstraction, type Result } from \"@webiny/feature/api\";\nimport type { ReviewWithAssignmentsAndViewerFlags } from \"@webiny/api-workflows/domain/assignment/types.js\";\nimport type { ListReviewAssignmentsUseCase } from \"@webiny/api-workflows/features/assignment/ListReviewAssignments/index.js\";\nimport type { CmsEntryReviewGuardService } from \"../CmsEntryReviewGuardService/index.js\";\n\nexport interface GetCmsEntryReviewInput {\n id: string;\n}\n\nexport interface IGetCmsEntryReviewUseCaseErrors {\n guard: CmsEntryReviewGuardService.Error;\n assignments: ListReviewAssignmentsUseCase.Error;\n}\n\ntype UseCaseError = IGetCmsEntryReviewUseCaseErrors[keyof IGetCmsEntryReviewUseCaseErrors];\n\nexport interface IGetCmsEntryReviewUseCase {\n execute(\n input: GetCmsEntryReviewInput\n ): Promise<Result<ReviewWithAssignmentsAndViewerFlags, UseCaseError>>;\n}\n\n/**\n * A CMS review with the reading user's flags (spec 5.3, R62) and the assignment-log entries of\n * each step (D127); needs read access to the target. Skip entries are dropped for viewers without\n * `editor` / `reassign` here, in the wrapper and not in the resolver (spec 8, D89, R96).\n */\nexport const GetCmsEntryReviewUseCase = createAbstraction<IGetCmsEntryReviewUseCase>(\n \"GetCmsEntryReviewUseCase\"\n);\n\nexport namespace GetCmsEntryReviewUseCase {\n export type Interface = IGetCmsEntryReviewUseCase;\n export type Input = GetCmsEntryReviewInput;\n export type Error = UseCaseError;\n export type Return = Promise<Result<ReviewWithAssignmentsAndViewerFlags, UseCaseError>>;\n}\n"],"names":["GetCmsEntryReviewUseCase","createAbstraction"],"mappings":";AA2BO,MAAMA,2BAA2BC,kBACpC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api";
|
|
2
|
+
import { GetCmsEntryReviewUseCase } from "./GetCmsEntryReviewUseCase.js";
|
|
3
|
+
const GetCmsEntryReviewFeature = createFeature({
|
|
4
|
+
name: "CmsWorkflows/GetCmsEntryReview",
|
|
5
|
+
register (container) {
|
|
6
|
+
container.register(GetCmsEntryReviewUseCase);
|
|
7
|
+
}
|
|
8
|
+
});
|
|
9
|
+
export { GetCmsEntryReviewFeature };
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/wrappers/GetCmsEntryReview/feature.js","sources":["../../../../src/features/wrappers/GetCmsEntryReview/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { GetCmsEntryReviewUseCase } from \"./GetCmsEntryReviewUseCase.js\";\n\nexport const GetCmsEntryReviewFeature = createFeature({\n name: \"CmsWorkflows/GetCmsEntryReview\",\n register(container) {\n container.register(GetCmsEntryReviewUseCase);\n }\n});\n"],"names":["GetCmsEntryReviewFeature","createFeature","container","GetCmsEntryReviewUseCase"],"mappings":";;AAGO,MAAMA,2BAA2BC,cAAc;IAClD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;IACvB;AACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { GetCmsEntryReviewUseCase } from "./abstractions.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { GetCmsEntryReviewUseCase } from "./abstractions.js";
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { GetReviewStepRunUseCase } from "@webiny/api-workflows/features/stepRun/GetReviewStepRun/index.js";
|
|
2
|
+
import { CmsEntryReviewGuardService } from "../CmsEntryReviewGuardService/index.js";
|
|
3
|
+
import { GetCmsEntryReviewStepRunUseCase as UseCase } from "./abstractions.js";
|
|
4
|
+
declare class GetCmsEntryReviewStepRunUseCaseImpl implements UseCase.Interface {
|
|
5
|
+
private guard;
|
|
6
|
+
private getStepRun;
|
|
7
|
+
constructor(guard: CmsEntryReviewGuardService.Interface, getStepRun: GetReviewStepRunUseCase.Interface);
|
|
8
|
+
execute(input: UseCase.Input): UseCase.Return;
|
|
9
|
+
}
|
|
10
|
+
export declare const GetCmsEntryReviewStepRunUseCase: typeof GetCmsEntryReviewStepRunUseCaseImpl & {
|
|
11
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IGetCmsEntryReviewStepRunUseCase>;
|
|
12
|
+
};
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { GetReviewStepRunUseCase } from "@webiny/api-workflows/features/stepRun/GetReviewStepRun/index.js";
|
|
3
|
+
import { canViewStepRunByPermission } from "@webiny/api-workflows/domain/review/canViewStepRunByPermission.js";
|
|
4
|
+
import { WorkflowsNotAuthorizedError } from "@webiny/api-workflows/domain/permissions/errors.js";
|
|
5
|
+
import { CmsEntryReviewGuardService } from "../CmsEntryReviewGuardService/index.js";
|
|
6
|
+
import { GetCmsEntryReviewStepRunUseCase } from "./abstractions.js";
|
|
7
|
+
const ACTION = "view a step run";
|
|
8
|
+
class GetCmsEntryReviewStepRunUseCaseImpl {
|
|
9
|
+
constructor(guard, getStepRun){
|
|
10
|
+
this.guard = guard;
|
|
11
|
+
this.getStepRun = getStepRun;
|
|
12
|
+
}
|
|
13
|
+
async execute(input) {
|
|
14
|
+
const authorized = await this.guard.authorize({
|
|
15
|
+
reviewId: input.reviewId,
|
|
16
|
+
action: ACTION
|
|
17
|
+
});
|
|
18
|
+
if (authorized.isFail()) return Result.fail(authorized.error);
|
|
19
|
+
const { viewer } = authorized.value;
|
|
20
|
+
if (!canViewStepRunByPermission(viewer)) return Result.fail(new WorkflowsNotAuthorizedError({
|
|
21
|
+
action: ACTION
|
|
22
|
+
}));
|
|
23
|
+
return this.getStepRun.execute({
|
|
24
|
+
reviewId: input.reviewId,
|
|
25
|
+
stepId: input.stepId,
|
|
26
|
+
taskId: input.taskId
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
const GetCmsEntryReviewStepRunUseCase_GetCmsEntryReviewStepRunUseCase = GetCmsEntryReviewStepRunUseCase.createImplementation({
|
|
31
|
+
implementation: GetCmsEntryReviewStepRunUseCaseImpl,
|
|
32
|
+
dependencies: [
|
|
33
|
+
CmsEntryReviewGuardService,
|
|
34
|
+
GetReviewStepRunUseCase
|
|
35
|
+
]
|
|
36
|
+
});
|
|
37
|
+
export { GetCmsEntryReviewStepRunUseCase_GetCmsEntryReviewStepRunUseCase as GetCmsEntryReviewStepRunUseCase };
|
|
38
|
+
|
|
39
|
+
//# sourceMappingURL=GetCmsEntryReviewStepRunUseCase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/wrappers/GetCmsEntryReviewStepRun/GetCmsEntryReviewStepRunUseCase.js","sources":["../../../../src/features/wrappers/GetCmsEntryReviewStepRun/GetCmsEntryReviewStepRunUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { GetReviewStepRunUseCase } from \"@webiny/api-workflows/features/stepRun/GetReviewStepRun/index.js\";\nimport { canViewStepRunByPermission } from \"@webiny/api-workflows/domain/review/canViewStepRunByPermission.js\";\nimport { WorkflowsNotAuthorizedError } from \"@webiny/api-workflows/domain/permissions/errors.js\";\nimport { CmsEntryReviewGuardService } from \"../CmsEntryReviewGuardService/index.js\";\nimport { GetCmsEntryReviewStepRunUseCase as UseCase } from \"./abstractions.js\";\n\nconst ACTION = \"view a step run\";\n\nclass GetCmsEntryReviewStepRunUseCaseImpl implements UseCase.Interface {\n public constructor(\n private guard: CmsEntryReviewGuardService.Interface,\n private getStepRun: GetReviewStepRunUseCase.Interface\n ) {}\n\n public async execute(input: UseCase.Input): UseCase.Return {\n const authorized = await this.guard.authorize({\n reviewId: input.reviewId,\n action: ACTION\n });\n if (authorized.isFail()) {\n return Result.fail(authorized.error);\n }\n\n // Operators only (R258): the requester is not exempt.\n const { viewer } = authorized.value;\n if (!canViewStepRunByPermission(viewer)) {\n return Result.fail(new WorkflowsNotAuthorizedError({ action: ACTION }));\n }\n\n return this.getStepRun.execute({\n reviewId: input.reviewId,\n stepId: input.stepId,\n taskId: input.taskId\n });\n }\n}\n\nexport const GetCmsEntryReviewStepRunUseCase = UseCase.createImplementation({\n implementation: GetCmsEntryReviewStepRunUseCaseImpl,\n dependencies: [CmsEntryReviewGuardService, GetReviewStepRunUseCase]\n});\n"],"names":["ACTION","GetCmsEntryReviewStepRunUseCaseImpl","guard","getStepRun","input","authorized","Result","viewer","canViewStepRunByPermission","WorkflowsNotAuthorizedError","GetCmsEntryReviewStepRunUseCase","UseCase","CmsEntryReviewGuardService","GetReviewStepRunUseCase"],"mappings":";;;;;;AAOA,MAAMA,SAAS;AAEf,MAAMC;IACF,YACYC,KAA2C,EAC3CC,UAA6C,CACvD;aAFUD,KAAK,GAALA;aACAC,UAAU,GAAVA;IACT;IAEH,MAAa,QAAQC,KAAoB,EAAkB;QACvD,MAAMC,aAAa,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;YAC1C,UAAUD,MAAM,QAAQ;YACxB,QAAQJ;QACZ;QACA,IAAIK,WAAW,MAAM,IACjB,OAAOC,OAAO,IAAI,CAACD,WAAW,KAAK;QAIvC,MAAM,EAAEE,MAAM,EAAE,GAAGF,WAAW,KAAK;QACnC,IAAI,CAACG,2BAA2BD,SAC5B,OAAOD,OAAO,IAAI,CAAC,IAAIG,4BAA4B;YAAE,QAAQT;QAAO;QAGxE,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YAC3B,UAAUI,MAAM,QAAQ;YACxB,QAAQA,MAAM,MAAM;YACpB,QAAQA,MAAM,MAAM;QACxB;IACJ;AACJ;AAEO,MAAMM,kEAAkCC,gCAAAA,oBAA4B,CAAC;IACxE,gBAAgBV;IAChB,cAAc;QAACW;QAA4BC;KAAwB;AACvE"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type Result } from "@webiny/feature/api";
|
|
2
|
+
import type { ReviewStepRunInfo } from "@webiny/api-workflows/domain/review/ReviewStepRunInfo.js";
|
|
3
|
+
import type { WorkflowsNotAuthorizedError } from "@webiny/api-workflows/domain/permissions/errors.js";
|
|
4
|
+
import type { GetReviewStepRunUseCase } from "@webiny/api-workflows/features/stepRun/GetReviewStepRun/index.js";
|
|
5
|
+
import type { CmsEntryReviewGuardService } from "../CmsEntryReviewGuardService/index.js";
|
|
6
|
+
export interface GetCmsEntryReviewStepRunInput {
|
|
7
|
+
reviewId: string;
|
|
8
|
+
stepId: string;
|
|
9
|
+
/** The step's current task id or the task id of one of its earlier runs. */
|
|
10
|
+
taskId: string;
|
|
11
|
+
}
|
|
12
|
+
export interface IGetCmsEntryReviewStepRunUseCaseErrors {
|
|
13
|
+
guard: CmsEntryReviewGuardService.Error;
|
|
14
|
+
notAuthorized: WorkflowsNotAuthorizedError;
|
|
15
|
+
stepRun: GetReviewStepRunUseCase.Error;
|
|
16
|
+
}
|
|
17
|
+
type UseCaseError = IGetCmsEntryReviewStepRunUseCaseErrors[keyof IGetCmsEntryReviewStepRunUseCaseErrors];
|
|
18
|
+
export interface IGetCmsEntryReviewStepRunUseCase {
|
|
19
|
+
execute(input: GetCmsEntryReviewStepRunInput): Promise<Result<ReviewStepRunInfo | null, UseCaseError>>;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* The background task of one attempt of a CMS review step, as workflows shows it (R257, R258,
|
|
23
|
+
* D90, D161): read access to the target and `editor` or `reassign` here, the step and task checks
|
|
24
|
+
* in the engine. `null` means the task record is gone.
|
|
25
|
+
*/
|
|
26
|
+
export declare const GetCmsEntryReviewStepRunUseCase: import("@webiny/di").Abstraction<IGetCmsEntryReviewStepRunUseCase>;
|
|
27
|
+
export declare namespace GetCmsEntryReviewStepRunUseCase {
|
|
28
|
+
type Interface = IGetCmsEntryReviewStepRunUseCase;
|
|
29
|
+
type Input = GetCmsEntryReviewStepRunInput;
|
|
30
|
+
type Error = UseCaseError;
|
|
31
|
+
type Return = Promise<Result<ReviewStepRunInfo | null, UseCaseError>>;
|
|
32
|
+
}
|
|
33
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/wrappers/GetCmsEntryReviewStepRun/abstractions.js","sources":["../../../../src/features/wrappers/GetCmsEntryReviewStepRun/abstractions.ts"],"sourcesContent":["import { createAbstraction, type Result } from \"@webiny/feature/api\";\nimport type { ReviewStepRunInfo } from \"@webiny/api-workflows/domain/review/ReviewStepRunInfo.js\";\nimport type { WorkflowsNotAuthorizedError } from \"@webiny/api-workflows/domain/permissions/errors.js\";\nimport type { GetReviewStepRunUseCase } from \"@webiny/api-workflows/features/stepRun/GetReviewStepRun/index.js\";\nimport type { CmsEntryReviewGuardService } from \"../CmsEntryReviewGuardService/index.js\";\n\nexport interface GetCmsEntryReviewStepRunInput {\n reviewId: string;\n stepId: string;\n /** The step's current task id or the task id of one of its earlier runs. */\n taskId: string;\n}\n\nexport interface IGetCmsEntryReviewStepRunUseCaseErrors {\n guard: CmsEntryReviewGuardService.Error;\n notAuthorized: WorkflowsNotAuthorizedError;\n stepRun: GetReviewStepRunUseCase.Error;\n}\n\ntype UseCaseError =\n IGetCmsEntryReviewStepRunUseCaseErrors[keyof IGetCmsEntryReviewStepRunUseCaseErrors];\n\nexport interface IGetCmsEntryReviewStepRunUseCase {\n execute(\n input: GetCmsEntryReviewStepRunInput\n ): Promise<Result<ReviewStepRunInfo | null, UseCaseError>>;\n}\n\n/**\n * The background task of one attempt of a CMS review step, as workflows shows it (R257, R258,\n * D90, D161): read access to the target and `editor` or `reassign` here, the step and task checks\n * in the engine. `null` means the task record is gone.\n */\nexport const GetCmsEntryReviewStepRunUseCase = createAbstraction<IGetCmsEntryReviewStepRunUseCase>(\n \"GetCmsEntryReviewStepRunUseCase\"\n);\n\nexport namespace GetCmsEntryReviewStepRunUseCase {\n export type Interface = IGetCmsEntryReviewStepRunUseCase;\n export type Input = GetCmsEntryReviewStepRunInput;\n export type Error = UseCaseError;\n export type Return = Promise<Result<ReviewStepRunInfo | null, UseCaseError>>;\n}\n"],"names":["GetCmsEntryReviewStepRunUseCase","createAbstraction"],"mappings":";AAiCO,MAAMA,kCAAkCC,kBAC3C"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api";
|
|
2
|
+
import { GetCmsEntryReviewStepRunUseCase } from "./GetCmsEntryReviewStepRunUseCase.js";
|
|
3
|
+
const GetCmsEntryReviewStepRunFeature = createFeature({
|
|
4
|
+
name: "CmsWorkflows/GetCmsEntryReviewStepRun",
|
|
5
|
+
register (container) {
|
|
6
|
+
container.register(GetCmsEntryReviewStepRunUseCase);
|
|
7
|
+
}
|
|
8
|
+
});
|
|
9
|
+
export { GetCmsEntryReviewStepRunFeature };
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/wrappers/GetCmsEntryReviewStepRun/feature.js","sources":["../../../../src/features/wrappers/GetCmsEntryReviewStepRun/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { GetCmsEntryReviewStepRunUseCase } from \"./GetCmsEntryReviewStepRunUseCase.js\";\n\nexport const GetCmsEntryReviewStepRunFeature = createFeature({\n name: \"CmsWorkflows/GetCmsEntryReviewStepRun\",\n register(container) {\n container.register(GetCmsEntryReviewStepRunUseCase);\n }\n});\n"],"names":["GetCmsEntryReviewStepRunFeature","createFeature","container","GetCmsEntryReviewStepRunUseCase"],"mappings":";;AAGO,MAAMA,kCAAkCC,cAAc;IACzD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;IACvB;AACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { GetCmsEntryReviewStepRunUseCase } from "./abstractions.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { GetCmsEntryReviewStepRunUseCase } from "./abstractions.js";
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { CurrentReviewViewer } from "@webiny/api-workflows/features/identity/CurrentReviewViewer/index.js";
|
|
2
|
+
import { GetTargetReviewUseCase } from "@webiny/api-workflows/features/review/GetTargetReview/index.js";
|
|
3
|
+
import { ListReviewAssignmentsUseCase } from "@webiny/api-workflows/features/assignment/ListReviewAssignments/index.js";
|
|
4
|
+
import { CmsEntryTargetReader } from "../../../features/target/CmsEntryTargetReader/index.js";
|
|
5
|
+
import { CmsEntryAccess } from "../../../features/target/CmsEntryAccess/index.js";
|
|
6
|
+
import { GetCmsEntryTargetReviewUseCase as UseCase } from "./abstractions.js";
|
|
7
|
+
declare class GetCmsEntryTargetReviewUseCaseImpl implements UseCase.Interface {
|
|
8
|
+
private viewer;
|
|
9
|
+
private targets;
|
|
10
|
+
private access;
|
|
11
|
+
private getTargetReview;
|
|
12
|
+
private listAssignments;
|
|
13
|
+
constructor(viewer: CurrentReviewViewer.Interface, targets: CmsEntryTargetReader.Interface, access: CmsEntryAccess.Interface, getTargetReview: GetTargetReviewUseCase.Interface, listAssignments: ListReviewAssignmentsUseCase.Interface);
|
|
14
|
+
execute(input: UseCase.Input): UseCase.Return;
|
|
15
|
+
}
|
|
16
|
+
export declare const GetCmsEntryTargetReviewUseCase: typeof GetCmsEntryTargetReviewUseCaseImpl & {
|
|
17
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IGetCmsEntryTargetReviewUseCase>;
|
|
18
|
+
};
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { CurrentReviewViewer } from "@webiny/api-workflows/features/identity/CurrentReviewViewer/index.js";
|
|
3
|
+
import { GetTargetReviewUseCase } from "@webiny/api-workflows/features/review/GetTargetReview/index.js";
|
|
4
|
+
import { ListReviewAssignmentsUseCase } from "@webiny/api-workflows/features/assignment/ListReviewAssignments/index.js";
|
|
5
|
+
import { getReviewViewerFlags } from "@webiny/api-workflows/domain/review/getReviewViewerFlags.js";
|
|
6
|
+
import { redactAssignmentRecords } from "@webiny/api-workflows/domain/assignment/redactAssignmentRecords.js";
|
|
7
|
+
import { attachAssignmentRecords } from "@webiny/api-workflows/domain/assignment/attachAssignmentRecords.js";
|
|
8
|
+
import { WorkflowsNotAuthorizedError } from "@webiny/api-workflows/domain/permissions/errors.js";
|
|
9
|
+
import { ReviewPersistenceError, ReviewTargetNotFoundError } from "@webiny/api-workflows/domain/review/errors.js";
|
|
10
|
+
import { CmsEntryTargetReader } from "../../target/CmsEntryTargetReader/index.js";
|
|
11
|
+
import { CmsEntryAccess } from "../../target/CmsEntryAccess/index.js";
|
|
12
|
+
import { isCmsNamespace } from "../../../utils/appName.js";
|
|
13
|
+
import { GetCmsEntryTargetReviewUseCase } from "./abstractions.js";
|
|
14
|
+
class GetCmsEntryTargetReviewUseCaseImpl {
|
|
15
|
+
constructor(viewer, targets, access, getTargetReview, listAssignments){
|
|
16
|
+
this.viewer = viewer;
|
|
17
|
+
this.targets = targets;
|
|
18
|
+
this.access = access;
|
|
19
|
+
this.getTargetReview = getTargetReview;
|
|
20
|
+
this.listAssignments = listAssignments;
|
|
21
|
+
}
|
|
22
|
+
async execute(input) {
|
|
23
|
+
let viewer;
|
|
24
|
+
try {
|
|
25
|
+
viewer = await this.viewer.get();
|
|
26
|
+
} catch (error) {
|
|
27
|
+
return Result.fail(new ReviewPersistenceError(error instanceof Error ? error : new Error(String(error))));
|
|
28
|
+
}
|
|
29
|
+
if (viewer.isFail()) return Result.fail(viewer.error);
|
|
30
|
+
if (!isCmsNamespace(input.model)) return Result.fail(new ReviewTargetNotFoundError({
|
|
31
|
+
model: input.model,
|
|
32
|
+
targetRevisionId: input.targetRevisionId
|
|
33
|
+
}));
|
|
34
|
+
let canRead;
|
|
35
|
+
try {
|
|
36
|
+
const target = await this.targets.read({
|
|
37
|
+
model: input.model,
|
|
38
|
+
targetRevisionId: input.targetRevisionId
|
|
39
|
+
});
|
|
40
|
+
canRead = !!target && await this.access.canRead(target);
|
|
41
|
+
} catch (error) {
|
|
42
|
+
return Result.fail(new ReviewPersistenceError(error instanceof Error ? error : new Error(String(error))));
|
|
43
|
+
}
|
|
44
|
+
if (!canRead) return Result.fail(new WorkflowsNotAuthorizedError({
|
|
45
|
+
action: "view this review"
|
|
46
|
+
}));
|
|
47
|
+
const review = await this.getTargetReview.execute({
|
|
48
|
+
model: input.model,
|
|
49
|
+
targetRevisionId: input.targetRevisionId
|
|
50
|
+
});
|
|
51
|
+
if (review.isFail()) return Result.fail(review.error);
|
|
52
|
+
if (!review.value) return Result.ok(null);
|
|
53
|
+
const records = await this.listAssignments.execute({
|
|
54
|
+
reviewId: review.value.id
|
|
55
|
+
});
|
|
56
|
+
if (records.isFail()) return Result.fail(records.error);
|
|
57
|
+
const visible = redactAssignmentRecords(records.value, viewer.value.permissions);
|
|
58
|
+
return Result.ok({
|
|
59
|
+
review: attachAssignmentRecords(review.value, visible),
|
|
60
|
+
flags: getReviewViewerFlags(review.value, viewer.value)
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
const GetCmsEntryTargetReviewUseCase_GetCmsEntryTargetReviewUseCase = GetCmsEntryTargetReviewUseCase.createImplementation({
|
|
65
|
+
implementation: GetCmsEntryTargetReviewUseCaseImpl,
|
|
66
|
+
dependencies: [
|
|
67
|
+
CurrentReviewViewer,
|
|
68
|
+
CmsEntryTargetReader,
|
|
69
|
+
CmsEntryAccess,
|
|
70
|
+
GetTargetReviewUseCase,
|
|
71
|
+
ListReviewAssignmentsUseCase
|
|
72
|
+
]
|
|
73
|
+
});
|
|
74
|
+
export { GetCmsEntryTargetReviewUseCase_GetCmsEntryTargetReviewUseCase as GetCmsEntryTargetReviewUseCase };
|
|
75
|
+
|
|
76
|
+
//# sourceMappingURL=GetCmsEntryTargetReviewUseCase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/wrappers/GetCmsEntryTargetReview/GetCmsEntryTargetReviewUseCase.js","sources":["../../../../src/features/wrappers/GetCmsEntryTargetReview/GetCmsEntryTargetReviewUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { CurrentReviewViewer } from \"@webiny/api-workflows/features/identity/CurrentReviewViewer/index.js\";\nimport { GetTargetReviewUseCase } from \"@webiny/api-workflows/features/review/GetTargetReview/index.js\";\nimport { ListReviewAssignmentsUseCase } from \"@webiny/api-workflows/features/assignment/ListReviewAssignments/index.js\";\nimport { getReviewViewerFlags } from \"@webiny/api-workflows/domain/review/getReviewViewerFlags.js\";\nimport { redactAssignmentRecords } from \"@webiny/api-workflows/domain/assignment/redactAssignmentRecords.js\";\nimport { attachAssignmentRecords } from \"@webiny/api-workflows/domain/assignment/attachAssignmentRecords.js\";\nimport { WorkflowsNotAuthorizedError } from \"@webiny/api-workflows/domain/permissions/errors.js\";\nimport {\n ReviewPersistenceError,\n ReviewTargetNotFoundError\n} from \"@webiny/api-workflows/domain/review/errors.js\";\nimport { CmsEntryTargetReader } from \"~/features/target/CmsEntryTargetReader/index.js\";\nimport { CmsEntryAccess } from \"~/features/target/CmsEntryAccess/index.js\";\nimport { isCmsNamespace } from \"~/utils/appName.js\";\nimport { GetCmsEntryTargetReviewUseCase as UseCase } from \"./abstractions.js\";\n\nclass GetCmsEntryTargetReviewUseCaseImpl implements UseCase.Interface {\n public constructor(\n private viewer: CurrentReviewViewer.Interface,\n private targets: CmsEntryTargetReader.Interface,\n private access: CmsEntryAccess.Interface,\n private getTargetReview: GetTargetReviewUseCase.Interface,\n private listAssignments: ListReviewAssignmentsUseCase.Interface\n ) {}\n\n public async execute(input: UseCase.Input): UseCase.Return {\n // A failed team or permission load is a persistence error, never a rejection (R87).\n let viewer: Awaited<CurrentReviewViewer.Return>;\n try {\n viewer = await this.viewer.get();\n } catch (error) {\n return Result.fail(\n new ReviewPersistenceError(\n error instanceof Error ? error : new Error(String(error))\n )\n );\n }\n if (viewer.isFail()) {\n return Result.fail(viewer.error);\n }\n\n // Another app's namespace is not found (R46, R108).\n if (!isCmsNamespace(input.model)) {\n return Result.fail(\n new ReviewTargetNotFoundError({\n model: input.model,\n targetRevisionId: input.targetRevisionId\n })\n );\n }\n\n // A missing, trashed or unreadable revision is refused alike, so the answer does not\n // reveal whether it exists (R108); a failed read or access check is a persistence error\n // (R87).\n let canRead: boolean;\n try {\n const target = await this.targets.read({\n model: input.model,\n targetRevisionId: input.targetRevisionId\n });\n canRead = !!target && (await this.access.canRead(target));\n } catch (error) {\n return Result.fail(\n new ReviewPersistenceError(\n error instanceof Error ? error : new Error(String(error))\n )\n );\n }\n if (!canRead) {\n return Result.fail(new WorkflowsNotAuthorizedError({ action: \"view this review\" }));\n }\n\n const review = await this.getTargetReview.execute({\n model: input.model,\n targetRevisionId: input.targetRevisionId\n });\n if (review.isFail()) {\n return Result.fail(review.error);\n }\n if (!review.value) {\n return Result.ok(null);\n }\n\n const records = await this.listAssignments.execute({ reviewId: review.value.id });\n if (records.isFail()) {\n return Result.fail(records.error);\n }\n const visible = redactAssignmentRecords(records.value, viewer.value.permissions);\n return Result.ok({\n review: attachAssignmentRecords(review.value, visible),\n flags: getReviewViewerFlags(review.value, viewer.value)\n });\n }\n}\n\nexport const GetCmsEntryTargetReviewUseCase = UseCase.createImplementation({\n implementation: GetCmsEntryTargetReviewUseCaseImpl,\n dependencies: [\n CurrentReviewViewer,\n CmsEntryTargetReader,\n CmsEntryAccess,\n GetTargetReviewUseCase,\n ListReviewAssignmentsUseCase\n ]\n});\n"],"names":["GetCmsEntryTargetReviewUseCaseImpl","viewer","targets","access","getTargetReview","listAssignments","input","error","Result","ReviewPersistenceError","Error","String","isCmsNamespace","ReviewTargetNotFoundError","canRead","target","WorkflowsNotAuthorizedError","review","records","visible","redactAssignmentRecords","attachAssignmentRecords","getReviewViewerFlags","GetCmsEntryTargetReviewUseCase","UseCase","CurrentReviewViewer","CmsEntryTargetReader","CmsEntryAccess","GetTargetReviewUseCase","ListReviewAssignmentsUseCase"],"mappings":";;;;;;;;;;;;;AAiBA,MAAMA;IACF,YACYC,MAAqC,EACrCC,OAAuC,EACvCC,MAAgC,EAChCC,eAAiD,EACjDC,eAAuD,CACjE;aALUJ,MAAM,GAANA;aACAC,OAAO,GAAPA;aACAC,MAAM,GAANA;aACAC,eAAe,GAAfA;aACAC,eAAe,GAAfA;IACT;IAEH,MAAa,QAAQC,KAAoB,EAAkB;QAEvD,IAAIL;QACJ,IAAI;YACAA,SAAS,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG;QAClC,EAAE,OAAOM,OAAO;YACZ,OAAOC,OAAO,IAAI,CACd,IAAIC,uBACAF,iBAAiBG,QAAQH,QAAQ,IAAIG,MAAMC,OAAOJ;QAG9D;QACA,IAAIN,OAAO,MAAM,IACb,OAAOO,OAAO,IAAI,CAACP,OAAO,KAAK;QAInC,IAAI,CAACW,eAAeN,MAAM,KAAK,GAC3B,OAAOE,OAAO,IAAI,CACd,IAAIK,0BAA0B;YAC1B,OAAOP,MAAM,KAAK;YAClB,kBAAkBA,MAAM,gBAAgB;QAC5C;QAOR,IAAIQ;QACJ,IAAI;YACA,MAAMC,SAAS,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;gBACnC,OAAOT,MAAM,KAAK;gBAClB,kBAAkBA,MAAM,gBAAgB;YAC5C;YACAQ,UAAU,CAAC,CAACC,UAAW,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAACA;QACrD,EAAE,OAAOR,OAAO;YACZ,OAAOC,OAAO,IAAI,CACd,IAAIC,uBACAF,iBAAiBG,QAAQH,QAAQ,IAAIG,MAAMC,OAAOJ;QAG9D;QACA,IAAI,CAACO,SACD,OAAON,OAAO,IAAI,CAAC,IAAIQ,4BAA4B;YAAE,QAAQ;QAAmB;QAGpF,MAAMC,SAAS,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;YAC9C,OAAOX,MAAM,KAAK;YAClB,kBAAkBA,MAAM,gBAAgB;QAC5C;QACA,IAAIW,OAAO,MAAM,IACb,OAAOT,OAAO,IAAI,CAACS,OAAO,KAAK;QAEnC,IAAI,CAACA,OAAO,KAAK,EACb,OAAOT,OAAO,EAAE,CAAC;QAGrB,MAAMU,UAAU,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;YAAE,UAAUD,OAAO,KAAK,CAAC,EAAE;QAAC;QAC/E,IAAIC,QAAQ,MAAM,IACd,OAAOV,OAAO,IAAI,CAACU,QAAQ,KAAK;QAEpC,MAAMC,UAAUC,wBAAwBF,QAAQ,KAAK,EAAEjB,OAAO,KAAK,CAAC,WAAW;QAC/E,OAAOO,OAAO,EAAE,CAAC;YACb,QAAQa,wBAAwBJ,OAAO,KAAK,EAAEE;YAC9C,OAAOG,qBAAqBL,OAAO,KAAK,EAAEhB,OAAO,KAAK;QAC1D;IACJ;AACJ;AAEO,MAAMsB,gEAAiCC,+BAAAA,oBAA4B,CAAC;IACvE,gBAAgBxB;IAChB,cAAc;QACVyB;QACAC;QACAC;QACAC;QACAC;KACH;AACL"}
|