@webiny/app-headless-cms-workflows 0.0.0-unstable.0156a4c312
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Components/CmsEntriesList/CmsReviewMoveEntryAction.d.ts +2 -0
- package/Components/CmsEntriesList/CmsReviewMoveEntryAction.js +43 -0
- package/Components/CmsEntriesList/CmsReviewMoveEntryAction.js.map +1 -0
- package/Components/CmsEntriesList/CmsReviewMoveEntryAction.test.d.ts +1 -0
- package/Components/CmsEntriesList/CmsReviewMoveEntryAction.test.js +118 -0
- package/Components/CmsEntriesList/CmsReviewMoveEntryAction.test.js.map +1 -0
- package/Components/CmsEntriesList/CmsReviewScheduleEntryAction.d.ts +2 -0
- package/Components/CmsEntriesList/CmsReviewScheduleEntryAction.js +22 -0
- package/Components/CmsEntriesList/CmsReviewScheduleEntryAction.js.map +1 -0
- package/Components/CmsEntriesList/CmsReviewScheduleEntryAction.test.d.ts +1 -0
- package/Components/CmsEntriesList/CmsReviewScheduleEntryAction.test.js +98 -0
- package/Components/CmsEntriesList/CmsReviewScheduleEntryAction.test.js.map +1 -0
- package/Components/ContentEntryForm/CmsEntryReviewBar.d.ts +2 -0
- package/Components/ContentEntryForm/CmsEntryReviewBar.js +32 -0
- package/Components/ContentEntryForm/CmsEntryReviewBar.js.map +1 -0
- package/Components/ContentEntryForm/CmsEntryReviewBar.test.d.ts +1 -0
- package/Components/ContentEntryForm/CmsEntryReviewBar.test.js +128 -0
- package/Components/ContentEntryForm/CmsEntryReviewBar.test.js.map +1 -0
- package/Components/ContentEntryForm/CmsEntryReviewBlockedActions.d.ts +2 -0
- package/Components/ContentEntryForm/CmsEntryReviewBlockedActions.js +46 -0
- package/Components/ContentEntryForm/CmsEntryReviewBlockedActions.js.map +1 -0
- package/Components/ContentEntryForm/CmsEntryReviewBlockedActions.test.d.ts +1 -0
- package/Components/ContentEntryForm/CmsEntryReviewBlockedActions.test.js +222 -0
- package/Components/ContentEntryForm/CmsEntryReviewBlockedActions.test.js.map +1 -0
- package/Components/ContentEntryForm/CmsEntryReviewFormLock.d.ts +2 -0
- package/Components/ContentEntryForm/CmsEntryReviewFormLock.js +32 -0
- package/Components/ContentEntryForm/CmsEntryReviewFormLock.js.map +1 -0
- package/Components/ContentEntryForm/CmsEntryReviewFormLock.test.d.ts +1 -0
- package/Components/ContentEntryForm/CmsEntryReviewFormLock.test.js +94 -0
- package/Components/ContentEntryForm/CmsEntryReviewFormLock.test.js.map +1 -0
- package/Components/ContentEntryForm/CmsEntryReviewNewRevision.d.ts +2 -0
- package/Components/ContentEntryForm/CmsEntryReviewNewRevision.js +56 -0
- package/Components/ContentEntryForm/CmsEntryReviewNewRevision.js.map +1 -0
- package/Components/ContentEntryForm/CmsEntryReviewNewRevision.test.d.ts +1 -0
- package/Components/ContentEntryForm/CmsEntryReviewNewRevision.test.js +186 -0
- package/Components/ContentEntryForm/CmsEntryReviewNewRevision.test.js.map +1 -0
- package/Components/ContentEntryForm/CmsEntryReviewScheduleMenuItem.d.ts +2 -0
- package/Components/ContentEntryForm/CmsEntryReviewScheduleMenuItem.js +26 -0
- package/Components/ContentEntryForm/CmsEntryReviewScheduleMenuItem.js.map +1 -0
- package/Components/ContentEntryForm/CmsEntryReviewScheduleMenuItem.test.d.ts +1 -0
- package/Components/ContentEntryForm/CmsEntryReviewScheduleMenuItem.test.js +78 -0
- package/Components/ContentEntryForm/CmsEntryReviewScheduleMenuItem.test.js.map +1 -0
- package/Components/ContentEntryForm/getModelFieldLabels.d.ts +3 -0
- package/Components/ContentEntryForm/getModelFieldLabels.js +8 -0
- package/Components/ContentEntryForm/getModelFieldLabels.js.map +1 -0
- package/Components/ContentEntryForm/index.d.ts +5 -0
- package/Components/ContentEntryForm/index.js +5 -0
- package/Components/ContentReviews/CmsContentReviews.d.ts +2 -0
- package/Components/ContentReviews/CmsContentReviews.js +11 -0
- package/Components/ContentReviews/CmsContentReviews.js.map +1 -0
- package/Components/ContentReviews/CmsContentReviews.test.d.ts +1 -0
- package/Components/ContentReviews/CmsContentReviews.test.js +214 -0
- package/Components/ContentReviews/CmsContentReviews.test.js.map +1 -0
- package/Components/ContentReviews/CmsContentReviewsMount.d.ts +4 -0
- package/Components/ContentReviews/CmsContentReviewsMount.js +44 -0
- package/Components/ContentReviews/CmsContentReviewsMount.js.map +1 -0
- package/Components/ContentReviews/CmsContentReviewsSidebarItem.d.ts +2 -0
- package/Components/ContentReviews/CmsContentReviewsSidebarItem.js +20 -0
- package/Components/ContentReviews/CmsContentReviewsSidebarItem.js.map +1 -0
- package/Components/ContentReviews/CmsContentReviewsSidebarItem.test.d.ts +1 -0
- package/Components/ContentReviews/CmsContentReviewsSidebarItem.test.js +83 -0
- package/Components/ContentReviews/CmsContentReviewsSidebarItem.test.js.map +1 -0
- package/Components/ModelDelete/ModelBoundToWorkflowErrorData.d.ts +8 -0
- package/Components/ModelDelete/ModelBoundToWorkflowErrorData.js +0 -0
- package/Components/ModelDelete/ModelDeleteWorkflowCopy.d.ts +10 -0
- package/Components/ModelDelete/ModelDeleteWorkflowCopy.js +0 -0
- package/Components/ModelDelete/ModelDeleteWorkflowError.d.ts +2 -0
- package/Components/ModelDelete/ModelDeleteWorkflowError.js +34 -0
- package/Components/ModelDelete/ModelDeleteWorkflowError.js.map +1 -0
- package/Components/ModelDelete/ModelDeleteWorkflowError.test.d.ts +1 -0
- package/Components/ModelDelete/ModelDeleteWorkflowError.test.js +73 -0
- package/Components/ModelDelete/ModelDeleteWorkflowError.test.js.map +1 -0
- package/Components/ModelDelete/getModelDeleteWorkflowCopy.d.ts +3 -0
- package/Components/ModelDelete/getModelDeleteWorkflowCopy.js +17 -0
- package/Components/ModelDelete/getModelDeleteWorkflowCopy.js.map +1 -0
- package/Components/ModelDelete/getModelDeleteWorkflowCopy.test.d.ts +1 -0
- package/Components/ModelDelete/getModelDeleteWorkflowCopy.test.js +28 -0
- package/Components/ModelDelete/getModelDeleteWorkflowCopy.test.js.map +1 -0
- package/Components/ignoreAction.d.ts +1 -0
- package/Components/ignoreAction.js +4 -0
- package/Components/ignoreAction.js.map +1 -0
- package/LICENSE +21 -0
- package/README.md +11 -0
- package/Routes/CmsWorkflowEditor.d.ts +2 -0
- package/Routes/CmsWorkflowEditor.js +23 -0
- package/Routes/CmsWorkflowEditor.js.map +1 -0
- package/Routes/CmsWorkflowEditor.test.d.ts +1 -0
- package/Routes/CmsWorkflowEditor.test.js +141 -0
- package/Routes/CmsWorkflowEditor.test.js.map +1 -0
- package/Routes/index.d.ts +1 -0
- package/Routes/index.js +1 -0
- package/features/cache/CmsReviewCacheSyncHandler.d.ts +8 -0
- package/features/cache/CmsReviewCacheSyncHandler.js +14 -0
- package/features/cache/CmsReviewCacheSyncHandler.js.map +1 -0
- package/features/cache/CmsReviewCacheWriter.d.ts +14 -0
- package/features/cache/CmsReviewCacheWriter.js +39 -0
- package/features/cache/CmsReviewCacheWriter.js.map +1 -0
- package/features/cache/CmsReviewCacheWriter.test.d.ts +1 -0
- package/features/cache/CmsReviewCacheWriter.test.js +207 -0
- package/features/cache/CmsReviewCacheWriter.test.js.map +1 -0
- package/features/cache/CmsReviewEntriesCacheProviderDecorator.d.ts +12 -0
- package/features/cache/CmsReviewEntriesCacheProviderDecorator.js +17 -0
- package/features/cache/CmsReviewEntriesCacheProviderDecorator.js.map +1 -0
- package/features/cache/CmsReviewEntriesCacheProviderDecorator.test.d.ts +1 -0
- package/features/cache/CmsReviewEntriesCacheProviderDecorator.test.js +129 -0
- package/features/cache/CmsReviewEntriesCacheProviderDecorator.test.js.map +1 -0
- package/features/cache/ReviewPreservingEntriesCache.d.ts +18 -0
- package/features/cache/ReviewPreservingEntriesCache.js +54 -0
- package/features/cache/ReviewPreservingEntriesCache.js.map +1 -0
- package/features/cache/abstractions.d.ts +5 -0
- package/features/cache/abstractions.js +5 -0
- package/features/cache/abstractions.js.map +1 -0
- package/features/editorGateway/CmsWorkflowEditorGateway/CmsWorkflowEditorGateway.d.ts +26 -0
- package/features/editorGateway/CmsWorkflowEditorGateway/CmsWorkflowEditorGateway.js +104 -0
- package/features/editorGateway/CmsWorkflowEditorGateway/CmsWorkflowEditorGateway.js.map +1 -0
- package/features/editorGateway/CmsWorkflowEditorGateway/CmsWorkflowEditorGateway.test.d.ts +1 -0
- package/features/editorGateway/CmsWorkflowEditorGateway/CmsWorkflowEditorGateway.test.js +589 -0
- package/features/editorGateway/CmsWorkflowEditorGateway/CmsWorkflowEditorGateway.test.js.map +1 -0
- package/features/editorGateway/feature.d.ts +1 -0
- package/features/editorGateway/feature.js +11 -0
- package/features/editorGateway/feature.js.map +1 -0
- package/features/editorGateway/feature.test.d.ts +1 -0
- package/features/editorGateway/feature.test.js +272 -0
- package/features/editorGateway/feature.test.js.map +1 -0
- package/features/editorGateway/graphql/cmsEntryFolderExists.d.ts +1 -0
- package/features/editorGateway/graphql/cmsEntryFolderExists.js +16 -0
- package/features/editorGateway/graphql/cmsEntryFolderExists.js.map +1 -0
- package/features/editorGateway/graphql/deleteCmsEntryWorkflow.d.ts +1 -0
- package/features/editorGateway/graphql/deleteCmsEntryWorkflow.js +19 -0
- package/features/editorGateway/graphql/deleteCmsEntryWorkflow.js.map +1 -0
- package/features/editorGateway/graphql/getCmsEntryWorkflow.d.ts +1 -0
- package/features/editorGateway/graphql/getCmsEntryWorkflow.js +19 -0
- package/features/editorGateway/graphql/getCmsEntryWorkflow.js.map +1 -0
- package/features/editorGateway/graphql/inspectCmsEntryRouting.d.ts +1 -0
- package/features/editorGateway/graphql/inspectCmsEntryRouting.js +19 -0
- package/features/editorGateway/graphql/inspectCmsEntryRouting.js.map +1 -0
- package/features/editorGateway/graphql/listCmsEntryWorkflowModels.d.ts +1 -0
- package/features/editorGateway/graphql/listCmsEntryWorkflowModels.js +29 -0
- package/features/editorGateway/graphql/listCmsEntryWorkflowModels.js.map +1 -0
- package/features/editorGateway/graphql/storeCmsEntryWorkflow.d.ts +1 -0
- package/features/editorGateway/graphql/storeCmsEntryWorkflow.js +19 -0
- package/features/editorGateway/graphql/storeCmsEntryWorkflow.js.map +1 -0
- package/features/editorMounting/CmsWorkflowEditorAppAdapter.d.ts +25 -0
- package/features/editorMounting/CmsWorkflowEditorAppAdapter.js +51 -0
- package/features/editorMounting/CmsWorkflowEditorAppAdapter.js.map +1 -0
- package/features/editorMounting/CmsWorkflowEditorAppAdapter.test.d.ts +1 -0
- package/features/editorMounting/CmsWorkflowEditorAppAdapter.test.js +185 -0
- package/features/editorMounting/CmsWorkflowEditorAppAdapter.test.js.map +1 -0
- package/features/editorMounting/abstractions.d.ts +5 -0
- package/features/editorMounting/abstractions.js +5 -0
- package/features/editorMounting/abstractions.js.map +1 -0
- package/features/editorMounting/feature.d.ts +3 -0
- package/features/editorMounting/feature.js +19 -0
- package/features/editorMounting/feature.js.map +1 -0
- package/features/editorMounting/feature.test.d.ts +1 -0
- package/features/editorMounting/feature.test.js +100 -0
- package/features/editorMounting/feature.test.js.map +1 -0
- package/features/editorReview/CmsEntryReview.d.ts +8 -0
- package/features/editorReview/CmsEntryReview.js +14 -0
- package/features/editorReview/CmsEntryReview.js.map +1 -0
- package/features/editorReview/abstractions.d.ts +5 -0
- package/features/editorReview/abstractions.js +5 -0
- package/features/editorReview/abstractions.js.map +1 -0
- package/features/editorReview/feature.d.ts +3 -0
- package/features/editorReview/feature.js +17 -0
- package/features/editorReview/feature.js.map +1 -0
- package/features/editorReview/feature.test.d.ts +1 -0
- package/features/editorReview/feature.test.js +46 -0
- package/features/editorReview/feature.test.js.map +1 -0
- package/features/editorReview/useCmsEntryReview.d.ts +2 -0
- package/features/editorReview/useCmsEntryReview.js +8 -0
- package/features/editorReview/useCmsEntryReview.js.map +1 -0
- package/features/feature.d.ts +1 -0
- package/features/feature.js +15 -0
- package/features/feature.js.map +1 -0
- package/features/gateway/CmsReviewChangeMessageHandler.d.ts +8 -0
- package/features/gateway/CmsReviewChangeMessageHandler.js +16 -0
- package/features/gateway/CmsReviewChangeMessageHandler.js.map +1 -0
- package/features/gateway/CmsReviewContentAdapter/CmsReviewContentAdapter.d.ts +16 -0
- package/features/gateway/CmsReviewContentAdapter/CmsReviewContentAdapter.js +39 -0
- package/features/gateway/CmsReviewContentAdapter/CmsReviewContentAdapter.js.map +1 -0
- package/features/gateway/CmsReviewContentAdapter/CmsReviewContentAdapter.test.d.ts +1 -0
- package/features/gateway/CmsReviewContentAdapter/CmsReviewContentAdapter.test.js +83 -0
- package/features/gateway/CmsReviewContentAdapter/CmsReviewContentAdapter.test.js.map +1 -0
- package/features/gateway/CmsReviewContentAdapter/abstractions.d.ts +5 -0
- package/features/gateway/CmsReviewContentAdapter/abstractions.js +5 -0
- package/features/gateway/CmsReviewContentAdapter/abstractions.js.map +1 -0
- package/features/gateway/CmsReviewGateway/CmsReviewGateway.d.ts +52 -0
- package/features/gateway/CmsReviewGateway/CmsReviewGateway.js +221 -0
- package/features/gateway/CmsReviewGateway/CmsReviewGateway.js.map +1 -0
- package/features/gateway/CmsReviewGateway/CmsReviewGateway.test.d.ts +1 -0
- package/features/gateway/CmsReviewGateway/CmsReviewGateway.test.js +689 -0
- package/features/gateway/CmsReviewGateway/CmsReviewGateway.test.js.map +1 -0
- package/features/gateway/CmsReviewNotificationHandler.d.ts +8 -0
- package/features/gateway/CmsReviewNotificationHandler.js +16 -0
- package/features/gateway/CmsReviewNotificationHandler.js.map +1 -0
- package/features/gateway/CmsReviewRowProvider/CmsReviewRowProvider.d.ts +8 -0
- package/features/gateway/CmsReviewRowProvider/CmsReviewRowProvider.js +14 -0
- package/features/gateway/CmsReviewRowProvider/CmsReviewRowProvider.js.map +1 -0
- package/features/gateway/CmsReviewRowProvider/abstractions.d.ts +5 -0
- package/features/gateway/CmsReviewRowProvider/abstractions.js +5 -0
- package/features/gateway/CmsReviewRowProvider/abstractions.js.map +1 -0
- package/features/gateway/contentReviewsBindings.test.d.ts +1 -0
- package/features/gateway/contentReviewsBindings.test.js +125 -0
- package/features/gateway/contentReviewsBindings.test.js.map +1 -0
- package/features/gateway/feature.d.ts +4 -0
- package/features/gateway/feature.js +27 -0
- package/features/gateway/feature.js.map +1 -0
- package/features/gateway/feature.test.d.ts +1 -0
- package/features/gateway/feature.test.js +79 -0
- package/features/gateway/feature.test.js.map +1 -0
- package/features/gateway/graphql/CmsOperationResponse.d.ts +3 -0
- package/features/gateway/graphql/CmsOperationResponse.js +0 -0
- package/features/gateway/graphql/approveCmsEntryReviewStep.d.ts +1 -0
- package/features/gateway/graphql/approveCmsEntryReviewStep.js +18 -0
- package/features/gateway/graphql/approveCmsEntryReviewStep.js.map +1 -0
- package/features/gateway/graphql/cancelCmsEntryReview.d.ts +1 -0
- package/features/gateway/graphql/cancelCmsEntryReview.js +18 -0
- package/features/gateway/graphql/cancelCmsEntryReview.js.map +1 -0
- package/features/gateway/graphql/cancelCmsEntryReviewsForDelete.d.ts +1 -0
- package/features/gateway/graphql/cancelCmsEntryReviewsForDelete.js +28 -0
- package/features/gateway/graphql/cancelCmsEntryReviewsForDelete.js.map +1 -0
- package/features/gateway/graphql/getCmsEntryReview.d.ts +1 -0
- package/features/gateway/graphql/getCmsEntryReview.js +18 -0
- package/features/gateway/graphql/getCmsEntryReview.js.map +1 -0
- package/features/gateway/graphql/getCmsEntryReviewStepRun.d.ts +1 -0
- package/features/gateway/graphql/getCmsEntryReviewStepRun.js +18 -0
- package/features/gateway/graphql/getCmsEntryReviewStepRun.js.map +1 -0
- package/features/gateway/graphql/getCmsEntryTargetReview.d.ts +1 -0
- package/features/gateway/graphql/getCmsEntryTargetReview.js +18 -0
- package/features/gateway/graphql/getCmsEntryTargetReview.js.map +1 -0
- package/features/gateway/graphql/listCmsEntryBlockingReviews.d.ts +1 -0
- package/features/gateway/graphql/listCmsEntryBlockingReviews.js +18 -0
- package/features/gateway/graphql/listCmsEntryBlockingReviews.js.map +1 -0
- package/features/gateway/graphql/listCmsEntryReviewStepCandidates.d.ts +1 -0
- package/features/gateway/graphql/listCmsEntryReviewStepCandidates.js +18 -0
- package/features/gateway/graphql/listCmsEntryReviewStepCandidates.js.map +1 -0
- package/features/gateway/graphql/listCmsEntryReviews.d.ts +1 -0
- package/features/gateway/graphql/listCmsEntryReviews.js +34 -0
- package/features/gateway/graphql/listCmsEntryReviews.js.map +1 -0
- package/features/gateway/graphql/listCmsEntryStepCandidates.d.ts +1 -0
- package/features/gateway/graphql/listCmsEntryStepCandidates.js +28 -0
- package/features/gateway/graphql/listCmsEntryStepCandidates.js.map +1 -0
- package/features/gateway/graphql/listCmsEntryWorkflows.d.ts +1 -0
- package/features/gateway/graphql/listCmsEntryWorkflows.js +18 -0
- package/features/gateway/graphql/listCmsEntryWorkflows.js.map +1 -0
- package/features/gateway/graphql/reassignCmsEntryReviewStep.d.ts +1 -0
- package/features/gateway/graphql/reassignCmsEntryReviewStep.js +18 -0
- package/features/gateway/graphql/reassignCmsEntryReviewStep.js.map +1 -0
- package/features/gateway/graphql/rejectCmsEntryReviewStep.d.ts +1 -0
- package/features/gateway/graphql/rejectCmsEntryReviewStep.js +18 -0
- package/features/gateway/graphql/rejectCmsEntryReviewStep.js.map +1 -0
- package/features/gateway/graphql/requestCmsEntryReview.d.ts +1 -0
- package/features/gateway/graphql/requestCmsEntryReview.js +28 -0
- package/features/gateway/graphql/requestCmsEntryReview.js.map +1 -0
- package/features/gateway/graphql/restartCmsEntryReviewStep.d.ts +1 -0
- package/features/gateway/graphql/restartCmsEntryReviewStep.js +18 -0
- package/features/gateway/graphql/restartCmsEntryReviewStep.js.map +1 -0
- package/features/gateway/graphql/startCmsEntryReviewStep.d.ts +1 -0
- package/features/gateway/graphql/startCmsEntryReviewStep.js +18 -0
- package/features/gateway/graphql/startCmsEntryReviewStep.js.map +1 -0
- package/features/gateway/graphql/takeOverCmsEntryReviewStep.d.ts +1 -0
- package/features/gateway/graphql/takeOverCmsEntryReviewStep.js +22 -0
- package/features/gateway/graphql/takeOverCmsEntryReviewStep.js.map +1 -0
- package/features/trash/BulkDeletePresenterReviewDecorator.d.ts +20 -0
- package/features/trash/BulkDeletePresenterReviewDecorator.js +81 -0
- package/features/trash/BulkDeletePresenterReviewDecorator.js.map +1 -0
- package/features/trash/BulkDeletePresenterReviewDecorator.test.d.ts +1 -0
- package/features/trash/BulkDeletePresenterReviewDecorator.test.js +693 -0
- package/features/trash/BulkDeletePresenterReviewDecorator.test.js.map +1 -0
- package/features/trash/DeleteEntryRevisionUseCaseReviewDecorator.d.ts +13 -0
- package/features/trash/DeleteEntryRevisionUseCaseReviewDecorator.js +23 -0
- package/features/trash/DeleteEntryRevisionUseCaseReviewDecorator.js.map +1 -0
- package/features/trash/DeleteEntryRevisionUseCaseReviewDecorator.test.d.ts +1 -0
- package/features/trash/DeleteEntryRevisionUseCaseReviewDecorator.test.js +123 -0
- package/features/trash/DeleteEntryRevisionUseCaseReviewDecorator.test.js.map +1 -0
- package/features/trash/DeleteEntryUseCaseReviewDecorator.d.ts +13 -0
- package/features/trash/DeleteEntryUseCaseReviewDecorator.js +23 -0
- package/features/trash/DeleteEntryUseCaseReviewDecorator.js.map +1 -0
- package/features/trash/DeleteEntryUseCaseReviewDecorator.test.d.ts +1 -0
- package/features/trash/DeleteEntryUseCaseReviewDecorator.test.js +139 -0
- package/features/trash/DeleteEntryUseCaseReviewDecorator.test.js.map +1 -0
- package/features/trash/PermanentlyDeleteEntryUseCaseReviewDecorator.d.ts +13 -0
- package/features/trash/PermanentlyDeleteEntryUseCaseReviewDecorator.js +23 -0
- package/features/trash/PermanentlyDeleteEntryUseCaseReviewDecorator.js.map +1 -0
- package/features/trash/PermanentlyDeleteEntryUseCaseReviewDecorator.test.d.ts +1 -0
- package/features/trash/PermanentlyDeleteEntryUseCaseReviewDecorator.test.js +122 -0
- package/features/trash/PermanentlyDeleteEntryUseCaseReviewDecorator.test.js.map +1 -0
- package/features/trash/feature.d.ts +1 -0
- package/features/trash/feature.js +17 -0
- package/features/trash/feature.js.map +1 -0
- package/features/trash/feature.test.d.ts +1 -0
- package/features/trash/feature.test.js +213 -0
- package/features/trash/feature.test.js.map +1 -0
- package/index.d.ts +2 -0
- package/index.editor.test.d.ts +1 -0
- package/index.editor.test.js +149 -0
- package/index.editor.test.js.map +1 -0
- package/index.js +41 -0
- package/index.js.map +1 -0
- package/index.lists.test.d.ts +1 -0
- package/index.lists.test.js +172 -0
- package/index.lists.test.js.map +1 -0
- package/index.mount.test.d.ts +1 -0
- package/index.mount.test.js +49 -0
- package/index.mount.test.js.map +1 -0
- package/index.test.d.ts +1 -0
- package/index.test.js +414 -0
- package/index.test.js.map +1 -0
- package/package.json +54 -0
- package/presentation/CmsEntryContentReloader.d.ts +8 -0
- package/presentation/CmsEntryContentReloader.js +20 -0
- package/presentation/CmsEntryContentReloader.js.map +1 -0
- package/presentation/CmsEntryContentReloader.test.d.ts +1 -0
- package/presentation/CmsEntryContentReloader.test.js +118 -0
- package/presentation/CmsEntryContentReloader.test.js.map +1 -0
- package/presentation/CmsEntryFormPresenterReviewDecorator.d.ts +27 -0
- package/presentation/CmsEntryFormPresenterReviewDecorator.js +167 -0
- package/presentation/CmsEntryFormPresenterReviewDecorator.js.map +1 -0
- package/presentation/CmsEntryFormPresenterReviewDecorator.test.d.ts +1 -0
- package/presentation/CmsEntryFormPresenterReviewDecorator.test.js +601 -0
- package/presentation/CmsEntryFormPresenterReviewDecorator.test.js.map +1 -0
- package/presentation/CmsEntryUnsavedChanges.d.ts +7 -0
- package/presentation/CmsEntryUnsavedChanges.js +12 -0
- package/presentation/CmsEntryUnsavedChanges.js.map +1 -0
- package/presentation/CmsEntryUnsavedChanges.test.d.ts +1 -0
- package/presentation/CmsEntryUnsavedChanges.test.js +23 -0
- package/presentation/CmsEntryUnsavedChanges.test.js.map +1 -0
- package/presentation/CmsReviewFieldSelections.test.d.ts +1 -0
- package/presentation/CmsReviewFieldSelections.test.js +27 -0
- package/presentation/CmsReviewFieldSelections.test.js.map +1 -0
- package/presentation/CmsReviewGetEntryFieldSelection.d.ts +8 -0
- package/presentation/CmsReviewGetEntryFieldSelection.js +16 -0
- package/presentation/CmsReviewGetEntryFieldSelection.js.map +1 -0
- package/presentation/CmsReviewListEntriesFieldSelection.d.ts +8 -0
- package/presentation/CmsReviewListEntriesFieldSelection.js +16 -0
- package/presentation/CmsReviewListEntriesFieldSelection.js.map +1 -0
- package/presentation/CmsReviewTableRowMapperDecorator.d.ts +11 -0
- package/presentation/CmsReviewTableRowMapperDecorator.js +24 -0
- package/presentation/CmsReviewTableRowMapperDecorator.js.map +1 -0
- package/presentation/CmsReviewTableRowMapperDecorator.test.d.ts +1 -0
- package/presentation/CmsReviewTableRowMapperDecorator.test.js +120 -0
- package/presentation/CmsReviewTableRowMapperDecorator.test.js.map +1 -0
- package/presentation/CmsRevisionsListPresenterDecorator.d.ts +24 -0
- package/presentation/CmsRevisionsListPresenterDecorator.js +66 -0
- package/presentation/CmsRevisionsListPresenterDecorator.js.map +1 -0
- package/presentation/CmsRevisionsListPresenterDecorator.test.d.ts +1 -0
- package/presentation/CmsRevisionsListPresenterDecorator.test.js +174 -0
- package/presentation/CmsRevisionsListPresenterDecorator.test.js.map +1 -0
- package/presentation/contentReviews/CmsContentReviewsPresenter.d.ts +28 -0
- package/presentation/contentReviews/CmsContentReviewsPresenter.js +103 -0
- package/presentation/contentReviews/CmsContentReviewsPresenter.js.map +1 -0
- package/presentation/contentReviews/CmsContentReviewsPresenter.test.d.ts +1 -0
- package/presentation/contentReviews/CmsContentReviewsPresenter.test.js +238 -0
- package/presentation/contentReviews/CmsContentReviewsPresenter.test.js.map +1 -0
- package/presentation/contentReviews/abstractions.d.ts +31 -0
- package/presentation/contentReviews/abstractions.js +5 -0
- package/presentation/contentReviews/abstractions.js.map +1 -0
- package/presentation/contentReviews/feature.d.ts +3 -0
- package/presentation/contentReviews/feature.js +17 -0
- package/presentation/contentReviews/feature.js.map +1 -0
- package/presentation/contentReviews/toContentTypes.d.ts +3 -0
- package/presentation/contentReviews/toContentTypes.js +14 -0
- package/presentation/contentReviews/toContentTypes.js.map +1 -0
- package/presentation/contentReviews/toContentTypes.test.d.ts +1 -0
- package/presentation/contentReviews/toContentTypes.test.js +20 -0
- package/presentation/contentReviews/toContentTypes.test.js.map +1 -0
- package/presentation/feature.d.ts +1 -0
- package/presentation/feature.js +19 -0
- package/presentation/feature.js.map +1 -0
- package/presentation/getCmsEntryReviewContext.d.ts +4 -0
- package/presentation/getCmsEntryReviewContext.js +12 -0
- package/presentation/getCmsEntryReviewContext.js.map +1 -0
- package/presentation/getCmsEntryReviewInitParams.d.ts +13 -0
- package/presentation/getCmsEntryReviewInitParams.js +18 -0
- package/presentation/getCmsEntryReviewInitParams.js.map +1 -0
- package/presentation/getCmsEntryReviewInitParams.test.d.ts +1 -0
- package/presentation/getCmsEntryReviewInitParams.test.js +69 -0
- package/presentation/getCmsEntryReviewInitParams.test.js.map +1 -0
- package/routes.d.ts +11 -0
- package/routes.js +21 -0
- package/routes.js.map +1 -0
- package/testing/createEntry.d.ts +3 -0
- package/testing/createEntry.js +22 -0
- package/testing/createEntry.js.map +1 -0
- package/testing/createEntrySession.d.ts +9 -0
- package/testing/createEntrySession.js +29 -0
- package/testing/createEntrySession.js.map +1 -0
- package/testing/createFolder.d.ts +2 -0
- package/testing/createFolder.js +13 -0
- package/testing/createFolder.js.map +1 -0
- package/testing/createFormVm.d.ts +2 -0
- package/testing/createFormVm.js +22 -0
- package/testing/createFormVm.js.map +1 -0
- package/testing/models.d.ts +4 -0
- package/testing/models.js +23 -0
- package/testing/models.js.map +1 -0
- package/testing/renderEditorTree.d.ts +17 -0
- package/testing/renderEditorTree.js +93 -0
- package/testing/renderEditorTree.js.map +1 -0
- package/testing/reviewStates.d.ts +17 -0
- package/testing/reviewStates.js +65 -0
- package/testing/reviewStates.js.map +1 -0
- package/types.d.ts +10 -0
- package/types.js +0 -0
- package/utils/appName.d.ts +4 -0
- package/utils/appName.js +13 -0
- package/utils/appName.js.map +1 -0
- package/utils/isReviewableModel.d.ts +2 -0
- package/utils/isReviewableModel.js +7 -0
- package/utils/isReviewableModel.js.map +1 -0
- package/utils/renderModelIcon.d.ts +3 -0
- package/utils/renderModelIcon.js +19 -0
- package/utils/renderModelIcon.js.map +1 -0
- package/utils/renderModelIconOrFallback.d.ts +3 -0
- package/utils/renderModelIconOrFallback.js +17 -0
- package/utils/renderModelIconOrFallback.js.map +1 -0
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
2
|
+
import { Container } from "@webiny/di";
|
|
3
|
+
import { MainGraphQLClient } from "@webiny/app/features/mainGraphQLClient/abstractions.js";
|
|
4
|
+
import { GraphQLOperationError } from "@webiny/app/errors/index.js";
|
|
5
|
+
import { WorkflowEditorAppGateway } from "@webiny/app-workflows/editor/appGateway/abstractions.js";
|
|
6
|
+
import { WorkflowErrorCode } from "@webiny/app-workflows/editor/domain/WorkflowErrorCode.js";
|
|
7
|
+
import { WorkflowEditorRepositoryFeature } from "@webiny/app-workflows/editor/repository/feature.js";
|
|
8
|
+
import { ReviewRepositoryFeature } from "@webiny/app-workflows/review/repository/feature.js";
|
|
9
|
+
import { DeleteWorkflowUseCase } from "@webiny/app-workflows/editor/useCases/deleteWorkflow/abstractions.js";
|
|
10
|
+
import { DeleteWorkflowFeature } from "@webiny/app-workflows/editor/useCases/deleteWorkflow/feature.js";
|
|
11
|
+
import { FolderExistsUseCase } from "@webiny/app-workflows/editor/useCases/folderExists/abstractions.js";
|
|
12
|
+
import { FolderExistsFeature } from "@webiny/app-workflows/editor/useCases/folderExists/feature.js";
|
|
13
|
+
import { GetWorkflowUseCase } from "@webiny/app-workflows/editor/useCases/getWorkflow/abstractions.js";
|
|
14
|
+
import { GetWorkflowFeature } from "@webiny/app-workflows/editor/useCases/getWorkflow/feature.js";
|
|
15
|
+
import { InspectRoutingUseCase } from "@webiny/app-workflows/editor/useCases/inspectRouting/abstractions.js";
|
|
16
|
+
import { InspectRoutingFeature } from "@webiny/app-workflows/editor/useCases/inspectRouting/feature.js";
|
|
17
|
+
import { ListWorkflowModelsUseCase } from "@webiny/app-workflows/editor/useCases/listWorkflowModels/abstractions.js";
|
|
18
|
+
import { ListWorkflowModelsFeature } from "@webiny/app-workflows/editor/useCases/listWorkflowModels/feature.js";
|
|
19
|
+
import { StoreWorkflowUseCase } from "@webiny/app-workflows/editor/useCases/storeWorkflow/abstractions.js";
|
|
20
|
+
import { StoreWorkflowFeature } from "@webiny/app-workflows/editor/useCases/storeWorkflow/feature.js";
|
|
21
|
+
import { EDITOR_SAVED_ON, createEditorWorkflowDto, createRoutingInspectionDto, createWorkflowModelRowDto } from "@webiny/app-workflows/editor/testing/editorFixtures.js";
|
|
22
|
+
import { CmsWorkflowEditorFeature } from "./feature.js";
|
|
23
|
+
describe("CmsWorkflowEditorFeature", ()=>{
|
|
24
|
+
const client = {
|
|
25
|
+
execute: vi.fn()
|
|
26
|
+
};
|
|
27
|
+
let container;
|
|
28
|
+
beforeEach(()=>{
|
|
29
|
+
client.execute.mockReset();
|
|
30
|
+
container = new Container();
|
|
31
|
+
container.registerInstance(MainGraphQLClient, client);
|
|
32
|
+
CmsWorkflowEditorFeature.register(container);
|
|
33
|
+
});
|
|
34
|
+
it("registers only the CMS gateway under the shared app gateway token (R347, R362)", ()=>{
|
|
35
|
+
const gateways = container.resolveAll(WorkflowEditorAppGateway);
|
|
36
|
+
expect(gateways).toHaveLength(1);
|
|
37
|
+
expect(gateways[0].app).toBe("cms");
|
|
38
|
+
});
|
|
39
|
+
it("registers the gateway as a singleton", ()=>{
|
|
40
|
+
expect(container.resolve(WorkflowEditorAppGateway)).toBe(container.resolve(WorkflowEditorAppGateway));
|
|
41
|
+
});
|
|
42
|
+
describe("the shared editor use cases over the CMS gateway", ()=>{
|
|
43
|
+
beforeEach(()=>{
|
|
44
|
+
WorkflowEditorRepositoryFeature.register(container);
|
|
45
|
+
ReviewRepositoryFeature.register(container);
|
|
46
|
+
ListWorkflowModelsFeature.register(container);
|
|
47
|
+
GetWorkflowFeature.register(container);
|
|
48
|
+
StoreWorkflowFeature.register(container);
|
|
49
|
+
DeleteWorkflowFeature.register(container);
|
|
50
|
+
InspectRoutingFeature.register(container);
|
|
51
|
+
FolderExistsFeature.register(container);
|
|
52
|
+
});
|
|
53
|
+
it("runs the routing inspection with the bare model id", async ()=>{
|
|
54
|
+
client.execute.mockResolvedValue({
|
|
55
|
+
cms: {
|
|
56
|
+
inspectCmsEntryRouting: {
|
|
57
|
+
data: createRoutingInspectionDto({
|
|
58
|
+
ruleId: "rule-2",
|
|
59
|
+
narrowedTeamId: "team-2",
|
|
60
|
+
candidateIds: [
|
|
61
|
+
"user-3"
|
|
62
|
+
],
|
|
63
|
+
candidateCount: 4
|
|
64
|
+
}),
|
|
65
|
+
error: null
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
const useCase = container.resolve(InspectRoutingUseCase);
|
|
70
|
+
const inspection = await useCase.execute({
|
|
71
|
+
app: "cms",
|
|
72
|
+
stepConfig: {
|
|
73
|
+
teams: [
|
|
74
|
+
"team-2"
|
|
75
|
+
],
|
|
76
|
+
assignment: {
|
|
77
|
+
strategy: "none",
|
|
78
|
+
rules: []
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
requesterId: "user-1",
|
|
82
|
+
folderId: null,
|
|
83
|
+
modelId: "article"
|
|
84
|
+
});
|
|
85
|
+
expect(inspection.ruleId).toBe("rule-2");
|
|
86
|
+
expect(inspection.narrowedTeamId).toBe("team-2");
|
|
87
|
+
expect(inspection.candidateIds).toEqual([
|
|
88
|
+
"user-3"
|
|
89
|
+
]);
|
|
90
|
+
expect(inspection.candidateCount).toBe(4);
|
|
91
|
+
expect(client.execute.mock.calls[0][0].variables.modelId).toBe("article");
|
|
92
|
+
expect(client.execute.mock.calls[0][0].variables.folderId).toBeNull();
|
|
93
|
+
});
|
|
94
|
+
it("answers false for a deleted folder, not an error", async ()=>{
|
|
95
|
+
client.execute.mockResolvedValue({
|
|
96
|
+
cms: {
|
|
97
|
+
cmsEntryFolderExists: {
|
|
98
|
+
data: false,
|
|
99
|
+
error: null
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
const useCase = container.resolve(FolderExistsUseCase);
|
|
104
|
+
const exists = await useCase.execute({
|
|
105
|
+
app: "cms",
|
|
106
|
+
id: "folder-1",
|
|
107
|
+
type: "cms:article"
|
|
108
|
+
});
|
|
109
|
+
expect(exists).toBe(false);
|
|
110
|
+
expect(client.execute.mock.calls[0][0].variables).toEqual({
|
|
111
|
+
id: "folder-1",
|
|
112
|
+
type: "cms:article"
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
it("turns a rule validation error of the inspector into a GraphQLOperationError that keeps the rule id", async ()=>{
|
|
116
|
+
const data = {
|
|
117
|
+
stepId: "step-1",
|
|
118
|
+
field: "config.assignment.rules.target",
|
|
119
|
+
ruleId: "rule-1",
|
|
120
|
+
workflowId: null
|
|
121
|
+
};
|
|
122
|
+
client.execute.mockResolvedValue({
|
|
123
|
+
cms: {
|
|
124
|
+
inspectCmsEntryRouting: {
|
|
125
|
+
data: null,
|
|
126
|
+
error: {
|
|
127
|
+
code: WorkflowErrorCode.Validation,
|
|
128
|
+
message: "The target team is not one of the step's reviewing teams.",
|
|
129
|
+
data
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
const useCase = container.resolve(InspectRoutingUseCase);
|
|
135
|
+
const promise = useCase.execute({
|
|
136
|
+
app: "cms",
|
|
137
|
+
stepConfig: {
|
|
138
|
+
teams: [
|
|
139
|
+
"team-1"
|
|
140
|
+
],
|
|
141
|
+
assignment: {
|
|
142
|
+
rules: []
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
requesterId: "user-1",
|
|
146
|
+
folderId: null,
|
|
147
|
+
modelId: "article"
|
|
148
|
+
});
|
|
149
|
+
await expect(promise).rejects.toBeInstanceOf(GraphQLOperationError);
|
|
150
|
+
await expect(promise).rejects.toMatchObject({
|
|
151
|
+
code: WorkflowErrorCode.Validation,
|
|
152
|
+
data
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
it("lists the models with the page meta", async ()=>{
|
|
156
|
+
client.execute.mockResolvedValue({
|
|
157
|
+
cms: {
|
|
158
|
+
listCmsEntryWorkflowModels: {
|
|
159
|
+
data: [
|
|
160
|
+
createWorkflowModelRowDto()
|
|
161
|
+
],
|
|
162
|
+
meta: {
|
|
163
|
+
cursor: "cursor-2",
|
|
164
|
+
hasMoreItems: true
|
|
165
|
+
},
|
|
166
|
+
error: null
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
const useCase = container.resolve(ListWorkflowModelsUseCase);
|
|
171
|
+
const page = await useCase.execute({
|
|
172
|
+
app: "cms",
|
|
173
|
+
search: "",
|
|
174
|
+
limit: 20,
|
|
175
|
+
after: null
|
|
176
|
+
});
|
|
177
|
+
expect(page.cursor).toBe("cursor-2");
|
|
178
|
+
expect(page.hasMoreItems).toBe(true);
|
|
179
|
+
expect(page.rows[0].model).toBe("cms.article");
|
|
180
|
+
});
|
|
181
|
+
it("keeps savedOn as the identical string from the read to the store (D131)", async ()=>{
|
|
182
|
+
client.execute.mockResolvedValueOnce({
|
|
183
|
+
cms: {
|
|
184
|
+
getCmsEntryWorkflow: {
|
|
185
|
+
data: createEditorWorkflowDto({
|
|
186
|
+
savedOn: "2026-10-18T09:15:30.123Z"
|
|
187
|
+
}),
|
|
188
|
+
error: null
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
client.execute.mockResolvedValueOnce({
|
|
193
|
+
cms: {
|
|
194
|
+
storeCmsEntryWorkflow: {
|
|
195
|
+
data: createEditorWorkflowDto({
|
|
196
|
+
savedOn: "2026-10-18T09:20:00.000Z"
|
|
197
|
+
}),
|
|
198
|
+
error: null
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
const getWorkflow = container.resolve(GetWorkflowUseCase);
|
|
203
|
+
const storeWorkflow = container.resolve(StoreWorkflowUseCase);
|
|
204
|
+
const loaded = await getWorkflow.execute({
|
|
205
|
+
app: "cms",
|
|
206
|
+
id: "workflow-1"
|
|
207
|
+
});
|
|
208
|
+
const stored = await storeWorkflow.execute({
|
|
209
|
+
app: "cms",
|
|
210
|
+
data: {
|
|
211
|
+
id: loaded.id,
|
|
212
|
+
name: loaded.name,
|
|
213
|
+
models: loaded.models,
|
|
214
|
+
steps: []
|
|
215
|
+
},
|
|
216
|
+
savedOn: loaded.savedOn
|
|
217
|
+
});
|
|
218
|
+
expect(loaded.savedOn).toBe(EDITOR_SAVED_ON);
|
|
219
|
+
expect(client.execute.mock.calls[1][0].variables.savedOn).toBe(EDITOR_SAVED_ON);
|
|
220
|
+
expect(stored.savedOn).toBe("2026-10-18T09:20:00.000Z");
|
|
221
|
+
});
|
|
222
|
+
it("turns an envelope error into a GraphQLOperationError that keeps code and data", async ()=>{
|
|
223
|
+
const data = {
|
|
224
|
+
savedOn: "2026-10-18T10:00:00.000Z",
|
|
225
|
+
savedBy: {
|
|
226
|
+
displayName: "Grace"
|
|
227
|
+
}
|
|
228
|
+
};
|
|
229
|
+
client.execute.mockResolvedValue({
|
|
230
|
+
cms: {
|
|
231
|
+
storeCmsEntryWorkflow: {
|
|
232
|
+
data: null,
|
|
233
|
+
error: {
|
|
234
|
+
code: WorkflowErrorCode.Conflict,
|
|
235
|
+
message: "The workflow was changed.",
|
|
236
|
+
data
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
});
|
|
241
|
+
const useCase = container.resolve(StoreWorkflowUseCase);
|
|
242
|
+
const promise = useCase.execute({
|
|
243
|
+
app: "cms",
|
|
244
|
+
data: {
|
|
245
|
+
id: "workflow-1",
|
|
246
|
+
name: "A",
|
|
247
|
+
models: [
|
|
248
|
+
"cms.article"
|
|
249
|
+
],
|
|
250
|
+
steps: []
|
|
251
|
+
},
|
|
252
|
+
savedOn: EDITOR_SAVED_ON
|
|
253
|
+
});
|
|
254
|
+
await expect(promise).rejects.toBeInstanceOf(GraphQLOperationError);
|
|
255
|
+
await expect(promise).rejects.toMatchObject({
|
|
256
|
+
code: WorkflowErrorCode.Conflict,
|
|
257
|
+
data
|
|
258
|
+
});
|
|
259
|
+
});
|
|
260
|
+
it("lets a transport failure pass through the use cases as it is", async ()=>{
|
|
261
|
+
const failure = new Error("Network down.");
|
|
262
|
+
client.execute.mockRejectedValue(failure);
|
|
263
|
+
const useCase = container.resolve(DeleteWorkflowUseCase);
|
|
264
|
+
await expect(useCase.execute({
|
|
265
|
+
app: "cms",
|
|
266
|
+
id: "workflow-1"
|
|
267
|
+
})).rejects.toBe(failure);
|
|
268
|
+
});
|
|
269
|
+
});
|
|
270
|
+
});
|
|
271
|
+
|
|
272
|
+
//# sourceMappingURL=feature.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/editorGateway/feature.test.js","sources":["../../../src/features/editorGateway/feature.test.ts"],"sourcesContent":["import { beforeEach } from \"vitest\";\nimport { describe } from \"vitest\";\nimport { expect } from \"vitest\";\nimport { it } from \"vitest\";\nimport { vi } from \"vitest\";\nimport { Container } from \"@webiny/di\";\nimport { MainGraphQLClient } from \"@webiny/app/features/mainGraphQLClient/abstractions.js\";\nimport { GraphQLOperationError } from \"@webiny/app/errors/index.js\";\nimport { WorkflowEditorAppGateway } from \"@webiny/app-workflows/editor/appGateway/abstractions.js\";\nimport { WorkflowErrorCode } from \"@webiny/app-workflows/editor/domain/WorkflowErrorCode.js\";\nimport { WorkflowEditorRepositoryFeature } from \"@webiny/app-workflows/editor/repository/feature.js\";\nimport { ReviewRepositoryFeature } from \"@webiny/app-workflows/review/repository/feature.js\";\nimport { DeleteWorkflowUseCase } from \"@webiny/app-workflows/editor/useCases/deleteWorkflow/abstractions.js\";\nimport { DeleteWorkflowFeature } from \"@webiny/app-workflows/editor/useCases/deleteWorkflow/feature.js\";\nimport { FolderExistsUseCase } from \"@webiny/app-workflows/editor/useCases/folderExists/abstractions.js\";\nimport { FolderExistsFeature } from \"@webiny/app-workflows/editor/useCases/folderExists/feature.js\";\nimport { GetWorkflowUseCase } from \"@webiny/app-workflows/editor/useCases/getWorkflow/abstractions.js\";\nimport { GetWorkflowFeature } from \"@webiny/app-workflows/editor/useCases/getWorkflow/feature.js\";\nimport { InspectRoutingUseCase } from \"@webiny/app-workflows/editor/useCases/inspectRouting/abstractions.js\";\nimport { InspectRoutingFeature } from \"@webiny/app-workflows/editor/useCases/inspectRouting/feature.js\";\nimport { ListWorkflowModelsUseCase } from \"@webiny/app-workflows/editor/useCases/listWorkflowModels/abstractions.js\";\nimport { ListWorkflowModelsFeature } from \"@webiny/app-workflows/editor/useCases/listWorkflowModels/feature.js\";\nimport { StoreWorkflowUseCase } from \"@webiny/app-workflows/editor/useCases/storeWorkflow/abstractions.js\";\nimport { StoreWorkflowFeature } from \"@webiny/app-workflows/editor/useCases/storeWorkflow/feature.js\";\nimport { EDITOR_SAVED_ON } from \"@webiny/app-workflows/editor/testing/editorFixtures.js\";\nimport { createEditorWorkflowDto } from \"@webiny/app-workflows/editor/testing/editorFixtures.js\";\nimport { createRoutingInspectionDto } from \"@webiny/app-workflows/editor/testing/editorFixtures.js\";\nimport { createWorkflowModelRowDto } from \"@webiny/app-workflows/editor/testing/editorFixtures.js\";\nimport { CmsWorkflowEditorFeature } from \"./feature.js\";\n\ndescribe(\"CmsWorkflowEditorFeature\", () => {\n const client = { execute: vi.fn() };\n let container: Container;\n\n beforeEach(() => {\n client.execute.mockReset();\n\n container = new Container();\n container.registerInstance(MainGraphQLClient, client);\n CmsWorkflowEditorFeature.register(container);\n });\n\n it(\"registers only the CMS gateway under the shared app gateway token (R347, R362)\", () => {\n const gateways = container.resolveAll(WorkflowEditorAppGateway);\n\n expect(gateways).toHaveLength(1);\n expect(gateways[0].app).toBe(\"cms\");\n });\n\n it(\"registers the gateway as a singleton\", () => {\n expect(container.resolve(WorkflowEditorAppGateway)).toBe(\n container.resolve(WorkflowEditorAppGateway)\n );\n });\n\n describe(\"the shared editor use cases over the CMS gateway\", () => {\n beforeEach(() => {\n WorkflowEditorRepositoryFeature.register(container);\n // The store and delete use cases clear the review workflow cache (R350).\n ReviewRepositoryFeature.register(container);\n ListWorkflowModelsFeature.register(container);\n GetWorkflowFeature.register(container);\n StoreWorkflowFeature.register(container);\n DeleteWorkflowFeature.register(container);\n InspectRoutingFeature.register(container);\n FolderExistsFeature.register(container);\n });\n\n it(\"runs the routing inspection with the bare model id\", async () => {\n client.execute.mockResolvedValue({\n cms: {\n inspectCmsEntryRouting: {\n data: createRoutingInspectionDto({\n ruleId: \"rule-2\",\n narrowedTeamId: \"team-2\",\n candidateIds: [\"user-3\"],\n candidateCount: 4\n }),\n error: null\n }\n }\n });\n const useCase = container.resolve(InspectRoutingUseCase);\n\n const inspection = await useCase.execute({\n app: \"cms\",\n stepConfig: { teams: [\"team-2\"], assignment: { strategy: \"none\", rules: [] } },\n requesterId: \"user-1\",\n folderId: null,\n modelId: \"article\"\n });\n\n expect(inspection.ruleId).toBe(\"rule-2\");\n expect(inspection.narrowedTeamId).toBe(\"team-2\");\n expect(inspection.candidateIds).toEqual([\"user-3\"]);\n expect(inspection.candidateCount).toBe(4);\n expect(client.execute.mock.calls[0][0].variables.modelId).toBe(\"article\");\n expect(client.execute.mock.calls[0][0].variables.folderId).toBeNull();\n });\n\n it(\"answers false for a deleted folder, not an error\", async () => {\n client.execute.mockResolvedValue({\n cms: { cmsEntryFolderExists: { data: false, error: null } }\n });\n const useCase = container.resolve(FolderExistsUseCase);\n\n const exists = await useCase.execute({\n app: \"cms\",\n id: \"folder-1\",\n type: \"cms:article\"\n });\n\n expect(exists).toBe(false);\n expect(client.execute.mock.calls[0][0].variables).toEqual({\n id: \"folder-1\",\n type: \"cms:article\"\n });\n });\n\n it(\"turns a rule validation error of the inspector into a GraphQLOperationError that keeps the rule id\", async () => {\n const data = {\n stepId: \"step-1\",\n field: \"config.assignment.rules.target\",\n ruleId: \"rule-1\",\n workflowId: null\n };\n client.execute.mockResolvedValue({\n cms: {\n inspectCmsEntryRouting: {\n data: null,\n error: {\n code: WorkflowErrorCode.Validation,\n message: \"The target team is not one of the step's reviewing teams.\",\n data\n }\n }\n }\n });\n const useCase = container.resolve(InspectRoutingUseCase);\n\n const promise = useCase.execute({\n app: \"cms\",\n stepConfig: { teams: [\"team-1\"], assignment: { rules: [] } },\n requesterId: \"user-1\",\n folderId: null,\n modelId: \"article\"\n });\n\n await expect(promise).rejects.toBeInstanceOf(GraphQLOperationError);\n await expect(promise).rejects.toMatchObject({\n code: WorkflowErrorCode.Validation,\n data\n });\n });\n\n it(\"lists the models with the page meta\", async () => {\n client.execute.mockResolvedValue({\n cms: {\n listCmsEntryWorkflowModels: {\n data: [createWorkflowModelRowDto()],\n meta: { cursor: \"cursor-2\", hasMoreItems: true },\n error: null\n }\n }\n });\n const useCase = container.resolve(ListWorkflowModelsUseCase);\n\n const page = await useCase.execute({ app: \"cms\", search: \"\", limit: 20, after: null });\n\n expect(page.cursor).toBe(\"cursor-2\");\n expect(page.hasMoreItems).toBe(true);\n expect(page.rows[0].model).toBe(\"cms.article\");\n });\n\n it(\"keeps savedOn as the identical string from the read to the store (D131)\", async () => {\n client.execute.mockResolvedValueOnce({\n cms: {\n getCmsEntryWorkflow: {\n data: createEditorWorkflowDto({ savedOn: \"2026-10-18T09:15:30.123Z\" }),\n error: null\n }\n }\n });\n client.execute.mockResolvedValueOnce({\n cms: {\n storeCmsEntryWorkflow: {\n data: createEditorWorkflowDto({ savedOn: \"2026-10-18T09:20:00.000Z\" }),\n error: null\n }\n }\n });\n const getWorkflow = container.resolve(GetWorkflowUseCase);\n const storeWorkflow = container.resolve(StoreWorkflowUseCase);\n\n const loaded = await getWorkflow.execute({ app: \"cms\", id: \"workflow-1\" });\n const stored = await storeWorkflow.execute({\n app: \"cms\",\n data: { id: loaded.id, name: loaded.name, models: loaded.models, steps: [] },\n savedOn: loaded.savedOn\n });\n\n expect(loaded.savedOn).toBe(EDITOR_SAVED_ON);\n expect(client.execute.mock.calls[1][0].variables.savedOn).toBe(EDITOR_SAVED_ON);\n expect(stored.savedOn).toBe(\"2026-10-18T09:20:00.000Z\");\n });\n\n it(\"turns an envelope error into a GraphQLOperationError that keeps code and data\", async () => {\n const data = {\n savedOn: \"2026-10-18T10:00:00.000Z\",\n savedBy: { displayName: \"Grace\" }\n };\n client.execute.mockResolvedValue({\n cms: {\n storeCmsEntryWorkflow: {\n data: null,\n error: {\n code: WorkflowErrorCode.Conflict,\n message: \"The workflow was changed.\",\n data\n }\n }\n }\n });\n const useCase = container.resolve(StoreWorkflowUseCase);\n\n const promise = useCase.execute({\n app: \"cms\",\n data: { id: \"workflow-1\", name: \"A\", models: [\"cms.article\"], steps: [] },\n savedOn: EDITOR_SAVED_ON\n });\n\n await expect(promise).rejects.toBeInstanceOf(GraphQLOperationError);\n await expect(promise).rejects.toMatchObject({ code: WorkflowErrorCode.Conflict, data });\n });\n\n it(\"lets a transport failure pass through the use cases as it is\", async () => {\n const failure = new Error(\"Network down.\");\n client.execute.mockRejectedValue(failure);\n const useCase = container.resolve(DeleteWorkflowUseCase);\n\n await expect(useCase.execute({ app: \"cms\", id: \"workflow-1\" })).rejects.toBe(failure);\n });\n });\n});\n"],"names":["describe","client","vi","container","beforeEach","Container","MainGraphQLClient","CmsWorkflowEditorFeature","it","gateways","WorkflowEditorAppGateway","expect","WorkflowEditorRepositoryFeature","ReviewRepositoryFeature","ListWorkflowModelsFeature","GetWorkflowFeature","StoreWorkflowFeature","DeleteWorkflowFeature","InspectRoutingFeature","FolderExistsFeature","createRoutingInspectionDto","useCase","InspectRoutingUseCase","inspection","FolderExistsUseCase","exists","data","WorkflowErrorCode","promise","GraphQLOperationError","createWorkflowModelRowDto","ListWorkflowModelsUseCase","page","createEditorWorkflowDto","getWorkflow","GetWorkflowUseCase","storeWorkflow","StoreWorkflowUseCase","loaded","stored","EDITOR_SAVED_ON","failure","Error","DeleteWorkflowUseCase"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const CMS_ENTRY_FOLDER_EXISTS = "\n query CmsEntryFolderExists($id: ID!, $type: String!) {\n cms {\n cmsEntryFolderExists(id: $id, type: $type) {\n data\n error {\n \n code\n message\n data\n\n }\n }\n }\n }\n";
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ERROR_FIELDS } from "@webiny/app-workflows/review/gateway/reviewFields.js";
|
|
2
|
+
const CMS_ENTRY_FOLDER_EXISTS = `
|
|
3
|
+
query CmsEntryFolderExists($id: ID!, $type: String!) {
|
|
4
|
+
cms {
|
|
5
|
+
cmsEntryFolderExists(id: $id, type: $type) {
|
|
6
|
+
data
|
|
7
|
+
error {
|
|
8
|
+
${ERROR_FIELDS}
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
`;
|
|
14
|
+
export { CMS_ENTRY_FOLDER_EXISTS };
|
|
15
|
+
|
|
16
|
+
//# sourceMappingURL=cmsEntryFolderExists.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/editorGateway/graphql/cmsEntryFolderExists.js","sources":["../../../../src/features/editorGateway/graphql/cmsEntryFolderExists.ts"],"sourcesContent":["import { ERROR_FIELDS } from \"@webiny/app-workflows/review/gateway/reviewFields.js\";\n\nexport const CMS_ENTRY_FOLDER_EXISTS = /* GraphQL */ `\n query CmsEntryFolderExists($id: ID!, $type: String!) {\n cms {\n cmsEntryFolderExists(id: $id, type: $type) {\n data\n error {\n ${ERROR_FIELDS}\n }\n }\n }\n }\n`;\n"],"names":["CMS_ENTRY_FOLDER_EXISTS","ERROR_FIELDS"],"mappings":";AAEO,MAAMA,0BAAwC,CAAC;;;;;;oBAMlC,EAAEC,aAAa;;;;;AAKnC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const DELETE_CMS_ENTRY_WORKFLOW = "\n mutation DeleteCmsEntryWorkflow($id: ID!) {\n cms {\n deleteCmsEntryWorkflow(id: $id) {\n data {\n \n id\n name\n models\n steps {\n id\n title\n color\n description\n type\n notifications {\n id\n }\n config\n }\n createdOn\n savedOn\n createdBy {\n id\n displayName\n }\n savedBy {\n id\n displayName\n }\n\n }\n error {\n \n code\n message\n data\n\n }\n }\n }\n }\n";
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { EDITOR_WORKFLOW_FIELDS } from "@webiny/app-workflows/editor/gateway/editorFields.js";
|
|
2
|
+
import { ERROR_FIELDS } from "@webiny/app-workflows/review/gateway/reviewFields.js";
|
|
3
|
+
const DELETE_CMS_ENTRY_WORKFLOW = `
|
|
4
|
+
mutation DeleteCmsEntryWorkflow($id: ID!) {
|
|
5
|
+
cms {
|
|
6
|
+
deleteCmsEntryWorkflow(id: $id) {
|
|
7
|
+
data {
|
|
8
|
+
${EDITOR_WORKFLOW_FIELDS}
|
|
9
|
+
}
|
|
10
|
+
error {
|
|
11
|
+
${ERROR_FIELDS}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
`;
|
|
17
|
+
export { DELETE_CMS_ENTRY_WORKFLOW };
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=deleteCmsEntryWorkflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/editorGateway/graphql/deleteCmsEntryWorkflow.js","sources":["../../../../src/features/editorGateway/graphql/deleteCmsEntryWorkflow.ts"],"sourcesContent":["import { EDITOR_WORKFLOW_FIELDS } from \"@webiny/app-workflows/editor/gateway/editorFields.js\";\nimport { ERROR_FIELDS } from \"@webiny/app-workflows/review/gateway/reviewFields.js\";\n\nexport const DELETE_CMS_ENTRY_WORKFLOW = /* GraphQL */ `\n mutation DeleteCmsEntryWorkflow($id: ID!) {\n cms {\n deleteCmsEntryWorkflow(id: $id) {\n data {\n ${EDITOR_WORKFLOW_FIELDS}\n }\n error {\n ${ERROR_FIELDS}\n }\n }\n }\n }\n`;\n"],"names":["DELETE_CMS_ENTRY_WORKFLOW","EDITOR_WORKFLOW_FIELDS","ERROR_FIELDS"],"mappings":";;AAGO,MAAMA,4BAA0C,CAAC;;;;;oBAKpC,EAAEC,uBAAuB;;;oBAGzB,EAAEC,aAAa;;;;;AAKnC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const GET_CMS_ENTRY_WORKFLOW = "\n query GetCmsEntryWorkflow($id: ID!) {\n cms {\n getCmsEntryWorkflow(id: $id) {\n data {\n \n id\n name\n models\n steps {\n id\n title\n color\n description\n type\n notifications {\n id\n }\n config\n }\n createdOn\n savedOn\n createdBy {\n id\n displayName\n }\n savedBy {\n id\n displayName\n }\n\n }\n error {\n \n code\n message\n data\n\n }\n }\n }\n }\n";
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { EDITOR_WORKFLOW_FIELDS } from "@webiny/app-workflows/editor/gateway/editorFields.js";
|
|
2
|
+
import { ERROR_FIELDS } from "@webiny/app-workflows/review/gateway/reviewFields.js";
|
|
3
|
+
const GET_CMS_ENTRY_WORKFLOW = `
|
|
4
|
+
query GetCmsEntryWorkflow($id: ID!) {
|
|
5
|
+
cms {
|
|
6
|
+
getCmsEntryWorkflow(id: $id) {
|
|
7
|
+
data {
|
|
8
|
+
${EDITOR_WORKFLOW_FIELDS}
|
|
9
|
+
}
|
|
10
|
+
error {
|
|
11
|
+
${ERROR_FIELDS}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
`;
|
|
17
|
+
export { GET_CMS_ENTRY_WORKFLOW };
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=getCmsEntryWorkflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/editorGateway/graphql/getCmsEntryWorkflow.js","sources":["../../../../src/features/editorGateway/graphql/getCmsEntryWorkflow.ts"],"sourcesContent":["import { EDITOR_WORKFLOW_FIELDS } from \"@webiny/app-workflows/editor/gateway/editorFields.js\";\nimport { ERROR_FIELDS } from \"@webiny/app-workflows/review/gateway/reviewFields.js\";\n\nexport const GET_CMS_ENTRY_WORKFLOW = /* GraphQL */ `\n query GetCmsEntryWorkflow($id: ID!) {\n cms {\n getCmsEntryWorkflow(id: $id) {\n data {\n ${EDITOR_WORKFLOW_FIELDS}\n }\n error {\n ${ERROR_FIELDS}\n }\n }\n }\n }\n`;\n"],"names":["GET_CMS_ENTRY_WORKFLOW","EDITOR_WORKFLOW_FIELDS","ERROR_FIELDS"],"mappings":";;AAGO,MAAMA,yBAAuC,CAAC;;;;;oBAKjC,EAAEC,uBAAuB;;;oBAGzB,EAAEC,aAAa;;;;;AAKnC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const INSPECT_CMS_ENTRY_ROUTING = "\n query InspectCmsEntryRouting($stepConfig: JSON!, $modelId: ID!, $requesterId: ID!, $folderId: ID) {\n cms {\n inspectCmsEntryRouting(stepConfig: $stepConfig, modelId: $modelId, requesterId: $requesterId, folderId: $folderId) {\n data {\n \n owner {\n id\n displayName\n }\n source\n ruleId\n strategy\n narrowedTeamId\n candidateIds\n candidateCount\n trace {\n ruleId\n outcome\n reason\n failedConditions\n }\n skipped {\n userId\n displayName\n reason\n }\n\n }\n error {\n \n code\n message\n data\n\n }\n }\n }\n }\n";
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { EDITOR_ROUTING_INSPECTION_FIELDS } from "@webiny/app-workflows/editor/gateway/editorFields.js";
|
|
2
|
+
import { ERROR_FIELDS } from "@webiny/app-workflows/review/gateway/reviewFields.js";
|
|
3
|
+
const INSPECT_CMS_ENTRY_ROUTING = `
|
|
4
|
+
query InspectCmsEntryRouting($stepConfig: JSON!, $modelId: ID!, $requesterId: ID!, $folderId: ID) {
|
|
5
|
+
cms {
|
|
6
|
+
inspectCmsEntryRouting(stepConfig: $stepConfig, modelId: $modelId, requesterId: $requesterId, folderId: $folderId) {
|
|
7
|
+
data {
|
|
8
|
+
${EDITOR_ROUTING_INSPECTION_FIELDS}
|
|
9
|
+
}
|
|
10
|
+
error {
|
|
11
|
+
${ERROR_FIELDS}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
`;
|
|
17
|
+
export { INSPECT_CMS_ENTRY_ROUTING };
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=inspectCmsEntryRouting.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/editorGateway/graphql/inspectCmsEntryRouting.js","sources":["../../../../src/features/editorGateway/graphql/inspectCmsEntryRouting.ts"],"sourcesContent":["import { EDITOR_ROUTING_INSPECTION_FIELDS } from \"@webiny/app-workflows/editor/gateway/editorFields.js\";\nimport { ERROR_FIELDS } from \"@webiny/app-workflows/review/gateway/reviewFields.js\";\n\nexport const INSPECT_CMS_ENTRY_ROUTING = /* GraphQL */ `\n query InspectCmsEntryRouting($stepConfig: JSON!, $modelId: ID!, $requesterId: ID!, $folderId: ID) {\n cms {\n inspectCmsEntryRouting(stepConfig: $stepConfig, modelId: $modelId, requesterId: $requesterId, folderId: $folderId) {\n data {\n ${EDITOR_ROUTING_INSPECTION_FIELDS}\n }\n error {\n ${ERROR_FIELDS}\n }\n }\n }\n }\n`;\n"],"names":["INSPECT_CMS_ENTRY_ROUTING","EDITOR_ROUTING_INSPECTION_FIELDS","ERROR_FIELDS"],"mappings":";;AAGO,MAAMA,4BAA0C,CAAC;;;;;oBAKpC,EAAEC,iCAAiC;;;oBAGnC,EAAEC,aAAa;;;;;AAKnC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const LIST_CMS_ENTRY_WORKFLOW_MODELS = "\n query ListCmsEntryWorkflowModels($search: String, $limit: Int, $after: String) {\n cms {\n listCmsEntryWorkflowModels(search: $search, limit: $limit, after: $after) {\n data {\n model\n modelId\n name\n workflow {\n id\n name\n stepCount\n }\n }\n meta {\n cursor\n hasMoreItems\n }\n error {\n \n code\n message\n data\n\n }\n }\n }\n }\n";
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { ERROR_FIELDS } from "@webiny/app-workflows/review/gateway/reviewFields.js";
|
|
2
|
+
const LIST_CMS_ENTRY_WORKFLOW_MODELS = `
|
|
3
|
+
query ListCmsEntryWorkflowModels($search: String, $limit: Int, $after: String) {
|
|
4
|
+
cms {
|
|
5
|
+
listCmsEntryWorkflowModels(search: $search, limit: $limit, after: $after) {
|
|
6
|
+
data {
|
|
7
|
+
model
|
|
8
|
+
modelId
|
|
9
|
+
name
|
|
10
|
+
workflow {
|
|
11
|
+
id
|
|
12
|
+
name
|
|
13
|
+
stepCount
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
meta {
|
|
17
|
+
cursor
|
|
18
|
+
hasMoreItems
|
|
19
|
+
}
|
|
20
|
+
error {
|
|
21
|
+
${ERROR_FIELDS}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
`;
|
|
27
|
+
export { LIST_CMS_ENTRY_WORKFLOW_MODELS };
|
|
28
|
+
|
|
29
|
+
//# sourceMappingURL=listCmsEntryWorkflowModels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/editorGateway/graphql/listCmsEntryWorkflowModels.js","sources":["../../../../src/features/editorGateway/graphql/listCmsEntryWorkflowModels.ts"],"sourcesContent":["import { ERROR_FIELDS } from \"@webiny/app-workflows/review/gateway/reviewFields.js\";\n\nexport const LIST_CMS_ENTRY_WORKFLOW_MODELS = /* GraphQL */ `\n query ListCmsEntryWorkflowModels($search: String, $limit: Int, $after: String) {\n cms {\n listCmsEntryWorkflowModels(search: $search, limit: $limit, after: $after) {\n data {\n model\n modelId\n name\n workflow {\n id\n name\n stepCount\n }\n }\n meta {\n cursor\n hasMoreItems\n }\n error {\n ${ERROR_FIELDS}\n }\n }\n }\n }\n`;\n"],"names":["LIST_CMS_ENTRY_WORKFLOW_MODELS","ERROR_FIELDS"],"mappings":";AAEO,MAAMA,iCAA+C,CAAC;;;;;;;;;;;;;;;;;;;oBAmBzC,EAAEC,aAAa;;;;;AAKnC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const STORE_CMS_ENTRY_WORKFLOW = "\n mutation StoreCmsEntryWorkflow($data: WorkflowsWorkflowInput!, $savedOn: String) {\n cms {\n storeCmsEntryWorkflow(data: $data, savedOn: $savedOn) {\n data {\n \n id\n name\n models\n steps {\n id\n title\n color\n description\n type\n notifications {\n id\n }\n config\n }\n createdOn\n savedOn\n createdBy {\n id\n displayName\n }\n savedBy {\n id\n displayName\n }\n\n }\n error {\n \n code\n message\n data\n\n }\n }\n }\n }\n";
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { EDITOR_WORKFLOW_FIELDS } from "@webiny/app-workflows/editor/gateway/editorFields.js";
|
|
2
|
+
import { ERROR_FIELDS } from "@webiny/app-workflows/review/gateway/reviewFields.js";
|
|
3
|
+
const STORE_CMS_ENTRY_WORKFLOW = `
|
|
4
|
+
mutation StoreCmsEntryWorkflow($data: WorkflowsWorkflowInput!, $savedOn: String) {
|
|
5
|
+
cms {
|
|
6
|
+
storeCmsEntryWorkflow(data: $data, savedOn: $savedOn) {
|
|
7
|
+
data {
|
|
8
|
+
${EDITOR_WORKFLOW_FIELDS}
|
|
9
|
+
}
|
|
10
|
+
error {
|
|
11
|
+
${ERROR_FIELDS}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
`;
|
|
17
|
+
export { STORE_CMS_ENTRY_WORKFLOW };
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=storeCmsEntryWorkflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/editorGateway/graphql/storeCmsEntryWorkflow.js","sources":["../../../../src/features/editorGateway/graphql/storeCmsEntryWorkflow.ts"],"sourcesContent":["import { EDITOR_WORKFLOW_FIELDS } from \"@webiny/app-workflows/editor/gateway/editorFields.js\";\nimport { ERROR_FIELDS } from \"@webiny/app-workflows/review/gateway/reviewFields.js\";\n\nexport const STORE_CMS_ENTRY_WORKFLOW = /* GraphQL */ `\n mutation StoreCmsEntryWorkflow($data: WorkflowsWorkflowInput!, $savedOn: String) {\n cms {\n storeCmsEntryWorkflow(data: $data, savedOn: $savedOn) {\n data {\n ${EDITOR_WORKFLOW_FIELDS}\n }\n error {\n ${ERROR_FIELDS}\n }\n }\n }\n }\n`;\n"],"names":["STORE_CMS_ENTRY_WORKFLOW","EDITOR_WORKFLOW_FIELDS","ERROR_FIELDS"],"mappings":";;AAGO,MAAMA,2BAAyC,CAAC;;;;;oBAKnC,EAAEC,uBAAuB;;;oBAGzB,EAAEC,aAAa;;;;;AAKnC,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { ListFoldersGateway } from "@webiny/app-aco/features/folders/listFolders/abstractions.js";
|
|
3
|
+
import { ModelsCache } from "@webiny/app-headless-cms/features/model/abstractions.js";
|
|
4
|
+
import { ListModelsUseCase } from "@webiny/app-headless-cms/features/model/listModels/abstractions.js";
|
|
5
|
+
import type { AppFolder } from "@webiny/app-workflows/editor/WorkflowEditorAppAdapter.js";
|
|
6
|
+
import { CmsReviewContentAdapter } from "../../features/gateway/CmsReviewContentAdapter/abstractions.js";
|
|
7
|
+
import { CmsWorkflowEditorAppAdapter as AdapterAbstraction } from "./abstractions.js";
|
|
8
|
+
declare class CmsWorkflowEditorAppAdapterImpl implements AdapterAbstraction.Interface {
|
|
9
|
+
private listModels;
|
|
10
|
+
private modelsCache;
|
|
11
|
+
readonly contentAdapter: CmsReviewContentAdapter.Interface;
|
|
12
|
+
private listFoldersGateway;
|
|
13
|
+
readonly appKind = "cms";
|
|
14
|
+
readonly panelLabel = "Content models";
|
|
15
|
+
readonly appliesToLabel = "Headless CMS model";
|
|
16
|
+
constructor(listModels: ListModelsUseCase.Interface, modelsCache: ModelsCache.Interface, contentAdapter: CmsReviewContentAdapter.Interface, listFoldersGateway: ListFoldersGateway.Interface);
|
|
17
|
+
init(): Promise<void>;
|
|
18
|
+
renderModelIcon(modelId: string): React.ReactNode;
|
|
19
|
+
getFolderType(modelId: string | null): string;
|
|
20
|
+
listFolders(modelId: string | null): Promise<AppFolder[]>;
|
|
21
|
+
}
|
|
22
|
+
export declare const CmsWorkflowEditorAppAdapter: typeof CmsWorkflowEditorAppAdapterImpl & {
|
|
23
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/app-workflows/editor/WorkflowEditorAppAdapter.js").WorkflowEditorAppAdapter>;
|
|
24
|
+
};
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import "react";
|
|
2
|
+
import { ROOT_FOLDER } from "@webiny/app-aco/constants.js";
|
|
3
|
+
import { ListFoldersGateway } from "@webiny/app-aco/features/folders/listFolders/abstractions.js";
|
|
4
|
+
import { ModelsCache } from "@webiny/app-headless-cms/features/model/abstractions.js";
|
|
5
|
+
import { ListModelsUseCase } from "@webiny/app-headless-cms/features/model/listModels/abstractions.js";
|
|
6
|
+
import { buildAppFolders } from "@webiny/app-workflows/editor/folders/buildAppFolders.js";
|
|
7
|
+
import { CmsReviewContentAdapter } from "../gateway/CmsReviewContentAdapter/abstractions.js";
|
|
8
|
+
import { renderModelIconOrFallback } from "../../utils/renderModelIconOrFallback.js";
|
|
9
|
+
import { CmsWorkflowEditorAppAdapter } from "./abstractions.js";
|
|
10
|
+
class CmsWorkflowEditorAppAdapterImpl {
|
|
11
|
+
constructor(listModels, modelsCache, contentAdapter, listFoldersGateway){
|
|
12
|
+
this.listModels = listModels;
|
|
13
|
+
this.modelsCache = modelsCache;
|
|
14
|
+
this.contentAdapter = contentAdapter;
|
|
15
|
+
this.listFoldersGateway = listFoldersGateway;
|
|
16
|
+
this.appKind = "cms";
|
|
17
|
+
this.panelLabel = "Content models";
|
|
18
|
+
this.appliesToLabel = "Headless CMS model";
|
|
19
|
+
}
|
|
20
|
+
async init() {
|
|
21
|
+
try {
|
|
22
|
+
await this.listModels.execute();
|
|
23
|
+
} catch {}
|
|
24
|
+
}
|
|
25
|
+
renderModelIcon(modelId) {
|
|
26
|
+
const model = this.modelsCache.getItem((item)=>item.modelId === modelId);
|
|
27
|
+
if (!model) return null;
|
|
28
|
+
return renderModelIconOrFallback(model, modelId);
|
|
29
|
+
}
|
|
30
|
+
getFolderType(modelId) {
|
|
31
|
+
return `cms:${modelId ?? ""}`;
|
|
32
|
+
}
|
|
33
|
+
async listFolders(modelId) {
|
|
34
|
+
if (null === modelId) return [];
|
|
35
|
+
const type = this.getFolderType(modelId);
|
|
36
|
+
const folders = await this.listFoldersGateway.execute(type);
|
|
37
|
+
return buildAppFolders(folders, ROOT_FOLDER);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
const CmsWorkflowEditorAppAdapter_CmsWorkflowEditorAppAdapter = CmsWorkflowEditorAppAdapter.createImplementation({
|
|
41
|
+
implementation: CmsWorkflowEditorAppAdapterImpl,
|
|
42
|
+
dependencies: [
|
|
43
|
+
ListModelsUseCase,
|
|
44
|
+
ModelsCache,
|
|
45
|
+
CmsReviewContentAdapter,
|
|
46
|
+
ListFoldersGateway
|
|
47
|
+
]
|
|
48
|
+
});
|
|
49
|
+
export { CmsWorkflowEditorAppAdapter_CmsWorkflowEditorAppAdapter as CmsWorkflowEditorAppAdapter };
|
|
50
|
+
|
|
51
|
+
//# sourceMappingURL=CmsWorkflowEditorAppAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/editorMounting/CmsWorkflowEditorAppAdapter.js","sources":["../../../src/features/editorMounting/CmsWorkflowEditorAppAdapter.tsx"],"sourcesContent":["import React from \"react\";\nimport { ROOT_FOLDER } from \"@webiny/app-aco/constants.js\";\nimport { ListFoldersGateway } from \"@webiny/app-aco/features/folders/listFolders/abstractions.js\";\nimport { ModelsCache } from \"@webiny/app-headless-cms/features/model/abstractions.js\";\nimport { ListModelsUseCase } from \"@webiny/app-headless-cms/features/model/listModels/abstractions.js\";\nimport type { AppFolder } from \"@webiny/app-workflows/editor/WorkflowEditorAppAdapter.js\";\nimport { buildAppFolders } from \"@webiny/app-workflows/editor/folders/buildAppFolders.js\";\nimport { CmsReviewContentAdapter } from \"~/features/gateway/CmsReviewContentAdapter/abstractions.js\";\nimport { renderModelIconOrFallback } from \"~/utils/renderModelIconOrFallback.js\";\nimport { CmsWorkflowEditorAppAdapter as AdapterAbstraction } from \"./abstractions.js\";\n\n/*\n * The CMS knowledge of the shared editor view (R280): the models list fills the admin\n * `ModelsCache` (the editor's own list carries no icons), the icon is drawn from `CmsModel.icon`.\n * `ListModelsUseCase` fills the cache once and serves it afterwards. The folders of a model are the\n * ACO folders of type `cms:<modelId>` the admin can see (R292).\n */\nclass CmsWorkflowEditorAppAdapterImpl implements AdapterAbstraction.Interface {\n public readonly appKind = \"cms\";\n public readonly panelLabel = \"Content models\";\n public readonly appliesToLabel = \"Headless CMS model\";\n\n constructor(\n private listModels: ListModelsUseCase.Interface,\n private modelsCache: ModelsCache.Interface,\n public readonly contentAdapter: CmsReviewContentAdapter.Interface,\n private listFoldersGateway: ListFoldersGateway.Interface\n ) {}\n\n async init(): Promise<void> {\n try {\n await this.listModels.execute();\n } catch {\n // The icons are cosmetic; an editor without CMS model permissions must still get the editor.\n }\n }\n\n renderModelIcon(modelId: string): React.ReactNode {\n const model = this.modelsCache.getItem(item => item.modelId === modelId);\n if (!model) {\n return null;\n }\n\n return renderModelIconOrFallback(model, modelId);\n }\n\n getFolderType(modelId: string | null): string {\n return `cms:${modelId ?? \"\"}`;\n }\n\n async listFolders(modelId: string | null): Promise<AppFolder[]> {\n // Without a model there is no folder type to ask for.\n if (modelId === null) {\n return [];\n }\n\n const type = this.getFolderType(modelId);\n const folders = await this.listFoldersGateway.execute(type);\n\n return buildAppFolders(folders, ROOT_FOLDER);\n }\n}\n\nexport const CmsWorkflowEditorAppAdapter = AdapterAbstraction.createImplementation({\n implementation: CmsWorkflowEditorAppAdapterImpl,\n dependencies: [ListModelsUseCase, ModelsCache, CmsReviewContentAdapter, ListFoldersGateway]\n});\n"],"names":["CmsWorkflowEditorAppAdapterImpl","listModels","modelsCache","contentAdapter","listFoldersGateway","modelId","model","item","renderModelIconOrFallback","type","folders","buildAppFolders","ROOT_FOLDER","CmsWorkflowEditorAppAdapter","AdapterAbstraction","ListModelsUseCase","ModelsCache","CmsReviewContentAdapter","ListFoldersGateway"],"mappings":";;;;;;;;;AAiBA,MAAMA;IAKF,YACYC,UAAuC,EACvCC,WAAkC,EAC1BC,cAAiD,EACzDC,kBAAgD,CAC1D;aAJUH,UAAU,GAAVA;aACAC,WAAW,GAAXA;aACQC,cAAc,GAAdA;aACRC,kBAAkB,GAAlBA;aARI,OAAO,GAAG;aACV,UAAU,GAAG;aACb,cAAc,GAAG;IAO9B;IAEH,MAAM,OAAsB;QACxB,IAAI;YACA,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO;QACjC,EAAE,OAAM,CAER;IACJ;IAEA,gBAAgBC,OAAe,EAAmB;QAC9C,MAAMC,QAAQ,IAAI,CAAC,WAAW,CAAC,OAAO,CAACC,CAAAA,OAAQA,KAAK,OAAO,KAAKF;QAChE,IAAI,CAACC,OACD,OAAO;QAGX,OAAOE,0BAA0BF,OAAOD;IAC5C;IAEA,cAAcA,OAAsB,EAAU;QAC1C,OAAO,CAAC,IAAI,EAAEA,WAAW,IAAI;IACjC;IAEA,MAAM,YAAYA,OAAsB,EAAwB;QAE5D,IAAIA,AAAY,SAAZA,SACA,OAAO,EAAE;QAGb,MAAMI,OAAO,IAAI,CAAC,aAAa,CAACJ;QAChC,MAAMK,UAAU,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAACD;QAEtD,OAAOE,gBAAgBD,SAASE;IACpC;AACJ;AAEO,MAAMC,0DAA8BC,4BAAAA,oBAAuC,CAAC;IAC/E,gBAAgBd;IAChB,cAAc;QAACe;QAAmBC;QAAaC;QAAyBC;KAAmB;AAC/F"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|