@strapi/review-workflows 0.0.0-experimental.74c69aeafc770d59d5b3d5d37cd249934ef395ba → 0.0.0-experimental.75ad9f23733c38c3e329f29b5c2b442c7cccce33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +12 -17
- package/dist/admin/assets/balloon.png.js +6 -0
- package/dist/admin/assets/balloon.png.js.map +1 -0
- package/dist/admin/assets/balloon.png.mjs +4 -0
- package/dist/admin/assets/balloon.png.mjs.map +1 -0
- package/dist/admin/assets/purchase-page-illustration-dark.svg.js +6 -0
- package/dist/admin/assets/purchase-page-illustration-dark.svg.js.map +1 -0
- package/dist/admin/assets/purchase-page-illustration-dark.svg.mjs +4 -0
- package/dist/admin/assets/purchase-page-illustration-dark.svg.mjs.map +1 -0
- package/dist/admin/assets/purchase-page-illustration-light.svg.js +6 -0
- package/dist/admin/assets/purchase-page-illustration-light.svg.js.map +1 -0
- package/dist/admin/assets/purchase-page-illustration-light.svg.mjs +4 -0
- package/dist/admin/assets/purchase-page-illustration-light.svg.mjs.map +1 -0
- package/dist/admin/components/LimitsModal.js +122 -0
- package/dist/admin/components/LimitsModal.js.map +1 -0
- package/dist/admin/components/LimitsModal.mjs +120 -0
- package/dist/admin/components/LimitsModal.mjs.map +1 -0
- package/dist/admin/constants.js +18 -0
- package/dist/admin/constants.js.map +1 -0
- package/dist/admin/constants.mjs +12 -0
- package/dist/admin/constants.mjs.map +1 -0
- package/dist/admin/index.js +93 -0
- package/dist/admin/index.js.map +1 -0
- package/dist/admin/index.mjs +89 -0
- package/dist/admin/index.mjs.map +1 -0
- package/dist/admin/modules/hooks.js +8 -0
- package/dist/admin/modules/hooks.js.map +1 -0
- package/dist/admin/modules/hooks.mjs +6 -0
- package/dist/admin/modules/hooks.mjs.map +1 -0
- package/dist/admin/router.js +30 -0
- package/dist/admin/router.js.map +1 -0
- package/dist/admin/router.mjs +28 -0
- package/dist/admin/router.mjs.map +1 -0
- package/dist/admin/routes/content-manager/model/components/TableColumns.js +44 -0
- package/dist/admin/routes/content-manager/model/components/TableColumns.js.map +1 -0
- package/dist/admin/routes/content-manager/model/components/TableColumns.mjs +41 -0
- package/dist/admin/routes/content-manager/model/components/TableColumns.mjs.map +1 -0
- package/dist/admin/routes/content-manager/model/constants.js +60 -0
- package/dist/admin/routes/content-manager/model/constants.js.map +1 -0
- package/dist/admin/routes/content-manager/model/constants.mjs +58 -0
- package/dist/admin/routes/content-manager/model/constants.mjs.map +1 -0
- package/dist/admin/routes/content-manager/model/id/components/AssigneeSelect.js +169 -0
- package/dist/admin/routes/content-manager/model/id/components/AssigneeSelect.js.map +1 -0
- package/dist/admin/routes/content-manager/model/id/components/AssigneeSelect.mjs +148 -0
- package/dist/admin/routes/content-manager/model/id/components/AssigneeSelect.mjs.map +1 -0
- package/dist/admin/routes/content-manager/model/id/components/Header.js +31 -0
- package/dist/admin/routes/content-manager/model/id/components/Header.js.map +1 -0
- package/dist/admin/routes/content-manager/model/id/components/Header.mjs +29 -0
- package/dist/admin/routes/content-manager/model/id/components/Header.mjs.map +1 -0
- package/dist/admin/routes/content-manager/model/id/components/Panel.js +39 -0
- package/dist/admin/routes/content-manager/model/id/components/Panel.js.map +1 -0
- package/dist/admin/routes/content-manager/model/id/components/Panel.mjs +37 -0
- package/dist/admin/routes/content-manager/model/id/components/Panel.mjs.map +1 -0
- package/dist/admin/routes/content-manager/model/id/components/StageSelect.js +329 -0
- package/dist/admin/routes/content-manager/model/id/components/StageSelect.js.map +1 -0
- package/dist/admin/routes/content-manager/model/id/components/StageSelect.mjs +308 -0
- package/dist/admin/routes/content-manager/model/id/components/StageSelect.mjs.map +1 -0
- package/dist/admin/routes/content-manager/model/id/components/constants.js +8 -0
- package/dist/admin/routes/content-manager/model/id/components/constants.js.map +1 -0
- package/dist/admin/routes/content-manager/model/id/components/constants.mjs +5 -0
- package/dist/admin/routes/content-manager/model/id/components/constants.mjs.map +1 -0
- package/dist/admin/routes/purchase-review-workflows.js +194 -0
- package/dist/admin/routes/purchase-review-workflows.js.map +1 -0
- package/dist/admin/routes/purchase-review-workflows.mjs +192 -0
- package/dist/admin/routes/purchase-review-workflows.mjs.map +1 -0
- package/dist/admin/routes/settings/components/AddStage.js +51 -0
- package/dist/admin/routes/settings/components/AddStage.js.map +1 -0
- package/dist/admin/routes/settings/components/AddStage.mjs +49 -0
- package/dist/admin/routes/settings/components/AddStage.mjs.map +1 -0
- package/dist/admin/routes/settings/components/Layout.js +86 -0
- package/dist/admin/routes/settings/components/Layout.js.map +1 -0
- package/dist/admin/routes/settings/components/Layout.mjs +82 -0
- package/dist/admin/routes/settings/components/Layout.mjs.map +1 -0
- package/dist/admin/routes/settings/components/StageDragPreview.js +40 -0
- package/dist/admin/routes/settings/components/StageDragPreview.js.map +1 -0
- package/dist/admin/routes/settings/components/StageDragPreview.mjs +38 -0
- package/dist/admin/routes/settings/components/StageDragPreview.mjs.map +1 -0
- package/dist/admin/routes/settings/components/Stages.js +593 -0
- package/dist/admin/routes/settings/components/Stages.js.map +1 -0
- package/dist/admin/routes/settings/components/Stages.mjs +572 -0
- package/dist/admin/routes/settings/components/Stages.mjs.map +1 -0
- package/dist/admin/routes/settings/components/WorkflowAttributes.js +203 -0
- package/dist/admin/routes/settings/components/WorkflowAttributes.js.map +1 -0
- package/dist/admin/routes/settings/components/WorkflowAttributes.mjs +201 -0
- package/dist/admin/routes/settings/components/WorkflowAttributes.mjs.map +1 -0
- package/dist/admin/routes/settings/constants.js +8 -0
- package/dist/admin/routes/settings/constants.js.map +1 -0
- package/dist/admin/routes/settings/constants.mjs +6 -0
- package/dist/admin/routes/settings/constants.mjs.map +1 -0
- package/dist/admin/routes/settings/hooks/useDragAndDrop.js +193 -0
- package/dist/admin/routes/settings/hooks/useDragAndDrop.js.map +1 -0
- package/dist/admin/routes/settings/hooks/useDragAndDrop.mjs +170 -0
- package/dist/admin/routes/settings/hooks/useDragAndDrop.mjs.map +1 -0
- package/dist/admin/routes/settings/hooks/useKeyboardDragAndDrop.js +94 -0
- package/dist/admin/routes/settings/hooks/useKeyboardDragAndDrop.js.map +1 -0
- package/dist/admin/routes/settings/hooks/useKeyboardDragAndDrop.mjs +73 -0
- package/dist/admin/routes/settings/hooks/useKeyboardDragAndDrop.mjs.map +1 -0
- package/dist/admin/routes/settings/hooks/useReviewWorkflows.js +171 -0
- package/dist/admin/routes/settings/hooks/useReviewWorkflows.js.map +1 -0
- package/dist/admin/routes/settings/hooks/useReviewWorkflows.mjs +150 -0
- package/dist/admin/routes/settings/hooks/useReviewWorkflows.mjs.map +1 -0
- package/dist/admin/routes/settings/id.js +404 -0
- package/dist/admin/routes/settings/id.js.map +1 -0
- package/dist/admin/routes/settings/id.mjs +382 -0
- package/dist/admin/routes/settings/id.mjs.map +1 -0
- package/dist/admin/routes/settings/index.js +293 -0
- package/dist/admin/routes/settings/index.js.map +1 -0
- package/dist/admin/routes/settings/index.mjs +271 -0
- package/dist/admin/routes/settings/index.mjs.map +1 -0
- package/dist/admin/services/admin.js +23 -0
- package/dist/admin/services/admin.js.map +1 -0
- package/dist/admin/services/admin.mjs +21 -0
- package/dist/admin/services/admin.mjs.map +1 -0
- package/dist/admin/services/api.js +15 -0
- package/dist/admin/services/api.js.map +1 -0
- package/dist/admin/services/api.mjs +13 -0
- package/dist/admin/services/api.mjs.map +1 -0
- package/dist/admin/services/content-manager.js +101 -0
- package/dist/admin/services/content-manager.js.map +1 -0
- package/dist/admin/services/content-manager.mjs +96 -0
- package/dist/admin/services/content-manager.mjs.map +1 -0
- package/dist/admin/services/settings.js +123 -0
- package/dist/admin/services/settings.js.map +1 -0
- package/dist/admin/services/settings.mjs +118 -0
- package/dist/admin/services/settings.mjs.map +1 -0
- package/dist/admin/src/components/LimitsModal.d.ts +13 -0
- package/dist/admin/src/constants.d.ts +9 -0
- package/dist/admin/src/index.d.ts +3 -0
- package/dist/admin/src/modules/hooks.d.ts +7 -0
- package/dist/admin/src/router.d.ts +2 -0
- package/dist/admin/src/routes/content-manager/model/components/AssigneeFilter.d.ts +7 -0
- package/dist/admin/src/routes/content-manager/model/components/StageFilter.d.ts +8 -0
- package/dist/admin/src/routes/content-manager/model/components/TableColumns.d.ts +18 -0
- package/dist/admin/src/routes/content-manager/model/configure/constants.d.ts +7 -0
- package/dist/admin/src/routes/content-manager/model/constants.d.ts +71 -0
- package/dist/admin/src/routes/content-manager/model/id/components/AssigneeSelect.d.ts +4 -0
- package/dist/admin/src/routes/content-manager/model/id/components/Header.d.ts +5 -0
- package/dist/admin/src/routes/content-manager/model/id/components/Panel.d.ts +3 -0
- package/dist/admin/src/routes/content-manager/model/id/components/StageSelect.d.ts +3 -0
- package/dist/admin/src/routes/content-manager/model/id/components/constants.d.ts +2 -0
- package/dist/admin/src/routes/purchase-review-workflows.d.ts +2 -0
- package/dist/admin/src/routes/settings/components/AddStage.d.ts +2 -0
- package/dist/admin/src/routes/settings/components/Layout.d.ts +12 -0
- package/dist/admin/src/routes/settings/components/StageDragPreview.d.ts +6 -0
- package/dist/admin/src/routes/settings/components/Stages.d.ts +12 -0
- package/dist/admin/src/routes/settings/components/WorkflowAttributes.d.ts +6 -0
- package/dist/admin/src/routes/settings/constants.d.ts +2 -0
- package/dist/admin/src/routes/settings/hooks/useDragAndDrop.d.ts +51 -0
- package/dist/admin/src/routes/settings/hooks/useKeyboardDragAndDrop.d.ts +14 -0
- package/dist/admin/src/routes/settings/hooks/useReviewWorkflows.d.ts +25 -0
- package/dist/admin/src/routes/settings/id.d.ts +2 -0
- package/dist/admin/src/routes/settings/index.d.ts +3 -0
- package/dist/admin/src/services/admin.d.ts +5 -0
- package/dist/admin/src/services/api.d.ts +2 -0
- package/dist/admin/src/services/content-manager.d.ts +38 -0
- package/dist/admin/src/services/settings.d.ts +1743 -0
- package/dist/admin/src/utils/api.d.ts +23 -0
- package/dist/admin/src/utils/cm-hooks.d.ts +46 -0
- package/dist/admin/src/utils/colors.d.ts +9 -0
- package/dist/admin/src/utils/translations.d.ts +3 -0
- package/dist/admin/src/utils/users.d.ts +6 -0
- package/dist/admin/translations/en.json.js +20 -0
- package/dist/admin/translations/en.json.js.map +1 -0
- package/dist/admin/translations/en.json.mjs +18 -0
- package/dist/admin/translations/en.json.mjs.map +1 -0
- package/dist/admin/translations/uk.json.js +16 -0
- package/dist/admin/translations/uk.json.js.map +1 -0
- package/dist/admin/translations/uk.json.mjs +14 -0
- package/dist/admin/translations/uk.json.mjs.map +1 -0
- package/dist/admin/utils/api.js +22 -0
- package/dist/admin/utils/api.js.map +1 -0
- package/dist/admin/utils/api.mjs +19 -0
- package/dist/admin/utils/api.mjs.map +1 -0
- package/dist/admin/utils/cm-hooks.js +23 -0
- package/dist/admin/utils/cm-hooks.js.map +1 -0
- package/dist/admin/utils/cm-hooks.mjs +21 -0
- package/dist/admin/utils/cm-hooks.mjs.map +1 -0
- package/dist/admin/utils/colors.js +50 -0
- package/dist/admin/utils/colors.js.map +1 -0
- package/dist/admin/utils/colors.mjs +47 -0
- package/dist/admin/utils/colors.mjs.map +1 -0
- package/dist/admin/utils/translations.js +11 -0
- package/dist/admin/utils/translations.js.map +1 -0
- package/dist/admin/utils/translations.mjs +9 -0
- package/dist/admin/utils/translations.mjs.map +1 -0
- package/dist/admin/utils/users.js +17 -0
- package/dist/admin/utils/users.js.map +1 -0
- package/dist/admin/utils/users.mjs +15 -0
- package/dist/admin/utils/users.mjs.map +1 -0
- package/dist/server/bootstrap.js +54 -0
- package/dist/server/bootstrap.js.map +1 -0
- package/dist/server/bootstrap.mjs +52 -0
- package/dist/server/bootstrap.mjs.map +1 -0
- package/dist/server/config/actions.js +47 -0
- package/dist/server/config/actions.js.map +1 -0
- package/dist/server/config/actions.mjs +45 -0
- package/dist/server/config/actions.mjs.map +1 -0
- package/dist/server/constants/default-stages.json.js +23 -0
- package/dist/server/constants/default-stages.json.js.map +1 -0
- package/dist/server/constants/default-stages.json.mjs +21 -0
- package/dist/server/constants/default-stages.json.mjs.map +1 -0
- package/dist/server/constants/default-workflow.json.js +12 -0
- package/dist/server/constants/default-workflow.json.js.map +1 -0
- package/dist/server/constants/default-workflow.json.mjs +7 -0
- package/dist/server/constants/default-workflow.json.mjs.map +1 -0
- package/dist/server/constants/webhook-events.js +12 -0
- package/dist/server/constants/webhook-events.js.map +1 -0
- package/dist/server/constants/webhook-events.mjs +7 -0
- package/dist/server/constants/webhook-events.mjs.map +1 -0
- package/dist/server/constants/workflows.js +53 -0
- package/dist/server/constants/workflows.js.map +1 -0
- package/dist/server/constants/workflows.mjs +42 -0
- package/dist/server/constants/workflows.mjs.map +1 -0
- package/dist/server/content-types/index.js +12 -0
- package/dist/server/content-types/index.js.map +1 -0
- package/dist/server/content-types/index.mjs +10 -0
- package/dist/server/content-types/index.mjs.map +1 -0
- package/dist/server/content-types/workflow/index.js +50 -0
- package/dist/server/content-types/workflow/index.js.map +1 -0
- package/dist/server/content-types/workflow/index.mjs +48 -0
- package/dist/server/content-types/workflow/index.mjs.map +1 -0
- package/dist/server/content-types/workflow-stage/index.js +54 -0
- package/dist/server/content-types/workflow-stage/index.js.map +1 -0
- package/dist/server/content-types/workflow-stage/index.mjs +52 -0
- package/dist/server/content-types/workflow-stage/index.mjs.map +1 -0
- package/dist/server/controllers/assignees.js +57 -0
- package/dist/server/controllers/assignees.js.map +1 -0
- package/dist/server/controllers/assignees.mjs +55 -0
- package/dist/server/controllers/assignees.mjs.map +1 -0
- package/dist/server/controllers/index.js +14 -0
- package/dist/server/controllers/index.js.map +1 -0
- package/dist/server/controllers/index.mjs +12 -0
- package/dist/server/controllers/index.mjs.map +1 -0
- package/dist/server/controllers/stages.js +167 -0
- package/dist/server/controllers/stages.js.map +1 -0
- package/dist/server/controllers/stages.mjs +165 -0
- package/dist/server/controllers/stages.mjs.map +1 -0
- package/dist/server/controllers/workflows.js +136 -0
- package/dist/server/controllers/workflows.js.map +1 -0
- package/dist/server/controllers/workflows.mjs +134 -0
- package/dist/server/controllers/workflows.mjs.map +1 -0
- package/dist/server/destroy.js +6 -0
- package/dist/server/destroy.js.map +1 -0
- package/dist/server/destroy.mjs +4 -0
- package/dist/server/destroy.mjs.map +1 -0
- package/dist/server/index.js +32 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/index.mjs +30 -0
- package/dist/server/index.mjs.map +1 -0
- package/dist/server/middlewares/review-workflows.js +42 -0
- package/dist/server/middlewares/review-workflows.js.map +1 -0
- package/dist/server/middlewares/review-workflows.mjs +37 -0
- package/dist/server/middlewares/review-workflows.mjs.map +1 -0
- package/dist/server/migrations/handle-deleted-ct-in-workflows.js +40 -0
- package/dist/server/migrations/handle-deleted-ct-in-workflows.js.map +1 -0
- package/dist/server/migrations/handle-deleted-ct-in-workflows.mjs +38 -0
- package/dist/server/migrations/handle-deleted-ct-in-workflows.mjs.map +1 -0
- package/dist/server/migrations/multiple-workflows.js +41 -0
- package/dist/server/migrations/multiple-workflows.js.map +1 -0
- package/dist/server/migrations/multiple-workflows.mjs +39 -0
- package/dist/server/migrations/multiple-workflows.mjs.map +1 -0
- package/dist/server/migrations/set-stages-default-color.js +22 -0
- package/dist/server/migrations/set-stages-default-color.js.map +1 -0
- package/dist/server/migrations/set-stages-default-color.mjs +20 -0
- package/dist/server/migrations/set-stages-default-color.mjs.map +1 -0
- package/dist/server/migrations/set-stages-roles.js +56 -0
- package/dist/server/migrations/set-stages-roles.js.map +1 -0
- package/dist/server/migrations/set-stages-roles.mjs +54 -0
- package/dist/server/migrations/set-stages-roles.mjs.map +1 -0
- package/dist/server/migrations/set-workflow-default-name.js +29 -0
- package/dist/server/migrations/set-workflow-default-name.js.map +1 -0
- package/dist/server/migrations/set-workflow-default-name.mjs +27 -0
- package/dist/server/migrations/set-workflow-default-name.mjs.map +1 -0
- package/dist/server/migrations/shorten-stage-attribute.js +45 -0
- package/dist/server/migrations/shorten-stage-attribute.js.map +1 -0
- package/dist/server/migrations/shorten-stage-attribute.mjs +43 -0
- package/dist/server/migrations/shorten-stage-attribute.mjs.map +1 -0
- package/dist/server/register.js +116 -0
- package/dist/server/register.js.map +1 -0
- package/dist/server/register.mjs +114 -0
- package/dist/server/register.mjs.map +1 -0
- package/dist/server/routes/index.js +10 -0
- package/dist/server/routes/index.js.map +1 -0
- package/dist/server/routes/index.mjs +8 -0
- package/dist/server/routes/index.mjs.map +1 -0
- package/dist/server/routes/review-workflows.js +186 -0
- package/dist/server/routes/review-workflows.js.map +1 -0
- package/dist/server/routes/review-workflows.mjs +184 -0
- package/dist/server/routes/review-workflows.mjs.map +1 -0
- package/dist/server/routes/utils.js +11 -0
- package/dist/server/routes/utils.js.map +1 -0
- package/dist/server/routes/utils.mjs +9 -0
- package/dist/server/routes/utils.mjs.map +1 -0
- package/dist/server/services/assignees.js +68 -0
- package/dist/server/services/assignees.js.map +1 -0
- package/dist/server/services/assignees.mjs +66 -0
- package/dist/server/services/assignees.mjs.map +1 -0
- package/dist/server/services/document-service-middleware.js +130 -0
- package/dist/server/services/document-service-middleware.js.map +1 -0
- package/dist/server/services/document-service-middleware.mjs +128 -0
- package/dist/server/services/document-service-middleware.mjs.map +1 -0
- package/dist/server/services/index.js +24 -0
- package/dist/server/services/index.js.map +1 -0
- package/dist/server/services/index.mjs +22 -0
- package/dist/server/services/index.mjs.map +1 -0
- package/dist/server/services/metrics/index.js +67 -0
- package/dist/server/services/metrics/index.js.map +1 -0
- package/dist/server/services/metrics/index.mjs +55 -0
- package/dist/server/services/metrics/index.mjs.map +1 -0
- package/dist/server/services/metrics/weekly-metrics.js +84 -0
- package/dist/server/services/metrics/weekly-metrics.js.map +1 -0
- package/dist/server/services/metrics/weekly-metrics.mjs +82 -0
- package/dist/server/services/metrics/weekly-metrics.mjs.map +1 -0
- package/dist/server/services/stage-permissions.js +59 -0
- package/dist/server/services/stage-permissions.js.map +1 -0
- package/dist/server/services/stage-permissions.mjs +57 -0
- package/dist/server/services/stage-permissions.mjs.map +1 -0
- package/dist/server/services/stages.js +353 -0
- package/dist/server/services/stages.js.map +1 -0
- package/dist/server/services/stages.mjs +351 -0
- package/dist/server/services/stages.mjs.map +1 -0
- package/dist/server/services/validation.js +69 -0
- package/dist/server/services/validation.js.map +1 -0
- package/dist/server/services/validation.mjs +67 -0
- package/dist/server/services/validation.mjs.map +1 -0
- package/dist/server/services/workflow-content-types.js +90 -0
- package/dist/server/services/workflow-content-types.js.map +1 -0
- package/dist/server/services/workflow-content-types.mjs +88 -0
- package/dist/server/services/workflow-content-types.mjs.map +1 -0
- package/dist/server/services/workflows.js +279 -0
- package/dist/server/services/workflows.js.map +1 -0
- package/dist/server/services/workflows.mjs +277 -0
- package/dist/server/services/workflows.mjs.map +1 -0
- package/dist/server/src/bootstrap.d.ts +3 -0
- package/dist/server/src/bootstrap.d.ts.map +1 -0
- package/dist/server/src/config/actions.d.ts +19 -0
- package/dist/server/src/config/actions.d.ts.map +1 -0
- package/dist/server/src/constants/webhook-events.d.ts +6 -0
- package/dist/server/src/constants/webhook-events.d.ts.map +1 -0
- package/dist/server/src/constants/workflows.d.ts +35 -0
- package/dist/server/src/constants/workflows.d.ts.map +1 -0
- package/dist/server/src/content-types/index.d.ts +96 -0
- package/dist/server/src/content-types/index.d.ts.map +1 -0
- package/dist/server/src/content-types/workflow/index.d.ts +47 -0
- package/dist/server/src/content-types/workflow/index.d.ts.map +1 -0
- package/dist/server/src/content-types/workflow-stage/index.d.ts +49 -0
- package/dist/server/src/content-types/workflow-stage/index.d.ts.map +1 -0
- package/dist/server/src/controllers/assignees.d.ts +19 -0
- package/dist/server/src/controllers/assignees.d.ts.map +1 -0
- package/dist/server/src/controllers/index.d.ts +20 -0
- package/dist/server/src/controllers/index.d.ts.map +1 -0
- package/dist/server/src/controllers/stages.d.ts +39 -0
- package/dist/server/src/controllers/stages.d.ts.map +1 -0
- package/dist/server/src/controllers/workflows.d.ts +25 -0
- package/dist/server/src/controllers/workflows.d.ts.map +1 -0
- package/dist/server/src/destroy.d.ts +6 -0
- package/dist/server/src/destroy.d.ts.map +1 -0
- package/dist/server/src/index.d.ts +343 -0
- package/dist/server/src/index.d.ts.map +1 -0
- package/dist/server/src/middlewares/review-workflows.d.ts +17 -0
- package/dist/server/src/middlewares/review-workflows.d.ts.map +1 -0
- package/dist/server/src/migrations/handle-deleted-ct-in-workflows.d.ts +6 -0
- package/dist/server/src/migrations/handle-deleted-ct-in-workflows.d.ts.map +1 -0
- package/dist/server/src/migrations/multiple-workflows.d.ts +3 -0
- package/dist/server/src/migrations/multiple-workflows.d.ts.map +1 -0
- package/dist/server/src/migrations/set-stages-default-color.d.ts +6 -0
- package/dist/server/src/migrations/set-stages-default-color.d.ts.map +1 -0
- package/dist/server/src/migrations/set-stages-roles.d.ts +6 -0
- package/dist/server/src/migrations/set-stages-roles.d.ts.map +1 -0
- package/dist/server/src/migrations/set-workflow-default-name.d.ts +7 -0
- package/dist/server/src/migrations/set-workflow-default-name.d.ts.map +1 -0
- package/dist/server/src/migrations/shorten-stage-attribute.d.ts +6 -0
- package/dist/server/src/migrations/shorten-stage-attribute.d.ts.map +1 -0
- package/dist/server/src/register.d.ts +6 -0
- package/dist/server/src/register.d.ts.map +1 -0
- package/dist/server/src/routes/index.d.ts +21 -0
- package/dist/server/src/routes/index.d.ts.map +1 -0
- package/dist/server/src/routes/review-workflows.d.ts +19 -0
- package/dist/server/src/routes/review-workflows.d.ts.map +1 -0
- package/dist/server/src/routes/utils.d.ts +2 -0
- package/dist/server/src/routes/utils.d.ts.map +1 -0
- package/dist/server/src/services/assignees.d.ts +17 -0
- package/dist/server/src/services/assignees.d.ts.map +1 -0
- package/dist/server/src/services/document-service-middleware.d.ts +8 -0
- package/dist/server/src/services/document-service-middleware.d.ts.map +1 -0
- package/dist/server/src/services/index.d.ts +102 -0
- package/dist/server/src/services/index.d.ts.map +1 -0
- package/dist/server/src/services/metrics/index.d.ts +21 -0
- package/dist/server/src/services/metrics/index.d.ts.map +1 -0
- package/dist/server/src/services/metrics/weekly-metrics.d.ts +16 -0
- package/dist/server/src/services/metrics/weekly-metrics.d.ts.map +1 -0
- package/dist/server/src/services/stage-permissions.d.ts +11 -0
- package/dist/server/src/services/stage-permissions.d.ts.map +1 -0
- package/dist/server/src/services/stages.d.ts +46 -0
- package/dist/server/src/services/stages.d.ts.map +1 -0
- package/dist/server/src/services/validation.d.ts +26 -0
- package/dist/server/src/services/validation.d.ts.map +1 -0
- package/dist/server/src/services/workflow-content-types.d.ts +21 -0
- package/dist/server/src/services/workflow-content-types.d.ts.map +1 -0
- package/dist/server/src/services/workflows.d.ts +84 -0
- package/dist/server/src/services/workflows.d.ts.map +1 -0
- package/dist/server/src/utils/index.d.ts +17 -0
- package/dist/server/src/utils/index.d.ts.map +1 -0
- package/dist/server/src/utils/review-workflows.d.ts +31 -0
- package/dist/server/src/utils/review-workflows.d.ts.map +1 -0
- package/dist/server/src/validation/review-workflows.d.ts +35 -0
- package/dist/server/src/validation/review-workflows.d.ts.map +1 -0
- package/dist/server/utils/index.js +16 -0
- package/dist/server/utils/index.js.map +1 -0
- package/dist/server/utils/index.mjs +13 -0
- package/dist/server/utils/index.mjs.map +1 -0
- package/dist/server/utils/review-workflows.js +36 -0
- package/dist/server/utils/review-workflows.js.map +1 -0
- package/dist/server/utils/review-workflows.mjs +30 -0
- package/dist/server/utils/review-workflows.mjs.map +1 -0
- package/dist/server/validation/review-workflows.js +71 -0
- package/dist/server/validation/review-workflows.js.map +1 -0
- package/dist/server/validation/review-workflows.mjs +65 -0
- package/dist/server/validation/review-workflows.mjs.map +1 -0
- package/dist/shared/contracts/review-workflows.d.ts +143 -0
- package/dist/shared/contracts/review-workflows.d.ts.map +1 -0
- package/package.json +35 -23
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var fp = require('lodash/fp');
|
|
4
|
+
var utils = require('@strapi/utils');
|
|
5
|
+
var index = require('../utils/index.js');
|
|
6
|
+
var reviewWorkflows = require('../validation/review-workflows.js');
|
|
7
|
+
var workflows$1 = require('../constants/workflows.js');
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
*
|
|
11
|
+
* @param { Core.Strapi } strapi - Strapi instance
|
|
12
|
+
* @param userAbility
|
|
13
|
+
* @return { PermissionChecker }
|
|
14
|
+
*/ function getWorkflowsPermissionChecker({ strapi: strapi1 }, userAbility) {
|
|
15
|
+
return strapi1.plugin('content-manager').service('permission-checker').create({
|
|
16
|
+
userAbility,
|
|
17
|
+
model: workflows$1.WORKFLOW_MODEL_UID
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Transforms workflow to an admin UI format.
|
|
22
|
+
* Some attributes (like permissions) are presented in a different format in the admin UI.
|
|
23
|
+
* @param {Workflow} workflow
|
|
24
|
+
*/ function formatWorkflowToAdmin(workflow) {
|
|
25
|
+
if (!workflow) return;
|
|
26
|
+
if (!workflow.stages) return workflow;
|
|
27
|
+
// Transform permissions roles to be the id string instead of an object
|
|
28
|
+
const transformPermissions = fp.map(fp.update('role', fp.property('id')));
|
|
29
|
+
const transformStages = fp.map(fp.update('permissions', transformPermissions));
|
|
30
|
+
return fp.update('stages', transformStages, workflow);
|
|
31
|
+
}
|
|
32
|
+
var workflows = {
|
|
33
|
+
/**
|
|
34
|
+
* Create a new workflow
|
|
35
|
+
* @param {import('koa').BaseContext} ctx - koa context
|
|
36
|
+
*/ async create (ctx) {
|
|
37
|
+
const { body, query } = ctx.request;
|
|
38
|
+
const { sanitizeCreateInput, sanitizeOutput, sanitizedQuery } = getWorkflowsPermissionChecker({
|
|
39
|
+
strapi
|
|
40
|
+
}, ctx.state.userAbility);
|
|
41
|
+
const { populate } = await sanitizedQuery.create(query);
|
|
42
|
+
const workflowBody = await reviewWorkflows.validateWorkflowCreate(body.data);
|
|
43
|
+
const workflowService = index.getService('workflows');
|
|
44
|
+
const createdWorkflow = await workflowService.create({
|
|
45
|
+
data: await sanitizeCreateInput(workflowBody),
|
|
46
|
+
populate
|
|
47
|
+
}).then(formatWorkflowToAdmin);
|
|
48
|
+
ctx.created({
|
|
49
|
+
data: await sanitizeOutput(createdWorkflow)
|
|
50
|
+
});
|
|
51
|
+
},
|
|
52
|
+
/**
|
|
53
|
+
* Update a workflow
|
|
54
|
+
* @param {import('koa').BaseContext} ctx - koa context
|
|
55
|
+
*/ async update (ctx) {
|
|
56
|
+
const { id } = ctx.params;
|
|
57
|
+
const { body, query } = ctx.request;
|
|
58
|
+
const workflowService = index.getService('workflows');
|
|
59
|
+
const { sanitizeUpdateInput, sanitizeOutput, sanitizedQuery } = getWorkflowsPermissionChecker({
|
|
60
|
+
strapi
|
|
61
|
+
}, ctx.state.userAbility);
|
|
62
|
+
const { populate } = await sanitizedQuery.update(query);
|
|
63
|
+
const workflowBody = await reviewWorkflows.validateWorkflowUpdate(body.data);
|
|
64
|
+
// Find if workflow exists
|
|
65
|
+
const workflow = await workflowService.findById(id, {
|
|
66
|
+
populate: workflows$1.WORKFLOW_POPULATE
|
|
67
|
+
});
|
|
68
|
+
if (!workflow) {
|
|
69
|
+
return ctx.notFound();
|
|
70
|
+
}
|
|
71
|
+
// Sanitize input data
|
|
72
|
+
const getPermittedFieldToUpdate = sanitizeUpdateInput(workflow);
|
|
73
|
+
const dataToUpdate = await getPermittedFieldToUpdate(workflowBody);
|
|
74
|
+
// Update workflow
|
|
75
|
+
const updatedWorkflow = await workflowService.update(workflow, {
|
|
76
|
+
data: dataToUpdate,
|
|
77
|
+
populate
|
|
78
|
+
}).then(formatWorkflowToAdmin);
|
|
79
|
+
// Send sanitized response
|
|
80
|
+
ctx.body = {
|
|
81
|
+
data: await sanitizeOutput(updatedWorkflow)
|
|
82
|
+
};
|
|
83
|
+
},
|
|
84
|
+
/**
|
|
85
|
+
* Delete a workflow
|
|
86
|
+
* @param {import('koa').BaseContext} ctx - koa context
|
|
87
|
+
*/ async delete (ctx) {
|
|
88
|
+
const { id } = ctx.params;
|
|
89
|
+
const { query } = ctx.request;
|
|
90
|
+
const workflowService = index.getService('workflows');
|
|
91
|
+
const { sanitizeOutput, sanitizedQuery } = getWorkflowsPermissionChecker({
|
|
92
|
+
strapi
|
|
93
|
+
}, ctx.state.userAbility);
|
|
94
|
+
const { populate } = await sanitizedQuery.delete(query);
|
|
95
|
+
const workflow = await workflowService.findById(id, {
|
|
96
|
+
populate: workflows$1.WORKFLOW_POPULATE
|
|
97
|
+
});
|
|
98
|
+
if (!workflow) {
|
|
99
|
+
return ctx.notFound("Workflow doesn't exist");
|
|
100
|
+
}
|
|
101
|
+
const deletedWorkflow = await workflowService.delete(workflow, {
|
|
102
|
+
populate
|
|
103
|
+
}).then(formatWorkflowToAdmin);
|
|
104
|
+
ctx.body = {
|
|
105
|
+
data: await sanitizeOutput(deletedWorkflow)
|
|
106
|
+
};
|
|
107
|
+
},
|
|
108
|
+
/**
|
|
109
|
+
* List all workflows
|
|
110
|
+
* @param {import('koa').BaseContext} ctx - koa context
|
|
111
|
+
*/ async find (ctx) {
|
|
112
|
+
const { query } = ctx.request;
|
|
113
|
+
const workflowService = index.getService('workflows');
|
|
114
|
+
const { sanitizeOutput, sanitizedQuery } = getWorkflowsPermissionChecker({
|
|
115
|
+
strapi
|
|
116
|
+
}, ctx.state.userAbility);
|
|
117
|
+
const { populate, filters, sort } = await sanitizedQuery.read(query);
|
|
118
|
+
const [workflows, workflowCount] = await Promise.all([
|
|
119
|
+
workflowService.find({
|
|
120
|
+
populate,
|
|
121
|
+
filters,
|
|
122
|
+
sort
|
|
123
|
+
}).then(fp.map(formatWorkflowToAdmin)),
|
|
124
|
+
workflowService.count()
|
|
125
|
+
]);
|
|
126
|
+
ctx.body = {
|
|
127
|
+
data: await utils.async.map(workflows, sanitizeOutput),
|
|
128
|
+
meta: {
|
|
129
|
+
workflowCount
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
module.exports = workflows;
|
|
136
|
+
//# sourceMappingURL=workflows.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflows.js","sources":["../../../server/src/controllers/workflows.ts"],"sourcesContent":["import type { Context } from 'koa';\nimport { update, map, property } from 'lodash/fp';\n\nimport type { Core } from '@strapi/types';\nimport { async } from '@strapi/utils';\n\nimport { getService } from '../utils';\nimport { validateWorkflowCreate, validateWorkflowUpdate } from '../validation/review-workflows';\nimport { WORKFLOW_MODEL_UID, WORKFLOW_POPULATE } from '../constants/workflows';\n\n/**\n *\n * @param { Core.Strapi } strapi - Strapi instance\n * @param userAbility\n * @return { PermissionChecker }\n */\nfunction getWorkflowsPermissionChecker({ strapi }: { strapi: Core.Strapi }, userAbility: unknown) {\n return strapi\n .plugin('content-manager')\n .service('permission-checker')\n .create({ userAbility, model: WORKFLOW_MODEL_UID });\n}\n\n/**\n * Transforms workflow to an admin UI format.\n * Some attributes (like permissions) are presented in a different format in the admin UI.\n * @param {Workflow} workflow\n */\nfunction formatWorkflowToAdmin(workflow: any) {\n if (!workflow) return;\n if (!workflow.stages) return workflow;\n\n // Transform permissions roles to be the id string instead of an object\n const transformPermissions = map(update('role', property('id')));\n const transformStages = map(update('permissions', transformPermissions));\n return update('stages', transformStages, workflow);\n}\n\nexport default {\n /**\n * Create a new workflow\n * @param {import('koa').BaseContext} ctx - koa context\n */\n async create(ctx: Context) {\n const { body, query } = ctx.request;\n const { sanitizeCreateInput, sanitizeOutput, sanitizedQuery } = getWorkflowsPermissionChecker(\n { strapi },\n ctx.state.userAbility\n );\n const { populate } = await sanitizedQuery.create(query);\n\n const workflowBody = await validateWorkflowCreate(body.data);\n\n const workflowService = getService('workflows');\n const createdWorkflow = await workflowService\n .create({\n data: await sanitizeCreateInput(workflowBody),\n populate,\n })\n .then(formatWorkflowToAdmin);\n\n ctx.created({\n data: await sanitizeOutput(createdWorkflow),\n });\n },\n\n /**\n * Update a workflow\n * @param {import('koa').BaseContext} ctx - koa context\n */\n async update(ctx: Context) {\n const { id } = ctx.params;\n const { body, query } = ctx.request;\n const workflowService = getService('workflows');\n const { sanitizeUpdateInput, sanitizeOutput, sanitizedQuery } = getWorkflowsPermissionChecker(\n { strapi },\n ctx.state.userAbility\n );\n const { populate } = await sanitizedQuery.update(query);\n const workflowBody = await validateWorkflowUpdate(body.data);\n\n // Find if workflow exists\n const workflow = await workflowService.findById(id, { populate: WORKFLOW_POPULATE });\n if (!workflow) {\n return ctx.notFound();\n }\n\n // Sanitize input data\n const getPermittedFieldToUpdate = sanitizeUpdateInput(workflow);\n const dataToUpdate = await getPermittedFieldToUpdate(workflowBody);\n\n // Update workflow\n const updatedWorkflow = await workflowService\n .update(workflow, {\n data: dataToUpdate,\n populate,\n })\n .then(formatWorkflowToAdmin);\n\n // Send sanitized response\n ctx.body = {\n data: await sanitizeOutput(updatedWorkflow),\n };\n },\n\n /**\n * Delete a workflow\n * @param {import('koa').BaseContext} ctx - koa context\n */\n async delete(ctx: Context) {\n const { id } = ctx.params;\n const { query } = ctx.request;\n const workflowService = getService('workflows');\n const { sanitizeOutput, sanitizedQuery } = getWorkflowsPermissionChecker(\n { strapi },\n ctx.state.userAbility\n );\n const { populate } = await sanitizedQuery.delete(query);\n\n const workflow = await workflowService.findById(id, { populate: WORKFLOW_POPULATE });\n if (!workflow) {\n return ctx.notFound(\"Workflow doesn't exist\");\n }\n\n const deletedWorkflow = await workflowService\n .delete(workflow, { populate })\n .then(formatWorkflowToAdmin);\n\n ctx.body = {\n data: await sanitizeOutput(deletedWorkflow),\n };\n },\n\n /**\n * List all workflows\n * @param {import('koa').BaseContext} ctx - koa context\n */\n async find(ctx: Context) {\n const { query } = ctx.request;\n const workflowService = getService('workflows');\n const { sanitizeOutput, sanitizedQuery } = getWorkflowsPermissionChecker(\n { strapi },\n ctx.state.userAbility\n );\n const { populate, filters, sort } = await sanitizedQuery.read(query);\n\n const [workflows, workflowCount] = await Promise.all([\n workflowService.find({ populate, filters, sort }).then(map(formatWorkflowToAdmin)),\n workflowService.count(),\n ]);\n\n ctx.body = {\n data: await async.map(workflows, sanitizeOutput),\n meta: {\n workflowCount,\n },\n };\n },\n};\n"],"names":["getWorkflowsPermissionChecker","strapi","userAbility","plugin","service","create","model","WORKFLOW_MODEL_UID","formatWorkflowToAdmin","workflow","stages","transformPermissions","map","update","property","transformStages","ctx","body","query","request","sanitizeCreateInput","sanitizeOutput","sanitizedQuery","state","populate","workflowBody","validateWorkflowCreate","data","workflowService","getService","createdWorkflow","then","created","id","params","sanitizeUpdateInput","validateWorkflowUpdate","findById","WORKFLOW_POPULATE","notFound","getPermittedFieldToUpdate","dataToUpdate","updatedWorkflow","delete","deletedWorkflow","find","filters","sort","read","workflows","workflowCount","Promise","all","count","async","meta"],"mappings":"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"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { map, update, property } from 'lodash/fp';
|
|
2
|
+
import { async } from '@strapi/utils';
|
|
3
|
+
import { getService } from '../utils/index.mjs';
|
|
4
|
+
import { validateWorkflowCreate, validateWorkflowUpdate } from '../validation/review-workflows.mjs';
|
|
5
|
+
import { WORKFLOW_POPULATE, WORKFLOW_MODEL_UID } from '../constants/workflows.mjs';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
*
|
|
9
|
+
* @param { Core.Strapi } strapi - Strapi instance
|
|
10
|
+
* @param userAbility
|
|
11
|
+
* @return { PermissionChecker }
|
|
12
|
+
*/ function getWorkflowsPermissionChecker({ strapi: strapi1 }, userAbility) {
|
|
13
|
+
return strapi1.plugin('content-manager').service('permission-checker').create({
|
|
14
|
+
userAbility,
|
|
15
|
+
model: WORKFLOW_MODEL_UID
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Transforms workflow to an admin UI format.
|
|
20
|
+
* Some attributes (like permissions) are presented in a different format in the admin UI.
|
|
21
|
+
* @param {Workflow} workflow
|
|
22
|
+
*/ function formatWorkflowToAdmin(workflow) {
|
|
23
|
+
if (!workflow) return;
|
|
24
|
+
if (!workflow.stages) return workflow;
|
|
25
|
+
// Transform permissions roles to be the id string instead of an object
|
|
26
|
+
const transformPermissions = map(update('role', property('id')));
|
|
27
|
+
const transformStages = map(update('permissions', transformPermissions));
|
|
28
|
+
return update('stages', transformStages, workflow);
|
|
29
|
+
}
|
|
30
|
+
var workflows = {
|
|
31
|
+
/**
|
|
32
|
+
* Create a new workflow
|
|
33
|
+
* @param {import('koa').BaseContext} ctx - koa context
|
|
34
|
+
*/ async create (ctx) {
|
|
35
|
+
const { body, query } = ctx.request;
|
|
36
|
+
const { sanitizeCreateInput, sanitizeOutput, sanitizedQuery } = getWorkflowsPermissionChecker({
|
|
37
|
+
strapi
|
|
38
|
+
}, ctx.state.userAbility);
|
|
39
|
+
const { populate } = await sanitizedQuery.create(query);
|
|
40
|
+
const workflowBody = await validateWorkflowCreate(body.data);
|
|
41
|
+
const workflowService = getService('workflows');
|
|
42
|
+
const createdWorkflow = await workflowService.create({
|
|
43
|
+
data: await sanitizeCreateInput(workflowBody),
|
|
44
|
+
populate
|
|
45
|
+
}).then(formatWorkflowToAdmin);
|
|
46
|
+
ctx.created({
|
|
47
|
+
data: await sanitizeOutput(createdWorkflow)
|
|
48
|
+
});
|
|
49
|
+
},
|
|
50
|
+
/**
|
|
51
|
+
* Update a workflow
|
|
52
|
+
* @param {import('koa').BaseContext} ctx - koa context
|
|
53
|
+
*/ async update (ctx) {
|
|
54
|
+
const { id } = ctx.params;
|
|
55
|
+
const { body, query } = ctx.request;
|
|
56
|
+
const workflowService = getService('workflows');
|
|
57
|
+
const { sanitizeUpdateInput, sanitizeOutput, sanitizedQuery } = getWorkflowsPermissionChecker({
|
|
58
|
+
strapi
|
|
59
|
+
}, ctx.state.userAbility);
|
|
60
|
+
const { populate } = await sanitizedQuery.update(query);
|
|
61
|
+
const workflowBody = await validateWorkflowUpdate(body.data);
|
|
62
|
+
// Find if workflow exists
|
|
63
|
+
const workflow = await workflowService.findById(id, {
|
|
64
|
+
populate: WORKFLOW_POPULATE
|
|
65
|
+
});
|
|
66
|
+
if (!workflow) {
|
|
67
|
+
return ctx.notFound();
|
|
68
|
+
}
|
|
69
|
+
// Sanitize input data
|
|
70
|
+
const getPermittedFieldToUpdate = sanitizeUpdateInput(workflow);
|
|
71
|
+
const dataToUpdate = await getPermittedFieldToUpdate(workflowBody);
|
|
72
|
+
// Update workflow
|
|
73
|
+
const updatedWorkflow = await workflowService.update(workflow, {
|
|
74
|
+
data: dataToUpdate,
|
|
75
|
+
populate
|
|
76
|
+
}).then(formatWorkflowToAdmin);
|
|
77
|
+
// Send sanitized response
|
|
78
|
+
ctx.body = {
|
|
79
|
+
data: await sanitizeOutput(updatedWorkflow)
|
|
80
|
+
};
|
|
81
|
+
},
|
|
82
|
+
/**
|
|
83
|
+
* Delete a workflow
|
|
84
|
+
* @param {import('koa').BaseContext} ctx - koa context
|
|
85
|
+
*/ async delete (ctx) {
|
|
86
|
+
const { id } = ctx.params;
|
|
87
|
+
const { query } = ctx.request;
|
|
88
|
+
const workflowService = getService('workflows');
|
|
89
|
+
const { sanitizeOutput, sanitizedQuery } = getWorkflowsPermissionChecker({
|
|
90
|
+
strapi
|
|
91
|
+
}, ctx.state.userAbility);
|
|
92
|
+
const { populate } = await sanitizedQuery.delete(query);
|
|
93
|
+
const workflow = await workflowService.findById(id, {
|
|
94
|
+
populate: WORKFLOW_POPULATE
|
|
95
|
+
});
|
|
96
|
+
if (!workflow) {
|
|
97
|
+
return ctx.notFound("Workflow doesn't exist");
|
|
98
|
+
}
|
|
99
|
+
const deletedWorkflow = await workflowService.delete(workflow, {
|
|
100
|
+
populate
|
|
101
|
+
}).then(formatWorkflowToAdmin);
|
|
102
|
+
ctx.body = {
|
|
103
|
+
data: await sanitizeOutput(deletedWorkflow)
|
|
104
|
+
};
|
|
105
|
+
},
|
|
106
|
+
/**
|
|
107
|
+
* List all workflows
|
|
108
|
+
* @param {import('koa').BaseContext} ctx - koa context
|
|
109
|
+
*/ async find (ctx) {
|
|
110
|
+
const { query } = ctx.request;
|
|
111
|
+
const workflowService = getService('workflows');
|
|
112
|
+
const { sanitizeOutput, sanitizedQuery } = getWorkflowsPermissionChecker({
|
|
113
|
+
strapi
|
|
114
|
+
}, ctx.state.userAbility);
|
|
115
|
+
const { populate, filters, sort } = await sanitizedQuery.read(query);
|
|
116
|
+
const [workflows, workflowCount] = await Promise.all([
|
|
117
|
+
workflowService.find({
|
|
118
|
+
populate,
|
|
119
|
+
filters,
|
|
120
|
+
sort
|
|
121
|
+
}).then(map(formatWorkflowToAdmin)),
|
|
122
|
+
workflowService.count()
|
|
123
|
+
]);
|
|
124
|
+
ctx.body = {
|
|
125
|
+
data: await async.map(workflows, sanitizeOutput),
|
|
126
|
+
meta: {
|
|
127
|
+
workflowCount
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
export { workflows as default };
|
|
134
|
+
//# sourceMappingURL=workflows.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflows.mjs","sources":["../../../server/src/controllers/workflows.ts"],"sourcesContent":["import type { Context } from 'koa';\nimport { update, map, property } from 'lodash/fp';\n\nimport type { Core } from '@strapi/types';\nimport { async } from '@strapi/utils';\n\nimport { getService } from '../utils';\nimport { validateWorkflowCreate, validateWorkflowUpdate } from '../validation/review-workflows';\nimport { WORKFLOW_MODEL_UID, WORKFLOW_POPULATE } from '../constants/workflows';\n\n/**\n *\n * @param { Core.Strapi } strapi - Strapi instance\n * @param userAbility\n * @return { PermissionChecker }\n */\nfunction getWorkflowsPermissionChecker({ strapi }: { strapi: Core.Strapi }, userAbility: unknown) {\n return strapi\n .plugin('content-manager')\n .service('permission-checker')\n .create({ userAbility, model: WORKFLOW_MODEL_UID });\n}\n\n/**\n * Transforms workflow to an admin UI format.\n * Some attributes (like permissions) are presented in a different format in the admin UI.\n * @param {Workflow} workflow\n */\nfunction formatWorkflowToAdmin(workflow: any) {\n if (!workflow) return;\n if (!workflow.stages) return workflow;\n\n // Transform permissions roles to be the id string instead of an object\n const transformPermissions = map(update('role', property('id')));\n const transformStages = map(update('permissions', transformPermissions));\n return update('stages', transformStages, workflow);\n}\n\nexport default {\n /**\n * Create a new workflow\n * @param {import('koa').BaseContext} ctx - koa context\n */\n async create(ctx: Context) {\n const { body, query } = ctx.request;\n const { sanitizeCreateInput, sanitizeOutput, sanitizedQuery } = getWorkflowsPermissionChecker(\n { strapi },\n ctx.state.userAbility\n );\n const { populate } = await sanitizedQuery.create(query);\n\n const workflowBody = await validateWorkflowCreate(body.data);\n\n const workflowService = getService('workflows');\n const createdWorkflow = await workflowService\n .create({\n data: await sanitizeCreateInput(workflowBody),\n populate,\n })\n .then(formatWorkflowToAdmin);\n\n ctx.created({\n data: await sanitizeOutput(createdWorkflow),\n });\n },\n\n /**\n * Update a workflow\n * @param {import('koa').BaseContext} ctx - koa context\n */\n async update(ctx: Context) {\n const { id } = ctx.params;\n const { body, query } = ctx.request;\n const workflowService = getService('workflows');\n const { sanitizeUpdateInput, sanitizeOutput, sanitizedQuery } = getWorkflowsPermissionChecker(\n { strapi },\n ctx.state.userAbility\n );\n const { populate } = await sanitizedQuery.update(query);\n const workflowBody = await validateWorkflowUpdate(body.data);\n\n // Find if workflow exists\n const workflow = await workflowService.findById(id, { populate: WORKFLOW_POPULATE });\n if (!workflow) {\n return ctx.notFound();\n }\n\n // Sanitize input data\n const getPermittedFieldToUpdate = sanitizeUpdateInput(workflow);\n const dataToUpdate = await getPermittedFieldToUpdate(workflowBody);\n\n // Update workflow\n const updatedWorkflow = await workflowService\n .update(workflow, {\n data: dataToUpdate,\n populate,\n })\n .then(formatWorkflowToAdmin);\n\n // Send sanitized response\n ctx.body = {\n data: await sanitizeOutput(updatedWorkflow),\n };\n },\n\n /**\n * Delete a workflow\n * @param {import('koa').BaseContext} ctx - koa context\n */\n async delete(ctx: Context) {\n const { id } = ctx.params;\n const { query } = ctx.request;\n const workflowService = getService('workflows');\n const { sanitizeOutput, sanitizedQuery } = getWorkflowsPermissionChecker(\n { strapi },\n ctx.state.userAbility\n );\n const { populate } = await sanitizedQuery.delete(query);\n\n const workflow = await workflowService.findById(id, { populate: WORKFLOW_POPULATE });\n if (!workflow) {\n return ctx.notFound(\"Workflow doesn't exist\");\n }\n\n const deletedWorkflow = await workflowService\n .delete(workflow, { populate })\n .then(formatWorkflowToAdmin);\n\n ctx.body = {\n data: await sanitizeOutput(deletedWorkflow),\n };\n },\n\n /**\n * List all workflows\n * @param {import('koa').BaseContext} ctx - koa context\n */\n async find(ctx: Context) {\n const { query } = ctx.request;\n const workflowService = getService('workflows');\n const { sanitizeOutput, sanitizedQuery } = getWorkflowsPermissionChecker(\n { strapi },\n ctx.state.userAbility\n );\n const { populate, filters, sort } = await sanitizedQuery.read(query);\n\n const [workflows, workflowCount] = await Promise.all([\n workflowService.find({ populate, filters, sort }).then(map(formatWorkflowToAdmin)),\n workflowService.count(),\n ]);\n\n ctx.body = {\n data: await async.map(workflows, sanitizeOutput),\n meta: {\n workflowCount,\n },\n };\n },\n};\n"],"names":["getWorkflowsPermissionChecker","strapi","userAbility","plugin","service","create","model","WORKFLOW_MODEL_UID","formatWorkflowToAdmin","workflow","stages","transformPermissions","map","update","property","transformStages","ctx","body","query","request","sanitizeCreateInput","sanitizeOutput","sanitizedQuery","state","populate","workflowBody","validateWorkflowCreate","data","workflowService","getService","createdWorkflow","then","created","id","params","sanitizeUpdateInput","validateWorkflowUpdate","findById","WORKFLOW_POPULATE","notFound","getPermittedFieldToUpdate","dataToUpdate","updatedWorkflow","delete","deletedWorkflow","find","filters","sort","read","workflows","workflowCount","Promise","all","count","async","meta"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"destroy.js","sources":["../../server/src/destroy.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nexport default async ({ strapi }: { strapi: Core.Strapi }) => {};\n"],"names":["strapi"],"mappings":";;AAEA,cAAe,CAAA,OAAO,EAAEA,MAAM,EAA2B,GAAA,EAAM;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"destroy.mjs","sources":["../../server/src/destroy.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nexport default async ({ strapi }: { strapi: Core.Strapi }) => {};\n"],"names":["strapi"],"mappings":"AAEA,cAAe,CAAA,OAAO,EAAEA,MAAM,EAA2B,GAAA,EAAM;;;;"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var register = require('./register.js');
|
|
4
|
+
var index$1 = require('./content-types/index.js');
|
|
5
|
+
var bootstrap = require('./bootstrap.js');
|
|
6
|
+
var destroy = require('./destroy.js');
|
|
7
|
+
var index$4 = require('./routes/index.js');
|
|
8
|
+
var index$2 = require('./services/index.js');
|
|
9
|
+
var index$3 = require('./controllers/index.js');
|
|
10
|
+
|
|
11
|
+
const getPlugin = ()=>{
|
|
12
|
+
if (strapi.ee.features.isEnabled('review-workflows')) {
|
|
13
|
+
return {
|
|
14
|
+
register,
|
|
15
|
+
bootstrap,
|
|
16
|
+
destroy,
|
|
17
|
+
contentTypes: index$1,
|
|
18
|
+
services: index$2,
|
|
19
|
+
controllers: index$3,
|
|
20
|
+
routes: index$4
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
// Always return contentTypes to avoid losing data when the feature is disabled
|
|
25
|
+
// or downgrading the license
|
|
26
|
+
contentTypes: index$1
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
var index = getPlugin();
|
|
30
|
+
|
|
31
|
+
module.exports = index;
|
|
32
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../server/src/index.ts"],"sourcesContent":["import register from './register';\nimport contentTypes from './content-types';\nimport bootstrap from './bootstrap';\nimport destroy from './destroy';\nimport routes from './routes';\nimport services from './services';\nimport controllers from './controllers';\n\nconst getPlugin = () => {\n if (strapi.ee.features.isEnabled('review-workflows')) {\n return {\n register,\n bootstrap,\n destroy,\n contentTypes,\n services,\n controllers,\n routes,\n };\n }\n\n return {\n // Always return contentTypes to avoid losing data when the feature is disabled\n // or downgrading the license\n contentTypes,\n };\n};\n\nexport default getPlugin();\n"],"names":["getPlugin","strapi","ee","features","isEnabled","register","bootstrap","destroy","contentTypes","services","controllers","routes"],"mappings":";;;;;;;;;;AAQA,MAAMA,SAAY,GAAA,IAAA;AAChB,IAAA,IAAIC,OAAOC,EAAE,CAACC,QAAQ,CAACC,SAAS,CAAC,kBAAqB,CAAA,EAAA;QACpD,OAAO;AACLC,YAAAA,QAAAA;AACAC,YAAAA,SAAAA;AACAC,YAAAA,OAAAA;AACAC,0BAAAA,OAAAA;AACAC,sBAAAA,OAAAA;AACAC,yBAAAA,OAAAA;AACAC,oBAAAA;AACF,SAAA;AACF;IAEA,OAAO;;;AAGLH,sBAAAA;AACF,KAAA;AACF,CAAA;AAEA,YAAeR,SAAY,EAAA;;;;"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import register from './register.mjs';
|
|
2
|
+
import contentTypes from './content-types/index.mjs';
|
|
3
|
+
import bootstrap from './bootstrap.mjs';
|
|
4
|
+
import destroy from './destroy.mjs';
|
|
5
|
+
import routes from './routes/index.mjs';
|
|
6
|
+
import services from './services/index.mjs';
|
|
7
|
+
import controllers from './controllers/index.mjs';
|
|
8
|
+
|
|
9
|
+
const getPlugin = ()=>{
|
|
10
|
+
if (strapi.ee.features.isEnabled('review-workflows')) {
|
|
11
|
+
return {
|
|
12
|
+
register,
|
|
13
|
+
bootstrap,
|
|
14
|
+
destroy,
|
|
15
|
+
contentTypes,
|
|
16
|
+
services,
|
|
17
|
+
controllers,
|
|
18
|
+
routes
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
// Always return contentTypes to avoid losing data when the feature is disabled
|
|
23
|
+
// or downgrading the license
|
|
24
|
+
contentTypes
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
var index = getPlugin();
|
|
28
|
+
|
|
29
|
+
export { index as default };
|
|
30
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../server/src/index.ts"],"sourcesContent":["import register from './register';\nimport contentTypes from './content-types';\nimport bootstrap from './bootstrap';\nimport destroy from './destroy';\nimport routes from './routes';\nimport services from './services';\nimport controllers from './controllers';\n\nconst getPlugin = () => {\n if (strapi.ee.features.isEnabled('review-workflows')) {\n return {\n register,\n bootstrap,\n destroy,\n contentTypes,\n services,\n controllers,\n routes,\n };\n }\n\n return {\n // Always return contentTypes to avoid losing data when the feature is disabled\n // or downgrading the license\n contentTypes,\n };\n};\n\nexport default getPlugin();\n"],"names":["getPlugin","strapi","ee","features","isEnabled","register","bootstrap","destroy","contentTypes","services","controllers","routes"],"mappings":";;;;;;;;AAQA,MAAMA,SAAY,GAAA,IAAA;AAChB,IAAA,IAAIC,OAAOC,EAAE,CAACC,QAAQ,CAACC,SAAS,CAAC,kBAAqB,CAAA,EAAA;QACpD,OAAO;AACLC,YAAAA,QAAAA;AACAC,YAAAA,SAAAA;AACAC,YAAAA,OAAAA;AACAC,YAAAA,YAAAA;AACAC,YAAAA,QAAAA;AACAC,YAAAA,WAAAA;AACAC,YAAAA;AACF,SAAA;AACF;IAEA,OAAO;;;AAGLH,QAAAA;AACF,KAAA;AACF,CAAA;AAEA,YAAeR,SAAY,EAAA;;;;"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var fp = require('lodash/fp');
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* A Strapi middleware function that adds support for review workflows.
|
|
9
|
+
*
|
|
10
|
+
* Why is it needed ?
|
|
11
|
+
* For now, the admin panel cannot have anything but top-level attributes in the content-type for options.
|
|
12
|
+
* But we need the CE part to be agnostics from Review Workflow (which is an EE feature).
|
|
13
|
+
* CE handle the `options` object, that's why we move the reviewWorkflows boolean to the options object.
|
|
14
|
+
*
|
|
15
|
+
* @param {object} strapi - The Strapi instance.
|
|
16
|
+
*/ function contentTypeMiddleware(strapi) {
|
|
17
|
+
/**
|
|
18
|
+
* A middleware function that moves the `reviewWorkflows` attribute from the top level of
|
|
19
|
+
* the request body to the `options` object within the request body.
|
|
20
|
+
*
|
|
21
|
+
* @param {object} ctx - The Koa context object.
|
|
22
|
+
*/ const moveReviewWorkflowOption = (ctx)=>{
|
|
23
|
+
// Move reviewWorkflows to options.reviewWorkflows
|
|
24
|
+
const { reviewWorkflows, ...contentType } = ctx.request.body.contentType;
|
|
25
|
+
if (typeof reviewWorkflows === 'boolean') {
|
|
26
|
+
ctx.request.body.contentType = fp.set('options.reviewWorkflows', reviewWorkflows, contentType);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
strapi.server.router.use('/content-type-builder/content-types/:uid?', (ctx, next)=>{
|
|
30
|
+
if (ctx.method === 'PUT' || ctx.method === 'POST') {
|
|
31
|
+
moveReviewWorkflowOption(ctx);
|
|
32
|
+
}
|
|
33
|
+
return next();
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
var reviewWorkflowsMiddlewares = {
|
|
37
|
+
contentTypeMiddleware
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
exports.contentTypeMiddleware = contentTypeMiddleware;
|
|
41
|
+
exports.default = reviewWorkflowsMiddlewares;
|
|
42
|
+
//# sourceMappingURL=review-workflows.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-workflows.js","sources":["../../../server/src/middlewares/review-workflows.ts"],"sourcesContent":["import type { Context } from 'koa';\nimport type { Core } from '@strapi/types';\n\nimport { set } from 'lodash/fp';\n\n/**\n * A Strapi middleware function that adds support for review workflows.\n *\n * Why is it needed ?\n * For now, the admin panel cannot have anything but top-level attributes in the content-type for options.\n * But we need the CE part to be agnostics from Review Workflow (which is an EE feature).\n * CE handle the `options` object, that's why we move the reviewWorkflows boolean to the options object.\n *\n * @param {object} strapi - The Strapi instance.\n */\nexport function contentTypeMiddleware(strapi: Core.Strapi) {\n /**\n * A middleware function that moves the `reviewWorkflows` attribute from the top level of\n * the request body to the `options` object within the request body.\n *\n * @param {object} ctx - The Koa context object.\n */\n const moveReviewWorkflowOption = (ctx: Context) => {\n // Move reviewWorkflows to options.reviewWorkflows\n const { reviewWorkflows, ...contentType } = ctx.request.body.contentType;\n\n if (typeof reviewWorkflows === 'boolean') {\n ctx.request.body.contentType = set('options.reviewWorkflows', reviewWorkflows, contentType);\n }\n };\n strapi.server.router.use('/content-type-builder/content-types/:uid?', (ctx, next) => {\n if (ctx.method === 'PUT' || ctx.method === 'POST') {\n moveReviewWorkflowOption(ctx);\n }\n return next();\n });\n}\n\nexport default {\n contentTypeMiddleware,\n};\n"],"names":["contentTypeMiddleware","strapi","moveReviewWorkflowOption","ctx","reviewWorkflows","contentType","request","body","set","server","router","use","next","method"],"mappings":";;;;;;AAKA;;;;;;;;;IAUO,SAASA,qBAAAA,CAAsBC,MAAmB,EAAA;AACvD;;;;;MAMA,MAAMC,2BAA2B,CAACC,GAAAA,GAAAA;;QAEhC,MAAM,EAAEC,eAAe,EAAE,GAAGC,WAAAA,EAAa,GAAGF,GAAAA,CAAIG,OAAO,CAACC,IAAI,CAACF,WAAW;QAExE,IAAI,OAAOD,oBAAoB,SAAW,EAAA;YACxCD,GAAIG,CAAAA,OAAO,CAACC,IAAI,CAACF,WAAW,GAAGG,MAAAA,CAAI,2BAA2BJ,eAAiBC,EAAAA,WAAAA,CAAAA;AACjF;AACF,KAAA;IACAJ,MAAOQ,CAAAA,MAAM,CAACC,MAAM,CAACC,GAAG,CAAC,2CAAA,EAA6C,CAACR,GAAKS,EAAAA,IAAAA,GAAAA;AAC1E,QAAA,IAAIT,IAAIU,MAAM,KAAK,SAASV,GAAIU,CAAAA,MAAM,KAAK,MAAQ,EAAA;YACjDX,wBAAyBC,CAAAA,GAAAA,CAAAA;AAC3B;QACA,OAAOS,IAAAA,EAAAA;AACT,KAAA,CAAA;AACF;AAEA,iCAAe;AACbZ,IAAAA;AACF,CAAE;;;;;"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { set } from 'lodash/fp';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* A Strapi middleware function that adds support for review workflows.
|
|
5
|
+
*
|
|
6
|
+
* Why is it needed ?
|
|
7
|
+
* For now, the admin panel cannot have anything but top-level attributes in the content-type for options.
|
|
8
|
+
* But we need the CE part to be agnostics from Review Workflow (which is an EE feature).
|
|
9
|
+
* CE handle the `options` object, that's why we move the reviewWorkflows boolean to the options object.
|
|
10
|
+
*
|
|
11
|
+
* @param {object} strapi - The Strapi instance.
|
|
12
|
+
*/ function contentTypeMiddleware(strapi) {
|
|
13
|
+
/**
|
|
14
|
+
* A middleware function that moves the `reviewWorkflows` attribute from the top level of
|
|
15
|
+
* the request body to the `options` object within the request body.
|
|
16
|
+
*
|
|
17
|
+
* @param {object} ctx - The Koa context object.
|
|
18
|
+
*/ const moveReviewWorkflowOption = (ctx)=>{
|
|
19
|
+
// Move reviewWorkflows to options.reviewWorkflows
|
|
20
|
+
const { reviewWorkflows, ...contentType } = ctx.request.body.contentType;
|
|
21
|
+
if (typeof reviewWorkflows === 'boolean') {
|
|
22
|
+
ctx.request.body.contentType = set('options.reviewWorkflows', reviewWorkflows, contentType);
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
strapi.server.router.use('/content-type-builder/content-types/:uid?', (ctx, next)=>{
|
|
26
|
+
if (ctx.method === 'PUT' || ctx.method === 'POST') {
|
|
27
|
+
moveReviewWorkflowOption(ctx);
|
|
28
|
+
}
|
|
29
|
+
return next();
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
var reviewWorkflowsMiddlewares = {
|
|
33
|
+
contentTypeMiddleware
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
export { contentTypeMiddleware, reviewWorkflowsMiddlewares as default };
|
|
37
|
+
//# sourceMappingURL=review-workflows.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-workflows.mjs","sources":["../../../server/src/middlewares/review-workflows.ts"],"sourcesContent":["import type { Context } from 'koa';\nimport type { Core } from '@strapi/types';\n\nimport { set } from 'lodash/fp';\n\n/**\n * A Strapi middleware function that adds support for review workflows.\n *\n * Why is it needed ?\n * For now, the admin panel cannot have anything but top-level attributes in the content-type for options.\n * But we need the CE part to be agnostics from Review Workflow (which is an EE feature).\n * CE handle the `options` object, that's why we move the reviewWorkflows boolean to the options object.\n *\n * @param {object} strapi - The Strapi instance.\n */\nexport function contentTypeMiddleware(strapi: Core.Strapi) {\n /**\n * A middleware function that moves the `reviewWorkflows` attribute from the top level of\n * the request body to the `options` object within the request body.\n *\n * @param {object} ctx - The Koa context object.\n */\n const moveReviewWorkflowOption = (ctx: Context) => {\n // Move reviewWorkflows to options.reviewWorkflows\n const { reviewWorkflows, ...contentType } = ctx.request.body.contentType;\n\n if (typeof reviewWorkflows === 'boolean') {\n ctx.request.body.contentType = set('options.reviewWorkflows', reviewWorkflows, contentType);\n }\n };\n strapi.server.router.use('/content-type-builder/content-types/:uid?', (ctx, next) => {\n if (ctx.method === 'PUT' || ctx.method === 'POST') {\n moveReviewWorkflowOption(ctx);\n }\n return next();\n });\n}\n\nexport default {\n contentTypeMiddleware,\n};\n"],"names":["contentTypeMiddleware","strapi","moveReviewWorkflowOption","ctx","reviewWorkflows","contentType","request","body","set","server","router","use","next","method"],"mappings":";;AAKA;;;;;;;;;IAUO,SAASA,qBAAAA,CAAsBC,MAAmB,EAAA;AACvD;;;;;MAMA,MAAMC,2BAA2B,CAACC,GAAAA,GAAAA;;QAEhC,MAAM,EAAEC,eAAe,EAAE,GAAGC,WAAAA,EAAa,GAAGF,GAAAA,CAAIG,OAAO,CAACC,IAAI,CAACF,WAAW;QAExE,IAAI,OAAOD,oBAAoB,SAAW,EAAA;YACxCD,GAAIG,CAAAA,OAAO,CAACC,IAAI,CAACF,WAAW,GAAGG,GAAAA,CAAI,2BAA2BJ,eAAiBC,EAAAA,WAAAA,CAAAA;AACjF;AACF,KAAA;IACAJ,MAAOQ,CAAAA,MAAM,CAACC,MAAM,CAACC,GAAG,CAAC,2CAAA,EAA6C,CAACR,GAAKS,EAAAA,IAAAA,GAAAA;AAC1E,QAAA,IAAIT,IAAIU,MAAM,KAAK,SAASV,GAAIU,CAAAA,MAAM,KAAK,MAAQ,EAAA;YACjDX,wBAAyBC,CAAAA,GAAAA,CAAAA;AAC3B;QACA,OAAOS,IAAAA,EAAAA;AACT,KAAA,CAAA;AACF;AAEA,iCAAe;AACbZ,IAAAA;AACF,CAAE;;;;"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var fp = require('lodash/fp');
|
|
4
|
+
var utils = require('@strapi/utils');
|
|
5
|
+
var workflows = require('../constants/workflows.js');
|
|
6
|
+
var reviewWorkflows = require('../utils/review-workflows.js');
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Remove CT references from workflows if the CT is deleted
|
|
10
|
+
*/ async function migrateDeletedCTInWorkflows({ oldContentTypes, contentTypes }) {
|
|
11
|
+
const deletedContentTypes = fp.difference(fp.keys(oldContentTypes), fp.keys(contentTypes)) ?? [];
|
|
12
|
+
if (deletedContentTypes.length) {
|
|
13
|
+
await utils.async.map(deletedContentTypes, async (deletedContentTypeUID)=>{
|
|
14
|
+
const workflow = await strapi.db.query(workflows.WORKFLOW_MODEL_UID).findOne({
|
|
15
|
+
select: [
|
|
16
|
+
'id',
|
|
17
|
+
'contentTypes'
|
|
18
|
+
],
|
|
19
|
+
where: {
|
|
20
|
+
contentTypes: reviewWorkflows.getWorkflowContentTypeFilter({
|
|
21
|
+
strapi
|
|
22
|
+
}, deletedContentTypeUID)
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
if (workflow) {
|
|
26
|
+
await strapi.db.query(workflows.WORKFLOW_MODEL_UID).update({
|
|
27
|
+
where: {
|
|
28
|
+
id: workflow.id
|
|
29
|
+
},
|
|
30
|
+
data: {
|
|
31
|
+
contentTypes: workflow.contentTypes.filter((contentTypeUID)=>contentTypeUID !== deletedContentTypeUID)
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
module.exports = migrateDeletedCTInWorkflows;
|
|
40
|
+
//# sourceMappingURL=handle-deleted-ct-in-workflows.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handle-deleted-ct-in-workflows.js","sources":["../../../server/src/migrations/handle-deleted-ct-in-workflows.ts"],"sourcesContent":["import { difference, keys } from 'lodash/fp';\nimport { async } from '@strapi/utils';\nimport { WORKFLOW_MODEL_UID } from '../constants/workflows';\nimport { getWorkflowContentTypeFilter } from '../utils/review-workflows';\n\n/**\n * Remove CT references from workflows if the CT is deleted\n */\nasync function migrateDeletedCTInWorkflows({ oldContentTypes, contentTypes }: any) {\n const deletedContentTypes = difference(keys(oldContentTypes), keys(contentTypes)) ?? [];\n\n if (deletedContentTypes.length) {\n await async.map(deletedContentTypes, async (deletedContentTypeUID: unknown) => {\n const workflow = await strapi.db.query(WORKFLOW_MODEL_UID).findOne({\n select: ['id', 'contentTypes'],\n where: {\n contentTypes: getWorkflowContentTypeFilter({ strapi }, deletedContentTypeUID),\n },\n });\n\n if (workflow) {\n await strapi.db.query(WORKFLOW_MODEL_UID).update({\n where: { id: workflow.id },\n data: {\n contentTypes: workflow.contentTypes.filter(\n (contentTypeUID: unknown) => contentTypeUID !== deletedContentTypeUID\n ),\n },\n });\n }\n });\n }\n}\n\nexport default migrateDeletedCTInWorkflows;\n"],"names":["migrateDeletedCTInWorkflows","oldContentTypes","contentTypes","deletedContentTypes","difference","keys","length","async","map","deletedContentTypeUID","workflow","strapi","db","query","WORKFLOW_MODEL_UID","findOne","select","where","getWorkflowContentTypeFilter","update","id","data","filter","contentTypeUID"],"mappings":";;;;;;;AAKA;;AAEC,IACD,eAAeA,2BAA4B,CAAA,EAAEC,eAAe,EAAEC,YAAY,EAAO,EAAA;AAC/E,IAAA,MAAMC,sBAAsBC,aAAWC,CAAAA,OAAAA,CAAKJ,eAAkBI,CAAAA,EAAAA,OAAAA,CAAKH,kBAAkB,EAAE;IAEvF,IAAIC,mBAAAA,CAAoBG,MAAM,EAAE;AAC9B,QAAA,MAAMC,WAAMC,CAAAA,GAAG,CAACL,mBAAAA,EAAqB,OAAOM,qBAAAA,GAAAA;YAC1C,MAAMC,QAAAA,GAAW,MAAMC,MAAOC,CAAAA,EAAE,CAACC,KAAK,CAACC,4BAAoBC,CAAAA,CAAAA,OAAO,CAAC;gBACjEC,MAAQ,EAAA;AAAC,oBAAA,IAAA;AAAM,oBAAA;AAAe,iBAAA;gBAC9BC,KAAO,EAAA;AACLf,oBAAAA,YAAAA,EAAcgB,4CAA6B,CAAA;AAAEP,wBAAAA;qBAAUF,EAAAA,qBAAAA;AACzD;AACF,aAAA,CAAA;AAEA,YAAA,IAAIC,QAAU,EAAA;AACZ,gBAAA,MAAMC,OAAOC,EAAE,CAACC,KAAK,CAACC,4BAAAA,CAAAA,CAAoBK,MAAM,CAAC;oBAC/CF,KAAO,EAAA;AAAEG,wBAAAA,EAAAA,EAAIV,SAASU;AAAG,qBAAA;oBACzBC,IAAM,EAAA;AACJnB,wBAAAA,YAAAA,EAAcQ,SAASR,YAAY,CAACoB,MAAM,CACxC,CAACC,iBAA4BA,cAAmBd,KAAAA,qBAAAA;AAEpD;AACF,iBAAA,CAAA;AACF;AACF,SAAA,CAAA;AACF;AACF;;;;"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { difference, keys } from 'lodash/fp';
|
|
2
|
+
import { async } from '@strapi/utils';
|
|
3
|
+
import { WORKFLOW_MODEL_UID } from '../constants/workflows.mjs';
|
|
4
|
+
import { getWorkflowContentTypeFilter } from '../utils/review-workflows.mjs';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Remove CT references from workflows if the CT is deleted
|
|
8
|
+
*/ async function migrateDeletedCTInWorkflows({ oldContentTypes, contentTypes }) {
|
|
9
|
+
const deletedContentTypes = difference(keys(oldContentTypes), keys(contentTypes)) ?? [];
|
|
10
|
+
if (deletedContentTypes.length) {
|
|
11
|
+
await async.map(deletedContentTypes, async (deletedContentTypeUID)=>{
|
|
12
|
+
const workflow = await strapi.db.query(WORKFLOW_MODEL_UID).findOne({
|
|
13
|
+
select: [
|
|
14
|
+
'id',
|
|
15
|
+
'contentTypes'
|
|
16
|
+
],
|
|
17
|
+
where: {
|
|
18
|
+
contentTypes: getWorkflowContentTypeFilter({
|
|
19
|
+
strapi
|
|
20
|
+
}, deletedContentTypeUID)
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
if (workflow) {
|
|
24
|
+
await strapi.db.query(WORKFLOW_MODEL_UID).update({
|
|
25
|
+
where: {
|
|
26
|
+
id: workflow.id
|
|
27
|
+
},
|
|
28
|
+
data: {
|
|
29
|
+
contentTypes: workflow.contentTypes.filter((contentTypeUID)=>contentTypeUID !== deletedContentTypeUID)
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export { migrateDeletedCTInWorkflows as default };
|
|
38
|
+
//# sourceMappingURL=handle-deleted-ct-in-workflows.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handle-deleted-ct-in-workflows.mjs","sources":["../../../server/src/migrations/handle-deleted-ct-in-workflows.ts"],"sourcesContent":["import { difference, keys } from 'lodash/fp';\nimport { async } from '@strapi/utils';\nimport { WORKFLOW_MODEL_UID } from '../constants/workflows';\nimport { getWorkflowContentTypeFilter } from '../utils/review-workflows';\n\n/**\n * Remove CT references from workflows if the CT is deleted\n */\nasync function migrateDeletedCTInWorkflows({ oldContentTypes, contentTypes }: any) {\n const deletedContentTypes = difference(keys(oldContentTypes), keys(contentTypes)) ?? [];\n\n if (deletedContentTypes.length) {\n await async.map(deletedContentTypes, async (deletedContentTypeUID: unknown) => {\n const workflow = await strapi.db.query(WORKFLOW_MODEL_UID).findOne({\n select: ['id', 'contentTypes'],\n where: {\n contentTypes: getWorkflowContentTypeFilter({ strapi }, deletedContentTypeUID),\n },\n });\n\n if (workflow) {\n await strapi.db.query(WORKFLOW_MODEL_UID).update({\n where: { id: workflow.id },\n data: {\n contentTypes: workflow.contentTypes.filter(\n (contentTypeUID: unknown) => contentTypeUID !== deletedContentTypeUID\n ),\n },\n });\n }\n });\n }\n}\n\nexport default migrateDeletedCTInWorkflows;\n"],"names":["migrateDeletedCTInWorkflows","oldContentTypes","contentTypes","deletedContentTypes","difference","keys","length","async","map","deletedContentTypeUID","workflow","strapi","db","query","WORKFLOW_MODEL_UID","findOne","select","where","getWorkflowContentTypeFilter","update","id","data","filter","contentTypeUID"],"mappings":";;;;;AAKA;;AAEC,IACD,eAAeA,2BAA4B,CAAA,EAAEC,eAAe,EAAEC,YAAY,EAAO,EAAA;AAC/E,IAAA,MAAMC,sBAAsBC,UAAWC,CAAAA,IAAAA,CAAKJ,eAAkBI,CAAAA,EAAAA,IAAAA,CAAKH,kBAAkB,EAAE;IAEvF,IAAIC,mBAAAA,CAAoBG,MAAM,EAAE;AAC9B,QAAA,MAAMC,KAAMC,CAAAA,GAAG,CAACL,mBAAAA,EAAqB,OAAOM,qBAAAA,GAAAA;YAC1C,MAAMC,QAAAA,GAAW,MAAMC,MAAOC,CAAAA,EAAE,CAACC,KAAK,CAACC,kBAAoBC,CAAAA,CAAAA,OAAO,CAAC;gBACjEC,MAAQ,EAAA;AAAC,oBAAA,IAAA;AAAM,oBAAA;AAAe,iBAAA;gBAC9BC,KAAO,EAAA;AACLf,oBAAAA,YAAAA,EAAcgB,4BAA6B,CAAA;AAAEP,wBAAAA;qBAAUF,EAAAA,qBAAAA;AACzD;AACF,aAAA,CAAA;AAEA,YAAA,IAAIC,QAAU,EAAA;AACZ,gBAAA,MAAMC,OAAOC,EAAE,CAACC,KAAK,CAACC,kBAAAA,CAAAA,CAAoBK,MAAM,CAAC;oBAC/CF,KAAO,EAAA;AAAEG,wBAAAA,EAAAA,EAAIV,SAASU;AAAG,qBAAA;oBACzBC,IAAM,EAAA;AACJnB,wBAAAA,YAAAA,EAAcQ,SAASR,YAAY,CAACoB,MAAM,CACxC,CAACC,iBAA4BA,cAAmBd,KAAAA,qBAAAA;AAEpD;AACF,iBAAA,CAAA;AACF;AACF,SAAA,CAAA;AACF;AACF;;;;"}
|