@webiny/api-website-builder-workflows 0.0.0-unstable.81ae05e56b → 0.0.0-unstable.9609e4e0c9
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/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 -1
- package/index.js +1 -19
- package/package.json +31 -19
- package/features/PageWorkflows/feature.d.ts +0 -1
- package/features/PageWorkflows/feature.js +0 -18
- package/features/PageWorkflows/feature.js.map +0 -1
- package/features/PageWorkflows/handlers/ClearPageStateOnWorkflowStateAfterDelete.d.ts +0 -11
- package/features/PageWorkflows/handlers/ClearPageStateOnWorkflowStateAfterDelete.js +0 -27
- package/features/PageWorkflows/handlers/ClearPageStateOnWorkflowStateAfterDelete.js.map +0 -1
- package/features/PageWorkflows/handlers/DeleteWorkflowStateOnPageAfterDelete.d.ts +0 -11
- package/features/PageWorkflows/handlers/DeleteWorkflowStateOnPageAfterDelete.js +0 -20
- package/features/PageWorkflows/handlers/DeleteWorkflowStateOnPageAfterDelete.js.map +0 -1
- package/features/PageWorkflows/handlers/UpdatePageOnWorkflowStateAfterCreate.d.ts +0 -11
- package/features/PageWorkflows/handlers/UpdatePageOnWorkflowStateAfterCreate.js +0 -29
- package/features/PageWorkflows/handlers/UpdatePageOnWorkflowStateAfterCreate.js.map +0 -1
- package/features/PageWorkflows/handlers/UpdatePageOnWorkflowStateAfterUpdate.d.ts +0 -11
- package/features/PageWorkflows/handlers/UpdatePageOnWorkflowStateAfterUpdate.js +0 -29
- package/features/PageWorkflows/handlers/UpdatePageOnWorkflowStateAfterUpdate.js.map +0 -1
- package/features/PageWorkflows/handlers/ValidateWorkflowStateOnPageBeforePublish.d.ts +0 -11
- package/features/PageWorkflows/handlers/ValidateWorkflowStateOnPageBeforePublish.js +0 -43
- package/features/PageWorkflows/handlers/ValidateWorkflowStateOnPageBeforePublish.js.map +0 -1
- package/graphql/page.d.ts +0 -2
- package/graphql/page.js +0 -24
- package/graphql/page.js.map +0 -1
- package/index.js.map +0 -1
- package/utils/appName.d.ts +0 -1
- package/utils/appName.js +0 -3
- package/utils/appName.js.map +0 -1
- package/utils/state.d.ts +0 -8
- package/utils/state.js +0 -11
- package/utils/state.js.map +0 -1
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { GraphQLSchemaFactory } from "@webiny/api-graphql/graphql/abstractions.js";
|
|
2
|
+
/**
|
|
3
|
+
* `WbPage.system.workflow` on `/graphql` (R102): the stored `system.workflow` of a page revision
|
|
4
|
+
* (spec 4.5). Website Builder's resolvers return the page with its `system`, so no resolver is
|
|
5
|
+
* needed. Only registered with the advancedPublishingWorkflow license (WebsiteBuilderWorkflowsFeature
|
|
6
|
+
* gates on the flag at register time), so no per-request license guard is needed here.
|
|
7
|
+
*/
|
|
8
|
+
declare class WebsiteBuilderPageSchemaFactoryImpl implements GraphQLSchemaFactory.Interface {
|
|
9
|
+
getSchemaKey: () => string;
|
|
10
|
+
execute(builder: GraphQLSchemaFactory.SchemaBuilder): GraphQLSchemaFactory.Return;
|
|
11
|
+
}
|
|
12
|
+
export declare const WebsiteBuilderPageSchemaFactory: typeof WebsiteBuilderPageSchemaFactoryImpl & {
|
|
13
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-graphql/graphql/abstractions.public").IGraphQLSchemaFactory>;
|
|
14
|
+
};
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { GraphQLSchemaFactory } from "@webiny/api-graphql/graphql/abstractions.js";
|
|
2
|
+
import { staticSchemaKey } from "@webiny/api-graphql/graphql/staticSchemaKey.js";
|
|
3
|
+
class WebsiteBuilderPageSchemaFactoryImpl {
|
|
4
|
+
async execute(builder) {
|
|
5
|
+
builder.addTypeDefs(`
|
|
6
|
+
type WbPageSystemWorkflow {
|
|
7
|
+
workflowId: String
|
|
8
|
+
reviewState: String
|
|
9
|
+
stepId: String
|
|
10
|
+
stepName: String
|
|
11
|
+
stepState: String
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
extend type WbPageSystem {
|
|
15
|
+
workflow: WbPageSystemWorkflow
|
|
16
|
+
}
|
|
17
|
+
`);
|
|
18
|
+
return builder;
|
|
19
|
+
}
|
|
20
|
+
constructor(){
|
|
21
|
+
this.getSchemaKey = staticSchemaKey("api-website-builder-workflows/WebsiteBuilderPageSchemaFactoryImpl");
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
const WebsiteBuilderPageSchemaFactory = GraphQLSchemaFactory.createImplementation({
|
|
25
|
+
implementation: WebsiteBuilderPageSchemaFactoryImpl,
|
|
26
|
+
dependencies: []
|
|
27
|
+
});
|
|
28
|
+
export { WebsiteBuilderPageSchemaFactory };
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=WebsiteBuilderPageSchemaFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebsiteBuilderPageSchemaFactory.js","sources":["../src/WebsiteBuilderPageSchemaFactory.ts"],"sourcesContent":["import { GraphQLSchemaFactory } from \"@webiny/api-graphql/graphql/abstractions.js\";\nimport { staticSchemaKey } from \"@webiny/api-graphql/graphql/staticSchemaKey.js\";\n\n/**\n * `WbPage.system.workflow` on `/graphql` (R102): the stored `system.workflow` of a page revision\n * (spec 4.5). Website Builder's resolvers return the page with its `system`, so no resolver is\n * needed. Only registered with the advancedPublishingWorkflow license (WebsiteBuilderWorkflowsFeature\n * gates on the flag at register time), so no per-request license guard is needed here.\n */\nclass WebsiteBuilderPageSchemaFactoryImpl implements GraphQLSchemaFactory.Interface {\n public getSchemaKey = staticSchemaKey(\n \"api-website-builder-workflows/WebsiteBuilderPageSchemaFactoryImpl\"\n );\n\n public async execute(builder: GraphQLSchemaFactory.SchemaBuilder): GraphQLSchemaFactory.Return {\n builder.addTypeDefs(/* GraphQL */ `\n type WbPageSystemWorkflow {\n workflowId: String\n reviewState: String\n stepId: String\n stepName: String\n stepState: String\n }\n\n extend type WbPageSystem {\n workflow: WbPageSystemWorkflow\n }\n `);\n\n return builder;\n }\n}\n\nexport const WebsiteBuilderPageSchemaFactory = GraphQLSchemaFactory.createImplementation({\n implementation: WebsiteBuilderPageSchemaFactoryImpl,\n dependencies: []\n});\n"],"names":["WebsiteBuilderPageSchemaFactoryImpl","builder","staticSchemaKey","WebsiteBuilderPageSchemaFactory","GraphQLSchemaFactory"],"mappings":";;AASA,MAAMA;IAKF,MAAa,QAAQC,OAA2C,EAA+B;QAC3FA,QAAQ,WAAW,CAAe,CAAC;;;;;;;;;;;;QAYnC,CAAC;QAED,OAAOA;IACX;;aApBO,YAAY,GAAGC,gBAClB;;AAoBR;AAEO,MAAMC,kCAAkCC,qBAAqB,oBAAoB,CAAC;IACrF,gBAAgBJ;IAChB,cAAc,EAAE;AACpB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api";
|
|
2
|
+
import { FeatureFlags } from "@webiny/api-core/features/featureFlags/abstractions.js";
|
|
3
|
+
import { WbHooksFeature } from "./features/hooks/feature.js";
|
|
4
|
+
import { WbWrappersFeature } from "./features/wrappers/feature.js";
|
|
5
|
+
import { WbTargetFeature } from "./features/target/feature.js";
|
|
6
|
+
import { WebsiteBuilderPageSchemaFactory } from "./WebsiteBuilderPageSchemaFactory.js";
|
|
7
|
+
import { WebsiteBuilderWorkflowsSchemaFactory } from "./graphql/WebsiteBuilderWorkflowsSchemaFactory.js";
|
|
8
|
+
const WebsiteBuilderWorkflowsFeature = createFeature({
|
|
9
|
+
name: "WebsiteBuilderWorkflows",
|
|
10
|
+
register (container) {
|
|
11
|
+
if (!container.resolve(FeatureFlags).get().isEnabled("advancedPublishingWorkflow")) return;
|
|
12
|
+
container.register(WebsiteBuilderPageSchemaFactory);
|
|
13
|
+
container.register(WebsiteBuilderWorkflowsSchemaFactory);
|
|
14
|
+
WbTargetFeature.register(container);
|
|
15
|
+
WbHooksFeature.register(container);
|
|
16
|
+
WbWrappersFeature.register(container);
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
export { WebsiteBuilderWorkflowsFeature };
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=WebsiteBuilderWorkflowsFeature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebsiteBuilderWorkflowsFeature.js","sources":["../src/WebsiteBuilderWorkflowsFeature.ts"],"sourcesContent":["import { type Container, createFeature } from \"@webiny/feature/api\";\nimport { FeatureFlags } from \"@webiny/api-core/features/featureFlags/abstractions.js\";\nimport { WbHooksFeature } from \"./features/hooks/feature.js\";\nimport { WbWrappersFeature } from \"./features/wrappers/feature.js\";\nimport { WbTargetFeature } from \"./features/target/feature.js\";\nimport { WebsiteBuilderPageSchemaFactory } from \"./WebsiteBuilderPageSchemaFactory.js\";\nimport { WebsiteBuilderWorkflowsSchemaFactory } from \"./graphql/WebsiteBuilderWorkflowsSchemaFactory.js\";\n\nexport const WebsiteBuilderWorkflowsFeature = createFeature({\n name: \"WebsiteBuilderWorkflows\",\n register(container: Container) {\n // Advanced publishing workflow is license-gated — check at register time (license is fresh\n // pre-register) so nothing wires up without the entitlement.\n if (!container.resolve(FeatureFlags).get().isEnabled(\"advancedPublishingWorkflow\")) {\n return;\n }\n\n // Page handlers (system.workflow sync, publish and move rules, target delete) live in the\n // `wb.page` target adapter and hooks, next to the Website Builder wrapper use cases that\n // read the identity and check permissions (D132, D133).\n container.register(WebsiteBuilderPageSchemaFactory);\n // Every pages workflow and review operation on the `websiteBuilder` root (D136, R88).\n container.register(WebsiteBuilderWorkflowsSchemaFactory);\n\n // The `wb.page` target adapter (spec 9.3).\n WbTargetFeature.register(container);\n WbHooksFeature.register(container);\n WbWrappersFeature.register(container);\n }\n});\n"],"names":["WebsiteBuilderWorkflowsFeature","createFeature","container","FeatureFlags","WebsiteBuilderPageSchemaFactory","WebsiteBuilderWorkflowsSchemaFactory","WbTargetFeature","WbHooksFeature","WbWrappersFeature"],"mappings":";;;;;;;AAQO,MAAMA,iCAAiCC,cAAc;IACxD,MAAM;IACN,UAASC,SAAoB;QAGzB,IAAI,CAACA,UAAU,OAAO,CAACC,cAAc,GAAG,GAAG,SAAS,CAAC,+BACjD;QAMJD,UAAU,QAAQ,CAACE;QAEnBF,UAAU,QAAQ,CAACG;QAGnBC,gBAAgB,QAAQ,CAACJ;QACzBK,eAAe,QAAQ,CAACL;QACxBM,kBAAkB,QAAQ,CAACN;IAC/B;AACJ"}
|
package/constants.d.ts
ADDED
package/constants.js
ADDED
package/constants.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../src/constants.ts"],"sourcesContent":["/** The review namespace of Website Builder pages (D15, D42). */\nexport const WB_PAGE_NAMESPACE = \"wb.page\";\n/** ACO folder type of pages; `TargetContext.folder.type` (R66). */\nexport const WB_PAGE_FOLDER_TYPE = \"wb:page\";\n"],"names":["WB_PAGE_NAMESPACE","WB_PAGE_FOLDER_TYPE"],"mappings":"AACO,MAAMA,oBAAoB;AAE1B,MAAMC,sBAAsB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { PageBeforeDeleteEventHandler } from "@webiny/api-website-builder/features/pages/DeletePage/index.js";
|
|
2
|
+
import { GetBoundWorkflowUseCase } from "@webiny/api-workflows/features/workflow/GetBoundWorkflow/index.js";
|
|
3
|
+
import { ListTargetReviewsUseCase } from "@webiny/api-workflows/features/review/ListTargetReviews/index.js";
|
|
4
|
+
/**
|
|
5
|
+
* Deleting a page from the trash is refused while a review is in progress (D134, R73). A page
|
|
6
|
+
* cannot reach the trash with one (`BlockPageTrashWhileInReview`), so this only guards races.
|
|
7
|
+
*
|
|
8
|
+
* Pages are private: they are not exposed through CMS GraphQL, so only programmatic CMS calls on
|
|
9
|
+
* the page model bypass this rule.
|
|
10
|
+
*/
|
|
11
|
+
declare class BlockPageDeleteWhileInReviewImpl implements PageBeforeDeleteEventHandler.Interface {
|
|
12
|
+
private getBoundWorkflow;
|
|
13
|
+
private listTargetReviews;
|
|
14
|
+
constructor(getBoundWorkflow: GetBoundWorkflowUseCase.Interface, listTargetReviews: ListTargetReviewsUseCase.Interface);
|
|
15
|
+
handle(event: PageBeforeDeleteEventHandler.Event): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
export declare const BlockPageDeleteWhileInReview: typeof BlockPageDeleteWhileInReviewImpl & {
|
|
18
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher").IEventHandler<import("@webiny/api-core/features/eventPublisher").DomainEvent<import("@webiny/api-website-builder/features/pages/DeletePage/abstractions").PageBeforeDeletePayload>>>;
|
|
19
|
+
};
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { PageBeforeDeleteEventHandler } from "@webiny/api-website-builder/features/pages/DeletePage/index.js";
|
|
2
|
+
import { GetBoundWorkflowUseCase } from "@webiny/api-workflows/features/workflow/GetBoundWorkflow/index.js";
|
|
3
|
+
import { ListTargetReviewsUseCase } from "@webiny/api-workflows/features/review/ListTargetReviews/index.js";
|
|
4
|
+
import { ReviewActiveOnTrashError } from "@webiny/api-workflows/domain/review/errors.js";
|
|
5
|
+
import { toBlockingReview } from "@webiny/api-workflows/domain/review/toBlockingReview.js";
|
|
6
|
+
import { WB_PAGE_NAMESPACE } from "../../constants.js";
|
|
7
|
+
class BlockPageDeleteWhileInReviewImpl {
|
|
8
|
+
constructor(getBoundWorkflow, listTargetReviews){
|
|
9
|
+
this.getBoundWorkflow = getBoundWorkflow;
|
|
10
|
+
this.listTargetReviews = listTargetReviews;
|
|
11
|
+
}
|
|
12
|
+
async handle(event) {
|
|
13
|
+
const { page } = event.payload;
|
|
14
|
+
const bound = await this.getBoundWorkflow.execute({
|
|
15
|
+
model: WB_PAGE_NAMESPACE
|
|
16
|
+
});
|
|
17
|
+
if (bound.isFail()) throw bound.error;
|
|
18
|
+
if (!bound.value) return;
|
|
19
|
+
const reviews = await this.listTargetReviews.execute({
|
|
20
|
+
model: WB_PAGE_NAMESPACE,
|
|
21
|
+
targetId: page.entryId,
|
|
22
|
+
state: "inProgress"
|
|
23
|
+
});
|
|
24
|
+
if (reviews.isFail()) throw reviews.error;
|
|
25
|
+
const inProgress = reviews.value;
|
|
26
|
+
if (0 === inProgress.length) return;
|
|
27
|
+
throw new ReviewActiveOnTrashError({
|
|
28
|
+
model: WB_PAGE_NAMESPACE,
|
|
29
|
+
action: "delete",
|
|
30
|
+
reviews: inProgress.map(toBlockingReview)
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
const BlockPageDeleteWhileInReview = PageBeforeDeleteEventHandler.createImplementation({
|
|
35
|
+
implementation: BlockPageDeleteWhileInReviewImpl,
|
|
36
|
+
dependencies: [
|
|
37
|
+
GetBoundWorkflowUseCase,
|
|
38
|
+
ListTargetReviewsUseCase
|
|
39
|
+
]
|
|
40
|
+
});
|
|
41
|
+
export { BlockPageDeleteWhileInReview };
|
|
42
|
+
|
|
43
|
+
//# sourceMappingURL=BlockPageDeleteWhileInReview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/hooks/BlockPageDeleteWhileInReview.js","sources":["../../../src/features/hooks/BlockPageDeleteWhileInReview.ts"],"sourcesContent":["import { PageBeforeDeleteEventHandler } from \"@webiny/api-website-builder/features/pages/DeletePage/index.js\";\nimport { GetBoundWorkflowUseCase } from \"@webiny/api-workflows/features/workflow/GetBoundWorkflow/index.js\";\nimport { ListTargetReviewsUseCase } from \"@webiny/api-workflows/features/review/ListTargetReviews/index.js\";\nimport { ReviewActiveOnTrashError } from \"@webiny/api-workflows/domain/review/errors.js\";\nimport { toBlockingReview } from \"@webiny/api-workflows/domain/review/toBlockingReview.js\";\nimport { WB_PAGE_NAMESPACE } from \"~/constants.js\";\n\n/**\n * Deleting a page from the trash is refused while a review is in progress (D134, R73). A page\n * cannot reach the trash with one (`BlockPageTrashWhileInReview`), so this only guards races.\n *\n * Pages are private: they are not exposed through CMS GraphQL, so only programmatic CMS calls on\n * the page model bypass this rule.\n */\nclass BlockPageDeleteWhileInReviewImpl implements PageBeforeDeleteEventHandler.Interface {\n public constructor(\n private getBoundWorkflow: GetBoundWorkflowUseCase.Interface,\n private listTargetReviews: ListTargetReviewsUseCase.Interface\n ) {}\n\n public async handle(event: PageBeforeDeleteEventHandler.Event): Promise<void> {\n const { page } = event.payload;\n const bound = await this.getBoundWorkflow.execute({ model: WB_PAGE_NAMESPACE });\n if (bound.isFail()) {\n throw bound.error;\n }\n if (!bound.value) {\n return;\n }\n\n const reviews = await this.listTargetReviews.execute({\n model: WB_PAGE_NAMESPACE,\n targetId: page.entryId,\n state: \"inProgress\"\n });\n if (reviews.isFail()) {\n throw reviews.error;\n }\n const inProgress = reviews.value;\n if (inProgress.length === 0) {\n return;\n }\n\n throw new ReviewActiveOnTrashError({\n model: WB_PAGE_NAMESPACE,\n action: \"delete\",\n reviews: inProgress.map(toBlockingReview)\n });\n }\n}\n\nexport const BlockPageDeleteWhileInReview = PageBeforeDeleteEventHandler.createImplementation({\n implementation: BlockPageDeleteWhileInReviewImpl,\n dependencies: [GetBoundWorkflowUseCase, ListTargetReviewsUseCase]\n});\n"],"names":["BlockPageDeleteWhileInReviewImpl","getBoundWorkflow","listTargetReviews","event","page","bound","WB_PAGE_NAMESPACE","reviews","inProgress","ReviewActiveOnTrashError","toBlockingReview","BlockPageDeleteWhileInReview","PageBeforeDeleteEventHandler","GetBoundWorkflowUseCase","ListTargetReviewsUseCase"],"mappings":";;;;;;AAcA,MAAMA;IACF,YACYC,gBAAmD,EACnDC,iBAAqD,CAC/D;aAFUD,gBAAgB,GAAhBA;aACAC,iBAAiB,GAAjBA;IACT;IAEH,MAAa,OAAOC,KAAyC,EAAiB;QAC1E,MAAM,EAAEC,IAAI,EAAE,GAAGD,MAAM,OAAO;QAC9B,MAAME,QAAQ,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;YAAE,OAAOC;QAAkB;QAC7E,IAAID,MAAM,MAAM,IACZ,MAAMA,MAAM,KAAK;QAErB,IAAI,CAACA,MAAM,KAAK,EACZ;QAGJ,MAAME,UAAU,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;YACjD,OAAOD;YACP,UAAUF,KAAK,OAAO;YACtB,OAAO;QACX;QACA,IAAIG,QAAQ,MAAM,IACd,MAAMA,QAAQ,KAAK;QAEvB,MAAMC,aAAaD,QAAQ,KAAK;QAChC,IAAIC,AAAsB,MAAtBA,WAAW,MAAM,EACjB;QAGJ,MAAM,IAAIC,yBAAyB;YAC/B,OAAOH;YACP,QAAQ;YACR,SAASE,WAAW,GAAG,CAACE;QAC5B;IACJ;AACJ;AAEO,MAAMC,+BAA+BC,6BAA6B,oBAAoB,CAAC;IAC1F,gBAAgBZ;IAChB,cAAc;QAACa;QAAyBC;KAAyB;AACrE"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { PageBeforeUpdateEventHandler } from "@webiny/api-website-builder/features/pages/UpdatePage/index.js";
|
|
2
|
+
import { ReviewTargetFolderChangeGuard } from "@webiny/api-workflows/features/review/ReviewTargetFolderChangeGuard/index.js";
|
|
3
|
+
/**
|
|
4
|
+
* Move rule of the `wb.page` adapter applied to updates (D84, R55, A24). A page update can carry a
|
|
5
|
+
* new `location`, which relocates the page without `MovePage`, and the save block only checks the
|
|
6
|
+
* updated revision. So when an update changes the folder of a page while a pages workflow is
|
|
7
|
+
* bound, any in-progress review of the page (any revision) refuses it like a move. Updates that
|
|
8
|
+
* keep the folder are left to the save block. Lookup failures block. The rule itself is
|
|
9
|
+
* `ReviewTargetFolderChangeGuard`, shared with the CMS entry handler.
|
|
10
|
+
*/
|
|
11
|
+
declare class BlockPageFolderChangeWhileInReviewImpl implements PageBeforeUpdateEventHandler.Interface {
|
|
12
|
+
private folderChangeGuard;
|
|
13
|
+
constructor(folderChangeGuard: ReviewTargetFolderChangeGuard.Interface);
|
|
14
|
+
handle(event: PageBeforeUpdateEventHandler.Event): Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
export declare const BlockPageFolderChangeWhileInReview: typeof BlockPageFolderChangeWhileInReviewImpl & {
|
|
17
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher").IEventHandler<import("@webiny/api-core/features/eventPublisher").DomainEvent<import("@webiny/api-website-builder/features/pages/UpdatePage/abstractions").PageBeforeUpdatePayload>>>;
|
|
18
|
+
};
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { PageBeforeUpdateEventHandler } from "@webiny/api-website-builder/features/pages/UpdatePage/index.js";
|
|
2
|
+
import { ReviewTargetFolderChangeGuard } from "@webiny/api-workflows/features/review/ReviewTargetFolderChangeGuard/index.js";
|
|
3
|
+
import { WB_PAGE_NAMESPACE } from "../../constants.js";
|
|
4
|
+
class BlockPageFolderChangeWhileInReviewImpl {
|
|
5
|
+
constructor(folderChangeGuard){
|
|
6
|
+
this.folderChangeGuard = folderChangeGuard;
|
|
7
|
+
}
|
|
8
|
+
async handle(event) {
|
|
9
|
+
const { original, input } = event.payload;
|
|
10
|
+
const location = input.data.location;
|
|
11
|
+
if (!location || location.folderId === original.location?.folderId) return;
|
|
12
|
+
const checked = await this.folderChangeGuard.check({
|
|
13
|
+
model: WB_PAGE_NAMESPACE,
|
|
14
|
+
targetId: original.entryId
|
|
15
|
+
});
|
|
16
|
+
if (checked.isFail()) throw checked.error;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
const BlockPageFolderChangeWhileInReview = PageBeforeUpdateEventHandler.createImplementation({
|
|
20
|
+
implementation: BlockPageFolderChangeWhileInReviewImpl,
|
|
21
|
+
dependencies: [
|
|
22
|
+
ReviewTargetFolderChangeGuard
|
|
23
|
+
]
|
|
24
|
+
});
|
|
25
|
+
export { BlockPageFolderChangeWhileInReview };
|
|
26
|
+
|
|
27
|
+
//# sourceMappingURL=BlockPageFolderChangeWhileInReview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/hooks/BlockPageFolderChangeWhileInReview.js","sources":["../../../src/features/hooks/BlockPageFolderChangeWhileInReview.ts"],"sourcesContent":["import { PageBeforeUpdateEventHandler } from \"@webiny/api-website-builder/features/pages/UpdatePage/index.js\";\nimport { ReviewTargetFolderChangeGuard } from \"@webiny/api-workflows/features/review/ReviewTargetFolderChangeGuard/index.js\";\nimport { WB_PAGE_NAMESPACE } from \"~/constants.js\";\n\n/**\n * Move rule of the `wb.page` adapter applied to updates (D84, R55, A24). A page update can carry a\n * new `location`, which relocates the page without `MovePage`, and the save block only checks the\n * updated revision. So when an update changes the folder of a page while a pages workflow is\n * bound, any in-progress review of the page (any revision) refuses it like a move. Updates that\n * keep the folder are left to the save block. Lookup failures block. The rule itself is\n * `ReviewTargetFolderChangeGuard`, shared with the CMS entry handler.\n */\nclass BlockPageFolderChangeWhileInReviewImpl implements PageBeforeUpdateEventHandler.Interface {\n public constructor(private folderChangeGuard: ReviewTargetFolderChangeGuard.Interface) {}\n\n public async handle(event: PageBeforeUpdateEventHandler.Event): Promise<void> {\n const { original, input } = event.payload;\n const location = input.data.location;\n if (!location || location.folderId === original.location?.folderId) {\n return;\n }\n\n const checked = await this.folderChangeGuard.check({\n model: WB_PAGE_NAMESPACE,\n targetId: original.entryId\n });\n if (checked.isFail()) {\n throw checked.error;\n }\n }\n}\n\nexport const BlockPageFolderChangeWhileInReview = PageBeforeUpdateEventHandler.createImplementation(\n {\n implementation: BlockPageFolderChangeWhileInReviewImpl,\n dependencies: [ReviewTargetFolderChangeGuard]\n }\n);\n"],"names":["BlockPageFolderChangeWhileInReviewImpl","folderChangeGuard","event","original","input","location","checked","WB_PAGE_NAMESPACE","BlockPageFolderChangeWhileInReview","PageBeforeUpdateEventHandler","ReviewTargetFolderChangeGuard"],"mappings":";;;AAYA,MAAMA;IACF,YAA2BC,iBAA0D,CAAE;aAA5DA,iBAAiB,GAAjBA;IAA6D;IAExF,MAAa,OAAOC,KAAyC,EAAiB;QAC1E,MAAM,EAAEC,QAAQ,EAAEC,KAAK,EAAE,GAAGF,MAAM,OAAO;QACzC,MAAMG,WAAWD,MAAM,IAAI,CAAC,QAAQ;QACpC,IAAI,CAACC,YAAYA,SAAS,QAAQ,KAAKF,SAAS,QAAQ,EAAE,UACtD;QAGJ,MAAMG,UAAU,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;YAC/C,OAAOC;YACP,UAAUJ,SAAS,OAAO;QAC9B;QACA,IAAIG,QAAQ,MAAM,IACd,MAAMA,QAAQ,KAAK;IAE3B;AACJ;AAEO,MAAME,qCAAqCC,6BAA6B,oBAAoB,CAC/F;IACI,gBAAgBT;IAChB,cAAc;QAACU;KAA8B;AACjD"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { PageBeforeMoveEventHandler } from "@webiny/api-website-builder/features/pages/MovePage/index.js";
|
|
2
|
+
import { GetBoundWorkflowUseCase } from "@webiny/api-workflows/features/workflow/GetBoundWorkflow/index.js";
|
|
3
|
+
import { ListTargetReviewsUseCase } from "@webiny/api-workflows/features/review/ListTargetReviews/index.js";
|
|
4
|
+
/**
|
|
5
|
+
* Move rule of the `wb.page` adapter (spec 9.3, D84, R55). WB `MovePage` writes through
|
|
6
|
+
* `MoveEntryRepository`, so no CMS move event fires; this listens to the page event. Only with a
|
|
7
|
+
* pages workflow bound; any revision in review blocks (A24); lookup failures block.
|
|
8
|
+
*/
|
|
9
|
+
declare class BlockPageMoveWhileInReviewImpl implements PageBeforeMoveEventHandler.Interface {
|
|
10
|
+
private getBoundWorkflow;
|
|
11
|
+
private listTargetReviews;
|
|
12
|
+
constructor(getBoundWorkflow: GetBoundWorkflowUseCase.Interface, listTargetReviews: ListTargetReviewsUseCase.Interface);
|
|
13
|
+
handle(event: PageBeforeMoveEventHandler.Event): Promise<void>;
|
|
14
|
+
}
|
|
15
|
+
export declare const BlockPageMoveWhileInReview: typeof BlockPageMoveWhileInReviewImpl & {
|
|
16
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher").IEventHandler<import("@webiny/api-core/features/eventPublisher").DomainEvent<import("@webiny/api-website-builder/features/pages/MovePage/abstractions").PageBeforeMovePayload>>>;
|
|
17
|
+
};
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { PageBeforeMoveEventHandler } from "@webiny/api-website-builder/features/pages/MovePage/index.js";
|
|
2
|
+
import { GetBoundWorkflowUseCase } from "@webiny/api-workflows/features/workflow/GetBoundWorkflow/index.js";
|
|
3
|
+
import { ListTargetReviewsUseCase } from "@webiny/api-workflows/features/review/ListTargetReviews/index.js";
|
|
4
|
+
import { ReviewTargetLockedError } from "@webiny/api-workflows/domain/review/errors.js";
|
|
5
|
+
import { WB_PAGE_NAMESPACE } from "../../constants.js";
|
|
6
|
+
class BlockPageMoveWhileInReviewImpl {
|
|
7
|
+
constructor(getBoundWorkflow, listTargetReviews){
|
|
8
|
+
this.getBoundWorkflow = getBoundWorkflow;
|
|
9
|
+
this.listTargetReviews = listTargetReviews;
|
|
10
|
+
}
|
|
11
|
+
async handle(event) {
|
|
12
|
+
const { original } = event.payload;
|
|
13
|
+
const bound = await this.getBoundWorkflow.execute({
|
|
14
|
+
model: WB_PAGE_NAMESPACE
|
|
15
|
+
});
|
|
16
|
+
if (bound.isFail()) throw bound.error;
|
|
17
|
+
if (!bound.value) return;
|
|
18
|
+
const reviews = await this.listTargetReviews.execute({
|
|
19
|
+
model: WB_PAGE_NAMESPACE,
|
|
20
|
+
targetId: original.entryId,
|
|
21
|
+
state: "inProgress"
|
|
22
|
+
});
|
|
23
|
+
if (reviews.isFail()) throw reviews.error;
|
|
24
|
+
const [inProgress] = reviews.value;
|
|
25
|
+
if (!inProgress) return;
|
|
26
|
+
throw new ReviewTargetLockedError({
|
|
27
|
+
reviewId: inProgress.id,
|
|
28
|
+
model: WB_PAGE_NAMESPACE,
|
|
29
|
+
targetRevisionId: inProgress.targetRevisionId,
|
|
30
|
+
reviewState: inProgress.state,
|
|
31
|
+
action: "move"
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
const BlockPageMoveWhileInReview = PageBeforeMoveEventHandler.createImplementation({
|
|
36
|
+
implementation: BlockPageMoveWhileInReviewImpl,
|
|
37
|
+
dependencies: [
|
|
38
|
+
GetBoundWorkflowUseCase,
|
|
39
|
+
ListTargetReviewsUseCase
|
|
40
|
+
]
|
|
41
|
+
});
|
|
42
|
+
export { BlockPageMoveWhileInReview };
|
|
43
|
+
|
|
44
|
+
//# sourceMappingURL=BlockPageMoveWhileInReview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/hooks/BlockPageMoveWhileInReview.js","sources":["../../../src/features/hooks/BlockPageMoveWhileInReview.ts"],"sourcesContent":["import { PageBeforeMoveEventHandler } from \"@webiny/api-website-builder/features/pages/MovePage/index.js\";\nimport { GetBoundWorkflowUseCase } from \"@webiny/api-workflows/features/workflow/GetBoundWorkflow/index.js\";\nimport { ListTargetReviewsUseCase } from \"@webiny/api-workflows/features/review/ListTargetReviews/index.js\";\nimport { ReviewTargetLockedError } from \"@webiny/api-workflows/domain/review/errors.js\";\nimport { WB_PAGE_NAMESPACE } from \"~/constants.js\";\n\n/**\n * Move rule of the `wb.page` adapter (spec 9.3, D84, R55). WB `MovePage` writes through\n * `MoveEntryRepository`, so no CMS move event fires; this listens to the page event. Only with a\n * pages workflow bound; any revision in review blocks (A24); lookup failures block.\n */\nclass BlockPageMoveWhileInReviewImpl implements PageBeforeMoveEventHandler.Interface {\n public constructor(\n private getBoundWorkflow: GetBoundWorkflowUseCase.Interface,\n private listTargetReviews: ListTargetReviewsUseCase.Interface\n ) {}\n\n public async handle(event: PageBeforeMoveEventHandler.Event): Promise<void> {\n const { original } = event.payload;\n\n const bound = await this.getBoundWorkflow.execute({ model: WB_PAGE_NAMESPACE });\n if (bound.isFail()) {\n throw bound.error;\n }\n if (!bound.value) {\n return;\n }\n\n const reviews = await this.listTargetReviews.execute({\n model: WB_PAGE_NAMESPACE,\n targetId: original.entryId,\n state: \"inProgress\"\n });\n if (reviews.isFail()) {\n throw reviews.error;\n }\n const [inProgress] = reviews.value;\n if (!inProgress) {\n return;\n }\n\n throw new ReviewTargetLockedError({\n reviewId: inProgress.id,\n model: WB_PAGE_NAMESPACE,\n targetRevisionId: inProgress.targetRevisionId,\n reviewState: inProgress.state,\n action: \"move\"\n });\n }\n}\n\nexport const BlockPageMoveWhileInReview = PageBeforeMoveEventHandler.createImplementation({\n implementation: BlockPageMoveWhileInReviewImpl,\n dependencies: [GetBoundWorkflowUseCase, ListTargetReviewsUseCase]\n});\n"],"names":["BlockPageMoveWhileInReviewImpl","getBoundWorkflow","listTargetReviews","event","original","bound","WB_PAGE_NAMESPACE","reviews","inProgress","ReviewTargetLockedError","BlockPageMoveWhileInReview","PageBeforeMoveEventHandler","GetBoundWorkflowUseCase","ListTargetReviewsUseCase"],"mappings":";;;;;AAWA,MAAMA;IACF,YACYC,gBAAmD,EACnDC,iBAAqD,CAC/D;aAFUD,gBAAgB,GAAhBA;aACAC,iBAAiB,GAAjBA;IACT;IAEH,MAAa,OAAOC,KAAuC,EAAiB;QACxE,MAAM,EAAEC,QAAQ,EAAE,GAAGD,MAAM,OAAO;QAElC,MAAME,QAAQ,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;YAAE,OAAOC;QAAkB;QAC7E,IAAID,MAAM,MAAM,IACZ,MAAMA,MAAM,KAAK;QAErB,IAAI,CAACA,MAAM,KAAK,EACZ;QAGJ,MAAME,UAAU,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;YACjD,OAAOD;YACP,UAAUF,SAAS,OAAO;YAC1B,OAAO;QACX;QACA,IAAIG,QAAQ,MAAM,IACd,MAAMA,QAAQ,KAAK;QAEvB,MAAM,CAACC,WAAW,GAAGD,QAAQ,KAAK;QAClC,IAAI,CAACC,YACD;QAGJ,MAAM,IAAIC,wBAAwB;YAC9B,UAAUD,WAAW,EAAE;YACvB,OAAOF;YACP,kBAAkBE,WAAW,gBAAgB;YAC7C,aAAaA,WAAW,KAAK;YAC7B,QAAQ;QACZ;IACJ;AACJ;AAEO,MAAME,6BAA6BC,2BAA2B,oBAAoB,CAAC;IACtF,gBAAgBX;IAChB,cAAc;QAACY;QAAyBC;KAAyB;AACrE"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { PageRevisionBeforeDeleteEventHandler } from "@webiny/api-website-builder/features/pages/DeletePageRevision/index.js";
|
|
2
|
+
import { GetBoundWorkflowUseCase } from "@webiny/api-workflows/features/workflow/GetBoundWorkflow/index.js";
|
|
3
|
+
import { ListTargetReviewsUseCase } from "@webiny/api-workflows/features/review/ListTargetReviews/index.js";
|
|
4
|
+
declare class BlockPageRevisionDeleteWhileInReviewImpl implements PageRevisionBeforeDeleteEventHandler.Interface {
|
|
5
|
+
private getBoundWorkflow;
|
|
6
|
+
private listTargetReviews;
|
|
7
|
+
constructor(getBoundWorkflow: GetBoundWorkflowUseCase.Interface, listTargetReviews: ListTargetReviewsUseCase.Interface);
|
|
8
|
+
handle(event: PageRevisionBeforeDeleteEventHandler.Event): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
export declare const BlockPageRevisionDeleteWhileInReview: typeof BlockPageRevisionDeleteWhileInReviewImpl & {
|
|
11
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher").IEventHandler<import("@webiny/api-core/features/eventPublisher").DomainEvent<import("@webiny/api-website-builder/features/pages/DeletePageRevision/abstractions").PageRevisionBeforeDeletePayload>>>;
|
|
12
|
+
};
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { PageRevisionBeforeDeleteEventHandler } from "@webiny/api-website-builder/features/pages/DeletePageRevision/index.js";
|
|
2
|
+
import { GetBoundWorkflowUseCase } from "@webiny/api-workflows/features/workflow/GetBoundWorkflow/index.js";
|
|
3
|
+
import { ListTargetReviewsUseCase } from "@webiny/api-workflows/features/review/ListTargetReviews/index.js";
|
|
4
|
+
import { ReviewActiveOnTrashError } from "@webiny/api-workflows/domain/review/errors.js";
|
|
5
|
+
import { toBlockingReview } from "@webiny/api-workflows/domain/review/toBlockingReview.js";
|
|
6
|
+
import { WB_PAGE_NAMESPACE } from "../../constants.js";
|
|
7
|
+
class BlockPageRevisionDeleteWhileInReviewImpl {
|
|
8
|
+
constructor(getBoundWorkflow, listTargetReviews){
|
|
9
|
+
this.getBoundWorkflow = getBoundWorkflow;
|
|
10
|
+
this.listTargetReviews = listTargetReviews;
|
|
11
|
+
}
|
|
12
|
+
async handle(event) {
|
|
13
|
+
const { page } = event.payload;
|
|
14
|
+
const bound = await this.getBoundWorkflow.execute({
|
|
15
|
+
model: WB_PAGE_NAMESPACE
|
|
16
|
+
});
|
|
17
|
+
if (bound.isFail()) throw bound.error;
|
|
18
|
+
if (!bound.value) return;
|
|
19
|
+
const reviews = await this.listTargetReviews.execute({
|
|
20
|
+
model: WB_PAGE_NAMESPACE,
|
|
21
|
+
targetId: page.entryId,
|
|
22
|
+
targetRevisionId: page.id,
|
|
23
|
+
state: "inProgress"
|
|
24
|
+
});
|
|
25
|
+
if (reviews.isFail()) throw reviews.error;
|
|
26
|
+
const inProgress = reviews.value;
|
|
27
|
+
if (0 === inProgress.length) return;
|
|
28
|
+
throw new ReviewActiveOnTrashError({
|
|
29
|
+
model: WB_PAGE_NAMESPACE,
|
|
30
|
+
action: "delete",
|
|
31
|
+
reviews: inProgress.map(toBlockingReview)
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
const BlockPageRevisionDeleteWhileInReview = PageRevisionBeforeDeleteEventHandler.createImplementation({
|
|
36
|
+
implementation: BlockPageRevisionDeleteWhileInReviewImpl,
|
|
37
|
+
dependencies: [
|
|
38
|
+
GetBoundWorkflowUseCase,
|
|
39
|
+
ListTargetReviewsUseCase
|
|
40
|
+
]
|
|
41
|
+
});
|
|
42
|
+
export { BlockPageRevisionDeleteWhileInReview };
|
|
43
|
+
|
|
44
|
+
//# sourceMappingURL=BlockPageRevisionDeleteWhileInReview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/hooks/BlockPageRevisionDeleteWhileInReview.js","sources":["../../../src/features/hooks/BlockPageRevisionDeleteWhileInReview.ts"],"sourcesContent":["import { PageRevisionBeforeDeleteEventHandler } from \"@webiny/api-website-builder/features/pages/DeletePageRevision/index.js\";\nimport { GetBoundWorkflowUseCase } from \"@webiny/api-workflows/features/workflow/GetBoundWorkflow/index.js\";\nimport { ListTargetReviewsUseCase } from \"@webiny/api-workflows/features/review/ListTargetReviews/index.js\";\nimport { ReviewActiveOnTrashError } from \"@webiny/api-workflows/domain/review/errors.js\";\nimport { toBlockingReview } from \"@webiny/api-workflows/domain/review/toBlockingReview.js\";\nimport { WB_PAGE_NAMESPACE } from \"~/constants.js\";\n\n/*\n * Deleting one revision of a page is refused while that revision's review is in progress (D134,\n * R73, R235). Deleting the only revision also publishes the page-delete event, which\n * `BlockPageDeleteWhileInReview` guards with the same error.\n *\n * The CMS revision hooks ignore the private page model (A87), so only this one runs for pages.\n */\nclass BlockPageRevisionDeleteWhileInReviewImpl\n implements PageRevisionBeforeDeleteEventHandler.Interface\n{\n public constructor(\n private getBoundWorkflow: GetBoundWorkflowUseCase.Interface,\n private listTargetReviews: ListTargetReviewsUseCase.Interface\n ) {}\n\n public async handle(event: PageRevisionBeforeDeleteEventHandler.Event): Promise<void> {\n const { page } = event.payload;\n const bound = await this.getBoundWorkflow.execute({ model: WB_PAGE_NAMESPACE });\n if (bound.isFail()) {\n throw bound.error;\n }\n if (!bound.value) {\n return;\n }\n\n const reviews = await this.listTargetReviews.execute({\n model: WB_PAGE_NAMESPACE,\n targetId: page.entryId,\n targetRevisionId: page.id,\n state: \"inProgress\"\n });\n if (reviews.isFail()) {\n throw reviews.error;\n }\n const inProgress = reviews.value;\n if (inProgress.length === 0) {\n return;\n }\n\n throw new ReviewActiveOnTrashError({\n model: WB_PAGE_NAMESPACE,\n action: \"delete\",\n reviews: inProgress.map(toBlockingReview)\n });\n }\n}\n\nexport const BlockPageRevisionDeleteWhileInReview =\n PageRevisionBeforeDeleteEventHandler.createImplementation({\n implementation: BlockPageRevisionDeleteWhileInReviewImpl,\n dependencies: [GetBoundWorkflowUseCase, ListTargetReviewsUseCase]\n });\n"],"names":["BlockPageRevisionDeleteWhileInReviewImpl","getBoundWorkflow","listTargetReviews","event","page","bound","WB_PAGE_NAMESPACE","reviews","inProgress","ReviewActiveOnTrashError","toBlockingReview","BlockPageRevisionDeleteWhileInReview","PageRevisionBeforeDeleteEventHandler","GetBoundWorkflowUseCase","ListTargetReviewsUseCase"],"mappings":";;;;;;AAcA,MAAMA;IAGF,YACYC,gBAAmD,EACnDC,iBAAqD,CAC/D;aAFUD,gBAAgB,GAAhBA;aACAC,iBAAiB,GAAjBA;IACT;IAEH,MAAa,OAAOC,KAAiD,EAAiB;QAClF,MAAM,EAAEC,IAAI,EAAE,GAAGD,MAAM,OAAO;QAC9B,MAAME,QAAQ,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;YAAE,OAAOC;QAAkB;QAC7E,IAAID,MAAM,MAAM,IACZ,MAAMA,MAAM,KAAK;QAErB,IAAI,CAACA,MAAM,KAAK,EACZ;QAGJ,MAAME,UAAU,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;YACjD,OAAOD;YACP,UAAUF,KAAK,OAAO;YACtB,kBAAkBA,KAAK,EAAE;YACzB,OAAO;QACX;QACA,IAAIG,QAAQ,MAAM,IACd,MAAMA,QAAQ,KAAK;QAEvB,MAAMC,aAAaD,QAAQ,KAAK;QAChC,IAAIC,AAAsB,MAAtBA,WAAW,MAAM,EACjB;QAGJ,MAAM,IAAIC,yBAAyB;YAC/B,OAAOH;YACP,QAAQ;YACR,SAASE,WAAW,GAAG,CAACE;QAC5B;IACJ;AACJ;AAEO,MAAMC,uCACTC,qCAAqC,oBAAoB,CAAC;IACtD,gBAAgBZ;IAChB,cAAc;QAACa;QAAyBC;KAAyB;AACrE"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { PageBeforeTrashEventHandler } from "@webiny/api-website-builder/features/pages/TrashPage/index.js";
|
|
2
|
+
import { GetBoundWorkflowUseCase } from "@webiny/api-workflows/features/workflow/GetBoundWorkflow/index.js";
|
|
3
|
+
import { ListTargetReviewsUseCase } from "@webiny/api-workflows/features/review/ListTargetReviews/index.js";
|
|
4
|
+
/**
|
|
5
|
+
* Trashing a page is refused while any of its revisions has an in-progress review (D134, R73).
|
|
6
|
+
* The admin confirms by calling `CancelWebsiteBuilderPageReviewsForDelete` and trashing again.
|
|
7
|
+
* Only with a pages workflow bound; lookup failures refuse.
|
|
8
|
+
*
|
|
9
|
+
* Pages are private: they are not exposed through CMS GraphQL, so only programmatic CMS calls on
|
|
10
|
+
* the page model bypass this rule.
|
|
11
|
+
*/
|
|
12
|
+
declare class BlockPageTrashWhileInReviewImpl implements PageBeforeTrashEventHandler.Interface {
|
|
13
|
+
private getBoundWorkflow;
|
|
14
|
+
private listTargetReviews;
|
|
15
|
+
constructor(getBoundWorkflow: GetBoundWorkflowUseCase.Interface, listTargetReviews: ListTargetReviewsUseCase.Interface);
|
|
16
|
+
handle(event: PageBeforeTrashEventHandler.Event): Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
export declare const BlockPageTrashWhileInReview: typeof BlockPageTrashWhileInReviewImpl & {
|
|
19
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher").IEventHandler<import("@webiny/api-core/features/eventPublisher").DomainEvent<import("@webiny/api-website-builder/features/pages/TrashPage/abstractions").PageBeforeTrashPayload>>>;
|
|
20
|
+
};
|
|
21
|
+
export {};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { PageBeforeTrashEventHandler } from "@webiny/api-website-builder/features/pages/TrashPage/index.js";
|
|
2
|
+
import { GetBoundWorkflowUseCase } from "@webiny/api-workflows/features/workflow/GetBoundWorkflow/index.js";
|
|
3
|
+
import { ListTargetReviewsUseCase } from "@webiny/api-workflows/features/review/ListTargetReviews/index.js";
|
|
4
|
+
import { ReviewActiveOnTrashError } from "@webiny/api-workflows/domain/review/errors.js";
|
|
5
|
+
import { toBlockingReview } from "@webiny/api-workflows/domain/review/toBlockingReview.js";
|
|
6
|
+
import { WB_PAGE_NAMESPACE } from "../../constants.js";
|
|
7
|
+
class BlockPageTrashWhileInReviewImpl {
|
|
8
|
+
constructor(getBoundWorkflow, listTargetReviews){
|
|
9
|
+
this.getBoundWorkflow = getBoundWorkflow;
|
|
10
|
+
this.listTargetReviews = listTargetReviews;
|
|
11
|
+
}
|
|
12
|
+
async handle(event) {
|
|
13
|
+
const { page } = event.payload;
|
|
14
|
+
const bound = await this.getBoundWorkflow.execute({
|
|
15
|
+
model: WB_PAGE_NAMESPACE
|
|
16
|
+
});
|
|
17
|
+
if (bound.isFail()) throw bound.error;
|
|
18
|
+
if (!bound.value) return;
|
|
19
|
+
const reviews = await this.listTargetReviews.execute({
|
|
20
|
+
model: WB_PAGE_NAMESPACE,
|
|
21
|
+
targetId: page.entryId,
|
|
22
|
+
state: "inProgress"
|
|
23
|
+
});
|
|
24
|
+
if (reviews.isFail()) throw reviews.error;
|
|
25
|
+
const inProgress = reviews.value;
|
|
26
|
+
if (0 === inProgress.length) return;
|
|
27
|
+
throw new ReviewActiveOnTrashError({
|
|
28
|
+
model: WB_PAGE_NAMESPACE,
|
|
29
|
+
action: "trash",
|
|
30
|
+
reviews: inProgress.map(toBlockingReview)
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
const BlockPageTrashWhileInReview = PageBeforeTrashEventHandler.createImplementation({
|
|
35
|
+
implementation: BlockPageTrashWhileInReviewImpl,
|
|
36
|
+
dependencies: [
|
|
37
|
+
GetBoundWorkflowUseCase,
|
|
38
|
+
ListTargetReviewsUseCase
|
|
39
|
+
]
|
|
40
|
+
});
|
|
41
|
+
export { BlockPageTrashWhileInReview };
|
|
42
|
+
|
|
43
|
+
//# sourceMappingURL=BlockPageTrashWhileInReview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/hooks/BlockPageTrashWhileInReview.js","sources":["../../../src/features/hooks/BlockPageTrashWhileInReview.ts"],"sourcesContent":["import { PageBeforeTrashEventHandler } from \"@webiny/api-website-builder/features/pages/TrashPage/index.js\";\nimport { GetBoundWorkflowUseCase } from \"@webiny/api-workflows/features/workflow/GetBoundWorkflow/index.js\";\nimport { ListTargetReviewsUseCase } from \"@webiny/api-workflows/features/review/ListTargetReviews/index.js\";\nimport { ReviewActiveOnTrashError } from \"@webiny/api-workflows/domain/review/errors.js\";\nimport { toBlockingReview } from \"@webiny/api-workflows/domain/review/toBlockingReview.js\";\nimport { WB_PAGE_NAMESPACE } from \"~/constants.js\";\n\n/**\n * Trashing a page is refused while any of its revisions has an in-progress review (D134, R73).\n * The admin confirms by calling `CancelWebsiteBuilderPageReviewsForDelete` and trashing again.\n * Only with a pages workflow bound; lookup failures refuse.\n *\n * Pages are private: they are not exposed through CMS GraphQL, so only programmatic CMS calls on\n * the page model bypass this rule.\n */\nclass BlockPageTrashWhileInReviewImpl implements PageBeforeTrashEventHandler.Interface {\n public constructor(\n private getBoundWorkflow: GetBoundWorkflowUseCase.Interface,\n private listTargetReviews: ListTargetReviewsUseCase.Interface\n ) {}\n\n public async handle(event: PageBeforeTrashEventHandler.Event): Promise<void> {\n const { page } = event.payload;\n const bound = await this.getBoundWorkflow.execute({ model: WB_PAGE_NAMESPACE });\n if (bound.isFail()) {\n throw bound.error;\n }\n if (!bound.value) {\n return;\n }\n\n const reviews = await this.listTargetReviews.execute({\n model: WB_PAGE_NAMESPACE,\n targetId: page.entryId,\n state: \"inProgress\"\n });\n if (reviews.isFail()) {\n throw reviews.error;\n }\n const inProgress = reviews.value;\n if (inProgress.length === 0) {\n return;\n }\n\n throw new ReviewActiveOnTrashError({\n model: WB_PAGE_NAMESPACE,\n action: \"trash\",\n reviews: inProgress.map(toBlockingReview)\n });\n }\n}\n\nexport const BlockPageTrashWhileInReview = PageBeforeTrashEventHandler.createImplementation({\n implementation: BlockPageTrashWhileInReviewImpl,\n dependencies: [GetBoundWorkflowUseCase, ListTargetReviewsUseCase]\n});\n"],"names":["BlockPageTrashWhileInReviewImpl","getBoundWorkflow","listTargetReviews","event","page","bound","WB_PAGE_NAMESPACE","reviews","inProgress","ReviewActiveOnTrashError","toBlockingReview","BlockPageTrashWhileInReview","PageBeforeTrashEventHandler","GetBoundWorkflowUseCase","ListTargetReviewsUseCase"],"mappings":";;;;;;AAeA,MAAMA;IACF,YACYC,gBAAmD,EACnDC,iBAAqD,CAC/D;aAFUD,gBAAgB,GAAhBA;aACAC,iBAAiB,GAAjBA;IACT;IAEH,MAAa,OAAOC,KAAwC,EAAiB;QACzE,MAAM,EAAEC,IAAI,EAAE,GAAGD,MAAM,OAAO;QAC9B,MAAME,QAAQ,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;YAAE,OAAOC;QAAkB;QAC7E,IAAID,MAAM,MAAM,IACZ,MAAMA,MAAM,KAAK;QAErB,IAAI,CAACA,MAAM,KAAK,EACZ;QAGJ,MAAME,UAAU,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;YACjD,OAAOD;YACP,UAAUF,KAAK,OAAO;YACtB,OAAO;QACX;QACA,IAAIG,QAAQ,MAAM,IACd,MAAMA,QAAQ,KAAK;QAEvB,MAAMC,aAAaD,QAAQ,KAAK;QAChC,IAAIC,AAAsB,MAAtBA,WAAW,MAAM,EACjB;QAGJ,MAAM,IAAIC,yBAAyB;YAC/B,OAAOH;YACP,QAAQ;YACR,SAASE,WAAW,GAAG,CAACE;QAC5B;IACJ;AACJ;AAEO,MAAMC,8BAA8BC,4BAA4B,oBAAoB,CAAC;IACxF,gBAAgBZ;IAChB,cAAc;QAACa;QAAyBC;KAAyB;AACrE"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { PageBeforeUpdateEventHandler } from "@webiny/api-website-builder/features/pages/UpdatePage/index.js";
|
|
2
|
+
import { ReviewTargetUpdateGuard } from "@webiny/api-workflows/features/review/ReviewTargetUpdateGuard/index.js";
|
|
3
|
+
/**
|
|
4
|
+
* The save block of the `wb.page` adapter (spec 9.2, D62, D80, R54). The page model publishes no
|
|
5
|
+
* CMS entry events, so the rule listens to the Website Builder page update: with a pages workflow
|
|
6
|
+
* bound, a revision with an active review cannot be updated, including an approved or rejected
|
|
7
|
+
* one. Failed lookups block the update. The `system.workflow` sync writes through
|
|
8
|
+
* `UpdateEntrySystemUseCase` and never reaches this event. The rule itself (binding lookup,
|
|
9
|
+
* review lookup, the automation bypass of D36 and R150) is `ReviewTargetUpdateGuard`, shared with
|
|
10
|
+
* the CMS entry handler.
|
|
11
|
+
*/
|
|
12
|
+
declare class BlockPageUpdateWhileInReviewImpl implements PageBeforeUpdateEventHandler.Interface {
|
|
13
|
+
private updateGuard;
|
|
14
|
+
constructor(updateGuard: ReviewTargetUpdateGuard.Interface);
|
|
15
|
+
handle(event: PageBeforeUpdateEventHandler.Event): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
export declare const BlockPageUpdateWhileInReview: typeof BlockPageUpdateWhileInReviewImpl & {
|
|
18
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher").IEventHandler<import("@webiny/api-core/features/eventPublisher").DomainEvent<import("@webiny/api-website-builder/features/pages/UpdatePage/abstractions").PageBeforeUpdatePayload>>>;
|
|
19
|
+
};
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { PageBeforeUpdateEventHandler } from "@webiny/api-website-builder/features/pages/UpdatePage/index.js";
|
|
2
|
+
import { ReviewTargetUpdateGuard } from "@webiny/api-workflows/features/review/ReviewTargetUpdateGuard/index.js";
|
|
3
|
+
import { WB_PAGE_NAMESPACE } from "../../constants.js";
|
|
4
|
+
class BlockPageUpdateWhileInReviewImpl {
|
|
5
|
+
constructor(updateGuard){
|
|
6
|
+
this.updateGuard = updateGuard;
|
|
7
|
+
}
|
|
8
|
+
async handle(event) {
|
|
9
|
+
const { original } = event.payload;
|
|
10
|
+
const checked = await this.updateGuard.check({
|
|
11
|
+
model: WB_PAGE_NAMESPACE,
|
|
12
|
+
targetRevisionId: original.id
|
|
13
|
+
});
|
|
14
|
+
if (checked.isFail()) throw checked.error;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
const BlockPageUpdateWhileInReview = PageBeforeUpdateEventHandler.createImplementation({
|
|
18
|
+
implementation: BlockPageUpdateWhileInReviewImpl,
|
|
19
|
+
dependencies: [
|
|
20
|
+
ReviewTargetUpdateGuard
|
|
21
|
+
]
|
|
22
|
+
});
|
|
23
|
+
export { BlockPageUpdateWhileInReview };
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=BlockPageUpdateWhileInReview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/hooks/BlockPageUpdateWhileInReview.js","sources":["../../../src/features/hooks/BlockPageUpdateWhileInReview.ts"],"sourcesContent":["import { PageBeforeUpdateEventHandler } from \"@webiny/api-website-builder/features/pages/UpdatePage/index.js\";\nimport { ReviewTargetUpdateGuard } from \"@webiny/api-workflows/features/review/ReviewTargetUpdateGuard/index.js\";\nimport { WB_PAGE_NAMESPACE } from \"~/constants.js\";\n\n/**\n * The save block of the `wb.page` adapter (spec 9.2, D62, D80, R54). The page model publishes no\n * CMS entry events, so the rule listens to the Website Builder page update: with a pages workflow\n * bound, a revision with an active review cannot be updated, including an approved or rejected\n * one. Failed lookups block the update. The `system.workflow` sync writes through\n * `UpdateEntrySystemUseCase` and never reaches this event. The rule itself (binding lookup,\n * review lookup, the automation bypass of D36 and R150) is `ReviewTargetUpdateGuard`, shared with\n * the CMS entry handler.\n */\nclass BlockPageUpdateWhileInReviewImpl implements PageBeforeUpdateEventHandler.Interface {\n public constructor(private updateGuard: ReviewTargetUpdateGuard.Interface) {}\n\n public async handle(event: PageBeforeUpdateEventHandler.Event): Promise<void> {\n const { original } = event.payload;\n\n const checked = await this.updateGuard.check({\n model: WB_PAGE_NAMESPACE,\n targetRevisionId: original.id\n });\n if (checked.isFail()) {\n throw checked.error;\n }\n }\n}\n\nexport const BlockPageUpdateWhileInReview = PageBeforeUpdateEventHandler.createImplementation({\n implementation: BlockPageUpdateWhileInReviewImpl,\n dependencies: [ReviewTargetUpdateGuard]\n});\n"],"names":["BlockPageUpdateWhileInReviewImpl","updateGuard","event","original","checked","WB_PAGE_NAMESPACE","BlockPageUpdateWhileInReview","PageBeforeUpdateEventHandler","ReviewTargetUpdateGuard"],"mappings":";;;AAaA,MAAMA;IACF,YAA2BC,WAA8C,CAAE;aAAhDA,WAAW,GAAXA;IAAiD;IAE5E,MAAa,OAAOC,KAAyC,EAAiB;QAC1E,MAAM,EAAEC,QAAQ,EAAE,GAAGD,MAAM,OAAO;QAElC,MAAME,UAAU,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YACzC,OAAOC;YACP,kBAAkBF,SAAS,EAAE;QACjC;QACA,IAAIC,QAAQ,MAAM,IACd,MAAMA,QAAQ,KAAK;IAE3B;AACJ;AAEO,MAAME,+BAA+BC,6BAA6B,oBAAoB,CAAC;IAC1F,gBAAgBP;IAChB,cAAc;QAACQ;KAAwB;AAC3C"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { PageAfterDeleteEventHandler } from "@webiny/api-website-builder/features/pages/DeletePage/index.js";
|
|
2
|
+
import { Logger } from "@webiny/api-core/features/logger/index.js";
|
|
3
|
+
import { DeleteTargetReviewsUseCase } from "@webiny/api-workflows/features/review/DeleteTargetReviews/index.js";
|
|
4
|
+
/**
|
|
5
|
+
* Deletes every review of a permanently deleted page with its assignment records (spec 9.3, R56).
|
|
6
|
+
* `DeletePage` is the only permanent delete of a page today: the CMS "empty trash bin" task skips
|
|
7
|
+
* private models, the page model included. A future bin purge for pages must run this cleanup too,
|
|
8
|
+
* or the reviews are orphaned. A failure (a failed result or a throw) is logged, not thrown: the
|
|
9
|
+
* page is already deleted (R81, A34).
|
|
10
|
+
*/
|
|
11
|
+
declare class DeleteReviewsOnPageDeleteImpl implements PageAfterDeleteEventHandler.Interface {
|
|
12
|
+
private deleteTargetReviews;
|
|
13
|
+
private logger;
|
|
14
|
+
constructor(deleteTargetReviews: DeleteTargetReviewsUseCase.Interface, logger: Logger.Interface);
|
|
15
|
+
handle(event: PageAfterDeleteEventHandler.Event): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
export declare const DeleteReviewsOnPageDelete: typeof DeleteReviewsOnPageDeleteImpl & {
|
|
18
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher").IEventHandler<import("@webiny/api-core/features/eventPublisher").DomainEvent<import("@webiny/api-website-builder/features/pages/DeletePage/abstractions").PageAfterDeletePayload>>>;
|
|
19
|
+
};
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { PageAfterDeleteEventHandler } from "@webiny/api-website-builder/features/pages/DeletePage/index.js";
|
|
2
|
+
import { Logger } from "@webiny/api-core/features/logger/index.js";
|
|
3
|
+
import { DeleteTargetReviewsUseCase } from "@webiny/api-workflows/features/review/DeleteTargetReviews/index.js";
|
|
4
|
+
import { WB_PAGE_NAMESPACE } from "../../constants.js";
|
|
5
|
+
import { hasErrorSource } from "@webiny/api-workflows/domain/hasErrorSource.js";
|
|
6
|
+
class DeleteReviewsOnPageDeleteImpl {
|
|
7
|
+
constructor(deleteTargetReviews, logger){
|
|
8
|
+
this.deleteTargetReviews = deleteTargetReviews;
|
|
9
|
+
this.logger = logger;
|
|
10
|
+
}
|
|
11
|
+
async handle(event) {
|
|
12
|
+
const { page } = event.payload;
|
|
13
|
+
try {
|
|
14
|
+
const deleted = await this.deleteTargetReviews.execute({
|
|
15
|
+
model: WB_PAGE_NAMESPACE,
|
|
16
|
+
targetIds: [
|
|
17
|
+
page.entryId
|
|
18
|
+
]
|
|
19
|
+
});
|
|
20
|
+
if (deleted.isFail()) this.logger.error({
|
|
21
|
+
err: hasErrorSource(deleted.error) ? deleted.error.source : deleted.error,
|
|
22
|
+
model: WB_PAGE_NAMESPACE,
|
|
23
|
+
targetId: page.entryId
|
|
24
|
+
}, "Could not delete the reviews of a deleted page; they are left orphaned.");
|
|
25
|
+
} catch (error) {
|
|
26
|
+
this.logger.error({
|
|
27
|
+
err: error,
|
|
28
|
+
model: WB_PAGE_NAMESPACE,
|
|
29
|
+
targetId: page.entryId
|
|
30
|
+
}, "Could not delete the reviews of a deleted page; they are left orphaned.");
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
const DeleteReviewsOnPageDelete = PageAfterDeleteEventHandler.createImplementation({
|
|
35
|
+
implementation: DeleteReviewsOnPageDeleteImpl,
|
|
36
|
+
dependencies: [
|
|
37
|
+
DeleteTargetReviewsUseCase,
|
|
38
|
+
Logger
|
|
39
|
+
]
|
|
40
|
+
});
|
|
41
|
+
export { DeleteReviewsOnPageDelete };
|
|
42
|
+
|
|
43
|
+
//# sourceMappingURL=DeleteReviewsOnPageDelete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/hooks/DeleteReviewsOnPageDelete.js","sources":["../../../src/features/hooks/DeleteReviewsOnPageDelete.ts"],"sourcesContent":["import { PageAfterDeleteEventHandler } from \"@webiny/api-website-builder/features/pages/DeletePage/index.js\";\nimport { Logger } from \"@webiny/api-core/features/logger/index.js\";\nimport { DeleteTargetReviewsUseCase } from \"@webiny/api-workflows/features/review/DeleteTargetReviews/index.js\";\nimport { WB_PAGE_NAMESPACE } from \"~/constants.js\";\nimport { hasErrorSource } from \"@webiny/api-workflows/domain/hasErrorSource.js\";\n\n/**\n * Deletes every review of a permanently deleted page with its assignment records (spec 9.3, R56).\n * `DeletePage` is the only permanent delete of a page today: the CMS \"empty trash bin\" task skips\n * private models, the page model included. A future bin purge for pages must run this cleanup too,\n * or the reviews are orphaned. A failure (a failed result or a throw) is logged, not thrown: the\n * page is already deleted (R81, A34).\n */\nclass DeleteReviewsOnPageDeleteImpl implements PageAfterDeleteEventHandler.Interface {\n public constructor(\n private deleteTargetReviews: DeleteTargetReviewsUseCase.Interface,\n private logger: Logger.Interface\n ) {}\n\n public async handle(event: PageAfterDeleteEventHandler.Event): Promise<void> {\n const { page } = event.payload;\n\n try {\n const deleted = await this.deleteTargetReviews.execute({\n model: WB_PAGE_NAMESPACE,\n targetIds: [page.entryId]\n });\n if (deleted.isFail()) {\n this.logger.error(\n {\n err: hasErrorSource(deleted.error) ? deleted.error.source : deleted.error,\n model: WB_PAGE_NAMESPACE,\n targetId: page.entryId\n },\n \"Could not delete the reviews of a deleted page; they are left orphaned.\"\n );\n }\n } catch (error) {\n this.logger.error(\n { err: error, model: WB_PAGE_NAMESPACE, targetId: page.entryId },\n \"Could not delete the reviews of a deleted page; they are left orphaned.\"\n );\n }\n }\n}\n\nexport const DeleteReviewsOnPageDelete = PageAfterDeleteEventHandler.createImplementation({\n implementation: DeleteReviewsOnPageDeleteImpl,\n dependencies: [DeleteTargetReviewsUseCase, Logger]\n});\n"],"names":["DeleteReviewsOnPageDeleteImpl","deleteTargetReviews","logger","event","page","deleted","WB_PAGE_NAMESPACE","hasErrorSource","error","DeleteReviewsOnPageDelete","PageAfterDeleteEventHandler","DeleteTargetReviewsUseCase","Logger"],"mappings":";;;;;AAaA,MAAMA;IACF,YACYC,mBAAyD,EACzDC,MAAwB,CAClC;aAFUD,mBAAmB,GAAnBA;aACAC,MAAM,GAANA;IACT;IAEH,MAAa,OAAOC,KAAwC,EAAiB;QACzE,MAAM,EAAEC,IAAI,EAAE,GAAGD,MAAM,OAAO;QAE9B,IAAI;YACA,MAAME,UAAU,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;gBACnD,OAAOC;gBACP,WAAW;oBAACF,KAAK,OAAO;iBAAC;YAC7B;YACA,IAAIC,QAAQ,MAAM,IACd,IAAI,CAAC,MAAM,CAAC,KAAK,CACb;gBACI,KAAKE,eAAeF,QAAQ,KAAK,IAAIA,QAAQ,KAAK,CAAC,MAAM,GAAGA,QAAQ,KAAK;gBACzE,OAAOC;gBACP,UAAUF,KAAK,OAAO;YAC1B,GACA;QAGZ,EAAE,OAAOI,OAAO;YACZ,IAAI,CAAC,MAAM,CAAC,KAAK,CACb;gBAAE,KAAKA;gBAAO,OAAOF;gBAAmB,UAAUF,KAAK,OAAO;YAAC,GAC/D;QAER;IACJ;AACJ;AAEO,MAAMK,4BAA4BC,4BAA4B,oBAAoB,CAAC;IACtF,gBAAgBV;IAChB,cAAc;QAACW;QAA4BC;KAAO;AACtD"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { PageRevisionAfterDeleteEventHandler } from "@webiny/api-website-builder/features/pages/DeletePageRevision/index.js";
|
|
2
|
+
import { Logger } from "@webiny/api-core/features/logger/index.js";
|
|
3
|
+
import { DeleteTargetReviewsUseCase } from "@webiny/api-workflows/features/review/DeleteTargetReviews/index.js";
|
|
4
|
+
declare class DeleteReviewsOnPageRevisionDeleteImpl implements PageRevisionAfterDeleteEventHandler.Interface {
|
|
5
|
+
private deleteTargetReviews;
|
|
6
|
+
private logger;
|
|
7
|
+
constructor(deleteTargetReviews: DeleteTargetReviewsUseCase.Interface, logger: Logger.Interface);
|
|
8
|
+
handle(event: PageRevisionAfterDeleteEventHandler.Event): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
export declare const DeleteReviewsOnPageRevisionDelete: typeof DeleteReviewsOnPageRevisionDeleteImpl & {
|
|
11
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher").IEventHandler<import("@webiny/api-core/features/eventPublisher").DomainEvent<import("@webiny/api-website-builder/features/pages/DeletePageRevision/abstractions").PageRevisionAfterDeletePayload>>>;
|
|
12
|
+
};
|
|
13
|
+
export {};
|