@strapi/review-workflows 0.0.0-experimental.74c69aeafc770d59d5b3d5d37cd249934ef395ba → 0.0.0-experimental.74ebdf402d90857bc7282394855d43aad6d283e6
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,68 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var utils = require('@strapi/utils');
|
|
4
|
+
var fp = require('lodash/fp');
|
|
5
|
+
var workflows = require('../constants/workflows.js');
|
|
6
|
+
var index = require('../utils/index.js');
|
|
7
|
+
|
|
8
|
+
const { ApplicationError } = utils.errors;
|
|
9
|
+
var assignees = (({ strapi })=>{
|
|
10
|
+
const metrics = index.getService('workflow-metrics', {
|
|
11
|
+
strapi
|
|
12
|
+
});
|
|
13
|
+
return {
|
|
14
|
+
async findEntityAssigneeId (id, model) {
|
|
15
|
+
const entity = await strapi.db.query(model).findOne({
|
|
16
|
+
where: {
|
|
17
|
+
id
|
|
18
|
+
},
|
|
19
|
+
populate: [
|
|
20
|
+
workflows.ENTITY_ASSIGNEE_ATTRIBUTE
|
|
21
|
+
],
|
|
22
|
+
select: []
|
|
23
|
+
});
|
|
24
|
+
return entity?.[workflows.ENTITY_ASSIGNEE_ATTRIBUTE]?.id ?? null;
|
|
25
|
+
},
|
|
26
|
+
/**
|
|
27
|
+
* Update the assignee of an entity
|
|
28
|
+
*/ async updateEntityAssignee (entityToUpdate, model, assigneeId) {
|
|
29
|
+
const { documentId, locale } = entityToUpdate;
|
|
30
|
+
if (!fp.isNil(assigneeId)) {
|
|
31
|
+
const userExists = await index.getAdminService('user', {
|
|
32
|
+
strapi
|
|
33
|
+
}).exists({
|
|
34
|
+
id: assigneeId
|
|
35
|
+
});
|
|
36
|
+
if (!userExists) {
|
|
37
|
+
throw new ApplicationError(`Selected user does not exist`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
const oldAssigneeId = await this.findEntityAssigneeId(entityToUpdate.id, model);
|
|
41
|
+
metrics.sendDidEditAssignee(oldAssigneeId, assigneeId || null);
|
|
42
|
+
const entity = await strapi.documents(model).update({
|
|
43
|
+
documentId,
|
|
44
|
+
locale,
|
|
45
|
+
data: {
|
|
46
|
+
[workflows.ENTITY_ASSIGNEE_ATTRIBUTE]: assigneeId || null
|
|
47
|
+
},
|
|
48
|
+
populate: [
|
|
49
|
+
workflows.ENTITY_ASSIGNEE_ATTRIBUTE
|
|
50
|
+
],
|
|
51
|
+
fields: []
|
|
52
|
+
});
|
|
53
|
+
// Update the `updated_at` field of the entity, so that the `status` is not considered `Modified`
|
|
54
|
+
// NOTE: `updatedAt` is a protected attribute that can not be modified directly from the query layer
|
|
55
|
+
// hence the knex query builder is used here.
|
|
56
|
+
const { tableName } = strapi.db.metadata.get(model);
|
|
57
|
+
await strapi.db.connection(tableName).where({
|
|
58
|
+
id: entityToUpdate.id
|
|
59
|
+
}).update({
|
|
60
|
+
updated_at: new Date(entityToUpdate.updatedAt)
|
|
61
|
+
});
|
|
62
|
+
return entity;
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
module.exports = assignees;
|
|
68
|
+
//# sourceMappingURL=assignees.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assignees.js","sources":["../../../server/src/services/assignees.ts"],"sourcesContent":["import type { Core, UID, Modules } from '@strapi/types';\nimport { errors } from '@strapi/utils';\nimport { isNil } from 'lodash/fp';\nimport { ENTITY_ASSIGNEE_ATTRIBUTE } from '../constants/workflows';\nimport { getService, getAdminService } from '../utils';\n\nconst { ApplicationError } = errors;\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => {\n const metrics = getService('workflow-metrics', { strapi });\n\n return {\n async findEntityAssigneeId(id: string | number, model: UID.ContentType) {\n const entity = await strapi.db.query(model).findOne({\n where: { id },\n populate: [ENTITY_ASSIGNEE_ATTRIBUTE],\n select: [],\n });\n\n return entity?.[ENTITY_ASSIGNEE_ATTRIBUTE]?.id ?? null;\n },\n\n /**\n * Update the assignee of an entity\n */\n async updateEntityAssignee(\n entityToUpdate: {\n id: number | string;\n documentId: string;\n locale: string;\n updatedAt: string;\n },\n model: UID.ContentType,\n assigneeId: string | null\n ) {\n const { documentId, locale } = entityToUpdate;\n\n if (!isNil(assigneeId)) {\n const userExists = await getAdminService('user', { strapi }).exists({ id: assigneeId });\n\n if (!userExists) {\n throw new ApplicationError(`Selected user does not exist`);\n }\n }\n\n const oldAssigneeId = await this.findEntityAssigneeId(entityToUpdate.id, model);\n metrics.sendDidEditAssignee(oldAssigneeId, assigneeId || null);\n\n const entity = await strapi.documents(model).update({\n documentId,\n locale,\n data: { [ENTITY_ASSIGNEE_ATTRIBUTE]: assigneeId || null },\n populate: [ENTITY_ASSIGNEE_ATTRIBUTE],\n fields: [],\n });\n\n // Update the `updated_at` field of the entity, so that the `status` is not considered `Modified`\n // NOTE: `updatedAt` is a protected attribute that can not be modified directly from the query layer\n // hence the knex query builder is used here.\n const { tableName } = strapi.db.metadata.get(model);\n await strapi.db\n .connection(tableName)\n .where({ id: entityToUpdate.id })\n .update({\n updated_at: new Date(entityToUpdate.updatedAt),\n });\n\n return entity;\n },\n };\n};\n"],"names":["ApplicationError","errors","strapi","metrics","getService","findEntityAssigneeId","id","model","entity","db","query","findOne","where","populate","ENTITY_ASSIGNEE_ATTRIBUTE","select","updateEntityAssignee","entityToUpdate","assigneeId","documentId","locale","isNil","userExists","getAdminService","exists","oldAssigneeId","sendDidEditAssignee","documents","update","data","fields","tableName","metadata","get","connection","updated_at","Date","updatedAt"],"mappings":";;;;;;;AAMA,MAAM,EAAEA,gBAAgB,EAAE,GAAGC,YAAAA;AAE7B,gBAAe,CAAA,CAAC,EAAEC,MAAM,EAA2B,GAAA;IACjD,MAAMC,OAAAA,GAAUC,iBAAW,kBAAoB,EAAA;AAAEF,QAAAA;AAAO,KAAA,CAAA;IAExD,OAAO;QACL,MAAMG,oBAAAA,CAAAA,CAAqBC,EAAmB,EAAEC,KAAsB,EAAA;YACpE,MAAMC,MAAAA,GAAS,MAAMN,MAAOO,CAAAA,EAAE,CAACC,KAAK,CAACH,KAAOI,CAAAA,CAAAA,OAAO,CAAC;gBAClDC,KAAO,EAAA;AAAEN,oBAAAA;AAAG,iBAAA;gBACZO,QAAU,EAAA;AAACC,oBAAAA;AAA0B,iBAAA;AACrCC,gBAAAA,MAAAA,EAAQ;AACV,aAAA,CAAA;AAEA,YAAA,OAAOP,MAAQ,GAACM,mCAA0B,CAAA,EAAER,EAAM,IAAA,IAAA;AACpD,SAAA;AAEA;;AAEC,QACD,MAAMU,oBACJC,CAAAA,CAAAA,cAKC,EACDV,KAAsB,EACtBW,UAAyB,EAAA;AAEzB,YAAA,MAAM,EAAEC,UAAU,EAAEC,MAAM,EAAE,GAAGH,cAAAA;YAE/B,IAAI,CAACI,SAAMH,UAAa,CAAA,EAAA;gBACtB,MAAMI,UAAAA,GAAa,MAAMC,qBAAAA,CAAgB,MAAQ,EAAA;AAAErB,oBAAAA;AAAO,iBAAA,CAAA,CAAGsB,MAAM,CAAC;oBAAElB,EAAIY,EAAAA;AAAW,iBAAA,CAAA;AAErF,gBAAA,IAAI,CAACI,UAAY,EAAA;AACf,oBAAA,MAAM,IAAItB,gBAAAA,CAAiB,CAAC,4BAA4B,CAAC,CAAA;AAC3D;AACF;YAEA,MAAMyB,aAAAA,GAAgB,MAAM,IAAI,CAACpB,oBAAoB,CAACY,cAAAA,CAAeX,EAAE,EAAEC,KAAAA,CAAAA;YACzEJ,OAAQuB,CAAAA,mBAAmB,CAACD,aAAAA,EAAeP,UAAc,IAAA,IAAA,CAAA;AAEzD,YAAA,MAAMV,SAAS,MAAMN,MAAAA,CAAOyB,SAAS,CAACpB,KAAAA,CAAAA,CAAOqB,MAAM,CAAC;AAClDT,gBAAAA,UAAAA;AACAC,gBAAAA,MAAAA;gBACAS,IAAM,EAAA;oBAAE,CAACf,mCAAAA,GAA4BI,UAAc,IAAA;AAAK,iBAAA;gBACxDL,QAAU,EAAA;AAACC,oBAAAA;AAA0B,iBAAA;AACrCgB,gBAAAA,MAAAA,EAAQ;AACV,aAAA,CAAA;;;;YAKA,MAAM,EAAEC,SAAS,EAAE,GAAG7B,MAAAA,CAAOO,EAAE,CAACuB,QAAQ,CAACC,GAAG,CAAC1B,KAAAA,CAAAA;AAC7C,YAAA,MAAML,OAAOO,EAAE,CACZyB,UAAU,CAACH,SAAAA,CAAAA,CACXnB,KAAK,CAAC;AAAEN,gBAAAA,EAAAA,EAAIW,eAAeX;AAAG,aAAA,CAAA,CAC9BsB,MAAM,CAAC;gBACNO,UAAY,EAAA,IAAIC,IAAKnB,CAAAA,cAAAA,CAAeoB,SAAS;AAC/C,aAAA,CAAA;YAEF,OAAO7B,MAAAA;AACT;AACF,KAAA;AACF,CAAA;;;;"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { errors } from '@strapi/utils';
|
|
2
|
+
import { isNil } from 'lodash/fp';
|
|
3
|
+
import { ENTITY_ASSIGNEE_ATTRIBUTE } from '../constants/workflows.mjs';
|
|
4
|
+
import { getService, getAdminService } from '../utils/index.mjs';
|
|
5
|
+
|
|
6
|
+
const { ApplicationError } = errors;
|
|
7
|
+
var assignees = (({ strapi })=>{
|
|
8
|
+
const metrics = getService('workflow-metrics', {
|
|
9
|
+
strapi
|
|
10
|
+
});
|
|
11
|
+
return {
|
|
12
|
+
async findEntityAssigneeId (id, model) {
|
|
13
|
+
const entity = await strapi.db.query(model).findOne({
|
|
14
|
+
where: {
|
|
15
|
+
id
|
|
16
|
+
},
|
|
17
|
+
populate: [
|
|
18
|
+
ENTITY_ASSIGNEE_ATTRIBUTE
|
|
19
|
+
],
|
|
20
|
+
select: []
|
|
21
|
+
});
|
|
22
|
+
return entity?.[ENTITY_ASSIGNEE_ATTRIBUTE]?.id ?? null;
|
|
23
|
+
},
|
|
24
|
+
/**
|
|
25
|
+
* Update the assignee of an entity
|
|
26
|
+
*/ async updateEntityAssignee (entityToUpdate, model, assigneeId) {
|
|
27
|
+
const { documentId, locale } = entityToUpdate;
|
|
28
|
+
if (!isNil(assigneeId)) {
|
|
29
|
+
const userExists = await getAdminService('user', {
|
|
30
|
+
strapi
|
|
31
|
+
}).exists({
|
|
32
|
+
id: assigneeId
|
|
33
|
+
});
|
|
34
|
+
if (!userExists) {
|
|
35
|
+
throw new ApplicationError(`Selected user does not exist`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
const oldAssigneeId = await this.findEntityAssigneeId(entityToUpdate.id, model);
|
|
39
|
+
metrics.sendDidEditAssignee(oldAssigneeId, assigneeId || null);
|
|
40
|
+
const entity = await strapi.documents(model).update({
|
|
41
|
+
documentId,
|
|
42
|
+
locale,
|
|
43
|
+
data: {
|
|
44
|
+
[ENTITY_ASSIGNEE_ATTRIBUTE]: assigneeId || null
|
|
45
|
+
},
|
|
46
|
+
populate: [
|
|
47
|
+
ENTITY_ASSIGNEE_ATTRIBUTE
|
|
48
|
+
],
|
|
49
|
+
fields: []
|
|
50
|
+
});
|
|
51
|
+
// Update the `updated_at` field of the entity, so that the `status` is not considered `Modified`
|
|
52
|
+
// NOTE: `updatedAt` is a protected attribute that can not be modified directly from the query layer
|
|
53
|
+
// hence the knex query builder is used here.
|
|
54
|
+
const { tableName } = strapi.db.metadata.get(model);
|
|
55
|
+
await strapi.db.connection(tableName).where({
|
|
56
|
+
id: entityToUpdate.id
|
|
57
|
+
}).update({
|
|
58
|
+
updated_at: new Date(entityToUpdate.updatedAt)
|
|
59
|
+
});
|
|
60
|
+
return entity;
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
export { assignees as default };
|
|
66
|
+
//# sourceMappingURL=assignees.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assignees.mjs","sources":["../../../server/src/services/assignees.ts"],"sourcesContent":["import type { Core, UID, Modules } from '@strapi/types';\nimport { errors } from '@strapi/utils';\nimport { isNil } from 'lodash/fp';\nimport { ENTITY_ASSIGNEE_ATTRIBUTE } from '../constants/workflows';\nimport { getService, getAdminService } from '../utils';\n\nconst { ApplicationError } = errors;\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => {\n const metrics = getService('workflow-metrics', { strapi });\n\n return {\n async findEntityAssigneeId(id: string | number, model: UID.ContentType) {\n const entity = await strapi.db.query(model).findOne({\n where: { id },\n populate: [ENTITY_ASSIGNEE_ATTRIBUTE],\n select: [],\n });\n\n return entity?.[ENTITY_ASSIGNEE_ATTRIBUTE]?.id ?? null;\n },\n\n /**\n * Update the assignee of an entity\n */\n async updateEntityAssignee(\n entityToUpdate: {\n id: number | string;\n documentId: string;\n locale: string;\n updatedAt: string;\n },\n model: UID.ContentType,\n assigneeId: string | null\n ) {\n const { documentId, locale } = entityToUpdate;\n\n if (!isNil(assigneeId)) {\n const userExists = await getAdminService('user', { strapi }).exists({ id: assigneeId });\n\n if (!userExists) {\n throw new ApplicationError(`Selected user does not exist`);\n }\n }\n\n const oldAssigneeId = await this.findEntityAssigneeId(entityToUpdate.id, model);\n metrics.sendDidEditAssignee(oldAssigneeId, assigneeId || null);\n\n const entity = await strapi.documents(model).update({\n documentId,\n locale,\n data: { [ENTITY_ASSIGNEE_ATTRIBUTE]: assigneeId || null },\n populate: [ENTITY_ASSIGNEE_ATTRIBUTE],\n fields: [],\n });\n\n // Update the `updated_at` field of the entity, so that the `status` is not considered `Modified`\n // NOTE: `updatedAt` is a protected attribute that can not be modified directly from the query layer\n // hence the knex query builder is used here.\n const { tableName } = strapi.db.metadata.get(model);\n await strapi.db\n .connection(tableName)\n .where({ id: entityToUpdate.id })\n .update({\n updated_at: new Date(entityToUpdate.updatedAt),\n });\n\n return entity;\n },\n };\n};\n"],"names":["ApplicationError","errors","strapi","metrics","getService","findEntityAssigneeId","id","model","entity","db","query","findOne","where","populate","ENTITY_ASSIGNEE_ATTRIBUTE","select","updateEntityAssignee","entityToUpdate","assigneeId","documentId","locale","isNil","userExists","getAdminService","exists","oldAssigneeId","sendDidEditAssignee","documents","update","data","fields","tableName","metadata","get","connection","updated_at","Date","updatedAt"],"mappings":";;;;;AAMA,MAAM,EAAEA,gBAAgB,EAAE,GAAGC,MAAAA;AAE7B,gBAAe,CAAA,CAAC,EAAEC,MAAM,EAA2B,GAAA;IACjD,MAAMC,OAAAA,GAAUC,WAAW,kBAAoB,EAAA;AAAEF,QAAAA;AAAO,KAAA,CAAA;IAExD,OAAO;QACL,MAAMG,oBAAAA,CAAAA,CAAqBC,EAAmB,EAAEC,KAAsB,EAAA;YACpE,MAAMC,MAAAA,GAAS,MAAMN,MAAOO,CAAAA,EAAE,CAACC,KAAK,CAACH,KAAOI,CAAAA,CAAAA,OAAO,CAAC;gBAClDC,KAAO,EAAA;AAAEN,oBAAAA;AAAG,iBAAA;gBACZO,QAAU,EAAA;AAACC,oBAAAA;AAA0B,iBAAA;AACrCC,gBAAAA,MAAAA,EAAQ;AACV,aAAA,CAAA;AAEA,YAAA,OAAOP,MAAQ,GAACM,yBAA0B,CAAA,EAAER,EAAM,IAAA,IAAA;AACpD,SAAA;AAEA;;AAEC,QACD,MAAMU,oBACJC,CAAAA,CAAAA,cAKC,EACDV,KAAsB,EACtBW,UAAyB,EAAA;AAEzB,YAAA,MAAM,EAAEC,UAAU,EAAEC,MAAM,EAAE,GAAGH,cAAAA;YAE/B,IAAI,CAACI,MAAMH,UAAa,CAAA,EAAA;gBACtB,MAAMI,UAAAA,GAAa,MAAMC,eAAAA,CAAgB,MAAQ,EAAA;AAAErB,oBAAAA;AAAO,iBAAA,CAAA,CAAGsB,MAAM,CAAC;oBAAElB,EAAIY,EAAAA;AAAW,iBAAA,CAAA;AAErF,gBAAA,IAAI,CAACI,UAAY,EAAA;AACf,oBAAA,MAAM,IAAItB,gBAAAA,CAAiB,CAAC,4BAA4B,CAAC,CAAA;AAC3D;AACF;YAEA,MAAMyB,aAAAA,GAAgB,MAAM,IAAI,CAACpB,oBAAoB,CAACY,cAAAA,CAAeX,EAAE,EAAEC,KAAAA,CAAAA;YACzEJ,OAAQuB,CAAAA,mBAAmB,CAACD,aAAAA,EAAeP,UAAc,IAAA,IAAA,CAAA;AAEzD,YAAA,MAAMV,SAAS,MAAMN,MAAAA,CAAOyB,SAAS,CAACpB,KAAAA,CAAAA,CAAOqB,MAAM,CAAC;AAClDT,gBAAAA,UAAAA;AACAC,gBAAAA,MAAAA;gBACAS,IAAM,EAAA;oBAAE,CAACf,yBAAAA,GAA4BI,UAAc,IAAA;AAAK,iBAAA;gBACxDL,QAAU,EAAA;AAACC,oBAAAA;AAA0B,iBAAA;AACrCgB,gBAAAA,MAAAA,EAAQ;AACV,aAAA,CAAA;;;;YAKA,MAAM,EAAEC,SAAS,EAAE,GAAG7B,MAAAA,CAAOO,EAAE,CAACuB,QAAQ,CAACC,GAAG,CAAC1B,KAAAA,CAAAA;AAC7C,YAAA,MAAML,OAAOO,EAAE,CACZyB,UAAU,CAACH,SAAAA,CAAAA,CACXnB,KAAK,CAAC;AAAEN,gBAAAA,EAAAA,EAAIW,eAAeX;AAAG,aAAA,CAAA,CAC9BsB,MAAM,CAAC;gBACNO,UAAY,EAAA,IAAIC,IAAKnB,CAAAA,cAAAA,CAAeoB,SAAS;AAC/C,aAAA,CAAA;YAEF,OAAO7B,MAAAA;AACT;AACF,KAAA;AACF,CAAA;;;;"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var utils = require('@strapi/utils');
|
|
4
|
+
var fp = require('lodash/fp');
|
|
5
|
+
var workflows = require('../constants/workflows.js');
|
|
6
|
+
var webhookEvents = require('../constants/webhook-events.js');
|
|
7
|
+
var index = require('../utils/index.js');
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Get the stage information of an entity
|
|
11
|
+
* @param {String} uid
|
|
12
|
+
* @param {Number} id
|
|
13
|
+
* @returns {Object}
|
|
14
|
+
*/ const getEntityStage = async (uid, id, params)=>{
|
|
15
|
+
const entity = await strapi.documents(uid).findOne({
|
|
16
|
+
...params,
|
|
17
|
+
documentId: id,
|
|
18
|
+
status: 'draft',
|
|
19
|
+
populate: {
|
|
20
|
+
[workflows.ENTITY_STAGE_ATTRIBUTE]: {
|
|
21
|
+
populate: {
|
|
22
|
+
workflow: true
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
return entity?.[workflows.ENTITY_STAGE_ATTRIBUTE] ?? {};
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Ensures the entity is assigned to the default workflow stage
|
|
31
|
+
*/ const assignStageOnCreate = async (ctx, next)=>{
|
|
32
|
+
if (ctx.action !== 'create' && ctx.action !== 'clone') {
|
|
33
|
+
return next();
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Content types can have assigned workflows,
|
|
37
|
+
* if the CT has one, assign a default value to the stage attribute if it's not present
|
|
38
|
+
*/ const workflow = await index.getService('workflows').getAssignedWorkflow(ctx.contentType.uid, {
|
|
39
|
+
populate: 'stages'
|
|
40
|
+
});
|
|
41
|
+
if (!workflow) {
|
|
42
|
+
return next();
|
|
43
|
+
}
|
|
44
|
+
const data = ctx.params.data;
|
|
45
|
+
// Assign the default stage if the entity doesn't have one
|
|
46
|
+
if (ctx.params?.data && fp.isNil(data[workflows.ENTITY_STAGE_ATTRIBUTE])) {
|
|
47
|
+
data[workflows.ENTITY_STAGE_ATTRIBUTE] = {
|
|
48
|
+
id: workflow.stages[0].id
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
return next();
|
|
52
|
+
};
|
|
53
|
+
const handleStageOnUpdate = async (ctx, next)=>{
|
|
54
|
+
if (ctx.action !== 'update') {
|
|
55
|
+
return next();
|
|
56
|
+
}
|
|
57
|
+
const { documentId } = ctx.params;
|
|
58
|
+
const data = ctx.params.data;
|
|
59
|
+
if (fp.isNil(data?.[workflows.ENTITY_STAGE_ATTRIBUTE])) {
|
|
60
|
+
delete data?.[workflows.ENTITY_STAGE_ATTRIBUTE];
|
|
61
|
+
return next();
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Get last stage of the entity
|
|
65
|
+
*/ const previousStage = await getEntityStage(ctx.contentType.uid, documentId, ctx.params);
|
|
66
|
+
const result = await next();
|
|
67
|
+
if (!result) {
|
|
68
|
+
return result;
|
|
69
|
+
}
|
|
70
|
+
// @ts-expect-error
|
|
71
|
+
const updatedStage = result?.[workflows.ENTITY_STAGE_ATTRIBUTE];
|
|
72
|
+
// Stage might be null if field is not populated
|
|
73
|
+
if (updatedStage && previousStage?.id && previousStage.id !== updatedStage.id) {
|
|
74
|
+
const model = strapi.getModel(ctx.contentType.uid);
|
|
75
|
+
strapi.eventHub.emit(webhookEvents.WORKFLOW_UPDATE_STAGE, {
|
|
76
|
+
model: model.modelName,
|
|
77
|
+
uid: model.uid,
|
|
78
|
+
// TODO v6: Rename to "entry", which is what is used for regular CRUD updates
|
|
79
|
+
entity: {
|
|
80
|
+
// @ts-expect-error
|
|
81
|
+
id: result?.id,
|
|
82
|
+
documentId,
|
|
83
|
+
// @ts-expect-error
|
|
84
|
+
locale: result?.locale,
|
|
85
|
+
status: 'draft'
|
|
86
|
+
},
|
|
87
|
+
workflow: {
|
|
88
|
+
id: previousStage.workflow.id,
|
|
89
|
+
stages: {
|
|
90
|
+
from: {
|
|
91
|
+
id: previousStage.id,
|
|
92
|
+
name: previousStage.name
|
|
93
|
+
},
|
|
94
|
+
to: {
|
|
95
|
+
id: updatedStage.id,
|
|
96
|
+
name: updatedStage.name
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
return next();
|
|
103
|
+
};
|
|
104
|
+
/**
|
|
105
|
+
* Check if the entity is at the required stage before publish
|
|
106
|
+
*/ const checkStageBeforePublish = async (ctx, next)=>{
|
|
107
|
+
if (ctx.action !== 'publish') {
|
|
108
|
+
return next();
|
|
109
|
+
}
|
|
110
|
+
const workflow = await index.getService('workflows').getAssignedWorkflow(ctx.contentType.uid, {
|
|
111
|
+
populate: 'stageRequiredToPublish'
|
|
112
|
+
});
|
|
113
|
+
if (!workflow || !workflow.stageRequiredToPublish) {
|
|
114
|
+
return next();
|
|
115
|
+
}
|
|
116
|
+
const { documentId } = ctx.params;
|
|
117
|
+
const entryStage = await getEntityStage(ctx.contentType.uid, documentId, ctx.params);
|
|
118
|
+
if (entryStage.id !== workflow.stageRequiredToPublish.id) {
|
|
119
|
+
throw new utils.errors.ValidationError('Entry is not at the required stage to publish');
|
|
120
|
+
}
|
|
121
|
+
return next();
|
|
122
|
+
};
|
|
123
|
+
var documentServiceMiddleware = (()=>({
|
|
124
|
+
assignStageOnCreate,
|
|
125
|
+
handleStageOnUpdate,
|
|
126
|
+
checkStageBeforePublish
|
|
127
|
+
}));
|
|
128
|
+
|
|
129
|
+
module.exports = documentServiceMiddleware;
|
|
130
|
+
//# sourceMappingURL=document-service-middleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-service-middleware.js","sources":["../../../server/src/services/document-service-middleware.ts"],"sourcesContent":["import type { Modules } from '@strapi/types';\nimport { errors } from '@strapi/utils';\n\nimport { isNil } from 'lodash/fp';\nimport { ENTITY_STAGE_ATTRIBUTE } from '../constants/workflows';\nimport { WORKFLOW_UPDATE_STAGE } from '../constants/webhook-events';\nimport { getService } from '../utils';\n\ntype Middleware = Modules.Documents.Middleware.Middleware;\n\n/**\n * Get the stage information of an entity\n * @param {String} uid\n * @param {Number} id\n * @returns {Object}\n */\nconst getEntityStage = async (uid: any, id: any, params: any) => {\n const entity = await strapi.documents(uid).findOne({\n ...params,\n documentId: id,\n status: 'draft',\n populate: {\n [ENTITY_STAGE_ATTRIBUTE]: {\n populate: {\n workflow: true,\n },\n },\n },\n });\n\n return entity?.[ENTITY_STAGE_ATTRIBUTE] ?? {};\n};\n\n/**\n * Ensures the entity is assigned to the default workflow stage\n */\nconst assignStageOnCreate: Middleware = async (ctx, next) => {\n if (ctx.action !== 'create' && ctx.action !== 'clone') {\n return next();\n }\n\n /**\n * Content types can have assigned workflows,\n * if the CT has one, assign a default value to the stage attribute if it's not present\n */\n const workflow = await getService('workflows').getAssignedWorkflow(ctx.contentType.uid, {\n populate: 'stages',\n });\n\n if (!workflow) {\n return next();\n }\n\n const data = ctx.params.data as Record<string, any>;\n\n // Assign the default stage if the entity doesn't have one\n if (ctx.params?.data && isNil(data[ENTITY_STAGE_ATTRIBUTE])) {\n data[ENTITY_STAGE_ATTRIBUTE] = { id: workflow.stages[0].id };\n }\n\n return next();\n};\n\nconst handleStageOnUpdate: Middleware = async (ctx, next) => {\n if (ctx.action !== 'update') {\n return next();\n }\n\n const { documentId } = ctx.params;\n const data = ctx.params.data as any;\n\n if (isNil(data?.[ENTITY_STAGE_ATTRIBUTE])) {\n delete data?.[ENTITY_STAGE_ATTRIBUTE];\n return next();\n }\n\n /**\n * Get last stage of the entity\n */\n const previousStage = await getEntityStage(ctx.contentType.uid, documentId, ctx.params);\n\n const result = await next();\n\n if (!result) {\n return result;\n }\n\n // @ts-expect-error\n const updatedStage = result?.[ENTITY_STAGE_ATTRIBUTE];\n\n // Stage might be null if field is not populated\n if (updatedStage && previousStage?.id && previousStage.id !== updatedStage.id) {\n const model = strapi.getModel(ctx.contentType.uid);\n\n strapi.eventHub.emit(WORKFLOW_UPDATE_STAGE, {\n model: model.modelName,\n uid: model.uid,\n // TODO v6: Rename to \"entry\", which is what is used for regular CRUD updates\n entity: {\n // @ts-expect-error\n id: result?.id,\n documentId,\n // @ts-expect-error\n locale: result?.locale,\n status: 'draft',\n },\n workflow: {\n id: previousStage.workflow.id,\n stages: {\n from: {\n id: previousStage.id,\n name: previousStage.name,\n },\n to: {\n id: updatedStage.id,\n name: updatedStage.name,\n },\n },\n },\n });\n }\n\n return next();\n};\n\n/**\n * Check if the entity is at the required stage before publish\n */\nconst checkStageBeforePublish: Middleware = async (ctx, next) => {\n if (ctx.action !== 'publish') {\n return next();\n }\n\n const workflow = await getService('workflows').getAssignedWorkflow(ctx.contentType.uid, {\n populate: 'stageRequiredToPublish',\n });\n\n if (!workflow || !workflow.stageRequiredToPublish) {\n return next();\n }\n\n const { documentId } = ctx.params;\n const entryStage = await getEntityStage(ctx.contentType.uid, documentId, ctx.params);\n\n if (entryStage.id !== workflow.stageRequiredToPublish.id) {\n throw new errors.ValidationError('Entry is not at the required stage to publish');\n }\n\n return next();\n};\n\nexport default () => ({\n assignStageOnCreate,\n handleStageOnUpdate,\n checkStageBeforePublish,\n});\n"],"names":["getEntityStage","uid","id","params","entity","strapi","documents","findOne","documentId","status","populate","ENTITY_STAGE_ATTRIBUTE","workflow","assignStageOnCreate","ctx","next","action","getService","getAssignedWorkflow","contentType","data","isNil","stages","handleStageOnUpdate","previousStage","result","updatedStage","model","getModel","eventHub","emit","WORKFLOW_UPDATE_STAGE","modelName","locale","from","name","to","checkStageBeforePublish","stageRequiredToPublish","entryStage","errors","ValidationError"],"mappings":"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"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { errors } from '@strapi/utils';
|
|
2
|
+
import { isNil } from 'lodash/fp';
|
|
3
|
+
import { ENTITY_STAGE_ATTRIBUTE } from '../constants/workflows.mjs';
|
|
4
|
+
import { WORKFLOW_UPDATE_STAGE } from '../constants/webhook-events.mjs';
|
|
5
|
+
import { getService } from '../utils/index.mjs';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Get the stage information of an entity
|
|
9
|
+
* @param {String} uid
|
|
10
|
+
* @param {Number} id
|
|
11
|
+
* @returns {Object}
|
|
12
|
+
*/ const getEntityStage = async (uid, id, params)=>{
|
|
13
|
+
const entity = await strapi.documents(uid).findOne({
|
|
14
|
+
...params,
|
|
15
|
+
documentId: id,
|
|
16
|
+
status: 'draft',
|
|
17
|
+
populate: {
|
|
18
|
+
[ENTITY_STAGE_ATTRIBUTE]: {
|
|
19
|
+
populate: {
|
|
20
|
+
workflow: true
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
return entity?.[ENTITY_STAGE_ATTRIBUTE] ?? {};
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Ensures the entity is assigned to the default workflow stage
|
|
29
|
+
*/ const assignStageOnCreate = async (ctx, next)=>{
|
|
30
|
+
if (ctx.action !== 'create' && ctx.action !== 'clone') {
|
|
31
|
+
return next();
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Content types can have assigned workflows,
|
|
35
|
+
* if the CT has one, assign a default value to the stage attribute if it's not present
|
|
36
|
+
*/ const workflow = await getService('workflows').getAssignedWorkflow(ctx.contentType.uid, {
|
|
37
|
+
populate: 'stages'
|
|
38
|
+
});
|
|
39
|
+
if (!workflow) {
|
|
40
|
+
return next();
|
|
41
|
+
}
|
|
42
|
+
const data = ctx.params.data;
|
|
43
|
+
// Assign the default stage if the entity doesn't have one
|
|
44
|
+
if (ctx.params?.data && isNil(data[ENTITY_STAGE_ATTRIBUTE])) {
|
|
45
|
+
data[ENTITY_STAGE_ATTRIBUTE] = {
|
|
46
|
+
id: workflow.stages[0].id
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
return next();
|
|
50
|
+
};
|
|
51
|
+
const handleStageOnUpdate = async (ctx, next)=>{
|
|
52
|
+
if (ctx.action !== 'update') {
|
|
53
|
+
return next();
|
|
54
|
+
}
|
|
55
|
+
const { documentId } = ctx.params;
|
|
56
|
+
const data = ctx.params.data;
|
|
57
|
+
if (isNil(data?.[ENTITY_STAGE_ATTRIBUTE])) {
|
|
58
|
+
delete data?.[ENTITY_STAGE_ATTRIBUTE];
|
|
59
|
+
return next();
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Get last stage of the entity
|
|
63
|
+
*/ const previousStage = await getEntityStage(ctx.contentType.uid, documentId, ctx.params);
|
|
64
|
+
const result = await next();
|
|
65
|
+
if (!result) {
|
|
66
|
+
return result;
|
|
67
|
+
}
|
|
68
|
+
// @ts-expect-error
|
|
69
|
+
const updatedStage = result?.[ENTITY_STAGE_ATTRIBUTE];
|
|
70
|
+
// Stage might be null if field is not populated
|
|
71
|
+
if (updatedStage && previousStage?.id && previousStage.id !== updatedStage.id) {
|
|
72
|
+
const model = strapi.getModel(ctx.contentType.uid);
|
|
73
|
+
strapi.eventHub.emit(WORKFLOW_UPDATE_STAGE, {
|
|
74
|
+
model: model.modelName,
|
|
75
|
+
uid: model.uid,
|
|
76
|
+
// TODO v6: Rename to "entry", which is what is used for regular CRUD updates
|
|
77
|
+
entity: {
|
|
78
|
+
// @ts-expect-error
|
|
79
|
+
id: result?.id,
|
|
80
|
+
documentId,
|
|
81
|
+
// @ts-expect-error
|
|
82
|
+
locale: result?.locale,
|
|
83
|
+
status: 'draft'
|
|
84
|
+
},
|
|
85
|
+
workflow: {
|
|
86
|
+
id: previousStage.workflow.id,
|
|
87
|
+
stages: {
|
|
88
|
+
from: {
|
|
89
|
+
id: previousStage.id,
|
|
90
|
+
name: previousStage.name
|
|
91
|
+
},
|
|
92
|
+
to: {
|
|
93
|
+
id: updatedStage.id,
|
|
94
|
+
name: updatedStage.name
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
return next();
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* Check if the entity is at the required stage before publish
|
|
104
|
+
*/ const checkStageBeforePublish = async (ctx, next)=>{
|
|
105
|
+
if (ctx.action !== 'publish') {
|
|
106
|
+
return next();
|
|
107
|
+
}
|
|
108
|
+
const workflow = await getService('workflows').getAssignedWorkflow(ctx.contentType.uid, {
|
|
109
|
+
populate: 'stageRequiredToPublish'
|
|
110
|
+
});
|
|
111
|
+
if (!workflow || !workflow.stageRequiredToPublish) {
|
|
112
|
+
return next();
|
|
113
|
+
}
|
|
114
|
+
const { documentId } = ctx.params;
|
|
115
|
+
const entryStage = await getEntityStage(ctx.contentType.uid, documentId, ctx.params);
|
|
116
|
+
if (entryStage.id !== workflow.stageRequiredToPublish.id) {
|
|
117
|
+
throw new errors.ValidationError('Entry is not at the required stage to publish');
|
|
118
|
+
}
|
|
119
|
+
return next();
|
|
120
|
+
};
|
|
121
|
+
var documentServiceMiddleware = (()=>({
|
|
122
|
+
assignStageOnCreate,
|
|
123
|
+
handleStageOnUpdate,
|
|
124
|
+
checkStageBeforePublish
|
|
125
|
+
}));
|
|
126
|
+
|
|
127
|
+
export { documentServiceMiddleware as default };
|
|
128
|
+
//# sourceMappingURL=document-service-middleware.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-service-middleware.mjs","sources":["../../../server/src/services/document-service-middleware.ts"],"sourcesContent":["import type { Modules } from '@strapi/types';\nimport { errors } from '@strapi/utils';\n\nimport { isNil } from 'lodash/fp';\nimport { ENTITY_STAGE_ATTRIBUTE } from '../constants/workflows';\nimport { WORKFLOW_UPDATE_STAGE } from '../constants/webhook-events';\nimport { getService } from '../utils';\n\ntype Middleware = Modules.Documents.Middleware.Middleware;\n\n/**\n * Get the stage information of an entity\n * @param {String} uid\n * @param {Number} id\n * @returns {Object}\n */\nconst getEntityStage = async (uid: any, id: any, params: any) => {\n const entity = await strapi.documents(uid).findOne({\n ...params,\n documentId: id,\n status: 'draft',\n populate: {\n [ENTITY_STAGE_ATTRIBUTE]: {\n populate: {\n workflow: true,\n },\n },\n },\n });\n\n return entity?.[ENTITY_STAGE_ATTRIBUTE] ?? {};\n};\n\n/**\n * Ensures the entity is assigned to the default workflow stage\n */\nconst assignStageOnCreate: Middleware = async (ctx, next) => {\n if (ctx.action !== 'create' && ctx.action !== 'clone') {\n return next();\n }\n\n /**\n * Content types can have assigned workflows,\n * if the CT has one, assign a default value to the stage attribute if it's not present\n */\n const workflow = await getService('workflows').getAssignedWorkflow(ctx.contentType.uid, {\n populate: 'stages',\n });\n\n if (!workflow) {\n return next();\n }\n\n const data = ctx.params.data as Record<string, any>;\n\n // Assign the default stage if the entity doesn't have one\n if (ctx.params?.data && isNil(data[ENTITY_STAGE_ATTRIBUTE])) {\n data[ENTITY_STAGE_ATTRIBUTE] = { id: workflow.stages[0].id };\n }\n\n return next();\n};\n\nconst handleStageOnUpdate: Middleware = async (ctx, next) => {\n if (ctx.action !== 'update') {\n return next();\n }\n\n const { documentId } = ctx.params;\n const data = ctx.params.data as any;\n\n if (isNil(data?.[ENTITY_STAGE_ATTRIBUTE])) {\n delete data?.[ENTITY_STAGE_ATTRIBUTE];\n return next();\n }\n\n /**\n * Get last stage of the entity\n */\n const previousStage = await getEntityStage(ctx.contentType.uid, documentId, ctx.params);\n\n const result = await next();\n\n if (!result) {\n return result;\n }\n\n // @ts-expect-error\n const updatedStage = result?.[ENTITY_STAGE_ATTRIBUTE];\n\n // Stage might be null if field is not populated\n if (updatedStage && previousStage?.id && previousStage.id !== updatedStage.id) {\n const model = strapi.getModel(ctx.contentType.uid);\n\n strapi.eventHub.emit(WORKFLOW_UPDATE_STAGE, {\n model: model.modelName,\n uid: model.uid,\n // TODO v6: Rename to \"entry\", which is what is used for regular CRUD updates\n entity: {\n // @ts-expect-error\n id: result?.id,\n documentId,\n // @ts-expect-error\n locale: result?.locale,\n status: 'draft',\n },\n workflow: {\n id: previousStage.workflow.id,\n stages: {\n from: {\n id: previousStage.id,\n name: previousStage.name,\n },\n to: {\n id: updatedStage.id,\n name: updatedStage.name,\n },\n },\n },\n });\n }\n\n return next();\n};\n\n/**\n * Check if the entity is at the required stage before publish\n */\nconst checkStageBeforePublish: Middleware = async (ctx, next) => {\n if (ctx.action !== 'publish') {\n return next();\n }\n\n const workflow = await getService('workflows').getAssignedWorkflow(ctx.contentType.uid, {\n populate: 'stageRequiredToPublish',\n });\n\n if (!workflow || !workflow.stageRequiredToPublish) {\n return next();\n }\n\n const { documentId } = ctx.params;\n const entryStage = await getEntityStage(ctx.contentType.uid, documentId, ctx.params);\n\n if (entryStage.id !== workflow.stageRequiredToPublish.id) {\n throw new errors.ValidationError('Entry is not at the required stage to publish');\n }\n\n return next();\n};\n\nexport default () => ({\n assignStageOnCreate,\n handleStageOnUpdate,\n checkStageBeforePublish,\n});\n"],"names":["getEntityStage","uid","id","params","entity","strapi","documents","findOne","documentId","status","populate","ENTITY_STAGE_ATTRIBUTE","workflow","assignStageOnCreate","ctx","next","action","getService","getAssignedWorkflow","contentType","data","isNil","stages","handleStageOnUpdate","previousStage","result","updatedStage","model","getModel","eventHub","emit","WORKFLOW_UPDATE_STAGE","modelName","locale","from","name","to","checkStageBeforePublish","stageRequiredToPublish","entryStage","errors","ValidationError"],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var workflows = require('./workflows.js');
|
|
4
|
+
var stages = require('./stages.js');
|
|
5
|
+
var stagePermissions = require('./stage-permissions.js');
|
|
6
|
+
var assignees = require('./assignees.js');
|
|
7
|
+
var validation = require('./validation.js');
|
|
8
|
+
var index = require('./metrics/index.js');
|
|
9
|
+
var weeklyMetrics = require('./metrics/weekly-metrics.js');
|
|
10
|
+
var documentServiceMiddleware = require('./document-service-middleware.js');
|
|
11
|
+
|
|
12
|
+
var services = {
|
|
13
|
+
workflows,
|
|
14
|
+
stages,
|
|
15
|
+
'stage-permissions': stagePermissions,
|
|
16
|
+
assignees,
|
|
17
|
+
validation: validation,
|
|
18
|
+
'document-service-middlewares': documentServiceMiddleware,
|
|
19
|
+
'workflow-metrics': index.default,
|
|
20
|
+
'workflow-weekly-metrics': weeklyMetrics
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
module.exports = services;
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../server/src/services/index.ts"],"sourcesContent":["import workflows from './workflows';\nimport stages from './stages';\nimport stagePermissions from './stage-permissions';\nimport assignees from './assignees';\nimport reviewWorkflowsValidation from './validation';\nimport reviewWorkflowsMetrics from './metrics';\nimport reviewWorkflowsWeeklyMetrics from './metrics/weekly-metrics';\nimport documentServiceMiddleware from './document-service-middleware';\n\nexport default {\n workflows,\n stages,\n 'stage-permissions': stagePermissions,\n assignees,\n validation: reviewWorkflowsValidation,\n 'document-service-middlewares': documentServiceMiddleware,\n 'workflow-metrics': reviewWorkflowsMetrics,\n 'workflow-weekly-metrics': reviewWorkflowsWeeklyMetrics,\n};\n"],"names":["workflows","stages","stagePermissions","assignees","validation","reviewWorkflowsValidation","documentServiceMiddleware","reviewWorkflowsMetrics","reviewWorkflowsWeeklyMetrics"],"mappings":";;;;;;;;;;;AASA,eAAe;AACbA,IAAAA,SAAAA;AACAC,IAAAA,MAAAA;IACA,mBAAqBC,EAAAA,gBAAAA;AACrBC,IAAAA,SAAAA;IACAC,UAAYC,EAAAA,UAAAA;IACZ,8BAAgCC,EAAAA,yBAAAA;IAChC,kBAAoBC,EAAAA,aAAAA;IACpB,yBAA2BC,EAAAA;AAC7B,CAAE;;;;"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import workflows from './workflows.mjs';
|
|
2
|
+
import stages from './stages.mjs';
|
|
3
|
+
import stagePermissions from './stage-permissions.mjs';
|
|
4
|
+
import assignees from './assignees.mjs';
|
|
5
|
+
import reviewWorkflowsValidation from './validation.mjs';
|
|
6
|
+
import reviewWorkflowsMetrics from './metrics/index.mjs';
|
|
7
|
+
import reviewWorkflowsWeeklyMetrics from './metrics/weekly-metrics.mjs';
|
|
8
|
+
import documentServiceMiddleware from './document-service-middleware.mjs';
|
|
9
|
+
|
|
10
|
+
var services = {
|
|
11
|
+
workflows,
|
|
12
|
+
stages,
|
|
13
|
+
'stage-permissions': stagePermissions,
|
|
14
|
+
assignees,
|
|
15
|
+
validation: reviewWorkflowsValidation,
|
|
16
|
+
'document-service-middlewares': documentServiceMiddleware,
|
|
17
|
+
'workflow-metrics': reviewWorkflowsMetrics,
|
|
18
|
+
'workflow-weekly-metrics': reviewWorkflowsWeeklyMetrics
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export { services as default };
|
|
22
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../server/src/services/index.ts"],"sourcesContent":["import workflows from './workflows';\nimport stages from './stages';\nimport stagePermissions from './stage-permissions';\nimport assignees from './assignees';\nimport reviewWorkflowsValidation from './validation';\nimport reviewWorkflowsMetrics from './metrics';\nimport reviewWorkflowsWeeklyMetrics from './metrics/weekly-metrics';\nimport documentServiceMiddleware from './document-service-middleware';\n\nexport default {\n workflows,\n stages,\n 'stage-permissions': stagePermissions,\n assignees,\n validation: reviewWorkflowsValidation,\n 'document-service-middlewares': documentServiceMiddleware,\n 'workflow-metrics': reviewWorkflowsMetrics,\n 'workflow-weekly-metrics': reviewWorkflowsWeeklyMetrics,\n};\n"],"names":["workflows","stages","stagePermissions","assignees","validation","reviewWorkflowsValidation","documentServiceMiddleware","reviewWorkflowsMetrics","reviewWorkflowsWeeklyMetrics"],"mappings":";;;;;;;;;AASA,eAAe;AACbA,IAAAA,SAAAA;AACAC,IAAAA,MAAAA;IACA,mBAAqBC,EAAAA,gBAAAA;AACrBC,IAAAA,SAAAA;IACAC,UAAYC,EAAAA,yBAAAA;IACZ,8BAAgCC,EAAAA,yBAAAA;IAChC,kBAAoBC,EAAAA,sBAAAA;IACpB,yBAA2BC,EAAAA;AAC7B,CAAE;;;;"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
require('@strapi/types');
|
|
6
|
+
|
|
7
|
+
const sendDidCreateStage = async ()=>{
|
|
8
|
+
strapi.telemetry.send('didCreateStage', {});
|
|
9
|
+
};
|
|
10
|
+
const sendDidEditStage = async ()=>{
|
|
11
|
+
strapi.telemetry.send('didEditStage', {});
|
|
12
|
+
};
|
|
13
|
+
const sendDidDeleteStage = async ()=>{
|
|
14
|
+
strapi.telemetry.send('didDeleteStage', {});
|
|
15
|
+
};
|
|
16
|
+
const sendDidChangeEntryStage = async ()=>{
|
|
17
|
+
strapi.telemetry.send('didChangeEntryStage', {});
|
|
18
|
+
};
|
|
19
|
+
const sendDidCreateWorkflow = async (workflowId, hasRequiredStageToPublish)=>{
|
|
20
|
+
strapi.telemetry.send('didCreateWorkflow', {
|
|
21
|
+
workflowId,
|
|
22
|
+
hasRequiredStageToPublish
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
const sendDidEditWorkflow = async (workflowId, hasRequiredStageToPublish)=>{
|
|
26
|
+
strapi.telemetry.send('didEditWorkflow', {
|
|
27
|
+
workflowId,
|
|
28
|
+
hasRequiredStageToPublish
|
|
29
|
+
});
|
|
30
|
+
};
|
|
31
|
+
const sendDidEditAssignee = async (fromId, toId)=>{
|
|
32
|
+
strapi.telemetry.send('didEditAssignee', {
|
|
33
|
+
from: fromId,
|
|
34
|
+
to: toId
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
const sendDidSendReviewWorkflowPropertiesOnceAWeek = async (numberOfActiveWorkflows, avgStagesCount, maxStagesCount, activatedContentTypes)=>{
|
|
38
|
+
strapi.telemetry.send('didSendReviewWorkflowPropertiesOnceAWeek', {
|
|
39
|
+
groupProperties: {
|
|
40
|
+
numberOfActiveWorkflows,
|
|
41
|
+
avgStagesCount,
|
|
42
|
+
maxStagesCount,
|
|
43
|
+
activatedContentTypes
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
var reviewWorkflowsMetrics = {
|
|
48
|
+
sendDidCreateStage,
|
|
49
|
+
sendDidEditStage,
|
|
50
|
+
sendDidDeleteStage,
|
|
51
|
+
sendDidChangeEntryStage,
|
|
52
|
+
sendDidCreateWorkflow,
|
|
53
|
+
sendDidEditWorkflow,
|
|
54
|
+
sendDidSendReviewWorkflowPropertiesOnceAWeek,
|
|
55
|
+
sendDidEditAssignee
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
exports.default = reviewWorkflowsMetrics;
|
|
59
|
+
exports.sendDidChangeEntryStage = sendDidChangeEntryStage;
|
|
60
|
+
exports.sendDidCreateStage = sendDidCreateStage;
|
|
61
|
+
exports.sendDidCreateWorkflow = sendDidCreateWorkflow;
|
|
62
|
+
exports.sendDidDeleteStage = sendDidDeleteStage;
|
|
63
|
+
exports.sendDidEditAssignee = sendDidEditAssignee;
|
|
64
|
+
exports.sendDidEditStage = sendDidEditStage;
|
|
65
|
+
exports.sendDidEditWorkflow = sendDidEditWorkflow;
|
|
66
|
+
exports.sendDidSendReviewWorkflowPropertiesOnceAWeek = sendDidSendReviewWorkflowPropertiesOnceAWeek;
|
|
67
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../server/src/services/metrics/index.ts"],"sourcesContent":["import '@strapi/types';\n\nexport const sendDidCreateStage = async () => {\n strapi.telemetry.send('didCreateStage', {});\n};\n\nexport const sendDidEditStage = async () => {\n strapi.telemetry.send('didEditStage', {});\n};\n\nexport const sendDidDeleteStage = async () => {\n strapi.telemetry.send('didDeleteStage', {});\n};\n\nexport const sendDidChangeEntryStage = async () => {\n strapi.telemetry.send('didChangeEntryStage', {});\n};\n\nexport const sendDidCreateWorkflow = async (\n workflowId: string,\n hasRequiredStageToPublish: boolean\n) => {\n strapi.telemetry.send('didCreateWorkflow', { workflowId, hasRequiredStageToPublish });\n};\n\nexport const sendDidEditWorkflow = async (\n workflowId: string,\n hasRequiredStageToPublish: boolean\n) => {\n strapi.telemetry.send('didEditWorkflow', { workflowId, hasRequiredStageToPublish });\n};\n\nexport const sendDidEditAssignee = async (fromId: any, toId: any) => {\n strapi.telemetry.send('didEditAssignee', { from: fromId, to: toId });\n};\n\nexport const sendDidSendReviewWorkflowPropertiesOnceAWeek = async (\n numberOfActiveWorkflows: number,\n avgStagesCount: number,\n maxStagesCount: number,\n activatedContentTypes: number\n) => {\n strapi.telemetry.send('didSendReviewWorkflowPropertiesOnceAWeek', {\n groupProperties: {\n numberOfActiveWorkflows,\n avgStagesCount,\n maxStagesCount,\n activatedContentTypes,\n },\n });\n};\n\nexport default {\n sendDidCreateStage,\n sendDidEditStage,\n sendDidDeleteStage,\n sendDidChangeEntryStage,\n sendDidCreateWorkflow,\n sendDidEditWorkflow,\n sendDidSendReviewWorkflowPropertiesOnceAWeek,\n sendDidEditAssignee,\n};\n"],"names":["sendDidCreateStage","strapi","telemetry","send","sendDidEditStage","sendDidDeleteStage","sendDidChangeEntryStage","sendDidCreateWorkflow","workflowId","hasRequiredStageToPublish","sendDidEditWorkflow","sendDidEditAssignee","fromId","toId","from","to","sendDidSendReviewWorkflowPropertiesOnceAWeek","numberOfActiveWorkflows","avgStagesCount","maxStagesCount","activatedContentTypes","groupProperties"],"mappings":";;;;;;MAEaA,kBAAqB,GAAA,UAAA;AAChCC,IAAAA,MAAAA,CAAOC,SAAS,CAACC,IAAI,CAAC,kBAAkB,EAAC,CAAA;AAC3C;MAEaC,gBAAmB,GAAA,UAAA;AAC9BH,IAAAA,MAAAA,CAAOC,SAAS,CAACC,IAAI,CAAC,gBAAgB,EAAC,CAAA;AACzC;MAEaE,kBAAqB,GAAA,UAAA;AAChCJ,IAAAA,MAAAA,CAAOC,SAAS,CAACC,IAAI,CAAC,kBAAkB,EAAC,CAAA;AAC3C;MAEaG,uBAA0B,GAAA,UAAA;AACrCL,IAAAA,MAAAA,CAAOC,SAAS,CAACC,IAAI,CAAC,uBAAuB,EAAC,CAAA;AAChD;AAEO,MAAMI,qBAAwB,GAAA,OACnCC,UACAC,EAAAA,yBAAAA,GAAAA;AAEAR,IAAAA,MAAAA,CAAOC,SAAS,CAACC,IAAI,CAAC,mBAAqB,EAAA;AAAEK,QAAAA,UAAAA;AAAYC,QAAAA;AAA0B,KAAA,CAAA;AACrF;AAEO,MAAMC,mBAAsB,GAAA,OACjCF,UACAC,EAAAA,yBAAAA,GAAAA;AAEAR,IAAAA,MAAAA,CAAOC,SAAS,CAACC,IAAI,CAAC,iBAAmB,EAAA;AAAEK,QAAAA,UAAAA;AAAYC,QAAAA;AAA0B,KAAA,CAAA;AACnF;AAEO,MAAME,mBAAsB,GAAA,OAAOC,MAAaC,EAAAA,IAAAA,GAAAA;AACrDZ,IAAAA,MAAAA,CAAOC,SAAS,CAACC,IAAI,CAAC,iBAAmB,EAAA;QAAEW,IAAMF,EAAAA,MAAAA;QAAQG,EAAIF,EAAAA;AAAK,KAAA,CAAA;AACpE;AAEaG,MAAAA,4CAAAA,GAA+C,OAC1DC,uBAAAA,EACAC,gBACAC,cACAC,EAAAA,qBAAAA,GAAAA;AAEAnB,IAAAA,MAAAA,CAAOC,SAAS,CAACC,IAAI,CAAC,0CAA4C,EAAA;QAChEkB,eAAiB,EAAA;AACfJ,YAAAA,uBAAAA;AACAC,YAAAA,cAAAA;AACAC,YAAAA,cAAAA;AACAC,YAAAA;AACF;AACF,KAAA,CAAA;AACF;AAEA,6BAAe;AACbpB,IAAAA,kBAAAA;AACAI,IAAAA,gBAAAA;AACAC,IAAAA,kBAAAA;AACAC,IAAAA,uBAAAA;AACAC,IAAAA,qBAAAA;AACAG,IAAAA,mBAAAA;AACAM,IAAAA,4CAAAA;AACAL,IAAAA;AACF,CAAE;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import '@strapi/types';
|
|
2
|
+
|
|
3
|
+
const sendDidCreateStage = async ()=>{
|
|
4
|
+
strapi.telemetry.send('didCreateStage', {});
|
|
5
|
+
};
|
|
6
|
+
const sendDidEditStage = async ()=>{
|
|
7
|
+
strapi.telemetry.send('didEditStage', {});
|
|
8
|
+
};
|
|
9
|
+
const sendDidDeleteStage = async ()=>{
|
|
10
|
+
strapi.telemetry.send('didDeleteStage', {});
|
|
11
|
+
};
|
|
12
|
+
const sendDidChangeEntryStage = async ()=>{
|
|
13
|
+
strapi.telemetry.send('didChangeEntryStage', {});
|
|
14
|
+
};
|
|
15
|
+
const sendDidCreateWorkflow = async (workflowId, hasRequiredStageToPublish)=>{
|
|
16
|
+
strapi.telemetry.send('didCreateWorkflow', {
|
|
17
|
+
workflowId,
|
|
18
|
+
hasRequiredStageToPublish
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
const sendDidEditWorkflow = async (workflowId, hasRequiredStageToPublish)=>{
|
|
22
|
+
strapi.telemetry.send('didEditWorkflow', {
|
|
23
|
+
workflowId,
|
|
24
|
+
hasRequiredStageToPublish
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
const sendDidEditAssignee = async (fromId, toId)=>{
|
|
28
|
+
strapi.telemetry.send('didEditAssignee', {
|
|
29
|
+
from: fromId,
|
|
30
|
+
to: toId
|
|
31
|
+
});
|
|
32
|
+
};
|
|
33
|
+
const sendDidSendReviewWorkflowPropertiesOnceAWeek = async (numberOfActiveWorkflows, avgStagesCount, maxStagesCount, activatedContentTypes)=>{
|
|
34
|
+
strapi.telemetry.send('didSendReviewWorkflowPropertiesOnceAWeek', {
|
|
35
|
+
groupProperties: {
|
|
36
|
+
numberOfActiveWorkflows,
|
|
37
|
+
avgStagesCount,
|
|
38
|
+
maxStagesCount,
|
|
39
|
+
activatedContentTypes
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
var reviewWorkflowsMetrics = {
|
|
44
|
+
sendDidCreateStage,
|
|
45
|
+
sendDidEditStage,
|
|
46
|
+
sendDidDeleteStage,
|
|
47
|
+
sendDidChangeEntryStage,
|
|
48
|
+
sendDidCreateWorkflow,
|
|
49
|
+
sendDidEditWorkflow,
|
|
50
|
+
sendDidSendReviewWorkflowPropertiesOnceAWeek,
|
|
51
|
+
sendDidEditAssignee
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
export { reviewWorkflowsMetrics as default, sendDidChangeEntryStage, sendDidCreateStage, sendDidCreateWorkflow, sendDidDeleteStage, sendDidEditAssignee, sendDidEditStage, sendDidEditWorkflow, sendDidSendReviewWorkflowPropertiesOnceAWeek };
|
|
55
|
+
//# sourceMappingURL=index.mjs.map
|