@webiny/api-headless-cms-workflows 0.0.0-unstable.0156a4c312
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/CmsWorkflowsFeature.d.ts +4 -0
- package/CmsWorkflowsFeature.js +28 -0
- package/CmsWorkflowsFeature.js.map +1 -0
- package/LICENSE +21 -0
- package/README.md +11 -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.d.ts +4 -0
- package/features/Workflows/feature.js +13 -0
- package/features/Workflows/feature.js.map +1 -0
- package/features/Workflows/handlers/DisallowUnpublishableModelsOnBeforeCreate.d.ts +23 -0
- package/features/Workflows/handlers/DisallowUnpublishableModelsOnBeforeCreate.js +44 -0
- package/features/Workflows/handlers/DisallowUnpublishableModelsOnBeforeCreate.js.map +1 -0
- 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/Workflows/index.d.ts +1 -0
- package/features/Workflows/index.js +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 +6 -0
- package/graphql/entrySystemSchema.js +19 -0
- package/graphql/entrySystemSchema.js.map +1 -0
- 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 -0
- package/index.js +1 -0
- package/package.json +51 -0
- package/types.d.ts +24 -0
- package/types.js +0 -0
- package/utils/appName.d.ts +11 -0
- package/utils/appName.js +11 -0
- package/utils/appName.js.map +1 -0
- 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/wrappers/CancelCmsEntryReviewsForDelete/CancelCmsEntryReviewsForDeleteUseCase.js
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { CurrentReviewViewer } from "@webiny/api-workflows/features/identity/CurrentReviewViewer/index.js";
|
|
3
|
+
import { ListTargetReviewsUseCase } from "@webiny/api-workflows/features/review/ListTargetReviews/index.js";
|
|
4
|
+
import { CancelTargetReviewsUseCase } from "@webiny/api-workflows/features/review/CancelTargetReviews/index.js";
|
|
5
|
+
import { WorkflowsNotAuthorizedError } from "@webiny/api-workflows/domain/permissions/errors.js";
|
|
6
|
+
import { ReviewPersistenceError, ReviewTargetNotFoundError } from "@webiny/api-workflows/domain/review/errors.js";
|
|
7
|
+
import { getDeleteCancelReason } from "@webiny/api-workflows/domain/review/getDeleteCancelReason.js";
|
|
8
|
+
import { CmsEntryTargetReader } from "../../target/CmsEntryTargetReader/index.js";
|
|
9
|
+
import { CmsEntryAccess } from "../../target/CmsEntryAccess/index.js";
|
|
10
|
+
import { isCmsNamespace } from "../../../utils/appName.js";
|
|
11
|
+
import { CancelCmsEntryReviewsForDeleteUseCase } from "./abstractions.js";
|
|
12
|
+
class CancelCmsEntryReviewsForDeleteUseCaseImpl {
|
|
13
|
+
constructor(viewer, listTargetReviews, targets, access, cancelTargetReviews){
|
|
14
|
+
this.viewer = viewer;
|
|
15
|
+
this.listTargetReviews = listTargetReviews;
|
|
16
|
+
this.targets = targets;
|
|
17
|
+
this.access = access;
|
|
18
|
+
this.cancelTargetReviews = cancelTargetReviews;
|
|
19
|
+
}
|
|
20
|
+
async execute(input) {
|
|
21
|
+
const actor = this.viewer.getActor();
|
|
22
|
+
if (actor.isFail()) return Result.fail(actor.error);
|
|
23
|
+
if (!isCmsNamespace(input.model)) return Result.fail(new ReviewTargetNotFoundError({
|
|
24
|
+
model: input.model,
|
|
25
|
+
targetId: input.targetId
|
|
26
|
+
}));
|
|
27
|
+
let canDeleteAnyEntry;
|
|
28
|
+
try {
|
|
29
|
+
canDeleteAnyEntry = await this.access.canDeleteAnyEntry(input.model);
|
|
30
|
+
} catch (error) {
|
|
31
|
+
return Result.fail(new ReviewPersistenceError(error instanceof Error ? error : new Error(String(error))));
|
|
32
|
+
}
|
|
33
|
+
if (!canDeleteAnyEntry) return Result.fail(new WorkflowsNotAuthorizedError({
|
|
34
|
+
action: "cancel the review to delete this content"
|
|
35
|
+
}));
|
|
36
|
+
const reviews = await this.listTargetReviews.execute({
|
|
37
|
+
model: input.model,
|
|
38
|
+
targetId: input.targetId,
|
|
39
|
+
targetRevisionId: input.targetRevisionId ?? void 0,
|
|
40
|
+
state: "inProgress"
|
|
41
|
+
});
|
|
42
|
+
if (reviews.isFail()) return Result.fail(reviews.error);
|
|
43
|
+
const inProgress = reviews.value;
|
|
44
|
+
if (0 === inProgress.length) return Result.ok([]);
|
|
45
|
+
const targetRevisionId = inProgress[0].targetRevisionId;
|
|
46
|
+
let target;
|
|
47
|
+
try {
|
|
48
|
+
target = await this.targets.read({
|
|
49
|
+
model: input.model,
|
|
50
|
+
targetRevisionId
|
|
51
|
+
});
|
|
52
|
+
} catch (error) {
|
|
53
|
+
return Result.fail(new ReviewPersistenceError(error instanceof Error ? error : new Error(String(error))));
|
|
54
|
+
}
|
|
55
|
+
if (!target || target.entry.entryId !== input.targetId) return Result.fail(new ReviewTargetNotFoundError({
|
|
56
|
+
model: input.model,
|
|
57
|
+
targetId: input.targetId
|
|
58
|
+
}));
|
|
59
|
+
let canDelete;
|
|
60
|
+
try {
|
|
61
|
+
canDelete = await this.access.canDelete(target);
|
|
62
|
+
} catch (error) {
|
|
63
|
+
return Result.fail(new ReviewPersistenceError(error instanceof Error ? error : new Error(String(error))));
|
|
64
|
+
}
|
|
65
|
+
if (!canDelete) return Result.ok([]);
|
|
66
|
+
return this.cancelTargetReviews.execute({
|
|
67
|
+
reviews: inProgress,
|
|
68
|
+
actor: actor.value,
|
|
69
|
+
reason: getDeleteCancelReason(input.action)
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
const CancelCmsEntryReviewsForDeleteUseCase_CancelCmsEntryReviewsForDeleteUseCase = CancelCmsEntryReviewsForDeleteUseCase.createImplementation({
|
|
74
|
+
implementation: CancelCmsEntryReviewsForDeleteUseCaseImpl,
|
|
75
|
+
dependencies: [
|
|
76
|
+
CurrentReviewViewer,
|
|
77
|
+
ListTargetReviewsUseCase,
|
|
78
|
+
CmsEntryTargetReader,
|
|
79
|
+
CmsEntryAccess,
|
|
80
|
+
CancelTargetReviewsUseCase
|
|
81
|
+
]
|
|
82
|
+
});
|
|
83
|
+
export { CancelCmsEntryReviewsForDeleteUseCase_CancelCmsEntryReviewsForDeleteUseCase as CancelCmsEntryReviewsForDeleteUseCase };
|
|
84
|
+
|
|
85
|
+
//# sourceMappingURL=CancelCmsEntryReviewsForDeleteUseCase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/wrappers/CancelCmsEntryReviewsForDelete/CancelCmsEntryReviewsForDeleteUseCase.js","sources":["../../../../src/features/wrappers/CancelCmsEntryReviewsForDelete/CancelCmsEntryReviewsForDeleteUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { CurrentReviewViewer } from \"@webiny/api-workflows/features/identity/CurrentReviewViewer/index.js\";\nimport { ListTargetReviewsUseCase } from \"@webiny/api-workflows/features/review/ListTargetReviews/index.js\";\nimport { CancelTargetReviewsUseCase } from \"@webiny/api-workflows/features/review/CancelTargetReviews/index.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 { getDeleteCancelReason } from \"@webiny/api-workflows/domain/review/getDeleteCancelReason.js\";\nimport { CmsEntryTargetReader } from \"~/features/target/CmsEntryTargetReader/index.js\";\nimport { CmsEntryAccess } from \"~/features/target/CmsEntryAccess/index.js\";\nimport { isCmsNamespace } from \"~/utils/appName.js\";\nimport { CancelCmsEntryReviewsForDeleteUseCase as UseCase } from \"./abstractions.js\";\n\nclass CancelCmsEntryReviewsForDeleteUseCaseImpl implements UseCase.Interface {\n public constructor(\n private viewer: CurrentReviewViewer.Interface,\n private listTargetReviews: ListTargetReviewsUseCase.Interface,\n private targets: CmsEntryTargetReader.Interface,\n private access: CmsEntryAccess.Interface,\n private cancelTargetReviews: CancelTargetReviewsUseCase.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 if (!isCmsNamespace(input.model)) {\n return Result.fail(\n new ReviewTargetNotFoundError({ model: input.model, targetId: input.targetId })\n );\n }\n\n // Model-level check first: the answer must not reveal whether content has a review in\n // progress or exists at all (R86, same as R75).\n let canDeleteAnyEntry: boolean;\n try {\n canDeleteAnyEntry = await this.access.canDeleteAnyEntry(input.model);\n } catch (error) {\n return Result.fail(\n new ReviewPersistenceError(\n error instanceof Error ? error : new Error(String(error))\n )\n );\n }\n if (!canDeleteAnyEntry) {\n return Result.fail(\n new WorkflowsNotAuthorizedError({\n action: \"cancel the review to delete this content\"\n })\n );\n }\n\n const reviews = await this.listTargetReviews.execute({\n model: input.model,\n targetId: input.targetId,\n targetRevisionId: input.targetRevisionId ?? undefined,\n state: \"inProgress\"\n });\n if (reviews.isFail()) {\n return Result.fail(reviews.error);\n }\n const inProgress = reviews.value;\n if (inProgress.length === 0) {\n return Result.ok([]);\n }\n\n // Entry permissions (own) and the folder are entry-level: one revision answers for all.\n const targetRevisionId = inProgress[0].targetRevisionId;\n let target: CmsEntryTargetReader.Target | null;\n try {\n target = await this.targets.read({ model: input.model, targetRevisionId });\n } catch (error) {\n return Result.fail(\n new ReviewPersistenceError(\n error instanceof Error ? error : new Error(String(error))\n )\n );\n }\n if (!target || target.entry.entryId !== input.targetId) {\n return Result.fail(\n new ReviewTargetNotFoundError({ model: input.model, targetId: input.targetId })\n );\n }\n let canDelete: boolean;\n try {\n canDelete = await this.access.canDelete(target);\n } catch (error) {\n return Result.fail(\n new ReviewPersistenceError(\n error instanceof Error ? error : new Error(String(error))\n )\n );\n }\n // A user who may delete some content of the model but not this entry gets the answer of an\n // entry without a review, so the answer never shows a review (R86). Nothing is cancelled:\n // the delete that follows runs the CMS checks and refuses this user on its own.\n if (!canDelete) {\n return Result.ok([]);\n }\n\n // The reviews listed above; the engine does not list them again.\n return this.cancelTargetReviews.execute({\n reviews: inProgress,\n actor: actor.value,\n reason: getDeleteCancelReason(input.action)\n });\n }\n}\n\nexport const CancelCmsEntryReviewsForDeleteUseCase = UseCase.createImplementation({\n implementation: CancelCmsEntryReviewsForDeleteUseCaseImpl,\n dependencies: [\n CurrentReviewViewer,\n ListTargetReviewsUseCase,\n CmsEntryTargetReader,\n CmsEntryAccess,\n CancelTargetReviewsUseCase\n ]\n});\n"],"names":["CancelCmsEntryReviewsForDeleteUseCaseImpl","viewer","listTargetReviews","targets","access","cancelTargetReviews","input","actor","Result","isCmsNamespace","ReviewTargetNotFoundError","canDeleteAnyEntry","error","ReviewPersistenceError","Error","String","WorkflowsNotAuthorizedError","reviews","undefined","inProgress","targetRevisionId","target","canDelete","getDeleteCancelReason","CancelCmsEntryReviewsForDeleteUseCase","UseCase","CurrentReviewViewer","ListTargetReviewsUseCase","CmsEntryTargetReader","CmsEntryAccess","CancelTargetReviewsUseCase"],"mappings":";;;;;;;;;;;AAeA,MAAMA;IACF,YACYC,MAAqC,EACrCC,iBAAqD,EACrDC,OAAuC,EACvCC,MAAgC,EAChCC,mBAAyD,CACnE;aALUJ,MAAM,GAANA;aACAC,iBAAiB,GAAjBA;aACAC,OAAO,GAAPA;aACAC,MAAM,GAANA;aACAC,mBAAmB,GAAnBA;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,IAAI,CAACE,eAAeH,MAAM,KAAK,GAC3B,OAAOE,OAAO,IAAI,CACd,IAAIE,0BAA0B;YAAE,OAAOJ,MAAM,KAAK;YAAE,UAAUA,MAAM,QAAQ;QAAC;QAMrF,IAAIK;QACJ,IAAI;YACAA,oBAAoB,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAACL,MAAM,KAAK;QACvE,EAAE,OAAOM,OAAO;YACZ,OAAOJ,OAAO,IAAI,CACd,IAAIK,uBACAD,iBAAiBE,QAAQF,QAAQ,IAAIE,MAAMC,OAAOH;QAG9D;QACA,IAAI,CAACD,mBACD,OAAOH,OAAO,IAAI,CACd,IAAIQ,4BAA4B;YAC5B,QAAQ;QACZ;QAIR,MAAMC,UAAU,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;YACjD,OAAOX,MAAM,KAAK;YAClB,UAAUA,MAAM,QAAQ;YACxB,kBAAkBA,MAAM,gBAAgB,IAAIY;YAC5C,OAAO;QACX;QACA,IAAID,QAAQ,MAAM,IACd,OAAOT,OAAO,IAAI,CAACS,QAAQ,KAAK;QAEpC,MAAME,aAAaF,QAAQ,KAAK;QAChC,IAAIE,AAAsB,MAAtBA,WAAW,MAAM,EACjB,OAAOX,OAAO,EAAE,CAAC,EAAE;QAIvB,MAAMY,mBAAmBD,UAAU,CAAC,EAAE,CAAC,gBAAgB;QACvD,IAAIE;QACJ,IAAI;YACAA,SAAS,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;gBAAE,OAAOf,MAAM,KAAK;gBAAEc;YAAiB;QAC5E,EAAE,OAAOR,OAAO;YACZ,OAAOJ,OAAO,IAAI,CACd,IAAIK,uBACAD,iBAAiBE,QAAQF,QAAQ,IAAIE,MAAMC,OAAOH;QAG9D;QACA,IAAI,CAACS,UAAUA,OAAO,KAAK,CAAC,OAAO,KAAKf,MAAM,QAAQ,EAClD,OAAOE,OAAO,IAAI,CACd,IAAIE,0BAA0B;YAAE,OAAOJ,MAAM,KAAK;YAAE,UAAUA,MAAM,QAAQ;QAAC;QAGrF,IAAIgB;QACJ,IAAI;YACAA,YAAY,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAACD;QAC5C,EAAE,OAAOT,OAAO;YACZ,OAAOJ,OAAO,IAAI,CACd,IAAIK,uBACAD,iBAAiBE,QAAQF,QAAQ,IAAIE,MAAMC,OAAOH;QAG9D;QAIA,IAAI,CAACU,WACD,OAAOd,OAAO,EAAE,CAAC,EAAE;QAIvB,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;YACpC,SAASW;YACT,OAAOZ,MAAM,KAAK;YAClB,QAAQgB,sBAAsBjB,MAAM,MAAM;QAC9C;IACJ;AACJ;AAEO,MAAMkB,8EAAwCC,sCAAAA,oBAA4B,CAAC;IAC9E,gBAAgBzB;IAChB,cAAc;QACV0B;QACAC;QACAC;QACAC;QACAC;KACH;AACL"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type Result } from "@webiny/feature/api";
|
|
2
|
+
import type { ReviewData } from "@webiny/api-workflows/domain/review/types.js";
|
|
3
|
+
import type { ReviewActiveOnTrashAction, ReviewPersistenceError, ReviewTargetNotFoundError } from "@webiny/api-workflows/domain/review/errors.js";
|
|
4
|
+
import type { WorkflowsNotAuthenticatedError, WorkflowsNotAuthorizedError } from "@webiny/api-workflows/domain/permissions/errors.js";
|
|
5
|
+
import type { ListTargetReviewsUseCase } from "@webiny/api-workflows/features/review/ListTargetReviews/index.js";
|
|
6
|
+
import type { CancelTargetReviewsUseCase } from "@webiny/api-workflows/features/review/CancelTargetReviews/index.js";
|
|
7
|
+
export interface CancelCmsEntryReviewsForDeleteInput {
|
|
8
|
+
/** Namespace id, `cms.<modelId>`. */
|
|
9
|
+
model: string;
|
|
10
|
+
/** The entry id. */
|
|
11
|
+
targetId: string;
|
|
12
|
+
/** Deleting one revision: only its review. Omitted for trash and entry delete. */
|
|
13
|
+
targetRevisionId?: string | null;
|
|
14
|
+
/** Recorded as the cancel reason: "content trashed" or "content deleted". */
|
|
15
|
+
action: ReviewActiveOnTrashAction;
|
|
16
|
+
}
|
|
17
|
+
export interface ICancelCmsEntryReviewsForDeleteUseCaseErrors {
|
|
18
|
+
notAuthenticated: WorkflowsNotAuthenticatedError;
|
|
19
|
+
notAuthorized: WorkflowsNotAuthorizedError;
|
|
20
|
+
targetNotFound: ReviewTargetNotFoundError;
|
|
21
|
+
persistence: ReviewPersistenceError;
|
|
22
|
+
list: ListTargetReviewsUseCase.Error;
|
|
23
|
+
cancel: CancelTargetReviewsUseCase.Error;
|
|
24
|
+
}
|
|
25
|
+
type UseCaseError = ICancelCmsEntryReviewsForDeleteUseCaseErrors[keyof ICancelCmsEntryReviewsForDeleteUseCaseErrors];
|
|
26
|
+
export interface ICancelCmsEntryReviewsForDeleteUseCase {
|
|
27
|
+
execute(input: CancelCmsEntryReviewsForDeleteInput): Promise<Result<ReviewData[], UseCaseError>>;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* The confirm path for trashing or deleting a CMS entry or revision with a review in progress
|
|
31
|
+
* (D134, R74): cancels the in-progress reviews as the caller, who needs delete access to the
|
|
32
|
+
* content and no cancel right. The admin calls it, then repeats the trash or delete.
|
|
33
|
+
*/
|
|
34
|
+
export declare const CancelCmsEntryReviewsForDeleteUseCase: import("@webiny/di").Abstraction<ICancelCmsEntryReviewsForDeleteUseCase>;
|
|
35
|
+
export declare namespace CancelCmsEntryReviewsForDeleteUseCase {
|
|
36
|
+
type Interface = ICancelCmsEntryReviewsForDeleteUseCase;
|
|
37
|
+
type Input = CancelCmsEntryReviewsForDeleteInput;
|
|
38
|
+
type Error = UseCaseError;
|
|
39
|
+
type Return = Promise<Result<ReviewData[], UseCaseError>>;
|
|
40
|
+
}
|
|
41
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/wrappers/CancelCmsEntryReviewsForDelete/abstractions.js","sources":["../../../../src/features/wrappers/CancelCmsEntryReviewsForDelete/abstractions.ts"],"sourcesContent":["import { createAbstraction, type Result } from \"@webiny/feature/api\";\nimport type { ReviewData } from \"@webiny/api-workflows/domain/review/types.js\";\nimport type {\n ReviewActiveOnTrashAction,\n ReviewPersistenceError,\n ReviewTargetNotFoundError\n} from \"@webiny/api-workflows/domain/review/errors.js\";\nimport type {\n WorkflowsNotAuthenticatedError,\n WorkflowsNotAuthorizedError\n} from \"@webiny/api-workflows/domain/permissions/errors.js\";\nimport type { ListTargetReviewsUseCase } from \"@webiny/api-workflows/features/review/ListTargetReviews/index.js\";\nimport type { CancelTargetReviewsUseCase } from \"@webiny/api-workflows/features/review/CancelTargetReviews/index.js\";\n\nexport interface CancelCmsEntryReviewsForDeleteInput {\n /** Namespace id, `cms.<modelId>`. */\n model: string;\n /** The entry id. */\n targetId: string;\n /** Deleting one revision: only its review. Omitted for trash and entry delete. */\n targetRevisionId?: string | null;\n /** Recorded as the cancel reason: \"content trashed\" or \"content deleted\". */\n action: ReviewActiveOnTrashAction;\n}\n\nexport interface ICancelCmsEntryReviewsForDeleteUseCaseErrors {\n notAuthenticated: WorkflowsNotAuthenticatedError;\n notAuthorized: WorkflowsNotAuthorizedError;\n targetNotFound: ReviewTargetNotFoundError;\n persistence: ReviewPersistenceError;\n list: ListTargetReviewsUseCase.Error;\n cancel: CancelTargetReviewsUseCase.Error;\n}\n\ntype UseCaseError =\n ICancelCmsEntryReviewsForDeleteUseCaseErrors[keyof ICancelCmsEntryReviewsForDeleteUseCaseErrors];\n\nexport interface ICancelCmsEntryReviewsForDeleteUseCase {\n execute(\n input: CancelCmsEntryReviewsForDeleteInput\n ): Promise<Result<ReviewData[], UseCaseError>>;\n}\n\n/**\n * The confirm path for trashing or deleting a CMS entry or revision with a review in progress\n * (D134, R74): cancels the in-progress reviews as the caller, who needs delete access to the\n * content and no cancel right. The admin calls it, then repeats the trash or delete.\n */\nexport const CancelCmsEntryReviewsForDeleteUseCase =\n createAbstraction<ICancelCmsEntryReviewsForDeleteUseCase>(\n \"CancelCmsEntryReviewsForDeleteUseCase\"\n );\n\nexport namespace CancelCmsEntryReviewsForDeleteUseCase {\n export type Interface = ICancelCmsEntryReviewsForDeleteUseCase;\n export type Input = CancelCmsEntryReviewsForDeleteInput;\n export type Error = UseCaseError;\n export type Return = Promise<Result<ReviewData[], UseCaseError>>;\n}\n"],"names":["CancelCmsEntryReviewsForDeleteUseCase","createAbstraction"],"mappings":";AAgDO,MAAMA,wCACTC,kBACI"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api";
|
|
2
|
+
import { CancelCmsEntryReviewsForDeleteUseCase } from "./CancelCmsEntryReviewsForDeleteUseCase.js";
|
|
3
|
+
const CancelCmsEntryReviewsForDeleteFeature = createFeature({
|
|
4
|
+
name: "CmsWorkflows/CancelCmsEntryReviewsForDelete",
|
|
5
|
+
register (container) {
|
|
6
|
+
container.register(CancelCmsEntryReviewsForDeleteUseCase);
|
|
7
|
+
}
|
|
8
|
+
});
|
|
9
|
+
export { CancelCmsEntryReviewsForDeleteFeature };
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/wrappers/CancelCmsEntryReviewsForDelete/feature.js","sources":["../../../../src/features/wrappers/CancelCmsEntryReviewsForDelete/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { CancelCmsEntryReviewsForDeleteUseCase } from \"./CancelCmsEntryReviewsForDeleteUseCase.js\";\n\nexport const CancelCmsEntryReviewsForDeleteFeature = createFeature({\n name: \"CmsWorkflows/CancelCmsEntryReviewsForDelete\",\n register(container) {\n container.register(CancelCmsEntryReviewsForDeleteUseCase);\n }\n});\n"],"names":["CancelCmsEntryReviewsForDeleteFeature","createFeature","container","CancelCmsEntryReviewsForDeleteUseCase"],"mappings":";;AAGO,MAAMA,wCAAwCC,cAAc;IAC/D,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;IACvB;AACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { CancelCmsEntryReviewsForDeleteUseCase } from "./abstractions.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { CancelCmsEntryReviewsForDeleteUseCase } from "./abstractions.js";
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { CurrentReviewViewer } from "@webiny/api-workflows/features/identity/CurrentReviewViewer/index.js";
|
|
2
|
+
import { WorkflowsPermissions } from "@webiny/api-workflows/features/permissions/WorkflowsPermissions/index.js";
|
|
3
|
+
import { CmsEntryFolderExistsService } from "../../../features/target/CmsEntryFolderExistsService/index.js";
|
|
4
|
+
import { CmsEntryFolderExistsUseCase as UseCase } from "./abstractions.js";
|
|
5
|
+
declare class CmsEntryFolderExistsUseCaseImpl implements UseCase.Interface {
|
|
6
|
+
private viewer;
|
|
7
|
+
private permissions;
|
|
8
|
+
private folders;
|
|
9
|
+
constructor(viewer: CurrentReviewViewer.Interface, permissions: WorkflowsPermissions.Interface, folders: CmsEntryFolderExistsService.Interface);
|
|
10
|
+
execute(input: UseCase.Input): UseCase.Return;
|
|
11
|
+
}
|
|
12
|
+
export declare const CmsEntryFolderExistsUseCase: typeof CmsEntryFolderExistsUseCaseImpl & {
|
|
13
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").ICmsEntryFolderExistsUseCase>;
|
|
14
|
+
};
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,46 @@
|
|
|
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 { WorkflowsNotAuthorizedError } from "@webiny/api-workflows/domain/permissions/errors.js";
|
|
5
|
+
import { WorkflowPersistenceError } from "@webiny/api-workflows/domain/workflow/errors.js";
|
|
6
|
+
import { CmsEntryFolderExistsService } from "../../target/CmsEntryFolderExistsService/index.js";
|
|
7
|
+
import { CmsEntryFolderExistsUseCase } from "./abstractions.js";
|
|
8
|
+
class CmsEntryFolderExistsUseCaseImpl {
|
|
9
|
+
constructor(viewer, permissions, folders){
|
|
10
|
+
this.viewer = viewer;
|
|
11
|
+
this.permissions = permissions;
|
|
12
|
+
this.folders = folders;
|
|
13
|
+
}
|
|
14
|
+
async execute(input) {
|
|
15
|
+
const actor = this.viewer.getActor();
|
|
16
|
+
if (actor.isFail()) return Result.fail(actor.error);
|
|
17
|
+
let canEdit;
|
|
18
|
+
try {
|
|
19
|
+
canEdit = await this.permissions.canEdit();
|
|
20
|
+
} catch (error) {
|
|
21
|
+
return Result.fail(new WorkflowPersistenceError(error instanceof Error ? error : new Error(String(error))));
|
|
22
|
+
}
|
|
23
|
+
if (!canEdit) return Result.fail(new WorkflowsNotAuthorizedError({
|
|
24
|
+
action: "check folders"
|
|
25
|
+
}));
|
|
26
|
+
try {
|
|
27
|
+
return Result.ok(await this.folders.exists({
|
|
28
|
+
id: input.id,
|
|
29
|
+
type: input.type
|
|
30
|
+
}));
|
|
31
|
+
} catch (error) {
|
|
32
|
+
return Result.fail(new WorkflowPersistenceError(error instanceof Error ? error : new Error(String(error))));
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
const CmsEntryFolderExistsUseCase_CmsEntryFolderExistsUseCase = CmsEntryFolderExistsUseCase.createImplementation({
|
|
37
|
+
implementation: CmsEntryFolderExistsUseCaseImpl,
|
|
38
|
+
dependencies: [
|
|
39
|
+
CurrentReviewViewer,
|
|
40
|
+
WorkflowsPermissions,
|
|
41
|
+
CmsEntryFolderExistsService
|
|
42
|
+
]
|
|
43
|
+
});
|
|
44
|
+
export { CmsEntryFolderExistsUseCase_CmsEntryFolderExistsUseCase as CmsEntryFolderExistsUseCase };
|
|
45
|
+
|
|
46
|
+
//# sourceMappingURL=CmsEntryFolderExistsUseCase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/wrappers/CmsEntryFolderExists/CmsEntryFolderExistsUseCase.js","sources":["../../../../src/features/wrappers/CmsEntryFolderExists/CmsEntryFolderExistsUseCase.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 { WorkflowsNotAuthorizedError } from \"@webiny/api-workflows/domain/permissions/errors.js\";\nimport { WorkflowPersistenceError } from \"@webiny/api-workflows/domain/workflow/errors.js\";\nimport { CmsEntryFolderExistsService } from \"~/features/target/CmsEntryFolderExistsService/index.js\";\nimport { CmsEntryFolderExistsUseCase as UseCase } from \"./abstractions.js\";\n\nclass CmsEntryFolderExistsUseCaseImpl implements UseCase.Interface {\n public constructor(\n private viewer: CurrentReviewViewer.Interface,\n private permissions: WorkflowsPermissions.Interface,\n private folders: CmsEntryFolderExistsService.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: \"check folders\" }));\n }\n\n try {\n return Result.ok(await this.folders.exists({ id: input.id, type: input.type }));\n } catch (error) {\n return Result.fail(\n new WorkflowPersistenceError(\n error instanceof Error ? error : new Error(String(error))\n )\n );\n }\n }\n}\n\nexport const CmsEntryFolderExistsUseCase = UseCase.createImplementation({\n implementation: CmsEntryFolderExistsUseCaseImpl,\n dependencies: [CurrentReviewViewer, WorkflowsPermissions, CmsEntryFolderExistsService]\n});\n"],"names":["CmsEntryFolderExistsUseCaseImpl","viewer","permissions","folders","input","actor","Result","canEdit","error","WorkflowPersistenceError","Error","String","WorkflowsNotAuthorizedError","CmsEntryFolderExistsUseCase","UseCase","CurrentReviewViewer","WorkflowsPermissions","CmsEntryFolderExistsService"],"mappings":";;;;;;;AAQA,MAAMA;IACF,YACYC,MAAqC,EACrCC,WAA2C,EAC3CC,OAA8C,CACxD;aAHUF,MAAM,GAANA;aACAC,WAAW,GAAXA;aACAC,OAAO,GAAPA;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;QAAgB;QAGjF,IAAI;YACA,OAAON,OAAO,EAAE,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;gBAAE,IAAIF,MAAM,EAAE;gBAAE,MAAMA,MAAM,IAAI;YAAC;QAChF,EAAE,OAAOI,OAAO;YACZ,OAAOF,OAAO,IAAI,CACd,IAAIG,yBACAD,iBAAiBE,QAAQF,QAAQ,IAAIE,MAAMC,OAAOH;QAG9D;IACJ;AACJ;AAEO,MAAMK,0DAA8BC,4BAAAA,oBAA4B,CAAC;IACpE,gBAAgBd;IAChB,cAAc;QAACe;QAAqBC;QAAsBC;KAA4B;AAC1F"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type Result } from "@webiny/feature/api";
|
|
2
|
+
import type { WorkflowsNotAuthenticatedError, WorkflowsNotAuthorizedError } from "@webiny/api-workflows/domain/permissions/errors.js";
|
|
3
|
+
import type { WorkflowPersistenceError } from "@webiny/api-workflows/domain/workflow/errors.js";
|
|
4
|
+
export interface CmsEntryFolderExistsInput {
|
|
5
|
+
id: string;
|
|
6
|
+
/** ACO folder type, `cms:<modelId>`. */
|
|
7
|
+
type: string;
|
|
8
|
+
}
|
|
9
|
+
export interface ICmsEntryFolderExistsUseCaseErrors {
|
|
10
|
+
notAuthenticated: WorkflowsNotAuthenticatedError;
|
|
11
|
+
notAuthorized: WorkflowsNotAuthorizedError;
|
|
12
|
+
persistence: WorkflowPersistenceError;
|
|
13
|
+
}
|
|
14
|
+
type UseCaseError = ICmsEntryFolderExistsUseCaseErrors[keyof ICmsEntryFolderExistsUseCaseErrors];
|
|
15
|
+
export interface ICmsEntryFolderExistsUseCase {
|
|
16
|
+
execute(input: CmsEntryFolderExistsInput): Promise<Result<boolean, UseCaseError>>;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Whether a folder a rule names still exists (D69, R125): `editor` only, the answer only, for
|
|
20
|
+
* folders the editor may not be able to open.
|
|
21
|
+
*/
|
|
22
|
+
export declare const CmsEntryFolderExistsUseCase: import("@webiny/di").Abstraction<ICmsEntryFolderExistsUseCase>;
|
|
23
|
+
export declare namespace CmsEntryFolderExistsUseCase {
|
|
24
|
+
type Interface = ICmsEntryFolderExistsUseCase;
|
|
25
|
+
type Input = CmsEntryFolderExistsInput;
|
|
26
|
+
type Error = UseCaseError;
|
|
27
|
+
type Return = Promise<Result<boolean, UseCaseError>>;
|
|
28
|
+
}
|
|
29
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/wrappers/CmsEntryFolderExists/abstractions.js","sources":["../../../../src/features/wrappers/CmsEntryFolderExists/abstractions.ts"],"sourcesContent":["import { createAbstraction, type Result } from \"@webiny/feature/api\";\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\";\n\nexport interface CmsEntryFolderExistsInput {\n id: string;\n /** ACO folder type, `cms:<modelId>`. */\n type: string;\n}\n\nexport interface ICmsEntryFolderExistsUseCaseErrors {\n notAuthenticated: WorkflowsNotAuthenticatedError;\n notAuthorized: WorkflowsNotAuthorizedError;\n persistence: WorkflowPersistenceError;\n}\n\ntype UseCaseError = ICmsEntryFolderExistsUseCaseErrors[keyof ICmsEntryFolderExistsUseCaseErrors];\n\nexport interface ICmsEntryFolderExistsUseCase {\n execute(input: CmsEntryFolderExistsInput): Promise<Result<boolean, UseCaseError>>;\n}\n\n/**\n * Whether a folder a rule names still exists (D69, R125): `editor` only, the answer only, for\n * folders the editor may not be able to open.\n */\nexport const CmsEntryFolderExistsUseCase = createAbstraction<ICmsEntryFolderExistsUseCase>(\n \"CmsEntryFolderExistsUseCase\"\n);\n\nexport namespace CmsEntryFolderExistsUseCase {\n export type Interface = ICmsEntryFolderExistsUseCase;\n export type Input = CmsEntryFolderExistsInput;\n export type Error = UseCaseError;\n export type Return = Promise<Result<boolean, UseCaseError>>;\n}\n"],"names":["CmsEntryFolderExistsUseCase","createAbstraction"],"mappings":";AA6BO,MAAMA,8BAA8BC,kBACvC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api";
|
|
2
|
+
import { CmsEntryFolderExistsUseCase } from "./CmsEntryFolderExistsUseCase.js";
|
|
3
|
+
const CmsEntryFolderExistsFeature = createFeature({
|
|
4
|
+
name: "CmsWorkflows/CmsEntryFolderExists",
|
|
5
|
+
register (container) {
|
|
6
|
+
container.register(CmsEntryFolderExistsUseCase);
|
|
7
|
+
}
|
|
8
|
+
});
|
|
9
|
+
export { CmsEntryFolderExistsFeature };
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/wrappers/CmsEntryFolderExists/feature.js","sources":["../../../../src/features/wrappers/CmsEntryFolderExists/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { CmsEntryFolderExistsUseCase } from \"./CmsEntryFolderExistsUseCase.js\";\n\nexport const CmsEntryFolderExistsFeature = createFeature({\n name: \"CmsWorkflows/CmsEntryFolderExists\",\n register(container) {\n container.register(CmsEntryFolderExistsUseCase);\n }\n});\n"],"names":["CmsEntryFolderExistsFeature","createFeature","container","CmsEntryFolderExistsUseCase"],"mappings":";;AAGO,MAAMA,8BAA8BC,cAAc;IACrD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;IACvB;AACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { CmsEntryFolderExistsUseCase } from "./abstractions.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { CmsEntryFolderExistsUseCase } from "./abstractions.js";
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { CurrentReviewViewer } from "@webiny/api-workflows/features/identity/CurrentReviewViewer/index.js";
|
|
2
|
+
import { GetReviewUseCase } from "@webiny/api-workflows/features/review/GetReview/index.js";
|
|
3
|
+
import { CmsEntryTargetReader } from "../../../features/target/CmsEntryTargetReader/index.js";
|
|
4
|
+
import { CmsEntryAccess } from "../../../features/target/CmsEntryAccess/index.js";
|
|
5
|
+
import { CmsEntryReviewGuardService as Abstraction } from "./abstractions.js";
|
|
6
|
+
declare class CmsEntryReviewGuardServiceImpl implements Abstraction.Interface {
|
|
7
|
+
private viewer;
|
|
8
|
+
private getReview;
|
|
9
|
+
private targets;
|
|
10
|
+
private access;
|
|
11
|
+
constructor(viewer: CurrentReviewViewer.Interface, getReview: GetReviewUseCase.Interface, targets: CmsEntryTargetReader.Interface, access: CmsEntryAccess.Interface);
|
|
12
|
+
authorize(params: Abstraction.Params): Abstraction.Return;
|
|
13
|
+
}
|
|
14
|
+
export declare const CmsEntryReviewGuardService: typeof CmsEntryReviewGuardServiceImpl & {
|
|
15
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").ICmsEntryReviewGuardService>;
|
|
16
|
+
};
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { CurrentReviewViewer } from "@webiny/api-workflows/features/identity/CurrentReviewViewer/index.js";
|
|
3
|
+
import { GetReviewUseCase } from "@webiny/api-workflows/features/review/GetReview/index.js";
|
|
4
|
+
import { WorkflowsNotAuthorizedError } from "@webiny/api-workflows/domain/permissions/errors.js";
|
|
5
|
+
import { ReviewNotFoundError, ReviewPersistenceError } from "@webiny/api-workflows/domain/review/errors.js";
|
|
6
|
+
import { CmsEntryTargetReader } from "../../target/CmsEntryTargetReader/index.js";
|
|
7
|
+
import { CmsEntryAccess } from "../../target/CmsEntryAccess/index.js";
|
|
8
|
+
import { isCmsNamespace } from "../../../utils/appName.js";
|
|
9
|
+
import { CmsEntryReviewGuardService } from "./abstractions.js";
|
|
10
|
+
class CmsEntryReviewGuardServiceImpl {
|
|
11
|
+
constructor(viewer, getReview, targets, access){
|
|
12
|
+
this.viewer = viewer;
|
|
13
|
+
this.getReview = getReview;
|
|
14
|
+
this.targets = targets;
|
|
15
|
+
this.access = access;
|
|
16
|
+
}
|
|
17
|
+
async authorize(params) {
|
|
18
|
+
let viewer;
|
|
19
|
+
try {
|
|
20
|
+
viewer = await this.viewer.get();
|
|
21
|
+
} catch (error) {
|
|
22
|
+
return Result.fail(new ReviewPersistenceError(error instanceof Error ? error : new Error(String(error))));
|
|
23
|
+
}
|
|
24
|
+
if (viewer.isFail()) return Result.fail(viewer.error);
|
|
25
|
+
const review = await this.getReview.execute({
|
|
26
|
+
id: params.reviewId
|
|
27
|
+
});
|
|
28
|
+
if (review.isFail()) return Result.fail(review.error);
|
|
29
|
+
if (!isCmsNamespace(review.value.model)) return Result.fail(new ReviewNotFoundError({
|
|
30
|
+
id: params.reviewId
|
|
31
|
+
}));
|
|
32
|
+
let canRead;
|
|
33
|
+
try {
|
|
34
|
+
const target = await this.targets.read({
|
|
35
|
+
model: review.value.model,
|
|
36
|
+
targetRevisionId: review.value.targetRevisionId
|
|
37
|
+
});
|
|
38
|
+
const isReviewTarget = target?.entry.entryId === review.value.targetId;
|
|
39
|
+
canRead = !!target && isReviewTarget && await this.access.canRead(target);
|
|
40
|
+
} catch (error) {
|
|
41
|
+
return Result.fail(new ReviewPersistenceError(error instanceof Error ? error : new Error(String(error))));
|
|
42
|
+
}
|
|
43
|
+
if (!canRead) return Result.fail(new WorkflowsNotAuthorizedError({
|
|
44
|
+
action: params.action
|
|
45
|
+
}));
|
|
46
|
+
return Result.ok({
|
|
47
|
+
review: review.value,
|
|
48
|
+
viewer: viewer.value
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
const CmsEntryReviewGuardService_CmsEntryReviewGuardService = CmsEntryReviewGuardService.createImplementation({
|
|
53
|
+
implementation: CmsEntryReviewGuardServiceImpl,
|
|
54
|
+
dependencies: [
|
|
55
|
+
CurrentReviewViewer,
|
|
56
|
+
GetReviewUseCase,
|
|
57
|
+
CmsEntryTargetReader,
|
|
58
|
+
CmsEntryAccess
|
|
59
|
+
]
|
|
60
|
+
});
|
|
61
|
+
export { CmsEntryReviewGuardService_CmsEntryReviewGuardService as CmsEntryReviewGuardService };
|
|
62
|
+
|
|
63
|
+
//# sourceMappingURL=CmsEntryReviewGuardService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/wrappers/CmsEntryReviewGuardService/CmsEntryReviewGuardService.js","sources":["../../../../src/features/wrappers/CmsEntryReviewGuardService/CmsEntryReviewGuardService.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { CurrentReviewViewer } from \"@webiny/api-workflows/features/identity/CurrentReviewViewer/index.js\";\nimport { GetReviewUseCase } from \"@webiny/api-workflows/features/review/GetReview/index.js\";\nimport { WorkflowsNotAuthorizedError } from \"@webiny/api-workflows/domain/permissions/errors.js\";\nimport {\n ReviewNotFoundError,\n ReviewPersistenceError\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 { CmsEntryReviewGuardService as Abstraction } from \"./abstractions.js\";\n\nclass CmsEntryReviewGuardServiceImpl implements Abstraction.Interface {\n public constructor(\n private viewer: CurrentReviewViewer.Interface,\n private getReview: GetReviewUseCase.Interface,\n private targets: CmsEntryTargetReader.Interface,\n private access: CmsEntryAccess.Interface\n ) {}\n\n public async authorize(params: Abstraction.Params): Abstraction.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 const review = await this.getReview.execute({ id: params.reviewId });\n if (review.isFail()) {\n return Result.fail(review.error);\n }\n if (!isCmsNamespace(review.value.model)) {\n return Result.fail(new ReviewNotFoundError({ id: params.reviewId }));\n }\n\n // A target that is missing, hidden or not the review's own entry is unreadable; a failed\n // read or access check is a persistence error (R87).\n let canRead: boolean;\n try {\n const target = await this.targets.read({\n model: review.value.model,\n targetRevisionId: review.value.targetRevisionId\n });\n const isReviewTarget = target?.entry.entryId === review.value.targetId;\n canRead = !!target && isReviewTarget && (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: params.action }));\n }\n\n return Result.ok({ review: review.value, viewer: viewer.value });\n }\n}\n\nexport const CmsEntryReviewGuardService = Abstraction.createImplementation({\n implementation: CmsEntryReviewGuardServiceImpl,\n dependencies: [CurrentReviewViewer, GetReviewUseCase, CmsEntryTargetReader, CmsEntryAccess]\n});\n"],"names":["CmsEntryReviewGuardServiceImpl","viewer","getReview","targets","access","params","error","Result","ReviewPersistenceError","Error","String","review","isCmsNamespace","ReviewNotFoundError","canRead","target","isReviewTarget","WorkflowsNotAuthorizedError","CmsEntryReviewGuardService","Abstraction","CurrentReviewViewer","GetReviewUseCase","CmsEntryTargetReader","CmsEntryAccess"],"mappings":";;;;;;;;;AAaA,MAAMA;IACF,YACYC,MAAqC,EACrCC,SAAqC,EACrCC,OAAuC,EACvCC,MAAgC,CAC1C;aAJUH,MAAM,GAANA;aACAC,SAAS,GAATA;aACAC,OAAO,GAAPA;aACAC,MAAM,GAANA;IACT;IAEH,MAAa,UAAUC,MAA0B,EAAsB;QAEnE,IAAIJ;QACJ,IAAI;YACAA,SAAS,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG;QAClC,EAAE,OAAOK,OAAO;YACZ,OAAOC,OAAO,IAAI,CACd,IAAIC,uBACAF,iBAAiBG,QAAQH,QAAQ,IAAIG,MAAMC,OAAOJ;QAG9D;QACA,IAAIL,OAAO,MAAM,IACb,OAAOM,OAAO,IAAI,CAACN,OAAO,KAAK;QAGnC,MAAMU,SAAS,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAAE,IAAIN,OAAO,QAAQ;QAAC;QAClE,IAAIM,OAAO,MAAM,IACb,OAAOJ,OAAO,IAAI,CAACI,OAAO,KAAK;QAEnC,IAAI,CAACC,eAAeD,OAAO,KAAK,CAAC,KAAK,GAClC,OAAOJ,OAAO,IAAI,CAAC,IAAIM,oBAAoB;YAAE,IAAIR,OAAO,QAAQ;QAAC;QAKrE,IAAIS;QACJ,IAAI;YACA,MAAMC,SAAS,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;gBACnC,OAAOJ,OAAO,KAAK,CAAC,KAAK;gBACzB,kBAAkBA,OAAO,KAAK,CAAC,gBAAgB;YACnD;YACA,MAAMK,iBAAiBD,QAAQ,MAAM,YAAYJ,OAAO,KAAK,CAAC,QAAQ;YACtEG,UAAU,CAAC,CAACC,UAAUC,kBAAmB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAACD;QACvE,EAAE,OAAOT,OAAO;YACZ,OAAOC,OAAO,IAAI,CACd,IAAIC,uBACAF,iBAAiBG,QAAQH,QAAQ,IAAIG,MAAMC,OAAOJ;QAG9D;QACA,IAAI,CAACQ,SACD,OAAOP,OAAO,IAAI,CAAC,IAAIU,4BAA4B;YAAE,QAAQZ,OAAO,MAAM;QAAC;QAG/E,OAAOE,OAAO,EAAE,CAAC;YAAE,QAAQI,OAAO,KAAK;YAAE,QAAQV,OAAO,KAAK;QAAC;IAClE;AACJ;AAEO,MAAMiB,wDAA6BC,2BAAAA,oBAAgC,CAAC;IACvE,gBAAgBnB;IAChB,cAAc;QAACoB;QAAqBC;QAAkBC;QAAsBC;KAAe;AAC/F"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { type Result } from "@webiny/feature/api";
|
|
2
|
+
import type { ReviewData, ReviewViewer } from "@webiny/api-workflows/domain/review/types.js";
|
|
3
|
+
import type { WorkflowsNotAuthenticatedError, WorkflowsNotAuthorizedError } from "@webiny/api-workflows/domain/permissions/errors.js";
|
|
4
|
+
import type { ReviewNotFoundError, ReviewPersistenceError } from "@webiny/api-workflows/domain/review/errors.js";
|
|
5
|
+
export interface CmsEntryReviewGuardServiceParams {
|
|
6
|
+
reviewId: string;
|
|
7
|
+
/** What the caller tries to do, e.g. "start this step"; named in `Workflows/NotAuthorized`. */
|
|
8
|
+
action: string;
|
|
9
|
+
}
|
|
10
|
+
export interface AuthorizedCmsEntryReview {
|
|
11
|
+
review: ReviewData;
|
|
12
|
+
viewer: ReviewViewer;
|
|
13
|
+
}
|
|
14
|
+
export interface ICmsEntryReviewGuardServiceErrors {
|
|
15
|
+
notAuthenticated: WorkflowsNotAuthenticatedError;
|
|
16
|
+
notAuthorized: WorkflowsNotAuthorizedError;
|
|
17
|
+
notFound: ReviewNotFoundError;
|
|
18
|
+
persistence: ReviewPersistenceError;
|
|
19
|
+
}
|
|
20
|
+
type GuardError = ICmsEntryReviewGuardServiceErrors[keyof ICmsEntryReviewGuardServiceErrors];
|
|
21
|
+
export interface ICmsEntryReviewGuardService {
|
|
22
|
+
authorize(params: CmsEntryReviewGuardServiceParams): Promise<Result<AuthorizedCmsEntryReview, GuardError>>;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* The checks every CMS review action shares (spec 5.1, D133 point 7): a signed-in viewer, a review
|
|
26
|
+
* of a `cms.*` namespace (another app's review is not found, R46) and read access to its target
|
|
27
|
+
* with the CMS's own logic (R47). Permission rules per action (cancel) stay in the wrapper.
|
|
28
|
+
*/
|
|
29
|
+
export declare const CmsEntryReviewGuardService: import("@webiny/di").Abstraction<ICmsEntryReviewGuardService>;
|
|
30
|
+
export declare namespace CmsEntryReviewGuardService {
|
|
31
|
+
type Interface = ICmsEntryReviewGuardService;
|
|
32
|
+
type Params = CmsEntryReviewGuardServiceParams;
|
|
33
|
+
type Authorized = AuthorizedCmsEntryReview;
|
|
34
|
+
type Error = GuardError;
|
|
35
|
+
type Return = Promise<Result<AuthorizedCmsEntryReview, GuardError>>;
|
|
36
|
+
}
|
|
37
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/wrappers/CmsEntryReviewGuardService/abstractions.js","sources":["../../../../src/features/wrappers/CmsEntryReviewGuardService/abstractions.ts"],"sourcesContent":["import { createAbstraction, type Result } from \"@webiny/feature/api\";\nimport type { ReviewData, ReviewViewer } from \"@webiny/api-workflows/domain/review/types.js\";\nimport type {\n WorkflowsNotAuthenticatedError,\n WorkflowsNotAuthorizedError\n} from \"@webiny/api-workflows/domain/permissions/errors.js\";\nimport type {\n ReviewNotFoundError,\n ReviewPersistenceError\n} from \"@webiny/api-workflows/domain/review/errors.js\";\n\nexport interface CmsEntryReviewGuardServiceParams {\n reviewId: string;\n /** What the caller tries to do, e.g. \"start this step\"; named in `Workflows/NotAuthorized`. */\n action: string;\n}\n\nexport interface AuthorizedCmsEntryReview {\n review: ReviewData;\n viewer: ReviewViewer;\n}\n\nexport interface ICmsEntryReviewGuardServiceErrors {\n notAuthenticated: WorkflowsNotAuthenticatedError;\n notAuthorized: WorkflowsNotAuthorizedError;\n notFound: ReviewNotFoundError;\n persistence: ReviewPersistenceError;\n}\n\ntype GuardError = ICmsEntryReviewGuardServiceErrors[keyof ICmsEntryReviewGuardServiceErrors];\n\nexport interface ICmsEntryReviewGuardService {\n authorize(\n params: CmsEntryReviewGuardServiceParams\n ): Promise<Result<AuthorizedCmsEntryReview, GuardError>>;\n}\n\n/**\n * The checks every CMS review action shares (spec 5.1, D133 point 7): a signed-in viewer, a review\n * of a `cms.*` namespace (another app's review is not found, R46) and read access to its target\n * with the CMS's own logic (R47). Permission rules per action (cancel) stay in the wrapper.\n */\nexport const CmsEntryReviewGuardService = createAbstraction<ICmsEntryReviewGuardService>(\n \"CmsEntryReviewGuardService\"\n);\n\nexport namespace CmsEntryReviewGuardService {\n export type Interface = ICmsEntryReviewGuardService;\n export type Params = CmsEntryReviewGuardServiceParams;\n export type Authorized = AuthorizedCmsEntryReview;\n export type Error = GuardError;\n export type Return = Promise<Result<AuthorizedCmsEntryReview, GuardError>>;\n}\n"],"names":["CmsEntryReviewGuardService","createAbstraction"],"mappings":";AA0CO,MAAMA,6BAA6BC,kBACtC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { CmsEntryReviewGuardService } from "./abstractions.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { CmsEntryReviewGuardService } from "./abstractions.js";
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { CurrentReviewViewer } from "@webiny/api-workflows/features/identity/CurrentReviewViewer/index.js";
|
|
2
|
+
import { WorkflowsPermissions } from "@webiny/api-workflows/features/permissions/WorkflowsPermissions/index.js";
|
|
3
|
+
import { GetWorkflowUseCase } from "@webiny/api-workflows/features/workflow/GetWorkflow/index.js";
|
|
4
|
+
import { DeleteWorkflowUseCase } from "@webiny/api-workflows/features/workflow/DeleteWorkflow/index.js";
|
|
5
|
+
import { ReadableBlockingReviewsService } from "@webiny/api-workflows/features/workflow/ReadableBlockingReviews/index.js";
|
|
6
|
+
import { CmsEntryTargetReader } from "../../../features/target/CmsEntryTargetReader/index.js";
|
|
7
|
+
import { CmsEntryDeniedFolders } from "../../../features/target/CmsEntryDeniedFolders/index.js";
|
|
8
|
+
import { CmsEntryAccess } from "../../../features/target/CmsEntryAccess/index.js";
|
|
9
|
+
import { DeleteCmsEntryWorkflowUseCase as UseCase } from "./abstractions.js";
|
|
10
|
+
declare class DeleteCmsEntryWorkflowUseCaseImpl implements UseCase.Interface {
|
|
11
|
+
private viewer;
|
|
12
|
+
private permissions;
|
|
13
|
+
private getWorkflow;
|
|
14
|
+
private deleteWorkflow;
|
|
15
|
+
private targets;
|
|
16
|
+
private access;
|
|
17
|
+
private readableBlockingReviews;
|
|
18
|
+
private deniedFolders;
|
|
19
|
+
constructor(viewer: CurrentReviewViewer.Interface, permissions: WorkflowsPermissions.Interface, getWorkflow: GetWorkflowUseCase.Interface, deleteWorkflow: DeleteWorkflowUseCase.Interface, targets: CmsEntryTargetReader.Interface, access: CmsEntryAccess.Interface, readableBlockingReviews: ReadableBlockingReviewsService.Interface, deniedFolders: CmsEntryDeniedFolders.Interface);
|
|
20
|
+
execute(input: UseCase.Input): UseCase.Return;
|
|
21
|
+
}
|
|
22
|
+
export declare const DeleteCmsEntryWorkflowUseCase: typeof DeleteCmsEntryWorkflowUseCaseImpl & {
|
|
23
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IDeleteCmsEntryWorkflowUseCase>;
|
|
24
|
+
};
|
|
25
|
+
export {};
|