@webiny/api-website-builder-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/LICENSE +21 -0
- package/README.md +11 -0
- package/WebsiteBuilderPageSchemaFactory.d.ts +15 -0
- package/WebsiteBuilderPageSchemaFactory.js +30 -0
- package/WebsiteBuilderPageSchemaFactory.js.map +1 -0
- package/WebsiteBuilderWorkflowsFeature.d.ts +5 -0
- package/WebsiteBuilderWorkflowsFeature.js +21 -0
- package/WebsiteBuilderWorkflowsFeature.js.map +1 -0
- package/constants.d.ts +4 -0
- package/constants.js +5 -0
- package/constants.js.map +1 -0
- package/features/hooks/BlockPageDeleteWhileInReview.d.ts +20 -0
- package/features/hooks/BlockPageDeleteWhileInReview.js +43 -0
- package/features/hooks/BlockPageDeleteWhileInReview.js.map +1 -0
- package/features/hooks/BlockPageFolderChangeWhileInReview.d.ts +19 -0
- package/features/hooks/BlockPageFolderChangeWhileInReview.js +27 -0
- package/features/hooks/BlockPageFolderChangeWhileInReview.js.map +1 -0
- package/features/hooks/BlockPageMoveWhileInReview.d.ts +18 -0
- package/features/hooks/BlockPageMoveWhileInReview.js +44 -0
- package/features/hooks/BlockPageMoveWhileInReview.js.map +1 -0
- package/features/hooks/BlockPageRevisionDeleteWhileInReview.d.ts +13 -0
- package/features/hooks/BlockPageRevisionDeleteWhileInReview.js +44 -0
- package/features/hooks/BlockPageRevisionDeleteWhileInReview.js.map +1 -0
- package/features/hooks/BlockPageTrashWhileInReview.d.ts +21 -0
- package/features/hooks/BlockPageTrashWhileInReview.js +43 -0
- package/features/hooks/BlockPageTrashWhileInReview.js.map +1 -0
- package/features/hooks/BlockPageUpdateWhileInReview.d.ts +20 -0
- package/features/hooks/BlockPageUpdateWhileInReview.js +25 -0
- package/features/hooks/BlockPageUpdateWhileInReview.js.map +1 -0
- package/features/hooks/DeleteReviewsOnPageDelete.d.ts +20 -0
- package/features/hooks/DeleteReviewsOnPageDelete.js +43 -0
- package/features/hooks/DeleteReviewsOnPageDelete.js.map +1 -0
- package/features/hooks/DeleteReviewsOnPageRevisionDelete.d.ts +13 -0
- package/features/hooks/DeleteReviewsOnPageRevisionDelete.js +44 -0
- package/features/hooks/DeleteReviewsOnPageRevisionDelete.js.map +1 -0
- package/features/hooks/NullReviewStateOnGraduatedVariantDecorator.d.ts +27 -0
- package/features/hooks/NullReviewStateOnGraduatedVariantDecorator.js +53 -0
- package/features/hooks/NullReviewStateOnGraduatedVariantDecorator.js.map +1 -0
- package/features/hooks/NullReviewStateOnPageRevisionCreate.d.ts +26 -0
- package/features/hooks/NullReviewStateOnPageRevisionCreate.js +43 -0
- package/features/hooks/NullReviewStateOnPageRevisionCreate.js.map +1 -0
- package/features/hooks/RequireApprovedReviewOnPagePublish.d.ts +20 -0
- package/features/hooks/RequireApprovedReviewOnPagePublish.js +42 -0
- package/features/hooks/RequireApprovedReviewOnPagePublish.js.map +1 -0
- package/features/hooks/feature.d.ts +9 -0
- package/features/hooks/feature.js +31 -0
- package/features/hooks/feature.js.map +1 -0
- package/features/target/WbPageAccess/WbPageAccess.d.ts +27 -0
- package/features/target/WbPageAccess/WbPageAccess.js +84 -0
- package/features/target/WbPageAccess/WbPageAccess.js.map +1 -0
- package/features/target/WbPageAccess/abstractions.d.ts +39 -0
- package/features/target/WbPageAccess/abstractions.js +5 -0
- package/features/target/WbPageAccess/abstractions.js.map +1 -0
- package/features/target/WbPageAccess/index.d.ts +1 -0
- package/features/target/WbPageAccess/index.js +1 -0
- package/features/target/WbPageDeniedFolders/WbPageDeniedFolders.d.ts +20 -0
- package/features/target/WbPageDeniedFolders/WbPageDeniedFolders.js +55 -0
- package/features/target/WbPageDeniedFolders/WbPageDeniedFolders.js.map +1 -0
- package/features/target/WbPageDeniedFolders/abstractions.d.ts +23 -0
- package/features/target/WbPageDeniedFolders/abstractions.js +5 -0
- package/features/target/WbPageDeniedFolders/abstractions.js.map +1 -0
- package/features/target/WbPageDeniedFolders/index.d.ts +1 -0
- package/features/target/WbPageDeniedFolders/index.js +1 -0
- package/features/target/WbPageFolderExistsService/WbPageFolderExistsService.d.ts +15 -0
- package/features/target/WbPageFolderExistsService/WbPageFolderExistsService.js +27 -0
- package/features/target/WbPageFolderExistsService/WbPageFolderExistsService.js.map +1 -0
- package/features/target/WbPageFolderExistsService/abstractions.d.ts +16 -0
- package/features/target/WbPageFolderExistsService/abstractions.js +5 -0
- package/features/target/WbPageFolderExistsService/abstractions.js.map +1 -0
- package/features/target/WbPageFolderExistsService/index.d.ts +1 -0
- package/features/target/WbPageFolderExistsService/index.js +1 -0
- package/features/target/WbPageReviewNamespace.d.ts +14 -0
- package/features/target/WbPageReviewNamespace.js +15 -0
- package/features/target/WbPageReviewNamespace.js.map +1 -0
- package/features/target/WbPageReviewReadFilter/WbPageReviewReadFilter.d.ts +17 -0
- package/features/target/WbPageReviewReadFilter/WbPageReviewReadFilter.js +53 -0
- package/features/target/WbPageReviewReadFilter/WbPageReviewReadFilter.js.map +1 -0
- package/features/target/WbPageReviewReadFilter/abstractions.d.ts +21 -0
- package/features/target/WbPageReviewReadFilter/abstractions.js +5 -0
- package/features/target/WbPageReviewReadFilter/abstractions.js.map +1 -0
- package/features/target/WbPageReviewReadFilter/index.d.ts +1 -0
- package/features/target/WbPageReviewReadFilter/index.js +1 -0
- package/features/target/WbPageReviewTargetEditor.d.ts +33 -0
- package/features/target/WbPageReviewTargetEditor.js +109 -0
- package/features/target/WbPageReviewTargetEditor.js.map +1 -0
- package/features/target/WbPageReviewTargetFolderChain.d.ts +22 -0
- package/features/target/WbPageReviewTargetFolderChain.js +34 -0
- package/features/target/WbPageReviewTargetFolderChain.js.map +1 -0
- package/features/target/WbPageReviewTargetLink.d.ts +17 -0
- package/features/target/WbPageReviewTargetLink.js +17 -0
- package/features/target/WbPageReviewTargetLink.js.map +1 -0
- package/features/target/WbPageReviewTargetLoader.d.ts +13 -0
- package/features/target/WbPageReviewTargetLoader.js +29 -0
- package/features/target/WbPageReviewTargetLoader.js.map +1 -0
- package/features/target/WbPageReviewTargetReadAccess.d.ts +33 -0
- package/features/target/WbPageReviewTargetReadAccess.js +72 -0
- package/features/target/WbPageReviewTargetReadAccess.js.map +1 -0
- package/features/target/WbPageReviewTargetSync.d.ts +23 -0
- package/features/target/WbPageReviewTargetSync.js +39 -0
- package/features/target/WbPageReviewTargetSync.js.map +1 -0
- package/features/target/WbPageTargetReader/WbPageTargetReader.d.ts +20 -0
- package/features/target/WbPageTargetReader/WbPageTargetReader.js +51 -0
- package/features/target/WbPageTargetReader/WbPageTargetReader.js.map +1 -0
- package/features/target/WbPageTargetReader/abstractions.d.ts +37 -0
- package/features/target/WbPageTargetReader/abstractions.js +5 -0
- package/features/target/WbPageTargetReader/abstractions.js.map +1 -0
- package/features/target/WbPageTargetReader/index.d.ts +1 -0
- package/features/target/WbPageTargetReader/index.js +1 -0
- package/features/target/WbWorkflowModelParser.d.ts +9 -0
- package/features/target/WbWorkflowModelParser.js +18 -0
- package/features/target/WbWorkflowModelParser.js.map +1 -0
- package/features/target/feature.d.ts +5 -0
- package/features/target/feature.js +35 -0
- package/features/target/feature.js.map +1 -0
- package/features/target/isWbPageEditorValue.d.ts +9 -0
- package/features/target/isWbPageEditorValue.js +34 -0
- package/features/target/isWbPageEditorValue.js.map +1 -0
- package/features/target/toWbPageEditorFields.d.ts +32 -0
- package/features/target/toWbPageEditorFields.js +102 -0
- package/features/target/toWbPageEditorFields.js.map +1 -0
- package/features/target/toWbPageProperties.d.ts +10 -0
- package/features/target/toWbPageProperties.js +27 -0
- package/features/target/toWbPageProperties.js.map +1 -0
- package/features/target/toWbPageReviewTarget.d.ts +4 -0
- package/features/target/toWbPageReviewTarget.js +25 -0
- package/features/target/toWbPageReviewTarget.js.map +1 -0
- package/features/wrappers/ApproveWebsiteBuilderPageReviewStep/ApproveWebsiteBuilderPageReviewStepUseCase.d.ts +13 -0
- package/features/wrappers/ApproveWebsiteBuilderPageReviewStep/ApproveWebsiteBuilderPageReviewStepUseCase.js +35 -0
- package/features/wrappers/ApproveWebsiteBuilderPageReviewStep/ApproveWebsiteBuilderPageReviewStepUseCase.js.map +1 -0
- package/features/wrappers/ApproveWebsiteBuilderPageReviewStep/abstractions.d.ts +26 -0
- package/features/wrappers/ApproveWebsiteBuilderPageReviewStep/abstractions.js +5 -0
- package/features/wrappers/ApproveWebsiteBuilderPageReviewStep/abstractions.js.map +1 -0
- package/features/wrappers/ApproveWebsiteBuilderPageReviewStep/feature.d.ts +4 -0
- package/features/wrappers/ApproveWebsiteBuilderPageReviewStep/feature.js +11 -0
- package/features/wrappers/ApproveWebsiteBuilderPageReviewStep/feature.js.map +1 -0
- package/features/wrappers/ApproveWebsiteBuilderPageReviewStep/index.d.ts +1 -0
- package/features/wrappers/ApproveWebsiteBuilderPageReviewStep/index.js +1 -0
- package/features/wrappers/CancelWebsiteBuilderPageReview/CancelWebsiteBuilderPageReviewUseCase.d.ts +13 -0
- package/features/wrappers/CancelWebsiteBuilderPageReview/CancelWebsiteBuilderPageReviewUseCase.js +37 -0
- package/features/wrappers/CancelWebsiteBuilderPageReview/CancelWebsiteBuilderPageReviewUseCase.js.map +1 -0
- package/features/wrappers/CancelWebsiteBuilderPageReview/abstractions.d.ts +30 -0
- package/features/wrappers/CancelWebsiteBuilderPageReview/abstractions.js +5 -0
- package/features/wrappers/CancelWebsiteBuilderPageReview/abstractions.js.map +1 -0
- package/features/wrappers/CancelWebsiteBuilderPageReview/feature.d.ts +4 -0
- package/features/wrappers/CancelWebsiteBuilderPageReview/feature.js +11 -0
- package/features/wrappers/CancelWebsiteBuilderPageReview/feature.js.map +1 -0
- package/features/wrappers/CancelWebsiteBuilderPageReview/index.d.ts +1 -0
- package/features/wrappers/CancelWebsiteBuilderPageReview/index.js +1 -0
- package/features/wrappers/CancelWebsiteBuilderPageReviewsForDelete/CancelWebsiteBuilderPageReviewsForDeleteUseCase.d.ts +19 -0
- package/features/wrappers/CancelWebsiteBuilderPageReviewsForDelete/CancelWebsiteBuilderPageReviewsForDeleteUseCase.js +81 -0
- package/features/wrappers/CancelWebsiteBuilderPageReviewsForDelete/CancelWebsiteBuilderPageReviewsForDeleteUseCase.js.map +1 -0
- package/features/wrappers/CancelWebsiteBuilderPageReviewsForDelete/abstractions.d.ts +39 -0
- package/features/wrappers/CancelWebsiteBuilderPageReviewsForDelete/abstractions.js +5 -0
- package/features/wrappers/CancelWebsiteBuilderPageReviewsForDelete/abstractions.js.map +1 -0
- package/features/wrappers/CancelWebsiteBuilderPageReviewsForDelete/feature.d.ts +4 -0
- package/features/wrappers/CancelWebsiteBuilderPageReviewsForDelete/feature.js +11 -0
- package/features/wrappers/CancelWebsiteBuilderPageReviewsForDelete/feature.js.map +1 -0
- package/features/wrappers/CancelWebsiteBuilderPageReviewsForDelete/index.d.ts +1 -0
- package/features/wrappers/CancelWebsiteBuilderPageReviewsForDelete/index.js +1 -0
- package/features/wrappers/DeleteWebsiteBuilderPageWorkflow/DeleteWebsiteBuilderPageWorkflowUseCase.d.ts +25 -0
- package/features/wrappers/DeleteWebsiteBuilderPageWorkflow/DeleteWebsiteBuilderPageWorkflowUseCase.js +95 -0
- package/features/wrappers/DeleteWebsiteBuilderPageWorkflow/DeleteWebsiteBuilderPageWorkflowUseCase.js.map +1 -0
- package/features/wrappers/DeleteWebsiteBuilderPageWorkflow/abstractions.d.ts +32 -0
- package/features/wrappers/DeleteWebsiteBuilderPageWorkflow/abstractions.js +5 -0
- package/features/wrappers/DeleteWebsiteBuilderPageWorkflow/abstractions.js.map +1 -0
- package/features/wrappers/DeleteWebsiteBuilderPageWorkflow/feature.d.ts +4 -0
- package/features/wrappers/DeleteWebsiteBuilderPageWorkflow/feature.js +11 -0
- package/features/wrappers/DeleteWebsiteBuilderPageWorkflow/feature.js.map +1 -0
- package/features/wrappers/DeleteWebsiteBuilderPageWorkflow/index.d.ts +1 -0
- package/features/wrappers/DeleteWebsiteBuilderPageWorkflow/index.js +1 -0
- package/features/wrappers/GetWebsiteBuilderPageReview/GetWebsiteBuilderPageReviewUseCase.d.ts +13 -0
- package/features/wrappers/GetWebsiteBuilderPageReview/GetWebsiteBuilderPageReviewUseCase.js +40 -0
- package/features/wrappers/GetWebsiteBuilderPageReview/GetWebsiteBuilderPageReviewUseCase.js.map +1 -0
- package/features/wrappers/GetWebsiteBuilderPageReview/abstractions.d.ts +29 -0
- package/features/wrappers/GetWebsiteBuilderPageReview/abstractions.js +5 -0
- package/features/wrappers/GetWebsiteBuilderPageReview/abstractions.js.map +1 -0
- package/features/wrappers/GetWebsiteBuilderPageReview/feature.d.ts +4 -0
- package/features/wrappers/GetWebsiteBuilderPageReview/feature.js +11 -0
- package/features/wrappers/GetWebsiteBuilderPageReview/feature.js.map +1 -0
- package/features/wrappers/GetWebsiteBuilderPageReview/index.d.ts +1 -0
- package/features/wrappers/GetWebsiteBuilderPageReview/index.js +1 -0
- package/features/wrappers/GetWebsiteBuilderPageReviewStepRun/GetWebsiteBuilderPageReviewStepRunUseCase.d.ts +13 -0
- package/features/wrappers/GetWebsiteBuilderPageReviewStepRun/GetWebsiteBuilderPageReviewStepRunUseCase.js +39 -0
- package/features/wrappers/GetWebsiteBuilderPageReviewStepRun/GetWebsiteBuilderPageReviewStepRunUseCase.js.map +1 -0
- package/features/wrappers/GetWebsiteBuilderPageReviewStepRun/abstractions.d.ts +33 -0
- package/features/wrappers/GetWebsiteBuilderPageReviewStepRun/abstractions.js +5 -0
- package/features/wrappers/GetWebsiteBuilderPageReviewStepRun/abstractions.js.map +1 -0
- package/features/wrappers/GetWebsiteBuilderPageReviewStepRun/feature.d.ts +4 -0
- package/features/wrappers/GetWebsiteBuilderPageReviewStepRun/feature.js +11 -0
- package/features/wrappers/GetWebsiteBuilderPageReviewStepRun/feature.js.map +1 -0
- package/features/wrappers/GetWebsiteBuilderPageReviewStepRun/index.d.ts +1 -0
- package/features/wrappers/GetWebsiteBuilderPageReviewStepRun/index.js +1 -0
- package/features/wrappers/GetWebsiteBuilderPageTargetReview/GetWebsiteBuilderPageTargetReviewUseCase.d.ts +19 -0
- package/features/wrappers/GetWebsiteBuilderPageTargetReview/GetWebsiteBuilderPageTargetReviewUseCase.js +72 -0
- package/features/wrappers/GetWebsiteBuilderPageTargetReview/GetWebsiteBuilderPageTargetReviewUseCase.js.map +1 -0
- package/features/wrappers/GetWebsiteBuilderPageTargetReview/abstractions.d.ts +34 -0
- package/features/wrappers/GetWebsiteBuilderPageTargetReview/abstractions.js +5 -0
- package/features/wrappers/GetWebsiteBuilderPageTargetReview/abstractions.js.map +1 -0
- package/features/wrappers/GetWebsiteBuilderPageTargetReview/feature.d.ts +4 -0
- package/features/wrappers/GetWebsiteBuilderPageTargetReview/feature.js +11 -0
- package/features/wrappers/GetWebsiteBuilderPageTargetReview/feature.js.map +1 -0
- package/features/wrappers/GetWebsiteBuilderPageTargetReview/index.d.ts +1 -0
- package/features/wrappers/GetWebsiteBuilderPageTargetReview/index.js +1 -0
- package/features/wrappers/GetWebsiteBuilderPageWorkflow/GetWebsiteBuilderPageWorkflowUseCase.d.ts +13 -0
- package/features/wrappers/GetWebsiteBuilderPageWorkflow/GetWebsiteBuilderPageWorkflowUseCase.js +34 -0
- package/features/wrappers/GetWebsiteBuilderPageWorkflow/GetWebsiteBuilderPageWorkflowUseCase.js.map +1 -0
- package/features/wrappers/GetWebsiteBuilderPageWorkflow/abstractions.d.ts +24 -0
- package/features/wrappers/GetWebsiteBuilderPageWorkflow/abstractions.js +5 -0
- package/features/wrappers/GetWebsiteBuilderPageWorkflow/abstractions.js.map +1 -0
- package/features/wrappers/GetWebsiteBuilderPageWorkflow/feature.d.ts +4 -0
- package/features/wrappers/GetWebsiteBuilderPageWorkflow/feature.js +11 -0
- package/features/wrappers/GetWebsiteBuilderPageWorkflow/feature.js.map +1 -0
- package/features/wrappers/GetWebsiteBuilderPageWorkflow/index.d.ts +1 -0
- package/features/wrappers/GetWebsiteBuilderPageWorkflow/index.js +1 -0
- package/features/wrappers/InspectWebsiteBuilderPageRouting/InspectWebsiteBuilderPageRoutingUseCase.d.ts +19 -0
- package/features/wrappers/InspectWebsiteBuilderPageRouting/InspectWebsiteBuilderPageRoutingUseCase.js +51 -0
- package/features/wrappers/InspectWebsiteBuilderPageRouting/InspectWebsiteBuilderPageRoutingUseCase.js.map +1 -0
- package/features/wrappers/InspectWebsiteBuilderPageRouting/abstractions.d.ts +34 -0
- package/features/wrappers/InspectWebsiteBuilderPageRouting/abstractions.js +5 -0
- package/features/wrappers/InspectWebsiteBuilderPageRouting/abstractions.js.map +1 -0
- package/features/wrappers/InspectWebsiteBuilderPageRouting/feature.d.ts +4 -0
- package/features/wrappers/InspectWebsiteBuilderPageRouting/feature.js +11 -0
- package/features/wrappers/InspectWebsiteBuilderPageRouting/feature.js.map +1 -0
- package/features/wrappers/InspectWebsiteBuilderPageRouting/index.d.ts +1 -0
- package/features/wrappers/InspectWebsiteBuilderPageRouting/index.js +1 -0
- package/features/wrappers/ListWebsiteBuilderPageReviewStepCandidates/ListWebsiteBuilderPageReviewStepCandidatesUseCase.d.ts +13 -0
- package/features/wrappers/ListWebsiteBuilderPageReviewStepCandidates/ListWebsiteBuilderPageReviewStepCandidatesUseCase.js +41 -0
- package/features/wrappers/ListWebsiteBuilderPageReviewStepCandidates/ListWebsiteBuilderPageReviewStepCandidatesUseCase.js.map +1 -0
- package/features/wrappers/ListWebsiteBuilderPageReviewStepCandidates/abstractions.d.ts +30 -0
- package/features/wrappers/ListWebsiteBuilderPageReviewStepCandidates/abstractions.js +5 -0
- package/features/wrappers/ListWebsiteBuilderPageReviewStepCandidates/abstractions.js.map +1 -0
- package/features/wrappers/ListWebsiteBuilderPageReviewStepCandidates/feature.d.ts +4 -0
- package/features/wrappers/ListWebsiteBuilderPageReviewStepCandidates/feature.js +11 -0
- package/features/wrappers/ListWebsiteBuilderPageReviewStepCandidates/feature.js.map +1 -0
- package/features/wrappers/ListWebsiteBuilderPageReviewStepCandidates/index.d.ts +1 -0
- package/features/wrappers/ListWebsiteBuilderPageReviewStepCandidates/index.js +1 -0
- package/features/wrappers/ListWebsiteBuilderPageReviews/ListWebsiteBuilderPageReviewsUseCase.d.ts +15 -0
- package/features/wrappers/ListWebsiteBuilderPageReviews/ListWebsiteBuilderPageReviewsUseCase.js +68 -0
- package/features/wrappers/ListWebsiteBuilderPageReviews/ListWebsiteBuilderPageReviewsUseCase.js.map +1 -0
- package/features/wrappers/ListWebsiteBuilderPageReviews/abstractions.d.ts +43 -0
- package/features/wrappers/ListWebsiteBuilderPageReviews/abstractions.js +5 -0
- package/features/wrappers/ListWebsiteBuilderPageReviews/abstractions.js.map +1 -0
- package/features/wrappers/ListWebsiteBuilderPageReviews/feature.d.ts +4 -0
- package/features/wrappers/ListWebsiteBuilderPageReviews/feature.js +11 -0
- package/features/wrappers/ListWebsiteBuilderPageReviews/feature.js.map +1 -0
- package/features/wrappers/ListWebsiteBuilderPageReviews/index.d.ts +2 -0
- package/features/wrappers/ListWebsiteBuilderPageReviews/index.js +1 -0
- package/features/wrappers/ListWebsiteBuilderPageStepCandidates/ListWebsiteBuilderPageStepCandidatesUseCase.d.ts +25 -0
- package/features/wrappers/ListWebsiteBuilderPageStepCandidates/ListWebsiteBuilderPageStepCandidatesUseCase.js +93 -0
- package/features/wrappers/ListWebsiteBuilderPageStepCandidates/ListWebsiteBuilderPageStepCandidatesUseCase.js.map +1 -0
- package/features/wrappers/ListWebsiteBuilderPageStepCandidates/abstractions.d.ts +41 -0
- package/features/wrappers/ListWebsiteBuilderPageStepCandidates/abstractions.js +5 -0
- package/features/wrappers/ListWebsiteBuilderPageStepCandidates/abstractions.js.map +1 -0
- package/features/wrappers/ListWebsiteBuilderPageStepCandidates/feature.d.ts +4 -0
- package/features/wrappers/ListWebsiteBuilderPageStepCandidates/feature.js +11 -0
- package/features/wrappers/ListWebsiteBuilderPageStepCandidates/feature.js.map +1 -0
- package/features/wrappers/ListWebsiteBuilderPageStepCandidates/index.d.ts +1 -0
- package/features/wrappers/ListWebsiteBuilderPageStepCandidates/index.js +1 -0
- package/features/wrappers/ListWebsiteBuilderPageWorkflows/ListWebsiteBuilderPageWorkflowsUseCase.d.ts +13 -0
- package/features/wrappers/ListWebsiteBuilderPageWorkflows/ListWebsiteBuilderPageWorkflowsUseCase.js +37 -0
- package/features/wrappers/ListWebsiteBuilderPageWorkflows/ListWebsiteBuilderPageWorkflowsUseCase.js.map +1 -0
- package/features/wrappers/ListWebsiteBuilderPageWorkflows/abstractions.d.ts +20 -0
- package/features/wrappers/ListWebsiteBuilderPageWorkflows/abstractions.js +5 -0
- package/features/wrappers/ListWebsiteBuilderPageWorkflows/abstractions.js.map +1 -0
- package/features/wrappers/ListWebsiteBuilderPageWorkflows/feature.d.ts +4 -0
- package/features/wrappers/ListWebsiteBuilderPageWorkflows/feature.js +11 -0
- package/features/wrappers/ListWebsiteBuilderPageWorkflows/feature.js.map +1 -0
- package/features/wrappers/ListWebsiteBuilderPageWorkflows/index.d.ts +1 -0
- package/features/wrappers/ListWebsiteBuilderPageWorkflows/index.js +1 -0
- package/features/wrappers/ReassignWebsiteBuilderPageReviewStep/ReassignWebsiteBuilderPageReviewStepUseCase.d.ts +13 -0
- package/features/wrappers/ReassignWebsiteBuilderPageReviewStep/ReassignWebsiteBuilderPageReviewStepUseCase.js +40 -0
- package/features/wrappers/ReassignWebsiteBuilderPageReviewStep/ReassignWebsiteBuilderPageReviewStepUseCase.js.map +1 -0
- package/features/wrappers/ReassignWebsiteBuilderPageReviewStep/abstractions.d.ts +32 -0
- package/features/wrappers/ReassignWebsiteBuilderPageReviewStep/abstractions.js +5 -0
- package/features/wrappers/ReassignWebsiteBuilderPageReviewStep/abstractions.js.map +1 -0
- package/features/wrappers/ReassignWebsiteBuilderPageReviewStep/feature.d.ts +4 -0
- package/features/wrappers/ReassignWebsiteBuilderPageReviewStep/feature.js +11 -0
- package/features/wrappers/ReassignWebsiteBuilderPageReviewStep/feature.js.map +1 -0
- package/features/wrappers/ReassignWebsiteBuilderPageReviewStep/index.d.ts +1 -0
- package/features/wrappers/ReassignWebsiteBuilderPageReviewStep/index.js +1 -0
- package/features/wrappers/RejectWebsiteBuilderPageReviewStep/RejectWebsiteBuilderPageReviewStepUseCase.d.ts +13 -0
- package/features/wrappers/RejectWebsiteBuilderPageReviewStep/RejectWebsiteBuilderPageReviewStepUseCase.js +35 -0
- package/features/wrappers/RejectWebsiteBuilderPageReviewStep/RejectWebsiteBuilderPageReviewStepUseCase.js.map +1 -0
- package/features/wrappers/RejectWebsiteBuilderPageReviewStep/abstractions.d.ts +26 -0
- package/features/wrappers/RejectWebsiteBuilderPageReviewStep/abstractions.js +5 -0
- package/features/wrappers/RejectWebsiteBuilderPageReviewStep/abstractions.js.map +1 -0
- package/features/wrappers/RejectWebsiteBuilderPageReviewStep/feature.d.ts +4 -0
- package/features/wrappers/RejectWebsiteBuilderPageReviewStep/feature.js +11 -0
- package/features/wrappers/RejectWebsiteBuilderPageReviewStep/feature.js.map +1 -0
- package/features/wrappers/RejectWebsiteBuilderPageReviewStep/index.d.ts +1 -0
- package/features/wrappers/RejectWebsiteBuilderPageReviewStep/index.js +1 -0
- package/features/wrappers/RequestWebsiteBuilderPageReview/RequestWebsiteBuilderPageReviewUseCase.d.ts +23 -0
- package/features/wrappers/RequestWebsiteBuilderPageReview/RequestWebsiteBuilderPageReviewUseCase.js +72 -0
- package/features/wrappers/RequestWebsiteBuilderPageReview/RequestWebsiteBuilderPageReviewUseCase.js.map +1 -0
- package/features/wrappers/RequestWebsiteBuilderPageReview/abstractions.d.ts +41 -0
- package/features/wrappers/RequestWebsiteBuilderPageReview/abstractions.js +5 -0
- package/features/wrappers/RequestWebsiteBuilderPageReview/abstractions.js.map +1 -0
- package/features/wrappers/RequestWebsiteBuilderPageReview/feature.d.ts +4 -0
- package/features/wrappers/RequestWebsiteBuilderPageReview/feature.js +11 -0
- package/features/wrappers/RequestWebsiteBuilderPageReview/feature.js.map +1 -0
- package/features/wrappers/RequestWebsiteBuilderPageReview/index.d.ts +1 -0
- package/features/wrappers/RequestWebsiteBuilderPageReview/index.js +1 -0
- package/features/wrappers/RestartWebsiteBuilderPageReviewStep/RestartWebsiteBuilderPageReviewStepUseCase.d.ts +13 -0
- package/features/wrappers/RestartWebsiteBuilderPageReviewStep/RestartWebsiteBuilderPageReviewStepUseCase.js +39 -0
- package/features/wrappers/RestartWebsiteBuilderPageReviewStep/RestartWebsiteBuilderPageReviewStepUseCase.js.map +1 -0
- package/features/wrappers/RestartWebsiteBuilderPageReviewStep/abstractions.d.ts +30 -0
- package/features/wrappers/RestartWebsiteBuilderPageReviewStep/abstractions.js +5 -0
- package/features/wrappers/RestartWebsiteBuilderPageReviewStep/abstractions.js.map +1 -0
- package/features/wrappers/RestartWebsiteBuilderPageReviewStep/feature.d.ts +4 -0
- package/features/wrappers/RestartWebsiteBuilderPageReviewStep/feature.js +11 -0
- package/features/wrappers/RestartWebsiteBuilderPageReviewStep/feature.js.map +1 -0
- package/features/wrappers/RestartWebsiteBuilderPageReviewStep/index.d.ts +1 -0
- package/features/wrappers/RestartWebsiteBuilderPageReviewStep/index.js +1 -0
- package/features/wrappers/StartWebsiteBuilderPageReviewStep/StartWebsiteBuilderPageReviewStepUseCase.d.ts +13 -0
- package/features/wrappers/StartWebsiteBuilderPageReviewStep/StartWebsiteBuilderPageReviewStepUseCase.js +34 -0
- package/features/wrappers/StartWebsiteBuilderPageReviewStep/StartWebsiteBuilderPageReviewStepUseCase.js.map +1 -0
- package/features/wrappers/StartWebsiteBuilderPageReviewStep/abstractions.d.ts +25 -0
- package/features/wrappers/StartWebsiteBuilderPageReviewStep/abstractions.js +5 -0
- package/features/wrappers/StartWebsiteBuilderPageReviewStep/abstractions.js.map +1 -0
- package/features/wrappers/StartWebsiteBuilderPageReviewStep/feature.d.ts +4 -0
- package/features/wrappers/StartWebsiteBuilderPageReviewStep/feature.js +11 -0
- package/features/wrappers/StartWebsiteBuilderPageReviewStep/feature.js.map +1 -0
- package/features/wrappers/StartWebsiteBuilderPageReviewStep/index.d.ts +1 -0
- package/features/wrappers/StartWebsiteBuilderPageReviewStep/index.js +1 -0
- package/features/wrappers/StoreWebsiteBuilderPageWorkflow/StoreWebsiteBuilderPageWorkflowUseCase.d.ts +17 -0
- package/features/wrappers/StoreWebsiteBuilderPageWorkflow/StoreWebsiteBuilderPageWorkflowUseCase.js +57 -0
- package/features/wrappers/StoreWebsiteBuilderPageWorkflow/StoreWebsiteBuilderPageWorkflowUseCase.js.map +1 -0
- package/features/wrappers/StoreWebsiteBuilderPageWorkflow/abstractions.d.ts +33 -0
- package/features/wrappers/StoreWebsiteBuilderPageWorkflow/abstractions.js +5 -0
- package/features/wrappers/StoreWebsiteBuilderPageWorkflow/abstractions.js.map +1 -0
- package/features/wrappers/StoreWebsiteBuilderPageWorkflow/feature.d.ts +4 -0
- package/features/wrappers/StoreWebsiteBuilderPageWorkflow/feature.js +11 -0
- package/features/wrappers/StoreWebsiteBuilderPageWorkflow/feature.js.map +1 -0
- package/features/wrappers/StoreWebsiteBuilderPageWorkflow/index.d.ts +1 -0
- package/features/wrappers/StoreWebsiteBuilderPageWorkflow/index.js +1 -0
- package/features/wrappers/TakeOverWebsiteBuilderPageReviewStep/TakeOverWebsiteBuilderPageReviewStepUseCase.d.ts +13 -0
- package/features/wrappers/TakeOverWebsiteBuilderPageReviewStep/TakeOverWebsiteBuilderPageReviewStepUseCase.js +35 -0
- package/features/wrappers/TakeOverWebsiteBuilderPageReviewStep/TakeOverWebsiteBuilderPageReviewStepUseCase.js.map +1 -0
- package/features/wrappers/TakeOverWebsiteBuilderPageReviewStep/abstractions.d.ts +27 -0
- package/features/wrappers/TakeOverWebsiteBuilderPageReviewStep/abstractions.js +5 -0
- package/features/wrappers/TakeOverWebsiteBuilderPageReviewStep/abstractions.js.map +1 -0
- package/features/wrappers/TakeOverWebsiteBuilderPageReviewStep/feature.d.ts +4 -0
- package/features/wrappers/TakeOverWebsiteBuilderPageReviewStep/feature.js +11 -0
- package/features/wrappers/TakeOverWebsiteBuilderPageReviewStep/feature.js.map +1 -0
- package/features/wrappers/TakeOverWebsiteBuilderPageReviewStep/index.d.ts +1 -0
- package/features/wrappers/TakeOverWebsiteBuilderPageReviewStep/index.js +1 -0
- package/features/wrappers/WbPageReviewGuardService/WbPageReviewGuardService.d.ts +17 -0
- package/features/wrappers/WbPageReviewGuardService/WbPageReviewGuardService.js +63 -0
- package/features/wrappers/WbPageReviewGuardService/WbPageReviewGuardService.js.map +1 -0
- package/features/wrappers/WbPageReviewGuardService/abstractions.d.ts +37 -0
- package/features/wrappers/WbPageReviewGuardService/abstractions.js +5 -0
- package/features/wrappers/WbPageReviewGuardService/abstractions.js.map +1 -0
- package/features/wrappers/WbPageReviewGuardService/index.d.ts +1 -0
- package/features/wrappers/WbPageReviewGuardService/index.js +1 -0
- package/features/wrappers/WebsiteBuilderPageFolderExists/WebsiteBuilderPageFolderExistsUseCase.d.ts +15 -0
- package/features/wrappers/WebsiteBuilderPageFolderExists/WebsiteBuilderPageFolderExistsUseCase.js +43 -0
- package/features/wrappers/WebsiteBuilderPageFolderExists/WebsiteBuilderPageFolderExistsUseCase.js.map +1 -0
- package/features/wrappers/WebsiteBuilderPageFolderExists/abstractions.d.ts +28 -0
- package/features/wrappers/WebsiteBuilderPageFolderExists/abstractions.js +5 -0
- package/features/wrappers/WebsiteBuilderPageFolderExists/abstractions.js.map +1 -0
- package/features/wrappers/WebsiteBuilderPageFolderExists/feature.d.ts +4 -0
- package/features/wrappers/WebsiteBuilderPageFolderExists/feature.js +11 -0
- package/features/wrappers/WebsiteBuilderPageFolderExists/feature.js.map +1 -0
- package/features/wrappers/WebsiteBuilderPageFolderExists/index.d.ts +1 -0
- package/features/wrappers/WebsiteBuilderPageFolderExists/index.js +1 -0
- package/features/wrappers/feature.d.ts +9 -0
- package/features/wrappers/feature.js +53 -0
- package/features/wrappers/feature.js.map +1 -0
- package/features/wrappers/shared/wbWorkflows.d.ts +8 -0
- package/features/wrappers/shared/wbWorkflows.js +9 -0
- package/features/wrappers/shared/wbWorkflows.js.map +1 -0
- package/graphql/WebsiteBuilderWorkflowsSchemaFactory.d.ts +15 -0
- package/graphql/WebsiteBuilderWorkflowsSchemaFactory.js +616 -0
- package/graphql/WebsiteBuilderWorkflowsSchemaFactory.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 +1 -0
- package/index.js +1 -0
- package/package.json +50 -0
|
@@ -0,0 +1,81 @@
|
|
|
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 { WbPageTargetReader } from "../../target/WbPageTargetReader/index.js";
|
|
9
|
+
import { WbPageAccess } from "../../target/WbPageAccess/index.js";
|
|
10
|
+
import { WB_PAGE_NAMESPACE } from "../../../constants.js";
|
|
11
|
+
import { CancelWebsiteBuilderPageReviewsForDeleteUseCase } from "./abstractions.js";
|
|
12
|
+
class CancelWebsiteBuilderPageReviewsForDeleteUseCaseImpl {
|
|
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
|
+
let canDeleteAnyPage;
|
|
24
|
+
try {
|
|
25
|
+
canDeleteAnyPage = await this.access.canDeleteAnyPage();
|
|
26
|
+
} catch (error) {
|
|
27
|
+
return Result.fail(new ReviewPersistenceError(error instanceof Error ? error : new Error(String(error))));
|
|
28
|
+
}
|
|
29
|
+
if (!canDeleteAnyPage) return Result.fail(new WorkflowsNotAuthorizedError({
|
|
30
|
+
action: "cancel the review to delete this content"
|
|
31
|
+
}));
|
|
32
|
+
const reviews = await this.listTargetReviews.execute({
|
|
33
|
+
model: WB_PAGE_NAMESPACE,
|
|
34
|
+
targetId: input.targetId,
|
|
35
|
+
targetRevisionId: input.targetRevisionId ?? void 0,
|
|
36
|
+
state: "inProgress"
|
|
37
|
+
});
|
|
38
|
+
if (reviews.isFail()) return Result.fail(reviews.error);
|
|
39
|
+
const inProgress = reviews.value;
|
|
40
|
+
if (0 === inProgress.length) return Result.ok([]);
|
|
41
|
+
const targetRevisionId = inProgress[0].targetRevisionId;
|
|
42
|
+
let target;
|
|
43
|
+
try {
|
|
44
|
+
target = await this.targets.read({
|
|
45
|
+
model: WB_PAGE_NAMESPACE,
|
|
46
|
+
targetRevisionId
|
|
47
|
+
});
|
|
48
|
+
} catch (error) {
|
|
49
|
+
return Result.fail(new ReviewPersistenceError(error instanceof Error ? error : new Error(String(error))));
|
|
50
|
+
}
|
|
51
|
+
if (!target || target.page.entryId !== input.targetId) return Result.fail(new ReviewTargetNotFoundError({
|
|
52
|
+
model: WB_PAGE_NAMESPACE,
|
|
53
|
+
targetId: input.targetId
|
|
54
|
+
}));
|
|
55
|
+
let canDelete;
|
|
56
|
+
try {
|
|
57
|
+
canDelete = await this.access.canDelete(target);
|
|
58
|
+
} catch (error) {
|
|
59
|
+
return Result.fail(new ReviewPersistenceError(error instanceof Error ? error : new Error(String(error))));
|
|
60
|
+
}
|
|
61
|
+
if (!canDelete) return Result.ok([]);
|
|
62
|
+
return this.cancelTargetReviews.execute({
|
|
63
|
+
reviews: inProgress,
|
|
64
|
+
actor: actor.value,
|
|
65
|
+
reason: getDeleteCancelReason(input.action)
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
const CancelWebsiteBuilderPageReviewsForDeleteUseCase_CancelWebsiteBuilderPageReviewsForDeleteUseCase = CancelWebsiteBuilderPageReviewsForDeleteUseCase.createImplementation({
|
|
70
|
+
implementation: CancelWebsiteBuilderPageReviewsForDeleteUseCaseImpl,
|
|
71
|
+
dependencies: [
|
|
72
|
+
CurrentReviewViewer,
|
|
73
|
+
ListTargetReviewsUseCase,
|
|
74
|
+
WbPageTargetReader,
|
|
75
|
+
WbPageAccess,
|
|
76
|
+
CancelTargetReviewsUseCase
|
|
77
|
+
]
|
|
78
|
+
});
|
|
79
|
+
export { CancelWebsiteBuilderPageReviewsForDeleteUseCase_CancelWebsiteBuilderPageReviewsForDeleteUseCase as CancelWebsiteBuilderPageReviewsForDeleteUseCase };
|
|
80
|
+
|
|
81
|
+
//# sourceMappingURL=CancelWebsiteBuilderPageReviewsForDeleteUseCase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/wrappers/CancelWebsiteBuilderPageReviewsForDelete/CancelWebsiteBuilderPageReviewsForDeleteUseCase.js","sources":["../../../../src/features/wrappers/CancelWebsiteBuilderPageReviewsForDelete/CancelWebsiteBuilderPageReviewsForDeleteUseCase.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 { WbPageTargetReader } from \"~/features/target/WbPageTargetReader/index.js\";\nimport { WbPageAccess } from \"~/features/target/WbPageAccess/index.js\";\nimport { WB_PAGE_NAMESPACE } from \"~/constants.js\";\nimport { CancelWebsiteBuilderPageReviewsForDeleteUseCase as UseCase } from \"./abstractions.js\";\n\nclass CancelWebsiteBuilderPageReviewsForDeleteUseCaseImpl implements UseCase.Interface {\n public constructor(\n private viewer: CurrentReviewViewer.Interface,\n private listTargetReviews: ListTargetReviewsUseCase.Interface,\n private targets: WbPageTargetReader.Interface,\n private access: WbPageAccess.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\n // Entity-level check first: the answer must not reveal whether a page has a review in\n // progress or exists at all (R86, same as R75).\n let canDeleteAnyPage: boolean;\n try {\n canDeleteAnyPage = await this.access.canDeleteAnyPage();\n } catch (error) {\n return Result.fail(\n new ReviewPersistenceError(\n error instanceof Error ? error : new Error(String(error))\n )\n );\n }\n if (!canDeleteAnyPage) {\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: WB_PAGE_NAMESPACE,\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 // Page permissions (own) and the folder are page-level: one revision answers for all.\n const targetRevisionId = inProgress[0].targetRevisionId;\n let target: WbPageTargetReader.Target | null;\n try {\n target = await this.targets.read({ model: WB_PAGE_NAMESPACE, 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.page.entryId !== input.targetId) {\n return Result.fail(\n new ReviewTargetNotFoundError({\n model: WB_PAGE_NAMESPACE,\n targetId: input.targetId\n })\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 pages but not this one gets the answer of a page without a\n // review, so the answer never shows a review (R86). Nothing is cancelled: the delete that\n // follows runs the Website Builder 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 CancelWebsiteBuilderPageReviewsForDeleteUseCase = UseCase.createImplementation({\n implementation: CancelWebsiteBuilderPageReviewsForDeleteUseCaseImpl,\n dependencies: [\n CurrentReviewViewer,\n ListTargetReviewsUseCase,\n WbPageTargetReader,\n WbPageAccess,\n CancelTargetReviewsUseCase\n ]\n});\n"],"names":["CancelWebsiteBuilderPageReviewsForDeleteUseCaseImpl","viewer","listTargetReviews","targets","access","cancelTargetReviews","input","actor","Result","canDeleteAnyPage","error","ReviewPersistenceError","Error","String","WorkflowsNotAuthorizedError","reviews","WB_PAGE_NAMESPACE","undefined","inProgress","targetRevisionId","target","ReviewTargetNotFoundError","canDelete","getDeleteCancelReason","CancelWebsiteBuilderPageReviewsForDeleteUseCase","UseCase","CurrentReviewViewer","ListTargetReviewsUseCase","WbPageTargetReader","WbPageAccess","CancelTargetReviewsUseCase"],"mappings":";;;;;;;;;;;AAeA,MAAMA;IACF,YACYC,MAAqC,EACrCC,iBAAqD,EACrDC,OAAqC,EACrCC,MAA8B,EAC9BC,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;QAKlC,IAAIE;QACJ,IAAI;YACAA,mBAAmB,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB;QACzD,EAAE,OAAOC,OAAO;YACZ,OAAOF,OAAO,IAAI,CACd,IAAIG,uBACAD,iBAAiBE,QAAQF,QAAQ,IAAIE,MAAMC,OAAOH;QAG9D;QACA,IAAI,CAACD,kBACD,OAAOD,OAAO,IAAI,CACd,IAAIM,4BAA4B;YAC5B,QAAQ;QACZ;QAIR,MAAMC,UAAU,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;YACjD,OAAOC;YACP,UAAUV,MAAM,QAAQ;YACxB,kBAAkBA,MAAM,gBAAgB,IAAIW;YAC5C,OAAO;QACX;QACA,IAAIF,QAAQ,MAAM,IACd,OAAOP,OAAO,IAAI,CAACO,QAAQ,KAAK;QAEpC,MAAMG,aAAaH,QAAQ,KAAK;QAChC,IAAIG,AAAsB,MAAtBA,WAAW,MAAM,EACjB,OAAOV,OAAO,EAAE,CAAC,EAAE;QAIvB,MAAMW,mBAAmBD,UAAU,CAAC,EAAE,CAAC,gBAAgB;QACvD,IAAIE;QACJ,IAAI;YACAA,SAAS,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;gBAAE,OAAOJ;gBAAmBG;YAAiB;QAClF,EAAE,OAAOT,OAAO;YACZ,OAAOF,OAAO,IAAI,CACd,IAAIG,uBACAD,iBAAiBE,QAAQF,QAAQ,IAAIE,MAAMC,OAAOH;QAG9D;QACA,IAAI,CAACU,UAAUA,OAAO,IAAI,CAAC,OAAO,KAAKd,MAAM,QAAQ,EACjD,OAAOE,OAAO,IAAI,CACd,IAAIa,0BAA0B;YAC1B,OAAOL;YACP,UAAUV,MAAM,QAAQ;QAC5B;QAGR,IAAIgB;QACJ,IAAI;YACAA,YAAY,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAACF;QAC5C,EAAE,OAAOV,OAAO;YACZ,OAAOF,OAAO,IAAI,CACd,IAAIG,uBACAD,iBAAiBE,QAAQF,QAAQ,IAAIE,MAAMC,OAAOH;QAG9D;QAIA,IAAI,CAACY,WACD,OAAOd,OAAO,EAAE,CAAC,EAAE;QAIvB,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;YACpC,SAASU;YACT,OAAOX,MAAM,KAAK;YAClB,QAAQgB,sBAAsBjB,MAAM,MAAM;QAC9C;IACJ;AACJ;AAEO,MAAMkB,kGAAkDC,gDAAAA,oBAA4B,CAAC;IACxF,gBAAgBzB;IAChB,cAAc;QACV0B;QACAC;QACAC;QACAC;QACAC;KACH;AACL"}
|
|
@@ -0,0 +1,39 @@
|
|
|
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 CancelWebsiteBuilderPageReviewsForDeleteInput {
|
|
8
|
+
/** The page id (all revisions). */
|
|
9
|
+
targetId: string;
|
|
10
|
+
targetRevisionId?: string | null;
|
|
11
|
+
/** Recorded as the cancel reason: "content trashed" or "content deleted". */
|
|
12
|
+
action: ReviewActiveOnTrashAction;
|
|
13
|
+
}
|
|
14
|
+
export interface ICancelWebsiteBuilderPageReviewsForDeleteUseCaseErrors {
|
|
15
|
+
notAuthenticated: WorkflowsNotAuthenticatedError;
|
|
16
|
+
notAuthorized: WorkflowsNotAuthorizedError;
|
|
17
|
+
targetNotFound: ReviewTargetNotFoundError;
|
|
18
|
+
persistence: ReviewPersistenceError;
|
|
19
|
+
list: ListTargetReviewsUseCase.Error;
|
|
20
|
+
cancel: CancelTargetReviewsUseCase.Error;
|
|
21
|
+
}
|
|
22
|
+
type UseCaseError = ICancelWebsiteBuilderPageReviewsForDeleteUseCaseErrors[keyof ICancelWebsiteBuilderPageReviewsForDeleteUseCaseErrors];
|
|
23
|
+
export interface ICancelWebsiteBuilderPageReviewsForDeleteUseCase {
|
|
24
|
+
execute(input: CancelWebsiteBuilderPageReviewsForDeleteInput): Promise<Result<ReviewData[], UseCaseError>>;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* The confirm path for trashing or deleting a page, or deleting one of its revisions, with a
|
|
28
|
+
* review in progress (D134, R74, R235): cancels the page's in-progress reviews, or only the given
|
|
29
|
+
* revision's, as the caller, who needs delete access to the page and no cancel right. The admin
|
|
30
|
+
* calls it, then repeats the trash or delete.
|
|
31
|
+
*/
|
|
32
|
+
export declare const CancelWebsiteBuilderPageReviewsForDeleteUseCase: import("@webiny/di").Abstraction<ICancelWebsiteBuilderPageReviewsForDeleteUseCase>;
|
|
33
|
+
export declare namespace CancelWebsiteBuilderPageReviewsForDeleteUseCase {
|
|
34
|
+
type Interface = ICancelWebsiteBuilderPageReviewsForDeleteUseCase;
|
|
35
|
+
type Input = CancelWebsiteBuilderPageReviewsForDeleteInput;
|
|
36
|
+
type Error = UseCaseError;
|
|
37
|
+
type Return = Promise<Result<ReviewData[], UseCaseError>>;
|
|
38
|
+
}
|
|
39
|
+
export {};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { createAbstraction } from "@webiny/feature/api";
|
|
2
|
+
const CancelWebsiteBuilderPageReviewsForDeleteUseCase = createAbstraction("CancelWebsiteBuilderPageReviewsForDeleteUseCase");
|
|
3
|
+
export { CancelWebsiteBuilderPageReviewsForDeleteUseCase };
|
|
4
|
+
|
|
5
|
+
//# sourceMappingURL=abstractions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/wrappers/CancelWebsiteBuilderPageReviewsForDelete/abstractions.js","sources":["../../../../src/features/wrappers/CancelWebsiteBuilderPageReviewsForDelete/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 CancelWebsiteBuilderPageReviewsForDeleteInput {\n /** The page id (all revisions). */\n targetId: string;\n // Deleting one revision: only its review. Omitted for trash and page delete.\n targetRevisionId?: string | null;\n /** Recorded as the cancel reason: \"content trashed\" or \"content deleted\". */\n action: ReviewActiveOnTrashAction;\n}\n\nexport interface ICancelWebsiteBuilderPageReviewsForDeleteUseCaseErrors {\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 ICancelWebsiteBuilderPageReviewsForDeleteUseCaseErrors[keyof ICancelWebsiteBuilderPageReviewsForDeleteUseCaseErrors];\n\nexport interface ICancelWebsiteBuilderPageReviewsForDeleteUseCase {\n execute(\n input: CancelWebsiteBuilderPageReviewsForDeleteInput\n ): Promise<Result<ReviewData[], UseCaseError>>;\n}\n\n/**\n * The confirm path for trashing or deleting a page, or deleting one of its revisions, with a\n * review in progress (D134, R74, R235): cancels the page's in-progress reviews, or only the given\n * revision's, as the caller, who needs delete access to the page and no cancel right. The admin\n * calls it, then repeats the trash or delete.\n */\nexport const CancelWebsiteBuilderPageReviewsForDeleteUseCase =\n createAbstraction<ICancelWebsiteBuilderPageReviewsForDeleteUseCase>(\n \"CancelWebsiteBuilderPageReviewsForDeleteUseCase\"\n );\n\nexport namespace CancelWebsiteBuilderPageReviewsForDeleteUseCase {\n export type Interface = ICancelWebsiteBuilderPageReviewsForDeleteUseCase;\n export type Input = CancelWebsiteBuilderPageReviewsForDeleteInput;\n export type Error = UseCaseError;\n export type Return = Promise<Result<ReviewData[], UseCaseError>>;\n}\n"],"names":["CancelWebsiteBuilderPageReviewsForDeleteUseCase","createAbstraction"],"mappings":";AA+CO,MAAMA,kDACTC,kBACI"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api";
|
|
2
|
+
import { CancelWebsiteBuilderPageReviewsForDeleteUseCase } from "./CancelWebsiteBuilderPageReviewsForDeleteUseCase.js";
|
|
3
|
+
const CancelWebsiteBuilderPageReviewsForDeleteFeature = createFeature({
|
|
4
|
+
name: "WebsiteBuilderWorkflows/CancelWebsiteBuilderPageReviewsForDelete",
|
|
5
|
+
register (container) {
|
|
6
|
+
container.register(CancelWebsiteBuilderPageReviewsForDeleteUseCase);
|
|
7
|
+
}
|
|
8
|
+
});
|
|
9
|
+
export { CancelWebsiteBuilderPageReviewsForDeleteFeature };
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/wrappers/CancelWebsiteBuilderPageReviewsForDelete/feature.js","sources":["../../../../src/features/wrappers/CancelWebsiteBuilderPageReviewsForDelete/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { CancelWebsiteBuilderPageReviewsForDeleteUseCase } from \"./CancelWebsiteBuilderPageReviewsForDeleteUseCase.js\";\n\nexport const CancelWebsiteBuilderPageReviewsForDeleteFeature = createFeature({\n name: \"WebsiteBuilderWorkflows/CancelWebsiteBuilderPageReviewsForDelete\",\n register(container) {\n container.register(CancelWebsiteBuilderPageReviewsForDeleteUseCase);\n }\n});\n"],"names":["CancelWebsiteBuilderPageReviewsForDeleteFeature","createFeature","container","CancelWebsiteBuilderPageReviewsForDeleteUseCase"],"mappings":";;AAGO,MAAMA,kDAAkDC,cAAc;IACzE,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;IACvB;AACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { CancelWebsiteBuilderPageReviewsForDeleteUseCase } from "./abstractions.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { CancelWebsiteBuilderPageReviewsForDeleteUseCase } 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 { WbPageTargetReader } from "../../../features/target/WbPageTargetReader/index.js";
|
|
7
|
+
import { WbPageDeniedFolders } from "../../../features/target/WbPageDeniedFolders/index.js";
|
|
8
|
+
import { WbPageAccess } from "../../../features/target/WbPageAccess/index.js";
|
|
9
|
+
import { DeleteWebsiteBuilderPageWorkflowUseCase as UseCase } from "./abstractions.js";
|
|
10
|
+
declare class DeleteWebsiteBuilderPageWorkflowUseCaseImpl 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: WbPageTargetReader.Interface, access: WbPageAccess.Interface, readableBlockingReviews: ReadableBlockingReviewsService.Interface, deniedFolders: WbPageDeniedFolders.Interface);
|
|
20
|
+
execute(input: UseCase.Input): UseCase.Return;
|
|
21
|
+
}
|
|
22
|
+
export declare const DeleteWebsiteBuilderPageWorkflowUseCase: typeof DeleteWebsiteBuilderPageWorkflowUseCaseImpl & {
|
|
23
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IDeleteWebsiteBuilderPageWorkflowUseCase>;
|
|
24
|
+
};
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,95 @@
|
|
|
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 { WB_PAGE_NAMESPACE } from "../../../constants.js";
|
|
10
|
+
import { WbPageTargetReader } from "../../target/WbPageTargetReader/index.js";
|
|
11
|
+
import { WbPageDeniedFolders } from "../../target/WbPageDeniedFolders/index.js";
|
|
12
|
+
import { WbPageAccess } from "../../target/WbPageAccess/index.js";
|
|
13
|
+
import { isWbWorkflow } from "../shared/wbWorkflows.js";
|
|
14
|
+
import { DeleteWebsiteBuilderPageWorkflowUseCase } from "./abstractions.js";
|
|
15
|
+
class DeleteWebsiteBuilderPageWorkflowUseCaseImpl {
|
|
16
|
+
constructor(viewer, permissions, getWorkflow, deleteWorkflow, targets, access, readableBlockingReviews, deniedFolders){
|
|
17
|
+
this.viewer = viewer;
|
|
18
|
+
this.permissions = permissions;
|
|
19
|
+
this.getWorkflow = getWorkflow;
|
|
20
|
+
this.deleteWorkflow = deleteWorkflow;
|
|
21
|
+
this.targets = targets;
|
|
22
|
+
this.access = access;
|
|
23
|
+
this.readableBlockingReviews = readableBlockingReviews;
|
|
24
|
+
this.deniedFolders = deniedFolders;
|
|
25
|
+
}
|
|
26
|
+
async execute(input) {
|
|
27
|
+
const actor = this.viewer.getActor();
|
|
28
|
+
if (actor.isFail()) return Result.fail(actor.error);
|
|
29
|
+
let canEdit;
|
|
30
|
+
try {
|
|
31
|
+
canEdit = await this.permissions.canEdit();
|
|
32
|
+
} catch (error) {
|
|
33
|
+
return Result.fail(new WorkflowPersistenceError(error instanceof Error ? error : new Error(String(error))));
|
|
34
|
+
}
|
|
35
|
+
if (!canEdit) return Result.fail(new WorkflowsNotAuthorizedError({
|
|
36
|
+
action: "manage workflows"
|
|
37
|
+
}));
|
|
38
|
+
const existing = await this.getWorkflow.execute({
|
|
39
|
+
id: input.id
|
|
40
|
+
});
|
|
41
|
+
if (existing.isFail()) return Result.fail(existing.error);
|
|
42
|
+
if (!isWbWorkflow(existing.value)) return Result.fail(new WorkflowNotFoundError({
|
|
43
|
+
id: input.id
|
|
44
|
+
}));
|
|
45
|
+
const deleted = await this.deleteWorkflow.execute({
|
|
46
|
+
id: input.id,
|
|
47
|
+
actor: actor.value
|
|
48
|
+
});
|
|
49
|
+
if (deleted.isFail() && deleted.error instanceof WorkflowHasActiveReviewsError) {
|
|
50
|
+
const reviews = await this.readableBlockingReviews.filter(deleted.error.data.reviews, async (blockingReviews)=>{
|
|
51
|
+
const targetRevisionIds = blockingReviews.filter((review)=>review.model === WB_PAGE_NAMESPACE).map((review)=>review.targetRevisionId);
|
|
52
|
+
const read = await this.targets.readMany({
|
|
53
|
+
model: WB_PAGE_NAMESPACE,
|
|
54
|
+
targetRevisionIds
|
|
55
|
+
});
|
|
56
|
+
const targets = new Map(read.map((target)=>[
|
|
57
|
+
target.page.id,
|
|
58
|
+
target
|
|
59
|
+
]));
|
|
60
|
+
const folderRule = await this.deniedFolders.createFolderReadRule();
|
|
61
|
+
const readable = [];
|
|
62
|
+
for (const review of blockingReviews){
|
|
63
|
+
const target = targets.get(review.targetRevisionId);
|
|
64
|
+
if (target && review.model === WB_PAGE_NAMESPACE) {
|
|
65
|
+
if (target.page.entryId === review.targetId) {
|
|
66
|
+
if (await this.access.canRead(target, folderRule)) readable.push(review);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return readable;
|
|
71
|
+
});
|
|
72
|
+
return Result.fail(new WorkflowHasActiveReviewsError({
|
|
73
|
+
count: deleted.error.data.count,
|
|
74
|
+
reviews
|
|
75
|
+
}));
|
|
76
|
+
}
|
|
77
|
+
return deleted;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
const DeleteWebsiteBuilderPageWorkflowUseCase_DeleteWebsiteBuilderPageWorkflowUseCase = DeleteWebsiteBuilderPageWorkflowUseCase.createImplementation({
|
|
81
|
+
implementation: DeleteWebsiteBuilderPageWorkflowUseCaseImpl,
|
|
82
|
+
dependencies: [
|
|
83
|
+
CurrentReviewViewer,
|
|
84
|
+
WorkflowsPermissions,
|
|
85
|
+
GetWorkflowUseCase,
|
|
86
|
+
DeleteWorkflowUseCase,
|
|
87
|
+
WbPageTargetReader,
|
|
88
|
+
WbPageAccess,
|
|
89
|
+
ReadableBlockingReviewsService,
|
|
90
|
+
WbPageDeniedFolders
|
|
91
|
+
]
|
|
92
|
+
});
|
|
93
|
+
export { DeleteWebsiteBuilderPageWorkflowUseCase_DeleteWebsiteBuilderPageWorkflowUseCase as DeleteWebsiteBuilderPageWorkflowUseCase };
|
|
94
|
+
|
|
95
|
+
//# sourceMappingURL=DeleteWebsiteBuilderPageWorkflowUseCase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/wrappers/DeleteWebsiteBuilderPageWorkflow/DeleteWebsiteBuilderPageWorkflowUseCase.js","sources":["../../../../src/features/wrappers/DeleteWebsiteBuilderPageWorkflow/DeleteWebsiteBuilderPageWorkflowUseCase.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 { WB_PAGE_NAMESPACE } from \"~/constants.js\";\nimport { WbPageTargetReader } from \"~/features/target/WbPageTargetReader/index.js\";\nimport { WbPageDeniedFolders } from \"~/features/target/WbPageDeniedFolders/index.js\";\nimport { WbPageAccess } from \"~/features/target/WbPageAccess/index.js\";\nimport { isWbWorkflow } from \"../shared/wbWorkflows.js\";\nimport { DeleteWebsiteBuilderPageWorkflowUseCase as UseCase } from \"./abstractions.js\";\n\nclass DeleteWebsiteBuilderPageWorkflowUseCaseImpl 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: WbPageTargetReader.Interface,\n private access: WbPageAccess.Interface,\n private readableBlockingReviews: ReadableBlockingReviewsService.Interface,\n private deniedFolders: WbPageDeniedFolders.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 (!isWbWorkflow(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 pages are read in one batch and checked in memory (Q79); a failed read throws,\n // which the service counts as unreadable.\n const reviews = await this.readableBlockingReviews.filter(\n deleted.error.data.reviews,\n async blockingReviews => {\n const targetRevisionIds = blockingReviews\n .filter(review => review.model === WB_PAGE_NAMESPACE)\n .map(review => review.targetRevisionId);\n const read = await this.targets.readMany({\n model: WB_PAGE_NAMESPACE,\n targetRevisionIds\n });\n const targets = new Map(read.map(target => [target.page.id, target]));\n const folderRule = await this.deniedFolders.createFolderReadRule();\n\n const readable: WorkflowBlockingReview[] = [];\n for (const review of blockingReviews) {\n const target = targets.get(review.targetRevisionId);\n if (!target || review.model !== WB_PAGE_NAMESPACE) {\n continue;\n }\n if (target.page.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 DeleteWebsiteBuilderPageWorkflowUseCase = UseCase.createImplementation({\n implementation: DeleteWebsiteBuilderPageWorkflowUseCaseImpl,\n dependencies: [\n CurrentReviewViewer,\n WorkflowsPermissions,\n GetWorkflowUseCase,\n DeleteWorkflowUseCase,\n WbPageTargetReader,\n WbPageAccess,\n ReadableBlockingReviewsService,\n WbPageDeniedFolders\n ]\n});\n"],"names":["DeleteWebsiteBuilderPageWorkflowUseCaseImpl","viewer","permissions","getWorkflow","deleteWorkflow","targets","access","readableBlockingReviews","deniedFolders","input","actor","Result","canEdit","error","WorkflowPersistenceError","Error","String","WorkflowsNotAuthorizedError","existing","isWbWorkflow","WorkflowNotFoundError","deleted","WorkflowHasActiveReviewsError","reviews","blockingReviews","targetRevisionIds","review","WB_PAGE_NAMESPACE","read","Map","target","folderRule","readable","DeleteWebsiteBuilderPageWorkflowUseCase","UseCase","CurrentReviewViewer","WorkflowsPermissions","GetWorkflowUseCase","DeleteWorkflowUseCase","WbPageTargetReader","WbPageAccess","ReadableBlockingReviewsService","WbPageDeniedFolders"],"mappings":";;;;;;;;;;;;;;AAoBA,MAAMA;IACF,YACYC,MAAqC,EACrCC,WAA2C,EAC3CC,WAAyC,EACzCC,cAA+C,EAC/CC,OAAqC,EACrCC,MAA8B,EAC9BC,uBAAiE,EACjEC,aAA4C,CACtD;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,aAAaD,SAAS,KAAK,GAC5B,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,oBAAoBD,gBACrB,MAAM,CAACE,CAAAA,SAAUA,OAAO,KAAK,KAAKC,mBAClC,GAAG,CAACD,CAAAA,SAAUA,OAAO,gBAAgB;gBAC1C,MAAME,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;oBACrC,OAAOD;oBACPF;gBACJ;gBACA,MAAMpB,UAAU,IAAIwB,IAAID,KAAK,GAAG,CAACE,CAAAA,SAAU;wBAACA,OAAO,IAAI,CAAC,EAAE;wBAAEA;qBAAO;gBACnE,MAAMC,aAAa,MAAM,IAAI,CAAC,aAAa,CAAC,oBAAoB;gBAEhE,MAAMC,WAAqC,EAAE;gBAC7C,KAAK,MAAMN,UAAUF,gBAAiB;oBAClC,MAAMM,SAASzB,QAAQ,GAAG,CAACqB,OAAO,gBAAgB;oBAClD,IAAI,AAACI,UAAUJ,OAAO,KAAK,KAAKC,mBAGhC;wBAAA,IAAIG,OAAO,IAAI,CAAC,OAAO,KAAKJ,OAAO,QAAQ,EAI3C;4BAAA,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAACI,QAAQC,aAClCC,SAAS,IAAI,CAACN;wBAClB;oBAJA;gBAKJ;gBACA,OAAOM;YACX;YAEJ,OAAOrB,OAAO,IAAI,CACd,IAAIW,8BAA8B;gBAAE,OAAOD,QAAQ,KAAK,CAAC,IAAI,CAAC,KAAK;gBAAEE;YAAQ;QAErF;QACA,OAAOF;IACX;AACJ;AAEO,MAAMY,kFAA0CC,wCAAAA,oBAA4B,CAAC;IAChF,gBAAgBlC;IAChB,cAAc;QACVmC;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 DeleteWebsiteBuilderPageWorkflowInput {
|
|
8
|
+
id: string;
|
|
9
|
+
}
|
|
10
|
+
export interface IDeleteWebsiteBuilderPageWorkflowUseCaseErrors {
|
|
11
|
+
notAuthenticated: WorkflowsNotAuthenticatedError;
|
|
12
|
+
notAuthorized: WorkflowsNotAuthorizedError;
|
|
13
|
+
persistence: WorkflowPersistenceError;
|
|
14
|
+
get: GetWorkflowUseCase.Error;
|
|
15
|
+
delete: DeleteWorkflowUseCase.Error;
|
|
16
|
+
}
|
|
17
|
+
type UseCaseError = IDeleteWebsiteBuilderPageWorkflowUseCaseErrors[keyof IDeleteWebsiteBuilderPageWorkflowUseCaseErrors];
|
|
18
|
+
export interface IDeleteWebsiteBuilderPageWorkflowUseCase {
|
|
19
|
+
execute(input: DeleteWebsiteBuilderPageWorkflowInput): Promise<Result<Workflow, UseCaseError>>;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Delete the pages 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 DeleteWebsiteBuilderPageWorkflowUseCase: import("@webiny/di").Abstraction<IDeleteWebsiteBuilderPageWorkflowUseCase>;
|
|
26
|
+
export declare namespace DeleteWebsiteBuilderPageWorkflowUseCase {
|
|
27
|
+
type Interface = IDeleteWebsiteBuilderPageWorkflowUseCase;
|
|
28
|
+
type Input = DeleteWebsiteBuilderPageWorkflowInput;
|
|
29
|
+
type Error = UseCaseError;
|
|
30
|
+
type Return = Promise<Result<Workflow, UseCaseError>>;
|
|
31
|
+
}
|
|
32
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/wrappers/DeleteWebsiteBuilderPageWorkflow/abstractions.js","sources":["../../../../src/features/wrappers/DeleteWebsiteBuilderPageWorkflow/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 DeleteWebsiteBuilderPageWorkflowInput {\n id: string;\n}\n\nexport interface IDeleteWebsiteBuilderPageWorkflowUseCaseErrors {\n notAuthenticated: WorkflowsNotAuthenticatedError;\n notAuthorized: WorkflowsNotAuthorizedError;\n persistence: WorkflowPersistenceError;\n get: GetWorkflowUseCase.Error;\n delete: DeleteWorkflowUseCase.Error;\n}\n\ntype UseCaseError =\n IDeleteWebsiteBuilderPageWorkflowUseCaseErrors[keyof IDeleteWebsiteBuilderPageWorkflowUseCaseErrors];\n\nexport interface IDeleteWebsiteBuilderPageWorkflowUseCase {\n execute(input: DeleteWebsiteBuilderPageWorkflowInput): Promise<Result<Workflow, UseCaseError>>;\n}\n\n/**\n * Delete the pages 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 DeleteWebsiteBuilderPageWorkflowUseCase =\n createAbstraction<IDeleteWebsiteBuilderPageWorkflowUseCase>(\n \"DeleteWebsiteBuilderPageWorkflowUseCase\"\n );\n\nexport namespace DeleteWebsiteBuilderPageWorkflowUseCase {\n export type Interface = IDeleteWebsiteBuilderPageWorkflowUseCase;\n export type Input = DeleteWebsiteBuilderPageWorkflowInput;\n export type Error = UseCaseError;\n export type Return = Promise<Result<Workflow, UseCaseError>>;\n}\n"],"names":["DeleteWebsiteBuilderPageWorkflowUseCase","createAbstraction"],"mappings":";AAiCO,MAAMA,0CACTC,kBACI"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api";
|
|
2
|
+
import { DeleteWebsiteBuilderPageWorkflowUseCase } from "./DeleteWebsiteBuilderPageWorkflowUseCase.js";
|
|
3
|
+
const DeleteWebsiteBuilderPageWorkflowFeature = createFeature({
|
|
4
|
+
name: "WebsiteBuilderWorkflows/DeleteWebsiteBuilderPageWorkflow",
|
|
5
|
+
register (container) {
|
|
6
|
+
container.register(DeleteWebsiteBuilderPageWorkflowUseCase);
|
|
7
|
+
}
|
|
8
|
+
});
|
|
9
|
+
export { DeleteWebsiteBuilderPageWorkflowFeature };
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/wrappers/DeleteWebsiteBuilderPageWorkflow/feature.js","sources":["../../../../src/features/wrappers/DeleteWebsiteBuilderPageWorkflow/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { DeleteWebsiteBuilderPageWorkflowUseCase } from \"./DeleteWebsiteBuilderPageWorkflowUseCase.js\";\n\nexport const DeleteWebsiteBuilderPageWorkflowFeature = createFeature({\n name: \"WebsiteBuilderWorkflows/DeleteWebsiteBuilderPageWorkflow\",\n register(container) {\n container.register(DeleteWebsiteBuilderPageWorkflowUseCase);\n }\n});\n"],"names":["DeleteWebsiteBuilderPageWorkflowFeature","createFeature","container","DeleteWebsiteBuilderPageWorkflowUseCase"],"mappings":";;AAGO,MAAMA,0CAA0CC,cAAc;IACjE,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;IACvB;AACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { DeleteWebsiteBuilderPageWorkflowUseCase } from "./abstractions.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { DeleteWebsiteBuilderPageWorkflowUseCase } from "./abstractions.js";
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ListReviewAssignmentsUseCase } from "@webiny/api-workflows/features/assignment/ListReviewAssignments/index.js";
|
|
2
|
+
import { WbPageReviewGuardService } from "../WbPageReviewGuardService/index.js";
|
|
3
|
+
import { GetWebsiteBuilderPageReviewUseCase as UseCase } from "./abstractions.js";
|
|
4
|
+
declare class GetWebsiteBuilderPageReviewUseCaseImpl implements UseCase.Interface {
|
|
5
|
+
private guard;
|
|
6
|
+
private listAssignments;
|
|
7
|
+
constructor(guard: WbPageReviewGuardService.Interface, listAssignments: ListReviewAssignmentsUseCase.Interface);
|
|
8
|
+
execute(input: UseCase.Input): UseCase.Return;
|
|
9
|
+
}
|
|
10
|
+
export declare const GetWebsiteBuilderPageReviewUseCase: typeof GetWebsiteBuilderPageReviewUseCaseImpl & {
|
|
11
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IGetWebsiteBuilderPageReviewUseCase>;
|
|
12
|
+
};
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { getReviewViewerFlags } from "@webiny/api-workflows/domain/review/getReviewViewerFlags.js";
|
|
3
|
+
import { redactAssignmentRecords } from "@webiny/api-workflows/domain/assignment/redactAssignmentRecords.js";
|
|
4
|
+
import { attachAssignmentRecords } from "@webiny/api-workflows/domain/assignment/attachAssignmentRecords.js";
|
|
5
|
+
import { ListReviewAssignmentsUseCase } from "@webiny/api-workflows/features/assignment/ListReviewAssignments/index.js";
|
|
6
|
+
import { WbPageReviewGuardService } from "../WbPageReviewGuardService/index.js";
|
|
7
|
+
import { GetWebsiteBuilderPageReviewUseCase } from "./abstractions.js";
|
|
8
|
+
class GetWebsiteBuilderPageReviewUseCaseImpl {
|
|
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 assignments = await this.listAssignments.execute({
|
|
21
|
+
reviewId: review.id
|
|
22
|
+
});
|
|
23
|
+
if (assignments.isFail()) return Result.fail(assignments.error);
|
|
24
|
+
const visible = redactAssignmentRecords(assignments.value, viewer.permissions);
|
|
25
|
+
return Result.ok({
|
|
26
|
+
review: attachAssignmentRecords(review, visible),
|
|
27
|
+
flags: getReviewViewerFlags(review, viewer)
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
const GetWebsiteBuilderPageReviewUseCase_GetWebsiteBuilderPageReviewUseCase = GetWebsiteBuilderPageReviewUseCase.createImplementation({
|
|
32
|
+
implementation: GetWebsiteBuilderPageReviewUseCaseImpl,
|
|
33
|
+
dependencies: [
|
|
34
|
+
WbPageReviewGuardService,
|
|
35
|
+
ListReviewAssignmentsUseCase
|
|
36
|
+
]
|
|
37
|
+
});
|
|
38
|
+
export { GetWebsiteBuilderPageReviewUseCase_GetWebsiteBuilderPageReviewUseCase as GetWebsiteBuilderPageReviewUseCase };
|
|
39
|
+
|
|
40
|
+
//# sourceMappingURL=GetWebsiteBuilderPageReviewUseCase.js.map
|
package/features/wrappers/GetWebsiteBuilderPageReview/GetWebsiteBuilderPageReviewUseCase.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/wrappers/GetWebsiteBuilderPageReview/GetWebsiteBuilderPageReviewUseCase.js","sources":["../../../../src/features/wrappers/GetWebsiteBuilderPageReview/GetWebsiteBuilderPageReviewUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\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 { ListReviewAssignmentsUseCase } from \"@webiny/api-workflows/features/assignment/ListReviewAssignments/index.js\";\nimport { WbPageReviewGuardService } from \"../WbPageReviewGuardService/index.js\";\nimport { GetWebsiteBuilderPageReviewUseCase as UseCase } from \"./abstractions.js\";\n\nclass GetWebsiteBuilderPageReviewUseCaseImpl implements UseCase.Interface {\n public constructor(\n private guard: WbPageReviewGuardService.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 assignments = await this.listAssignments.execute({ reviewId: review.id });\n if (assignments.isFail()) {\n return Result.fail(assignments.error);\n }\n\n // The guard has proven read access to the target, so the viewer flags apply as they are.\n const visible = redactAssignmentRecords(assignments.value, viewer.permissions);\n return Result.ok({\n review: attachAssignmentRecords(review, visible),\n flags: getReviewViewerFlags(review, viewer)\n });\n }\n}\n\nexport const GetWebsiteBuilderPageReviewUseCase = UseCase.createImplementation({\n implementation: GetWebsiteBuilderPageReviewUseCaseImpl,\n dependencies: [WbPageReviewGuardService, ListReviewAssignmentsUseCase]\n});\n"],"names":["GetWebsiteBuilderPageReviewUseCaseImpl","guard","listAssignments","input","authorized","Result","review","viewer","assignments","visible","redactAssignmentRecords","attachAssignmentRecords","getReviewViewerFlags","GetWebsiteBuilderPageReviewUseCase","UseCase","WbPageReviewGuardService","ListReviewAssignmentsUseCase"],"mappings":";;;;;;;AAQA,MAAMA;IACF,YACYC,KAAyC,EACzCC,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,cAAc,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;YAAE,UAAUF,OAAO,EAAE;QAAC;QAC7E,IAAIE,YAAY,MAAM,IAClB,OAAOH,OAAO,IAAI,CAACG,YAAY,KAAK;QAIxC,MAAMC,UAAUC,wBAAwBF,YAAY,KAAK,EAAED,OAAO,WAAW;QAC7E,OAAOF,OAAO,EAAE,CAAC;YACb,QAAQM,wBAAwBL,QAAQG;YACxC,OAAOG,qBAAqBN,QAAQC;QACxC;IACJ;AACJ;AAEO,MAAMM,wEAAqCC,mCAAAA,oBAA4B,CAAC;IAC3E,gBAAgBd;IAChB,cAAc;QAACe;QAA0BC;KAA6B;AAC1E"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type Result } from "@webiny/feature/api";
|
|
2
|
+
import type { ListReviewAssignmentsUseCase } from "@webiny/api-workflows/features/assignment/ListReviewAssignments/index.js";
|
|
3
|
+
import type { WbPageReviewGuardService } from "../WbPageReviewGuardService/index.js";
|
|
4
|
+
import type { ReviewWithAssignmentsAndViewerFlags } from "@webiny/api-workflows/domain/assignment/types.js";
|
|
5
|
+
export interface GetWebsiteBuilderPageReviewInput {
|
|
6
|
+
id: string;
|
|
7
|
+
}
|
|
8
|
+
export interface IGetWebsiteBuilderPageReviewUseCaseErrors {
|
|
9
|
+
guard: WbPageReviewGuardService.Error;
|
|
10
|
+
assignments: ListReviewAssignmentsUseCase.Error;
|
|
11
|
+
}
|
|
12
|
+
type UseCaseError = IGetWebsiteBuilderPageReviewUseCaseErrors[keyof IGetWebsiteBuilderPageReviewUseCaseErrors];
|
|
13
|
+
export interface IGetWebsiteBuilderPageReviewUseCase {
|
|
14
|
+
execute(input: GetWebsiteBuilderPageReviewInput): Promise<Result<ReviewWithAssignmentsAndViewerFlags, UseCaseError>>;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* A page review with the reading user's flags (spec 5.3, R62); needs read access to the target.
|
|
18
|
+
* Each step carries its assignment-log entries (D127); per-user skip entries are dropped here, in
|
|
19
|
+
* the wrapper and not in the resolver, for viewers without `editor` / `reassign` (spec 8, D89,
|
|
20
|
+
* D133, R96).
|
|
21
|
+
*/
|
|
22
|
+
export declare const GetWebsiteBuilderPageReviewUseCase: import("@webiny/di").Abstraction<IGetWebsiteBuilderPageReviewUseCase>;
|
|
23
|
+
export declare namespace GetWebsiteBuilderPageReviewUseCase {
|
|
24
|
+
type Interface = IGetWebsiteBuilderPageReviewUseCase;
|
|
25
|
+
type Input = GetWebsiteBuilderPageReviewInput;
|
|
26
|
+
type Error = UseCaseError;
|
|
27
|
+
type Return = Promise<Result<ReviewWithAssignmentsAndViewerFlags, UseCaseError>>;
|
|
28
|
+
}
|
|
29
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/wrappers/GetWebsiteBuilderPageReview/abstractions.js","sources":["../../../../src/features/wrappers/GetWebsiteBuilderPageReview/abstractions.ts"],"sourcesContent":["import { createAbstraction, type Result } from \"@webiny/feature/api\";\nimport type { ListReviewAssignmentsUseCase } from \"@webiny/api-workflows/features/assignment/ListReviewAssignments/index.js\";\nimport type { WbPageReviewGuardService } from \"../WbPageReviewGuardService/index.js\";\nimport type { ReviewWithAssignmentsAndViewerFlags } from \"@webiny/api-workflows/domain/assignment/types.js\";\n\nexport interface GetWebsiteBuilderPageReviewInput {\n id: string;\n}\n\nexport interface IGetWebsiteBuilderPageReviewUseCaseErrors {\n guard: WbPageReviewGuardService.Error;\n assignments: ListReviewAssignmentsUseCase.Error;\n}\n\ntype UseCaseError =\n IGetWebsiteBuilderPageReviewUseCaseErrors[keyof IGetWebsiteBuilderPageReviewUseCaseErrors];\n\nexport interface IGetWebsiteBuilderPageReviewUseCase {\n execute(\n input: GetWebsiteBuilderPageReviewInput\n ): Promise<Result<ReviewWithAssignmentsAndViewerFlags, UseCaseError>>;\n}\n\n/**\n * A page review with the reading user's flags (spec 5.3, R62); needs read access to the target.\n * Each step carries its assignment-log entries (D127); per-user skip entries are dropped here, in\n * the wrapper and not in the resolver, for viewers without `editor` / `reassign` (spec 8, D89,\n * D133, R96).\n */\nexport const GetWebsiteBuilderPageReviewUseCase =\n createAbstraction<IGetWebsiteBuilderPageReviewUseCase>(\"GetWebsiteBuilderPageReviewUseCase\");\n\nexport namespace GetWebsiteBuilderPageReviewUseCase {\n export type Interface = IGetWebsiteBuilderPageReviewUseCase;\n export type Input = GetWebsiteBuilderPageReviewInput;\n export type Error = UseCaseError;\n export type Return = Promise<Result<ReviewWithAssignmentsAndViewerFlags, UseCaseError>>;\n}\n"],"names":["GetWebsiteBuilderPageReviewUseCase","createAbstraction"],"mappings":";AA6BO,MAAMA,qCACTC,kBAAuD"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api";
|
|
2
|
+
import { GetWebsiteBuilderPageReviewUseCase } from "./GetWebsiteBuilderPageReviewUseCase.js";
|
|
3
|
+
const GetWebsiteBuilderPageReviewFeature = createFeature({
|
|
4
|
+
name: "WebsiteBuilderWorkflows/GetWebsiteBuilderPageReview",
|
|
5
|
+
register (container) {
|
|
6
|
+
container.register(GetWebsiteBuilderPageReviewUseCase);
|
|
7
|
+
}
|
|
8
|
+
});
|
|
9
|
+
export { GetWebsiteBuilderPageReviewFeature };
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/wrappers/GetWebsiteBuilderPageReview/feature.js","sources":["../../../../src/features/wrappers/GetWebsiteBuilderPageReview/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { GetWebsiteBuilderPageReviewUseCase } from \"./GetWebsiteBuilderPageReviewUseCase.js\";\n\nexport const GetWebsiteBuilderPageReviewFeature = createFeature({\n name: \"WebsiteBuilderWorkflows/GetWebsiteBuilderPageReview\",\n register(container) {\n container.register(GetWebsiteBuilderPageReviewUseCase);\n }\n});\n"],"names":["GetWebsiteBuilderPageReviewFeature","createFeature","container","GetWebsiteBuilderPageReviewUseCase"],"mappings":";;AAGO,MAAMA,qCAAqCC,cAAc;IAC5D,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;IACvB;AACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { GetWebsiteBuilderPageReviewUseCase } from "./abstractions.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { GetWebsiteBuilderPageReviewUseCase } from "./abstractions.js";
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { GetReviewStepRunUseCase } from "@webiny/api-workflows/features/stepRun/GetReviewStepRun/index.js";
|
|
2
|
+
import { WbPageReviewGuardService } from "../WbPageReviewGuardService/index.js";
|
|
3
|
+
import { GetWebsiteBuilderPageReviewStepRunUseCase as UseCase } from "./abstractions.js";
|
|
4
|
+
declare class GetWebsiteBuilderPageReviewStepRunUseCaseImpl implements UseCase.Interface {
|
|
5
|
+
private guard;
|
|
6
|
+
private getStepRun;
|
|
7
|
+
constructor(guard: WbPageReviewGuardService.Interface, getStepRun: GetReviewStepRunUseCase.Interface);
|
|
8
|
+
execute(input: UseCase.Input): UseCase.Return;
|
|
9
|
+
}
|
|
10
|
+
export declare const GetWebsiteBuilderPageReviewStepRunUseCase: typeof GetWebsiteBuilderPageReviewStepRunUseCaseImpl & {
|
|
11
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IGetWebsiteBuilderPageReviewStepRunUseCase>;
|
|
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 { WbPageReviewGuardService } from "../WbPageReviewGuardService/index.js";
|
|
6
|
+
import { GetWebsiteBuilderPageReviewStepRunUseCase } from "./abstractions.js";
|
|
7
|
+
const ACTION = "view a step run";
|
|
8
|
+
class GetWebsiteBuilderPageReviewStepRunUseCaseImpl {
|
|
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 GetWebsiteBuilderPageReviewStepRunUseCase_GetWebsiteBuilderPageReviewStepRunUseCase = GetWebsiteBuilderPageReviewStepRunUseCase.createImplementation({
|
|
31
|
+
implementation: GetWebsiteBuilderPageReviewStepRunUseCaseImpl,
|
|
32
|
+
dependencies: [
|
|
33
|
+
WbPageReviewGuardService,
|
|
34
|
+
GetReviewStepRunUseCase
|
|
35
|
+
]
|
|
36
|
+
});
|
|
37
|
+
export { GetWebsiteBuilderPageReviewStepRunUseCase_GetWebsiteBuilderPageReviewStepRunUseCase as GetWebsiteBuilderPageReviewStepRunUseCase };
|
|
38
|
+
|
|
39
|
+
//# sourceMappingURL=GetWebsiteBuilderPageReviewStepRunUseCase.js.map
|