@strapi/review-workflows 0.0.0-next.f0a0bc26f5ef0693aaea2a616bc6b816cfee54b6 → 0.0.0-next.f0bfcece1007e5aa527570187635aefc86db536e
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/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/components/Widgets.js +142 -0
- package/dist/admin/components/Widgets.js.map +1 -0
- package/dist/admin/components/Widgets.mjs +140 -0
- package/dist/admin/components/Widgets.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 +116 -3
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +111 -3
- package/dist/admin/index.mjs.map +1 -1
- 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 +591 -0
- package/dist/admin/routes/settings/components/Stages.js.map +1 -0
- package/dist/admin/routes/settings/components/Stages.mjs +570 -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 +116 -0
- package/dist/admin/services/content-manager.js.map +1 -0
- package/dist/admin/services/content-manager.mjs +110 -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/Widgets.d.ts +2 -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/StageSelect.d.ts +3 -0
- package/dist/admin/src/services/admin.d.ts +1 -1
- package/dist/admin/src/services/api.d.ts +1 -1
- package/dist/admin/src/services/content-manager.d.ts +6 -5
- package/dist/admin/src/services/settings.d.ts +3 -3
- package/dist/admin/translations/en.json.js +22 -0
- package/dist/admin/translations/en.json.js.map +1 -0
- package/dist/admin/translations/en.json.mjs +20 -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 +16 -0
- package/dist/server/controllers/index.js.map +1 -0
- package/dist/server/controllers/index.mjs +14 -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/homepage/controllers/homepage.js +15 -0
- package/dist/server/homepage/controllers/homepage.js.map +1 -0
- package/dist/server/homepage/controllers/homepage.mjs +13 -0
- package/dist/server/homepage/controllers/homepage.mjs.map +1 -0
- package/dist/server/homepage/controllers/index.js +10 -0
- package/dist/server/homepage/controllers/index.js.map +1 -0
- package/dist/server/homepage/controllers/index.mjs +8 -0
- package/dist/server/homepage/controllers/index.mjs.map +1 -0
- package/dist/server/homepage/index.js +14 -0
- package/dist/server/homepage/index.js.map +1 -0
- package/dist/server/homepage/index.mjs +12 -0
- package/dist/server/homepage/index.mjs.map +1 -0
- package/dist/server/homepage/routes/homepage.js +25 -0
- package/dist/server/homepage/routes/homepage.js.map +1 -0
- package/dist/server/homepage/routes/homepage.mjs +23 -0
- package/dist/server/homepage/routes/homepage.mjs.map +1 -0
- package/dist/server/homepage/routes/index.js +10 -0
- package/dist/server/homepage/routes/index.js.map +1 -0
- package/dist/server/homepage/routes/index.mjs +8 -0
- package/dist/server/homepage/routes/index.mjs.map +1 -0
- package/dist/server/homepage/services/homepage.js +24 -0
- package/dist/server/homepage/services/homepage.js.map +1 -0
- package/dist/server/homepage/services/homepage.mjs +22 -0
- package/dist/server/homepage/services/homepage.mjs.map +1 -0
- package/dist/server/homepage/services/index.js +10 -0
- package/dist/server/homepage/services/index.js.map +1 -0
- package/dist/server/homepage/services/index.mjs +8 -0
- package/dist/server/homepage/services/index.mjs.map +1 -0
- package/dist/server/index.js +25 -8321
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +24 -8323
- package/dist/server/index.mjs.map +1 -1
- 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 +12 -0
- package/dist/server/routes/index.js.map +1 -0
- package/dist/server/routes/index.mjs +10 -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 +26 -0
- package/dist/server/services/index.js.map +1 -0
- package/dist/server/services/index.mjs +24 -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/controllers/index.d.ts.map +1 -1
- package/dist/server/src/homepage/controllers/homepage.d.ts +6 -0
- package/dist/server/src/homepage/controllers/homepage.d.ts.map +1 -0
- package/dist/server/src/homepage/controllers/index.d.ts +2 -0
- package/dist/server/src/homepage/controllers/index.d.ts.map +1 -0
- package/dist/server/src/homepage/index.d.ts +15 -0
- package/dist/server/src/homepage/index.d.ts.map +1 -0
- package/dist/server/src/homepage/routes/homepage.d.ts +4 -0
- package/dist/server/src/homepage/routes/homepage.d.ts.map +1 -0
- package/dist/server/src/homepage/routes/index.d.ts +4 -0
- package/dist/server/src/homepage/routes/index.d.ts.map +1 -0
- package/dist/server/src/homepage/services/homepage.d.ts +9 -0
- package/dist/server/src/homepage/services/homepage.d.ts.map +1 -0
- package/dist/server/src/homepage/services/index.d.ts +8 -0
- package/dist/server/src/homepage/services/index.d.ts.map +1 -0
- package/dist/server/src/index.d.ts +6 -0
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/routes/index.d.ts +1 -0
- package/dist/server/src/routes/index.d.ts.map +1 -1
- package/dist/server/src/services/document-service-middleware.d.ts +1 -1
- package/dist/server/src/services/document-service-middleware.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +5 -0
- package/dist/server/src/services/index.d.ts.map +1 -1
- 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/homepage.d.ts +26 -0
- package/dist/shared/contracts/homepage.d.ts.map +1 -0
- package/dist/shared/contracts/review-workflows.d.ts +0 -1
- package/package.json +14 -13
- package/dist/_chunks/Layout-DU1Rt4Mu.mjs +0 -233
- package/dist/_chunks/Layout-DU1Rt4Mu.mjs.map +0 -1
- package/dist/_chunks/Layout-ywt0cSLq.js +0 -251
- package/dist/_chunks/Layout-ywt0cSLq.js.map +0 -1
- package/dist/_chunks/en-CYgjfSep.js +0 -15
- package/dist/_chunks/en-CYgjfSep.js.map +0 -1
- package/dist/_chunks/en-D9dxziEb.mjs +0 -15
- package/dist/_chunks/en-D9dxziEb.mjs.map +0 -1
- package/dist/_chunks/id-MDQVDdXD.mjs +0 -1277
- package/dist/_chunks/id-MDQVDdXD.mjs.map +0 -1
- package/dist/_chunks/id-StiN3nkI.js +0 -1297
- package/dist/_chunks/id-StiN3nkI.js.map +0 -1
- package/dist/_chunks/index-BRmc4tbQ.mjs +0 -809
- package/dist/_chunks/index-BRmc4tbQ.mjs.map +0 -1
- package/dist/_chunks/index-BSsDJNiQ.js +0 -827
- package/dist/_chunks/index-BSsDJNiQ.js.map +0 -1
- package/dist/_chunks/index-CsOMMJ--.mjs +0 -214
- package/dist/_chunks/index-CsOMMJ--.mjs.map +0 -1
- package/dist/_chunks/index-dc2WfugK.js +0 -233
- package/dist/_chunks/index-dc2WfugK.js.map +0 -1
- package/dist/_chunks/purchase-review-workflows-BN-5Ube7.mjs +0 -52
- package/dist/_chunks/purchase-review-workflows-BN-5Ube7.mjs.map +0 -1
- package/dist/_chunks/purchase-review-workflows-DlCDg0fD.js +0 -52
- package/dist/_chunks/purchase-review-workflows-DlCDg0fD.js.map +0 -1
- package/dist/_chunks/router-C5QvEzrI.js +0 -24
- package/dist/_chunks/router-C5QvEzrI.js.map +0 -1
- package/dist/_chunks/router-CZH4yq9s.mjs +0 -24
- package/dist/_chunks/router-CZH4yq9s.mjs.map +0 -1
- package/dist/admin/src/routes/content-manager/[model]/[id]/components/AssigneeSelect.d.ts +0 -2
- package/dist/admin/src/routes/content-manager/[model]/[id]/components/StageSelect.d.ts +0 -1
- /package/dist/admin/src/routes/content-manager/{[model] → model}/components/AssigneeFilter.d.ts +0 -0
- /package/dist/admin/src/routes/content-manager/{[model] → model}/components/StageFilter.d.ts +0 -0
- /package/dist/admin/src/routes/content-manager/{[model] → model}/components/TableColumns.d.ts +0 -0
- /package/dist/admin/src/routes/content-manager/{[model] → model}/configure/constants.d.ts +0 -0
- /package/dist/admin/src/routes/content-manager/{[model] → model}/constants.d.ts +0 -0
- /package/dist/admin/src/routes/content-manager/{[model]/[id] → model/id}/components/Panel.d.ts +0 -0
- /package/dist/admin/src/routes/content-manager/{[model]/[id] → model/id}/components/constants.d.ts +0 -0
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { async } from '@strapi/utils';
|
|
2
|
+
import { getService } from '../utils/index.mjs';
|
|
3
|
+
import { validateLocale, validateUpdateStageOnEntity } from '../validation/review-workflows.mjs';
|
|
4
|
+
import { ENTITY_STAGE_ATTRIBUTE, STAGE_TRANSITION_UID, STAGE_MODEL_UID } from '../constants/workflows.mjs';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
*
|
|
8
|
+
* @param { Core.Strapi } strapi - Strapi instance
|
|
9
|
+
* @param userAbility
|
|
10
|
+
* @return { (Stage) => SanitizedStage }
|
|
11
|
+
*/ function sanitizeStage({ strapi: strapi1 }, userAbility) {
|
|
12
|
+
const permissionChecker = strapi1.plugin('content-manager').service('permission-checker').create({
|
|
13
|
+
userAbility,
|
|
14
|
+
model: STAGE_MODEL_UID
|
|
15
|
+
});
|
|
16
|
+
return (entity)=>permissionChecker.sanitizeOutput(entity);
|
|
17
|
+
}
|
|
18
|
+
var stages = {
|
|
19
|
+
/**
|
|
20
|
+
* List all stages
|
|
21
|
+
* @param {import('koa').BaseContext} ctx - koa context
|
|
22
|
+
*/ async find (ctx) {
|
|
23
|
+
const { workflow_id: workflowId } = ctx.params;
|
|
24
|
+
const { populate } = ctx.query;
|
|
25
|
+
const stagesService = getService('stages');
|
|
26
|
+
const sanitizer = sanitizeStage({
|
|
27
|
+
strapi
|
|
28
|
+
}, ctx.state.userAbility);
|
|
29
|
+
const stages = await stagesService.find({
|
|
30
|
+
workflowId,
|
|
31
|
+
populate
|
|
32
|
+
});
|
|
33
|
+
ctx.body = {
|
|
34
|
+
data: await async.map(stages, sanitizer)
|
|
35
|
+
};
|
|
36
|
+
},
|
|
37
|
+
/**
|
|
38
|
+
* Get one stage
|
|
39
|
+
* @param {import('koa').BaseContext} ctx - koa context
|
|
40
|
+
*/ async findById (ctx) {
|
|
41
|
+
const { id, workflow_id: workflowId } = ctx.params;
|
|
42
|
+
const { populate } = ctx.query;
|
|
43
|
+
const stagesService = getService('stages');
|
|
44
|
+
const sanitizer = sanitizeStage({
|
|
45
|
+
strapi
|
|
46
|
+
}, ctx.state.userAbility);
|
|
47
|
+
const stage = await stagesService.findById(id, {
|
|
48
|
+
workflowId,
|
|
49
|
+
populate
|
|
50
|
+
});
|
|
51
|
+
ctx.body = {
|
|
52
|
+
data: await sanitizer(stage)
|
|
53
|
+
};
|
|
54
|
+
},
|
|
55
|
+
/**
|
|
56
|
+
* Updates an entity's stage.
|
|
57
|
+
* @async
|
|
58
|
+
* @param {Object} ctx - The Koa context object.
|
|
59
|
+
* @param {Object} ctx.params - An object containing the parameters from the request URL.
|
|
60
|
+
* @param {string} ctx.params.model_uid - The model UID of the entity.
|
|
61
|
+
* @param {string} ctx.params.id - The ID of the entity to update.
|
|
62
|
+
* @param {Object} ctx.request.body.data - Optional data object containing the new stage ID for the entity.
|
|
63
|
+
* @param {string} ctx.request.body.data.id - The ID of the new stage for the entity.
|
|
64
|
+
* @throws {ApplicationError} If review workflows is not activated on the specified model UID.
|
|
65
|
+
* @throws {ValidationError} If the `data` object in the request body fails to pass validation.
|
|
66
|
+
* @returns {Promise<void>} A promise that resolves when the entity's stage has been updated.
|
|
67
|
+
*/ async updateEntity (ctx) {
|
|
68
|
+
const stagesService = getService('stages');
|
|
69
|
+
const stagePermissions = getService('stage-permissions');
|
|
70
|
+
const workflowService = getService('workflows');
|
|
71
|
+
const { model_uid: modelUID, id: documentId } = ctx.params;
|
|
72
|
+
const { body, query = {} } = ctx.request;
|
|
73
|
+
const { sanitizeOutput } = strapi.plugin('content-manager').service('permission-checker').create({
|
|
74
|
+
userAbility: ctx.state.userAbility,
|
|
75
|
+
model: modelUID
|
|
76
|
+
});
|
|
77
|
+
// Load entity
|
|
78
|
+
const locale = await validateLocale(query?.locale);
|
|
79
|
+
const entity = await strapi.documents(modelUID).findOne({
|
|
80
|
+
documentId,
|
|
81
|
+
// @ts-expect-error - locale should be also null in the doc service types
|
|
82
|
+
locale,
|
|
83
|
+
populate: [
|
|
84
|
+
ENTITY_STAGE_ATTRIBUTE
|
|
85
|
+
]
|
|
86
|
+
});
|
|
87
|
+
if (!entity) {
|
|
88
|
+
ctx.throw(404, 'Entity not found');
|
|
89
|
+
}
|
|
90
|
+
// Validate if entity stage can be updated
|
|
91
|
+
const canTransition = stagePermissions.can(STAGE_TRANSITION_UID, entity[ENTITY_STAGE_ATTRIBUTE]?.id);
|
|
92
|
+
if (!canTransition) {
|
|
93
|
+
ctx.throw(403, 'Forbidden stage transition');
|
|
94
|
+
}
|
|
95
|
+
const { id: stageId } = await validateUpdateStageOnEntity({
|
|
96
|
+
id: Number(body?.data?.id)
|
|
97
|
+
}, 'You should pass an id to the body of the put request.');
|
|
98
|
+
const workflow = await workflowService.assertContentTypeBelongsToWorkflow(modelUID);
|
|
99
|
+
workflowService.assertStageBelongsToWorkflow(stageId, workflow);
|
|
100
|
+
const updatedEntity = await stagesService.updateEntity(entity, modelUID, stageId);
|
|
101
|
+
ctx.body = {
|
|
102
|
+
data: await sanitizeOutput(updatedEntity)
|
|
103
|
+
};
|
|
104
|
+
},
|
|
105
|
+
/**
|
|
106
|
+
* List all the stages that are available for a user to transition an entity to.
|
|
107
|
+
* If the user has permission to change the current stage of the entity every other stage in the workflow is returned
|
|
108
|
+
* @async
|
|
109
|
+
* @param {*} ctx
|
|
110
|
+
* @param {string} ctx.params.model_uid - The model UID of the entity.
|
|
111
|
+
* @param {string} ctx.params.id - The ID of the entity.
|
|
112
|
+
* @throws {ApplicationError} If review workflows is not activated on the specified model UID.
|
|
113
|
+
*/ async listAvailableStages (ctx) {
|
|
114
|
+
const stagePermissions = getService('stage-permissions');
|
|
115
|
+
const workflowService = getService('workflows');
|
|
116
|
+
const { model_uid: modelUID, id: documentId } = ctx.params;
|
|
117
|
+
const { query = {} } = ctx.request;
|
|
118
|
+
if (strapi.plugin('content-manager').service('permission-checker').create({
|
|
119
|
+
userAbility: ctx.state.userAbility,
|
|
120
|
+
model: modelUID
|
|
121
|
+
}).cannot.read()) {
|
|
122
|
+
return ctx.forbidden();
|
|
123
|
+
}
|
|
124
|
+
// Load entity
|
|
125
|
+
const locale = await validateLocale(query?.locale) ?? undefined;
|
|
126
|
+
const entity = await strapi.documents(modelUID).findOne({
|
|
127
|
+
documentId,
|
|
128
|
+
locale,
|
|
129
|
+
populate: [
|
|
130
|
+
ENTITY_STAGE_ATTRIBUTE
|
|
131
|
+
]
|
|
132
|
+
});
|
|
133
|
+
if (!entity) {
|
|
134
|
+
ctx.throw(404, 'Entity not found');
|
|
135
|
+
}
|
|
136
|
+
const entityStageId = entity[ENTITY_STAGE_ATTRIBUTE]?.id;
|
|
137
|
+
const canTransition = stagePermissions.can(STAGE_TRANSITION_UID, entityStageId);
|
|
138
|
+
const [workflowCount, workflowResult] = await Promise.all([
|
|
139
|
+
workflowService.count(),
|
|
140
|
+
workflowService.getAssignedWorkflow(modelUID, {
|
|
141
|
+
populate: 'stages'
|
|
142
|
+
})
|
|
143
|
+
]);
|
|
144
|
+
const workflowStages = workflowResult ? workflowResult.stages : [];
|
|
145
|
+
const meta = {
|
|
146
|
+
stageCount: workflowStages.length,
|
|
147
|
+
workflowCount
|
|
148
|
+
};
|
|
149
|
+
if (!canTransition) {
|
|
150
|
+
ctx.body = {
|
|
151
|
+
data: [],
|
|
152
|
+
meta
|
|
153
|
+
};
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
const data = workflowStages.filter((stage)=>stage.id !== entityStageId);
|
|
157
|
+
ctx.body = {
|
|
158
|
+
data,
|
|
159
|
+
meta
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
export { stages as default };
|
|
165
|
+
//# sourceMappingURL=stages.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stages.mjs","sources":["../../../server/src/controllers/stages.ts"],"sourcesContent":["import type { Context } from 'koa';\nimport type { Core } from '@strapi/types';\n\nimport { async, validate } from '@strapi/utils';\nimport { getService } from '../utils';\nimport { validateUpdateStageOnEntity, validateLocale } from '../validation/review-workflows';\nimport {\n STAGE_MODEL_UID,\n ENTITY_STAGE_ATTRIBUTE,\n STAGE_TRANSITION_UID,\n} from '../constants/workflows';\n\n/**\n *\n * @param { Core.Strapi } strapi - Strapi instance\n * @param userAbility\n * @return { (Stage) => SanitizedStage }\n */\nfunction sanitizeStage({ strapi }: { strapi: Core.Strapi }, userAbility: unknown) {\n const permissionChecker = strapi\n .plugin('content-manager')\n .service('permission-checker')\n .create({ userAbility, model: STAGE_MODEL_UID });\n\n return (entity: unknown) => permissionChecker.sanitizeOutput(entity);\n}\n\nexport default {\n /**\n * List all stages\n * @param {import('koa').BaseContext} ctx - koa context\n */\n async find(ctx: Context) {\n const { workflow_id: workflowId } = ctx.params;\n const { populate } = ctx.query;\n const stagesService = getService('stages');\n const sanitizer = sanitizeStage({ strapi }, ctx.state.userAbility);\n\n const stages = await stagesService.find({\n workflowId,\n populate,\n });\n\n ctx.body = {\n data: await async.map(stages, sanitizer),\n };\n },\n /**\n * Get one stage\n * @param {import('koa').BaseContext} ctx - koa context\n */\n async findById(ctx: Context) {\n const { id, workflow_id: workflowId } = ctx.params;\n const { populate } = ctx.query;\n const stagesService = getService('stages');\n const sanitizer = sanitizeStage({ strapi }, ctx.state.userAbility);\n\n const stage = await stagesService.findById(id, {\n workflowId,\n populate,\n });\n\n ctx.body = {\n data: await sanitizer(stage),\n };\n },\n\n /**\n * Updates an entity's stage.\n * @async\n * @param {Object} ctx - The Koa context object.\n * @param {Object} ctx.params - An object containing the parameters from the request URL.\n * @param {string} ctx.params.model_uid - The model UID of the entity.\n * @param {string} ctx.params.id - The ID of the entity to update.\n * @param {Object} ctx.request.body.data - Optional data object containing the new stage ID for the entity.\n * @param {string} ctx.request.body.data.id - The ID of the new stage for the entity.\n * @throws {ApplicationError} If review workflows is not activated on the specified model UID.\n * @throws {ValidationError} If the `data` object in the request body fails to pass validation.\n * @returns {Promise<void>} A promise that resolves when the entity's stage has been updated.\n */\n async updateEntity(ctx: Context) {\n const stagesService = getService('stages');\n const stagePermissions = getService('stage-permissions');\n const workflowService = getService('workflows');\n\n const { model_uid: modelUID, id: documentId } = ctx.params;\n const { body, query = {} } = ctx.request;\n\n const { sanitizeOutput } = strapi\n .plugin('content-manager')\n .service('permission-checker')\n .create({ userAbility: ctx.state.userAbility, model: modelUID });\n\n // Load entity\n const locale = await validateLocale(query?.locale);\n const entity = await strapi.documents(modelUID).findOne({\n documentId,\n // @ts-expect-error - locale should be also null in the doc service types\n locale,\n populate: [ENTITY_STAGE_ATTRIBUTE],\n });\n\n if (!entity) {\n ctx.throw(404, 'Entity not found');\n }\n\n // Validate if entity stage can be updated\n const canTransition = stagePermissions.can(\n STAGE_TRANSITION_UID,\n entity[ENTITY_STAGE_ATTRIBUTE]?.id\n );\n\n if (!canTransition) {\n ctx.throw(403, 'Forbidden stage transition');\n }\n\n const { id: stageId } = await validateUpdateStageOnEntity(\n { id: Number(body?.data?.id) },\n 'You should pass an id to the body of the put request.'\n );\n\n const workflow = await workflowService.assertContentTypeBelongsToWorkflow(modelUID);\n workflowService.assertStageBelongsToWorkflow(stageId, workflow);\n\n const updatedEntity = await stagesService.updateEntity(entity, modelUID, stageId);\n\n ctx.body = { data: await sanitizeOutput(updatedEntity) };\n },\n\n /**\n * List all the stages that are available for a user to transition an entity to.\n * If the user has permission to change the current stage of the entity every other stage in the workflow is returned\n * @async\n * @param {*} ctx\n * @param {string} ctx.params.model_uid - The model UID of the entity.\n * @param {string} ctx.params.id - The ID of the entity.\n * @throws {ApplicationError} If review workflows is not activated on the specified model UID.\n */\n async listAvailableStages(ctx: Context) {\n const stagePermissions = getService('stage-permissions');\n const workflowService = getService('workflows');\n\n const { model_uid: modelUID, id: documentId } = ctx.params;\n const { query = {} } = ctx.request;\n\n if (\n strapi\n .plugin('content-manager')\n .service('permission-checker')\n .create({ userAbility: ctx.state.userAbility, model: modelUID })\n .cannot.read()\n ) {\n return ctx.forbidden();\n }\n\n // Load entity\n const locale = (await validateLocale(query?.locale)) ?? undefined;\n const entity = await strapi.documents(modelUID).findOne({\n documentId,\n locale,\n populate: [ENTITY_STAGE_ATTRIBUTE],\n });\n\n if (!entity) {\n ctx.throw(404, 'Entity not found');\n }\n\n const entityStageId = entity[ENTITY_STAGE_ATTRIBUTE]?.id;\n const canTransition = stagePermissions.can(STAGE_TRANSITION_UID, entityStageId);\n\n const [workflowCount, workflowResult] = await Promise.all([\n workflowService.count(),\n workflowService.getAssignedWorkflow(modelUID, {\n populate: 'stages',\n }),\n ]);\n\n const workflowStages = workflowResult ? workflowResult.stages : [];\n\n const meta = {\n stageCount: workflowStages.length,\n workflowCount,\n };\n\n if (!canTransition) {\n ctx.body = {\n data: [],\n meta,\n };\n\n return;\n }\n\n const data = workflowStages.filter((stage: any) => stage.id !== entityStageId);\n ctx.body = {\n data,\n meta,\n };\n },\n};\n"],"names":["sanitizeStage","strapi","userAbility","permissionChecker","plugin","service","create","model","STAGE_MODEL_UID","entity","sanitizeOutput","find","ctx","workflow_id","workflowId","params","populate","query","stagesService","getService","sanitizer","state","stages","body","data","async","map","findById","id","stage","updateEntity","stagePermissions","workflowService","model_uid","modelUID","documentId","request","locale","validateLocale","documents","findOne","ENTITY_STAGE_ATTRIBUTE","throw","canTransition","can","STAGE_TRANSITION_UID","stageId","validateUpdateStageOnEntity","Number","workflow","assertContentTypeBelongsToWorkflow","assertStageBelongsToWorkflow","updatedEntity","listAvailableStages","cannot","read","forbidden","undefined","entityStageId","workflowCount","workflowResult","Promise","all","count","getAssignedWorkflow","workflowStages","meta","stageCount","length","filter"],"mappings":"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"}
|
|
@@ -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,15 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const createHomepageController = ()=>{
|
|
4
|
+
const homepageService = strapi.plugin('review-workflows').service('homepage');
|
|
5
|
+
return {
|
|
6
|
+
async getRecentlyAssignedDocuments () {
|
|
7
|
+
return {
|
|
8
|
+
data: await homepageService.getRecentlyAssignedDocuments()
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
exports.createHomepageController = createHomepageController;
|
|
15
|
+
//# sourceMappingURL=homepage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"homepage.js","sources":["../../../../server/src/homepage/controllers/homepage.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport type { GetRecentlyAssignedDocuments } from '../../../../shared/contracts/homepage';\n\nconst createHomepageController = () => {\n const homepageService = strapi.plugin('review-workflows').service('homepage');\n\n return {\n async getRecentlyAssignedDocuments(): Promise<GetRecentlyAssignedDocuments.Response> {\n return { data: await homepageService.getRecentlyAssignedDocuments() };\n },\n } satisfies Core.Controller;\n};\n\nexport { createHomepageController };\n"],"names":["createHomepageController","homepageService","strapi","plugin","service","getRecentlyAssignedDocuments","data"],"mappings":";;AAGA,MAAMA,wBAA2B,GAAA,IAAA;AAC/B,IAAA,MAAMC,kBAAkBC,MAAOC,CAAAA,MAAM,CAAC,kBAAA,CAAA,CAAoBC,OAAO,CAAC,UAAA,CAAA;IAElE,OAAO;QACL,MAAMC,4BAAAA,CAAAA,GAAAA;YACJ,OAAO;gBAAEC,IAAM,EAAA,MAAML,gBAAgBI,4BAA4B;AAAG,aAAA;AACtE;AACF,KAAA;AACF;;;;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
const createHomepageController = ()=>{
|
|
2
|
+
const homepageService = strapi.plugin('review-workflows').service('homepage');
|
|
3
|
+
return {
|
|
4
|
+
async getRecentlyAssignedDocuments () {
|
|
5
|
+
return {
|
|
6
|
+
data: await homepageService.getRecentlyAssignedDocuments()
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export { createHomepageController };
|
|
13
|
+
//# sourceMappingURL=homepage.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"homepage.mjs","sources":["../../../../server/src/homepage/controllers/homepage.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport type { GetRecentlyAssignedDocuments } from '../../../../shared/contracts/homepage';\n\nconst createHomepageController = () => {\n const homepageService = strapi.plugin('review-workflows').service('homepage');\n\n return {\n async getRecentlyAssignedDocuments(): Promise<GetRecentlyAssignedDocuments.Response> {\n return { data: await homepageService.getRecentlyAssignedDocuments() };\n },\n } satisfies Core.Controller;\n};\n\nexport { createHomepageController };\n"],"names":["createHomepageController","homepageService","strapi","plugin","service","getRecentlyAssignedDocuments","data"],"mappings":"AAGA,MAAMA,wBAA2B,GAAA,IAAA;AAC/B,IAAA,MAAMC,kBAAkBC,MAAOC,CAAAA,MAAM,CAAC,kBAAA,CAAA,CAAoBC,OAAO,CAAC,UAAA,CAAA;IAElE,OAAO;QACL,MAAMC,4BAAAA,CAAAA,GAAAA;YACJ,OAAO;gBAAEC,IAAM,EAAA,MAAML,gBAAgBI,4BAA4B;AAAG,aAAA;AACtE;AACF,KAAA;AACF;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../server/src/homepage/controllers/index.ts"],"sourcesContent":["import type { Plugin } from '@strapi/types';\nimport { createHomepageController } from './homepage';\n\nexport const controllers = {\n homepage: createHomepageController,\n /**\n * Casting is needed because the types aren't aware that Strapi supports\n * passing a controller factory as the value, instead of a controller object directly\n */\n} as unknown as Plugin.LoadedPlugin['controllers'];\n"],"names":["controllers","homepage","createHomepageController"],"mappings":";;;;MAGaA,WAAc,GAAA;IACzBC,QAAUC,EAAAA;AAKZ;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../server/src/homepage/controllers/index.ts"],"sourcesContent":["import type { Plugin } from '@strapi/types';\nimport { createHomepageController } from './homepage';\n\nexport const controllers = {\n homepage: createHomepageController,\n /**\n * Casting is needed because the types aren't aware that Strapi supports\n * passing a controller factory as the value, instead of a controller object directly\n */\n} as unknown as Plugin.LoadedPlugin['controllers'];\n"],"names":["controllers","homepage","createHomepageController"],"mappings":";;MAGaA,WAAc,GAAA;IACzBC,QAAUC,EAAAA;AAKZ;;;;"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var index = require('./routes/index.js');
|
|
4
|
+
var index$1 = require('./controllers/index.js');
|
|
5
|
+
var index$2 = require('./services/index.js');
|
|
6
|
+
|
|
7
|
+
var homepage = {
|
|
8
|
+
routes: index.routes,
|
|
9
|
+
controllers: index$1.controllers,
|
|
10
|
+
services: index$2.services
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
module.exports = homepage;
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../server/src/homepage/index.ts"],"sourcesContent":["import { routes } from './routes';\nimport { controllers } from './controllers';\nimport { services } from './services';\n\nexport default {\n routes,\n controllers,\n services,\n};\n"],"names":["routes","controllers","services"],"mappings":";;;;;;AAIA,eAAe;AACbA,YAAAA,YAAAA;AACAC,iBAAAA,mBAAAA;AACAC,cAAAA;AACF,CAAE;;;;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { routes } from './routes/index.mjs';
|
|
2
|
+
import { controllers } from './controllers/index.mjs';
|
|
3
|
+
import { services } from './services/index.mjs';
|
|
4
|
+
|
|
5
|
+
var homepage = {
|
|
6
|
+
routes,
|
|
7
|
+
controllers,
|
|
8
|
+
services
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export { homepage as default };
|
|
12
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../server/src/homepage/index.ts"],"sourcesContent":["import { routes } from './routes';\nimport { controllers } from './controllers';\nimport { services } from './services';\n\nexport default {\n routes,\n controllers,\n services,\n};\n"],"names":["routes","controllers","services"],"mappings":";;;;AAIA,eAAe;AACbA,IAAAA,MAAAA;AACAC,IAAAA,WAAAA;AACAC,IAAAA;AACF,CAAE;;;;"}
|