@strapi/review-workflows 5.57.0 → 5.59.0
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/routes/content-manager/model/id/components/Header.js +6 -6
- package/dist/admin/routes/content-manager/model/id/components/Header.js.map +1 -1
- package/dist/admin/routes/content-manager/model/id/components/Header.mjs +6 -6
- package/dist/admin/routes/content-manager/model/id/components/Header.mjs.map +1 -1
- package/dist/admin/routes/content-manager/model/id/components/Panel.js +6 -6
- package/dist/admin/routes/content-manager/model/id/components/Panel.js.map +1 -1
- package/dist/admin/routes/content-manager/model/id/components/Panel.mjs +6 -6
- package/dist/admin/routes/content-manager/model/id/components/Panel.mjs.map +1 -1
- package/dist/admin/routes/content-manager/model/id/hooks/useIsReviewWorkflowVisible.js +13 -0
- package/dist/admin/routes/content-manager/model/id/hooks/useIsReviewWorkflowVisible.js.map +1 -0
- package/dist/admin/routes/content-manager/model/id/hooks/useIsReviewWorkflowVisible.mjs +11 -0
- package/dist/admin/routes/content-manager/model/id/hooks/useIsReviewWorkflowVisible.mjs.map +1 -0
- package/dist/admin/routes/settings/components/Stages.js.map +1 -1
- package/dist/admin/routes/settings/components/Stages.mjs.map +1 -1
- package/dist/admin/src/routes/content-manager/model/id/components/Header.d.ts +2 -1
- package/dist/admin/src/routes/content-manager/model/id/hooks/useIsReviewWorkflowVisible.d.ts +5 -0
- package/dist/server/controllers/workflows.js +6 -10
- package/dist/server/controllers/workflows.js.map +1 -1
- package/dist/server/controllers/workflows.mjs +6 -10
- package/dist/server/controllers/workflows.mjs.map +1 -1
- package/dist/server/entitlements.js +29 -0
- package/dist/server/entitlements.js.map +1 -0
- package/dist/server/entitlements.mjs +27 -0
- package/dist/server/entitlements.mjs.map +1 -0
- package/dist/server/index.js +5 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +5 -0
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/register.js +2 -0
- package/dist/server/register.js.map +1 -1
- package/dist/server/register.mjs +2 -0
- package/dist/server/register.mjs.map +1 -1
- package/dist/server/services/metrics/index.js +2 -2
- package/dist/server/services/metrics/index.js.map +1 -1
- package/dist/server/services/metrics/index.mjs +2 -2
- package/dist/server/services/metrics/index.mjs.map +1 -1
- package/dist/server/services/metrics/weekly-metrics.js +1 -1
- package/dist/server/services/metrics/weekly-metrics.js.map +1 -1
- package/dist/server/services/metrics/weekly-metrics.mjs +1 -1
- package/dist/server/services/metrics/weekly-metrics.mjs.map +1 -1
- package/dist/server/services/stage-permissions.js +4 -4
- package/dist/server/services/stage-permissions.js.map +1 -1
- package/dist/server/services/stage-permissions.mjs +4 -4
- package/dist/server/services/stage-permissions.mjs.map +1 -1
- package/dist/server/services/stages.js +2 -2
- package/dist/server/services/stages.js.map +1 -1
- package/dist/server/services/stages.mjs +2 -2
- package/dist/server/services/stages.mjs.map +1 -1
- package/dist/server/services/workflows.js +2 -2
- package/dist/server/services/workflows.js.map +1 -1
- package/dist/server/services/workflows.mjs +2 -2
- package/dist/server/services/workflows.mjs.map +1 -1
- package/dist/server/src/controllers/workflows.d.ts.map +1 -1
- package/dist/server/src/entitlements.d.ts +7 -0
- package/dist/server/src/entitlements.d.ts.map +1 -0
- package/dist/server/src/index.d.ts +21 -21
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/register.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +5 -8
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/metrics/index.d.ts +8 -2
- package/dist/server/src/services/metrics/index.d.ts.map +1 -1
- package/dist/server/src/services/metrics/weekly-metrics.d.ts +2 -6
- package/dist/server/src/services/metrics/weekly-metrics.d.ts.map +1 -1
- package/dist/server/src/services/workflows.d.ts +5 -3
- package/dist/server/src/services/workflows.d.ts.map +1 -1
- package/dist/shared/contracts/review-workflows.d.ts.map +1 -1
- package/package.json +10 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflows.mjs","sources":["../../../server/src/services/workflows.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport { isString, map } from 'lodash';\nimport { errors, emitAudit } from '@strapi/utils';\nimport { WORKFLOW_MODEL_UID, WORKFLOW_POPULATE } from '../constants/workflows';\nimport {\n AUDITED_EVENTS,\n getWorkflowChanges,\n toWorkflowEvent,\n toWorkflowSnapshot,\n} from '../audit-logs';\nimport { getService } from '../utils';\nimport { getWorkflowContentTypeFilter } from '../utils/review-workflows';\nimport workflowsContentTypesFactory, { type ContentTypeTransfer } from './workflow-content-types';\n\nconst processFilters = ({ strapi }: { strapi: Core.Strapi }, filters: any = {}) => {\n const processedFilters = { ...filters };\n\n if (isString(filters.contentTypes)) {\n processedFilters.contentTypes = getWorkflowContentTypeFilter({ strapi }, filters.contentTypes);\n }\n\n return processedFilters;\n};\n\n// TODO: How can we improve this? Maybe using traversePopulate?\nconst processPopulate = (populate: any) => {\n // If it does not exist or it's not an object (like an array) return the default populate\n if (!populate) {\n return WORKFLOW_POPULATE;\n }\n\n return populate;\n};\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => {\n const workflowsContentTypes = workflowsContentTypesFactory({ strapi });\n const workflowValidator = getService('validation', { strapi });\n const metrics = getService('workflow-metrics', { strapi });\n\n const emitContentTypeTransfers = async (transfers: ContentTypeTransfer[]) => {\n for (const { workflowId, name, before, after } of transfers) {\n const changes = getWorkflowChanges(\n toWorkflowSnapshot({ id: workflowId, name, contentTypes: before }),\n toWorkflowSnapshot({ id: workflowId, name, contentTypes: after })\n );\n\n if (Object.keys(changes).length > 0) {\n await emitAudit({ strapi }, AUDITED_EVENTS.WORKFLOW_UPDATE, { workflowId, name, changes });\n }\n }\n };\n\n return {\n /**\n * Returns all the workflows matching the user-defined filters.\n * @param {object} opts - Options for the query.\n * @param {object} opts.filters - Filters object.\n * @returns {Promise<object[]>} - List of workflows that match the user's filters.\n */\n async find(opts: any = {}) {\n const filters = processFilters({ strapi }, opts.filters);\n const populate = processPopulate(opts.populate);\n\n const query = strapi.get('query-params').transform(WORKFLOW_MODEL_UID, {\n ...opts,\n filters,\n populate,\n });\n\n return strapi.db.query(WORKFLOW_MODEL_UID).findMany(query);\n },\n\n /**\n * Returns the workflow with the specified ID.\n * @param {string} id - ID of the requested workflow.\n * @param {object} opts - Options for the query.\n * @returns {Promise<object>} - Workflow object matching the requested ID.\n */\n findById(id: any, opts: { populate?: any } = {}) {\n const populate = processPopulate(opts.populate);\n\n const query = strapi.get('query-params').transform(WORKFLOW_MODEL_UID, { populate });\n\n return strapi.db.query(WORKFLOW_MODEL_UID).findOne({\n ...query,\n where: { id },\n });\n },\n\n /**\n * Creates a new workflow.\n * @param {object} opts - Options for creating the new workflow.\n * @returns {Promise<object>} - Workflow object that was just created.\n * @throws {ValidationError} - If the workflow has no stages.\n */\n async create(opts: { data: any }) {\n let createOpts = { ...opts, populate: WORKFLOW_POPULATE };\n\n workflowValidator.validateWorkflowStages(opts.data.stages);\n await workflowValidator.validateWorkflowCount(1);\n\n let transfers: ContentTypeTransfer[] = [];\n\n const createdWorkflow = await strapi.db.transaction(async () => {\n // Create stages\n const stages = await getService('stages', { strapi }).createMany(opts.data.stages);\n createOpts = { ...createOpts, data: { ...createOpts.data, stages: map(stages, 'id') } };\n\n if (opts.data.stageRequiredToPublishName) {\n const stageRequiredToPublish = stages.find(\n (stage: any) => stage.name === opts.data.stageRequiredToPublishName\n );\n if (!stageRequiredToPublish) {\n throw new errors.ApplicationError('Stage required to publish does not exist');\n }\n\n createOpts = {\n ...createOpts,\n data: { ...createOpts.data, stageRequiredToPublish: stageRequiredToPublish.id },\n };\n }\n\n // Update (un)assigned Content Types\n if (opts.data.contentTypes) {\n transfers = await workflowsContentTypes.migrate({\n destContentTypes: opts.data.contentTypes,\n stageId: stages[0].id,\n });\n }\n\n // Create Workflow\n const createdWorkflow = await strapi.db\n .query(WORKFLOW_MODEL_UID)\n .create(strapi.get('query-params').transform(WORKFLOW_MODEL_UID, createOpts));\n\n metrics.sendDidCreateWorkflow(createdWorkflow.id, !!opts.data.stageRequiredToPublishName);\n\n if (opts.data.stageRequiredToPublishName) {\n await strapi\n .plugin('content-releases')\n .service('release-action')\n ?.validateActionsByContentTypes(opts.data.contentTypes);\n }\n\n return createdWorkflow;\n });\n\n const { contentTypes, stages, stageRequiredToPublish } = toWorkflowSnapshot(createdWorkflow);\n await emitAudit({ strapi }, AUDITED_EVENTS.WORKFLOW_CREATE, {\n ...toWorkflowEvent(createdWorkflow),\n contentTypes,\n stages,\n stageRequiredToPublish,\n });\n await emitContentTypeTransfers(transfers);\n\n return createdWorkflow;\n },\n\n /**\n * Updates an existing workflow.\n * @param {object} workflow - The existing workflow to update.\n * @param {object} opts - Options for updating the workflow.\n * @returns {Promise<object>} - Workflow object that was just updated.\n * @throws {ApplicationError} - If the supplied stage ID does not belong to the workflow.\n */\n async update(workflow: any, opts: any) {\n const stageService = getService('stages', { strapi });\n let updateOpts = { ...opts, populate: { ...WORKFLOW_POPULATE } };\n let updatedStages: any = [];\n let updatedStageIds: any;\n\n await workflowValidator.validateWorkflowCount();\n\n let transfers: ContentTypeTransfer[] = [];\n\n const updatedWorkflow = await strapi.db.transaction(async () => {\n // Update stages\n if (opts.data.stages) {\n workflowValidator.validateWorkflowStages(opts.data.stages);\n opts.data.stages.forEach((stage: any) =>\n this.assertStageBelongsToWorkflow(stage.id, workflow)\n );\n\n updatedStages = await stageService.replaceStages(\n workflow.stages,\n opts.data.stages,\n workflow.contentTypes\n );\n updatedStageIds = updatedStages.map((stage: any) => stage.id);\n\n updateOpts = { ...updateOpts, data: { ...updateOpts.data, stages: updatedStageIds } };\n }\n\n if (opts.data.stageRequiredToPublishName !== undefined) {\n const stages = updatedStages ?? workflow.stages;\n\n if (opts.data.stageRequiredToPublishName === null) {\n updateOpts = {\n ...updateOpts,\n data: { ...updateOpts.data, stageRequiredToPublish: null },\n };\n } else {\n const stageRequiredToPublish = stages.find(\n (stage: any) => stage.name === opts.data.stageRequiredToPublishName\n );\n\n if (!stageRequiredToPublish) {\n throw new errors.ApplicationError('Stage required to publish does not exist');\n }\n\n updateOpts = {\n ...updateOpts,\n data: { ...updateOpts.data, stageRequiredToPublish: stageRequiredToPublish.id },\n };\n }\n }\n\n // Update (un)assigned Content Types\n if (opts.data.contentTypes) {\n transfers = await workflowsContentTypes.migrate({\n srcContentTypes: workflow.contentTypes,\n destContentTypes: opts.data.contentTypes,\n stageId: updatedStageIds ? updatedStageIds[0] : workflow.stages[0].id,\n });\n }\n\n metrics.sendDidEditWorkflow(workflow.id, !!opts.data.stageRequiredToPublishName);\n\n const query = strapi.get('query-params').transform(WORKFLOW_MODEL_UID, updateOpts);\n\n // Update Workflow\n const updatedWorkflow = await strapi.db.query(WORKFLOW_MODEL_UID).update({\n ...query,\n where: { id: workflow.id },\n });\n\n await strapi\n .plugin('content-releases')\n .service('release-action')\n ?.validateActionsByContentTypes([\n ...workflow.contentTypes,\n ...(opts.data.contentTypes || []),\n ]);\n\n return updatedWorkflow;\n });\n\n const changes = getWorkflowChanges(\n toWorkflowSnapshot(workflow),\n toWorkflowSnapshot(updatedWorkflow)\n );\n\n if (Object.keys(changes).length > 0) {\n await emitAudit({ strapi }, AUDITED_EVENTS.WORKFLOW_UPDATE, {\n ...toWorkflowEvent(updatedWorkflow),\n changes,\n });\n }\n await emitContentTypeTransfers(transfers);\n\n return updatedWorkflow;\n },\n\n /**\n * Deletes an existing workflow.\n * Also deletes all the workflow stages and migrate all assigned the content types.\n * @param {*} workflow\n * @param {*} opts\n * @returns\n */\n async delete(workflow: any, opts: any) {\n const stageService = getService('stages', { strapi });\n\n const workflowCount = await this.count();\n\n if (workflowCount <= 1) {\n throw new errors.ApplicationError('Can not delete the last workflow');\n }\n\n const deletedWorkflow = await strapi.db.transaction(async () => {\n // Delete stages\n await stageService.deleteMany(workflow.stages);\n\n // Unassign all content types, this will migrate the content types to null\n await workflowsContentTypes.migrate({\n srcContentTypes: workflow.contentTypes,\n destContentTypes: [],\n });\n\n const query = strapi.get('query-params').transform(WORKFLOW_MODEL_UID, opts);\n\n // Delete Workflow\n const deletedWorkflow = await strapi.db.query(WORKFLOW_MODEL_UID).delete({\n ...query,\n where: { id: workflow.id },\n });\n\n await strapi\n .plugin('content-releases')\n .service('release-action')\n ?.validateActionsByContentTypes(workflow.contentTypes);\n\n return deletedWorkflow;\n });\n\n await emitAudit({ strapi }, AUDITED_EVENTS.WORKFLOW_DELETE, toWorkflowEvent(workflow));\n\n return deletedWorkflow;\n },\n\n /**\n * Returns the total count of workflows.\n * @returns {Promise<number>} - Total count of workflows.\n */\n count() {\n return strapi.db.query(WORKFLOW_MODEL_UID).count();\n },\n\n /**\n * Finds the assigned workflow for a given content type ID.\n * @param {string} uid - Content type ID to find the assigned workflow for.\n * @param {object} opts - Options for the query.\n * @returns {Promise<object|null>} - Assigned workflow object if found, or null.\n */\n async getAssignedWorkflow(uid: any, opts: any = {}) {\n const workflows = await this._getAssignedWorkflows(uid, opts);\n\n return workflows.length > 0 ? workflows[0] : null;\n },\n\n /**\n * Finds all the assigned workflows for a given content type ID.\n * Normally, there should only be one workflow assigned to a content type.\n * However, edge cases can occur where a content type is assigned to multiple workflows.\n * @param {string} uid - Content type ID to find the assigned workflows for.\n * @param {object} opts - Options for the query.\n * @returns {Promise<object[]>} - List of assigned workflow objects.\n */\n async _getAssignedWorkflows(uid: any, opts = {}) {\n return this.find({\n ...opts,\n filters: { contentTypes: getWorkflowContentTypeFilter({ strapi }, uid) },\n });\n },\n\n /**\n * Asserts that a content type has an assigned workflow.\n * @param {string} uid - Content type ID to verify the assignment of.\n * @returns {Promise<object>} - Workflow object associated with the content type ID.\n * @throws {ApplicationError} - If no assigned workflow is found for the content type ID.\n */\n async assertContentTypeBelongsToWorkflow(uid: any) {\n const workflow = await this.getAssignedWorkflow(uid, {\n populate: 'stages',\n });\n\n if (!workflow) {\n throw new errors.ApplicationError(\n `Review workflows is not activated on Content Type ${uid}.`\n );\n }\n\n return workflow;\n },\n\n /**\n * Asserts that a stage belongs to a given workflow.\n * @param {string} stageId - ID of stage to check.\n * @param {object} workflow - Workflow object to check against.\n * @returns\n * @throws {ApplicationError} - If the stage does not belong to the specified workflow.\n */\n assertStageBelongsToWorkflow(stageId: any, workflow: any) {\n if (!stageId) {\n return;\n }\n\n const belongs = workflow.stages.some((stage: any) => stage.id === stageId);\n if (!belongs) {\n throw new errors.ApplicationError(`Stage does not belong to workflow \"${workflow.name}\"`);\n }\n },\n };\n};\n"],"names":["processFilters","strapi","filters","processedFilters","isString","contentTypes","getWorkflowContentTypeFilter","processPopulate","populate","WORKFLOW_POPULATE","workflowsContentTypes","workflowsContentTypesFactory","workflowValidator","getService","metrics","emitContentTypeTransfers","transfers","workflowId","name","before","after","changes","getWorkflowChanges","toWorkflowSnapshot","Object","keys","length","emitAudit","AUDITED_EVENTS","WORKFLOW_UPDATE","find","opts","query","get","transform","WORKFLOW_MODEL_UID","db","findMany","findById","id","findOne","where","create","createOpts","validateWorkflowStages","data","stages","validateWorkflowCount","createdWorkflow","transaction","createMany","map","stageRequiredToPublishName","stageRequiredToPublish","stage","errors","ApplicationError","migrate","destContentTypes","stageId","sendDidCreateWorkflow","plugin","service","validateActionsByContentTypes","WORKFLOW_CREATE","toWorkflowEvent","update","workflow","stageService","updateOpts","updatedStages","updatedStageIds","updatedWorkflow","forEach","assertStageBelongsToWorkflow","replaceStages","undefined","srcContentTypes","sendDidEditWorkflow","delete","workflowCount","count","deletedWorkflow","deleteMany","WORKFLOW_DELETE","getAssignedWorkflow","uid","workflows","_getAssignedWorkflows","assertContentTypeBelongsToWorkflow","belongs","some"],"mappings":";;;;;;;;AAcA,MAAMA,cAAAA,GAAiB,CAAC,EAAEC,MAAM,EAA2B,EAAEC,OAAAA,GAAe,EAAE,GAAA;AAC5E,IAAA,MAAMC,gBAAAA,GAAmB;AAAE,QAAA,GAAGD;AAAQ,KAAA;IAEtC,IAAIE,QAAAA,CAASF,OAAAA,CAAQG,YAAY,CAAA,EAAG;QAClCF,gBAAAA,CAAiBE,YAAY,GAAGC,4BAAAA,CAA6B;AAAEL,YAAAA;AAAO,SAAA,EAAGC,QAAQG,YAAY,CAAA;AAC/F,IAAA;IAEA,OAAOF,gBAAAA;AACT,CAAA;AAEA;AACA,MAAMI,kBAAkB,CAACC,QAAAA,GAAAA;;AAEvB,IAAA,IAAI,CAACA,QAAAA,EAAU;QACb,OAAOC,iBAAAA;AACT,IAAA;IAEA,OAAOD,QAAAA;AACT,CAAA;AAEA,gBAAe,CAAA,CAAC,EAAEP,MAAM,EAA2B,GAAA;AACjD,IAAA,MAAMS,wBAAwBC,4BAAAA,CAA6B;AAAEV,QAAAA;AAAO,KAAA,CAAA;IACpE,MAAMW,iBAAAA,GAAoBC,WAAW,YAAA,EAAc;AAAEZ,QAAAA;AAAO,KAAA,CAAA;IAC5D,MAAMa,OAAAA,GAAUD,WAAW,kBAAA,EAAoB;AAAEZ,QAAAA;AAAO,KAAA,CAAA;AAExD,IAAA,MAAMc,2BAA2B,OAAOC,SAAAA,GAAAA;QACtC,KAAK,MAAM,EAAEC,UAAU,EAAEC,IAAI,EAAEC,MAAM,EAAEC,KAAK,EAAE,IAAIJ,SAAAA,CAAW;YAC3D,MAAMK,OAAAA,GAAUC,mBACdC,kBAAAA,CAAmB;gBAAkBL,IAAAA;gBAAMb,YAAAA,EAAcc;AAAO,aAAA,CAAA,EAChEI,kBAAAA,CAAmB;gBAAkBL,IAAAA;gBAAMb,YAAAA,EAAce;AAAM,aAAA,CAAA,CAAA;AAGjE,YAAA,IAAII,OAAOC,IAAI,CAACJ,OAAAA,CAAAA,CAASK,MAAM,GAAG,CAAA,EAAG;AACnC,gBAAA,MAAMC,SAAAA,CAAU;AAAE1B,oBAAAA;iBAAO,EAAG2B,cAAAA,CAAeC,eAAe,EAAE;AAAEZ,oBAAAA,UAAAA;AAAYC,oBAAAA,IAAAA;AAAMG,oBAAAA;AAAQ,iBAAA,CAAA;AAC1F,YAAA;AACF,QAAA;AACF,IAAA,CAAA;IAEA,OAAO;AACL;;;;;AAKC,QACD,MAAMS,IAAAA,CAAAA,CAAKC,IAAAA,GAAY,EAAE,EAAA;AACvB,YAAA,MAAM7B,UAAUF,cAAAA,CAAe;AAAEC,gBAAAA;AAAO,aAAA,EAAG8B,KAAK7B,OAAO,CAAA;YACvD,MAAMM,QAAAA,GAAWD,eAAAA,CAAgBwB,IAAAA,CAAKvB,QAAQ,CAAA;AAE9C,YAAA,MAAMwB,QAAQ/B,MAAAA,CAAOgC,GAAG,CAAC,cAAA,CAAA,CAAgBC,SAAS,CAACC,kBAAAA,EAAoB;AACrE,gBAAA,GAAGJ,IAAI;AACP7B,gBAAAA,OAAAA;AACAM,gBAAAA;AACF,aAAA,CAAA;AAEA,YAAA,OAAOP,OAAOmC,EAAE,CAACJ,KAAK,CAACG,kBAAAA,CAAAA,CAAoBE,QAAQ,CAACL,KAAAA,CAAAA;AACtD,QAAA,CAAA;AAEA;;;;;AAKC,QACDM,QAAAA,CAAAA,CAASC,EAAO,EAAER,IAAAA,GAA2B,EAAE,EAAA;YAC7C,MAAMvB,QAAAA,GAAWD,eAAAA,CAAgBwB,IAAAA,CAAKvB,QAAQ,CAAA;AAE9C,YAAA,MAAMwB,QAAQ/B,MAAAA,CAAOgC,GAAG,CAAC,cAAA,CAAA,CAAgBC,SAAS,CAACC,kBAAAA,EAAoB;AAAE3B,gBAAAA;AAAS,aAAA,CAAA;AAElF,YAAA,OAAOP,OAAOmC,EAAE,CAACJ,KAAK,CAACG,kBAAAA,CAAAA,CAAoBK,OAAO,CAAC;AACjD,gBAAA,GAAGR,KAAK;gBACRS,KAAAA,EAAO;AAAEF,oBAAAA;AAAG;AACd,aAAA,CAAA;AACF,QAAA,CAAA;AAEA;;;;;QAMA,MAAMG,QAAOX,IAAmB,EAAA;AAC9B,YAAA,IAAIY,UAAAA,GAAa;AAAE,gBAAA,GAAGZ,IAAI;gBAAEvB,QAAAA,EAAUC;AAAkB,aAAA;AAExDG,YAAAA,iBAAAA,CAAkBgC,sBAAsB,CAACb,IAAAA,CAAKc,IAAI,CAACC,MAAM,CAAA;YACzD,MAAMlC,iBAAAA,CAAkBmC,qBAAqB,CAAC,CAAA,CAAA;AAE9C,YAAA,IAAI/B,YAAmC,EAAE;AAEzC,YAAA,MAAMgC,kBAAkB,MAAM/C,MAAAA,CAAOmC,EAAE,CAACa,WAAW,CAAC,UAAA;;gBAElD,MAAMH,MAAAA,GAAS,MAAMjC,UAAAA,CAAW,QAAA,EAAU;AAAEZ,oBAAAA;AAAO,iBAAA,CAAA,CAAGiD,UAAU,CAACnB,IAAAA,CAAKc,IAAI,CAACC,MAAM,CAAA;gBACjFH,UAAAA,GAAa;AAAE,oBAAA,GAAGA,UAAU;oBAAEE,IAAAA,EAAM;AAAE,wBAAA,GAAGF,WAAWE,IAAI;AAAEC,wBAAAA,MAAAA,EAAQK,IAAIL,MAAAA,EAAQ,IAAA;AAAM;AAAE,iBAAA;AAEtF,gBAAA,IAAIf,IAAAA,CAAKc,IAAI,CAACO,0BAA0B,EAAE;AACxC,oBAAA,MAAMC,sBAAAA,GAAyBP,MAAAA,CAAOhB,IAAI,CACxC,CAACwB,KAAAA,GAAeA,KAAAA,CAAMpC,IAAI,KAAKa,IAAAA,CAAKc,IAAI,CAACO,0BAA0B,CAAA;AAErE,oBAAA,IAAI,CAACC,sBAAAA,EAAwB;wBAC3B,MAAM,IAAIE,MAAAA,CAAOC,gBAAgB,CAAC,0CAAA,CAAA;AACpC,oBAAA;oBAEAb,UAAAA,GAAa;AACX,wBAAA,GAAGA,UAAU;wBACbE,IAAAA,EAAM;AAAE,4BAAA,GAAGF,WAAWE,IAAI;AAAEQ,4BAAAA,sBAAAA,EAAwBA,uBAAuBd;AAAG;AAChF,qBAAA;AACF,gBAAA;;AAGA,gBAAA,IAAIR,IAAAA,CAAKc,IAAI,CAACxC,YAAY,EAAE;oBAC1BW,SAAAA,GAAY,MAAMN,qBAAAA,CAAsB+C,OAAO,CAAC;wBAC9CC,gBAAAA,EAAkB3B,IAAAA,CAAKc,IAAI,CAACxC,YAAY;AACxCsD,wBAAAA,OAAAA,EAASb,MAAM,CAAC,CAAA,CAAE,CAACP;AACrB,qBAAA,CAAA;AACF,gBAAA;;AAGA,gBAAA,MAAMS,kBAAkB,MAAM/C,MAAAA,CAAOmC,EAAE,CACpCJ,KAAK,CAACG,kBAAAA,CAAAA,CACNO,MAAM,CAACzC,OAAOgC,GAAG,CAAC,cAAA,CAAA,CAAgBC,SAAS,CAACC,kBAAAA,EAAoBQ,UAAAA,CAAAA,CAAAA;gBAEnE7B,OAAAA,CAAQ8C,qBAAqB,CAACZ,eAAAA,CAAgBT,EAAE,EAAE,CAAC,CAACR,IAAAA,CAAKc,IAAI,CAACO,0BAA0B,CAAA;AAExF,gBAAA,IAAIrB,IAAAA,CAAKc,IAAI,CAACO,0BAA0B,EAAE;oBACxC,MAAMnD,MAAAA,CACH4D,MAAM,CAAC,kBAAA,CAAA,CACPC,OAAO,CAAC,gBAAA,CAAA,EACPC,6BAAAA,CAA8BhC,IAAAA,CAAKc,IAAI,CAACxC,YAAY,CAAA;AAC1D,gBAAA;gBAEA,OAAO2C,eAAAA;AACT,YAAA,CAAA,CAAA;YAEA,MAAM,EAAE3C,YAAY,EAAEyC,MAAM,EAAEO,sBAAsB,EAAE,GAAG9B,kBAAAA,CAAmByB,eAAAA,CAAAA;AAC5E,YAAA,MAAMrB,SAAAA,CAAU;AAAE1B,gBAAAA;aAAO,EAAG2B,cAAAA,CAAeoC,eAAe,EAAE;AAC1D,gBAAA,GAAGC,gBAAgBjB,eAAAA,CAAgB;AACnC3C,gBAAAA,YAAAA;AACAyC,gBAAAA,MAAAA;AACAO,gBAAAA;AACF,aAAA,CAAA;AACA,YAAA,MAAMtC,wBAAAA,CAAyBC,SAAAA,CAAAA;YAE/B,OAAOgC,eAAAA;AACT,QAAA,CAAA;AAEA;;;;;;AAMC,QACD,MAAMkB,MAAAA,CAAAA,CAAOC,QAAa,EAAEpC,IAAS,EAAA;YACnC,MAAMqC,YAAAA,GAAevD,WAAW,QAAA,EAAU;AAAEZ,gBAAAA;AAAO,aAAA,CAAA;AACnD,YAAA,IAAIoE,UAAAA,GAAa;AAAE,gBAAA,GAAGtC,IAAI;gBAAEvB,QAAAA,EAAU;AAAE,oBAAA,GAAGC;AAAkB;AAAE,aAAA;AAC/D,YAAA,IAAI6D,gBAAqB,EAAE;YAC3B,IAAIC,eAAAA;AAEJ,YAAA,MAAM3D,kBAAkBmC,qBAAqB,EAAA;AAE7C,YAAA,IAAI/B,YAAmC,EAAE;AAEzC,YAAA,MAAMwD,kBAAkB,MAAMvE,MAAAA,CAAOmC,EAAE,CAACa,WAAW,CAAC,UAAA;;AAElD,gBAAA,IAAIlB,IAAAA,CAAKc,IAAI,CAACC,MAAM,EAAE;AACpBlC,oBAAAA,iBAAAA,CAAkBgC,sBAAsB,CAACb,IAAAA,CAAKc,IAAI,CAACC,MAAM,CAAA;AACzDf,oBAAAA,IAAAA,CAAKc,IAAI,CAACC,MAAM,CAAC2B,OAAO,CAAC,CAACnB,KAAAA,GACxB,IAAI,CAACoB,4BAA4B,CAACpB,KAAAA,CAAMf,EAAE,EAAE4B,QAAAA,CAAAA,CAAAA;AAG9CG,oBAAAA,aAAAA,GAAgB,MAAMF,YAAAA,CAAaO,aAAa,CAC9CR,QAAAA,CAASrB,MAAM,EACff,IAAAA,CAAKc,IAAI,CAACC,MAAM,EAChBqB,SAAS9D,YAAY,CAAA;AAEvBkE,oBAAAA,eAAAA,GAAkBD,cAAcnB,GAAG,CAAC,CAACG,KAAAA,GAAeA,MAAMf,EAAE,CAAA;oBAE5D8B,UAAAA,GAAa;AAAE,wBAAA,GAAGA,UAAU;wBAAExB,IAAAA,EAAM;AAAE,4BAAA,GAAGwB,WAAWxB,IAAI;4BAAEC,MAAAA,EAAQyB;AAAgB;AAAE,qBAAA;AACtF,gBAAA;AAEA,gBAAA,IAAIxC,IAAAA,CAAKc,IAAI,CAACO,0BAA0B,KAAKwB,SAAAA,EAAW;oBACtD,MAAM9B,MAAAA,GAASwB,aAAAA,IAAiBH,QAAAA,CAASrB,MAAM;AAE/C,oBAAA,IAAIf,IAAAA,CAAKc,IAAI,CAACO,0BAA0B,KAAK,IAAA,EAAM;wBACjDiB,UAAAA,GAAa;AACX,4BAAA,GAAGA,UAAU;4BACbxB,IAAAA,EAAM;AAAE,gCAAA,GAAGwB,WAAWxB,IAAI;gCAAEQ,sBAAAA,EAAwB;AAAK;AAC3D,yBAAA;oBACF,CAAA,MAAO;AACL,wBAAA,MAAMA,sBAAAA,GAAyBP,MAAAA,CAAOhB,IAAI,CACxC,CAACwB,KAAAA,GAAeA,KAAAA,CAAMpC,IAAI,KAAKa,IAAAA,CAAKc,IAAI,CAACO,0BAA0B,CAAA;AAGrE,wBAAA,IAAI,CAACC,sBAAAA,EAAwB;4BAC3B,MAAM,IAAIE,MAAAA,CAAOC,gBAAgB,CAAC,0CAAA,CAAA;AACpC,wBAAA;wBAEAa,UAAAA,GAAa;AACX,4BAAA,GAAGA,UAAU;4BACbxB,IAAAA,EAAM;AAAE,gCAAA,GAAGwB,WAAWxB,IAAI;AAAEQ,gCAAAA,sBAAAA,EAAwBA,uBAAuBd;AAAG;AAChF,yBAAA;AACF,oBAAA;AACF,gBAAA;;AAGA,gBAAA,IAAIR,IAAAA,CAAKc,IAAI,CAACxC,YAAY,EAAE;oBAC1BW,SAAAA,GAAY,MAAMN,qBAAAA,CAAsB+C,OAAO,CAAC;AAC9CoB,wBAAAA,eAAAA,EAAiBV,SAAS9D,YAAY;wBACtCqD,gBAAAA,EAAkB3B,IAAAA,CAAKc,IAAI,CAACxC,YAAY;wBACxCsD,OAAAA,EAASY,eAAAA,GAAkBA,eAAe,CAAC,CAAA,CAAE,GAAGJ,SAASrB,MAAM,CAAC,CAAA,CAAE,CAACP;AACrE,qBAAA,CAAA;AACF,gBAAA;gBAEAzB,OAAAA,CAAQgE,mBAAmB,CAACX,QAAAA,CAAS5B,EAAE,EAAE,CAAC,CAACR,IAAAA,CAAKc,IAAI,CAACO,0BAA0B,CAAA;AAE/E,gBAAA,MAAMpB,QAAQ/B,MAAAA,CAAOgC,GAAG,CAAC,cAAA,CAAA,CAAgBC,SAAS,CAACC,kBAAAA,EAAoBkC,UAAAA,CAAAA;;gBAGvE,MAAMG,eAAAA,GAAkB,MAAMvE,MAAAA,CAAOmC,EAAE,CAACJ,KAAK,CAACG,kBAAAA,CAAAA,CAAoB+B,MAAM,CAAC;AACvE,oBAAA,GAAGlC,KAAK;oBACRS,KAAAA,EAAO;AAAEF,wBAAAA,EAAAA,EAAI4B,SAAS5B;AAAG;AAC3B,iBAAA,CAAA;AAEA,gBAAA,MAAMtC,OACH4D,MAAM,CAAC,oBACPC,OAAO,CAAC,mBACPC,6BAAAA,CAA8B;AAC3BI,oBAAAA,GAAAA,QAAAA,CAAS9D,YAAY;AACpB0B,oBAAAA,GAAAA,IAAAA,CAAKc,IAAI,CAACxC,YAAY,IAAI;AAC/B,iBAAA,CAAA;gBAEH,OAAOmE,eAAAA;AACT,YAAA,CAAA,CAAA;AAEA,YAAA,MAAMnD,OAAAA,GAAUC,kBAAAA,CACdC,kBAAAA,CAAmB4C,QAAAA,CAAAA,EACnB5C,kBAAAA,CAAmBiD,eAAAA,CAAAA,CAAAA;AAGrB,YAAA,IAAIhD,OAAOC,IAAI,CAACJ,OAAAA,CAAAA,CAASK,MAAM,GAAG,CAAA,EAAG;AACnC,gBAAA,MAAMC,SAAAA,CAAU;AAAE1B,oBAAAA;iBAAO,EAAG2B,cAAAA,CAAeC,eAAe,EAAE;AAC1D,oBAAA,GAAGoC,gBAAgBO,eAAAA,CAAgB;AACnCnD,oBAAAA;AACF,iBAAA,CAAA;AACF,YAAA;AACA,YAAA,MAAMN,wBAAAA,CAAyBC,SAAAA,CAAAA;YAE/B,OAAOwD,eAAAA;AACT,QAAA,CAAA;AAEA;;;;;;AAMC,QACD,MAAMO,MAAAA,CAAAA,CAAOZ,QAAa,EAAEpC,IAAS,EAAA;YACnC,MAAMqC,YAAAA,GAAevD,WAAW,QAAA,EAAU;AAAEZ,gBAAAA;AAAO,aAAA,CAAA;AAEnD,YAAA,MAAM+E,aAAAA,GAAgB,MAAM,IAAI,CAACC,KAAK,EAAA;AAEtC,YAAA,IAAID,iBAAiB,CAAA,EAAG;gBACtB,MAAM,IAAIzB,MAAAA,CAAOC,gBAAgB,CAAC,kCAAA,CAAA;AACpC,YAAA;AAEA,YAAA,MAAM0B,kBAAkB,MAAMjF,MAAAA,CAAOmC,EAAE,CAACa,WAAW,CAAC,UAAA;;AAElD,gBAAA,MAAMmB,YAAAA,CAAae,UAAU,CAAChB,QAAAA,CAASrB,MAAM,CAAA;;gBAG7C,MAAMpC,qBAAAA,CAAsB+C,OAAO,CAAC;AAClCoB,oBAAAA,eAAAA,EAAiBV,SAAS9D,YAAY;AACtCqD,oBAAAA,gBAAAA,EAAkB;AACpB,iBAAA,CAAA;AAEA,gBAAA,MAAM1B,QAAQ/B,MAAAA,CAAOgC,GAAG,CAAC,cAAA,CAAA,CAAgBC,SAAS,CAACC,kBAAAA,EAAoBJ,IAAAA,CAAAA;;gBAGvE,MAAMmD,eAAAA,GAAkB,MAAMjF,MAAAA,CAAOmC,EAAE,CAACJ,KAAK,CAACG,kBAAAA,CAAAA,CAAoB4C,MAAM,CAAC;AACvE,oBAAA,GAAG/C,KAAK;oBACRS,KAAAA,EAAO;AAAEF,wBAAAA,EAAAA,EAAI4B,SAAS5B;AAAG;AAC3B,iBAAA,CAAA;gBAEA,MAAMtC,MAAAA,CACH4D,MAAM,CAAC,kBAAA,CAAA,CACPC,OAAO,CAAC,gBAAA,CAAA,EACPC,6BAAAA,CAA8BI,QAAAA,CAAS9D,YAAY,CAAA;gBAEvD,OAAO6E,eAAAA;AACT,YAAA,CAAA,CAAA;AAEA,YAAA,MAAMvD,SAAAA,CAAU;AAAE1B,gBAAAA;aAAO,EAAG2B,cAAAA,CAAewD,eAAe,EAAEnB,eAAAA,CAAgBE,QAAAA,CAAAA,CAAAA;YAE5E,OAAOe,eAAAA;AACT,QAAA,CAAA;AAEA;;;QAIAD,KAAAA,CAAAA,GAAAA;AACE,YAAA,OAAOhF,OAAOmC,EAAE,CAACJ,KAAK,CAACG,oBAAoB8C,KAAK,EAAA;AAClD,QAAA,CAAA;AAEA;;;;;AAKC,QACD,MAAMI,mBAAAA,CAAAA,CAAoBC,GAAQ,EAAEvD,IAAAA,GAAY,EAAE,EAAA;AAChD,YAAA,MAAMwD,YAAY,MAAM,IAAI,CAACC,qBAAqB,CAACF,GAAAA,EAAKvD,IAAAA,CAAAA;AAExD,YAAA,OAAOwD,UAAU7D,MAAM,GAAG,IAAI6D,SAAS,CAAC,EAAE,GAAG,IAAA;AAC/C,QAAA,CAAA;AAEA;;;;;;;AAOC,QACD,MAAMC,qBAAAA,CAAAA,CAAsBF,GAAQ,EAAEvD,IAAAA,GAAO,EAAE,EAAA;YAC7C,OAAO,IAAI,CAACD,IAAI,CAAC;AACf,gBAAA,GAAGC,IAAI;gBACP7B,OAAAA,EAAS;AAAEG,oBAAAA,YAAAA,EAAcC,4BAAAA,CAA6B;AAAEL,wBAAAA;qBAAO,EAAGqF,GAAAA;AAAK;AACzE,aAAA,CAAA;AACF,QAAA,CAAA;AAEA;;;;;QAMA,MAAMG,oCAAmCH,GAAQ,EAAA;AAC/C,YAAA,MAAMnB,WAAW,MAAM,IAAI,CAACkB,mBAAmB,CAACC,GAAAA,EAAK;gBACnD9E,QAAAA,EAAU;AACZ,aAAA,CAAA;AAEA,YAAA,IAAI,CAAC2D,QAAAA,EAAU;gBACb,MAAM,IAAIZ,OAAOC,gBAAgB,CAC/B,CAAC,kDAAkD,EAAE8B,GAAAA,CAAI,CAAC,CAAC,CAAA;AAE/D,YAAA;YAEA,OAAOnB,QAAAA;AACT,QAAA,CAAA;AAEA;;;;;;QAOAO,4BAAAA,CAAAA,CAA6Bf,OAAY,EAAEQ,QAAa,EAAA;AACtD,YAAA,IAAI,CAACR,OAAAA,EAAS;AACZ,gBAAA;AACF,YAAA;YAEA,MAAM+B,OAAAA,GAAUvB,QAAAA,CAASrB,MAAM,CAAC6C,IAAI,CAAC,CAACrC,KAAAA,GAAeA,KAAAA,CAAMf,EAAE,KAAKoB,OAAAA,CAAAA;AAClE,YAAA,IAAI,CAAC+B,OAAAA,EAAS;gBACZ,MAAM,IAAInC,MAAAA,CAAOC,gBAAgB,CAAC,CAAC,mCAAmC,EAAEW,QAAAA,CAASjD,IAAI,CAAC,CAAC,CAAC,CAAA;AAC1F,YAAA;AACF,QAAA;AACF,KAAA;AACF,CAAA;;;;"}
|
|
1
|
+
{"version":3,"file":"workflows.mjs","sources":["../../../server/src/services/workflows.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport { isString, map } from 'lodash';\nimport { errors, emitAudit } from '@strapi/utils';\nimport { WORKFLOW_MODEL_UID, WORKFLOW_POPULATE } from '../constants/workflows';\nimport {\n AUDITED_EVENTS,\n getWorkflowChanges,\n toWorkflowEvent,\n toWorkflowSnapshot,\n} from '../audit-logs';\nimport { getService } from '../utils';\nimport { getWorkflowContentTypeFilter } from '../utils/review-workflows';\nimport workflowsContentTypesFactory, { type ContentTypeTransfer } from './workflow-content-types';\n\nconst processFilters = ({ strapi }: { strapi: Core.Strapi }, filters: any = {}) => {\n const processedFilters = { ...filters };\n\n if (isString(filters.contentTypes)) {\n processedFilters.contentTypes = getWorkflowContentTypeFilter({ strapi }, filters.contentTypes);\n }\n\n return processedFilters;\n};\n\n// TODO: How can we improve this? Maybe using traversePopulate?\nconst processPopulate = (populate: any) => {\n // If it does not exist or it's not an object (like an array) return the default populate\n if (!populate) {\n return WORKFLOW_POPULATE;\n }\n\n return populate;\n};\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => {\n const workflowsContentTypes = workflowsContentTypesFactory({ strapi });\n const workflowValidator = getService('validation', { strapi });\n const metrics = getService('workflow-metrics', { strapi });\n\n const emitContentTypeTransfers = async (transfers: ContentTypeTransfer[]) => {\n for (const { workflowId, name, before, after } of transfers) {\n const changes = getWorkflowChanges(\n toWorkflowSnapshot({ id: workflowId, name, contentTypes: before }),\n toWorkflowSnapshot({ id: workflowId, name, contentTypes: after })\n );\n\n if (Object.keys(changes).length > 0) {\n await emitAudit({ strapi }, AUDITED_EVENTS.WORKFLOW_UPDATE, { workflowId, name, changes });\n }\n }\n };\n\n return {\n /**\n * Returns all the workflows matching the user-defined filters.\n * @param {object} opts - Options for the query.\n * @param {object} opts.filters - Filters object.\n * @returns {Promise<object[]>} - List of workflows that match the user's filters.\n */\n async find(opts: any = {}) {\n const filters = processFilters({ strapi }, opts.filters);\n const populate = processPopulate(opts.populate);\n\n const query = strapi.get('query-params').transform(WORKFLOW_MODEL_UID, {\n ...opts,\n filters,\n populate,\n });\n\n return strapi.db.query(WORKFLOW_MODEL_UID).findMany(query);\n },\n\n /**\n * Returns the workflow with the specified ID.\n * @param {string} id - ID of the requested workflow.\n * @param {object} opts - Options for the query.\n * @returns {Promise<object>} - Workflow object matching the requested ID.\n */\n findById(id: any, opts: { populate?: any } = {}) {\n const populate = processPopulate(opts.populate);\n\n const query = strapi.get('query-params').transform(WORKFLOW_MODEL_UID, { populate });\n\n return strapi.db.query(WORKFLOW_MODEL_UID).findOne({\n ...query,\n where: { id },\n });\n },\n\n /**\n * Creates a new workflow.\n * @param {object} opts - Options for creating the new workflow.\n * @returns {Promise<object>} - Workflow object that was just created, populated with `WORKFLOW_POPULATE`.\n * @throws {ValidationError} - If the workflow has no stages.\n */\n async create(opts: { data: any }) {\n let createOpts = { ...opts, populate: WORKFLOW_POPULATE };\n\n workflowValidator.validateWorkflowStages(opts.data.stages);\n await workflowValidator.validateWorkflowCount(1);\n\n let transfers: ContentTypeTransfer[] = [];\n\n const createdWorkflow = await strapi.db.transaction(async () => {\n // Create stages\n const stages = await getService('stages', { strapi }).createMany(opts.data.stages);\n createOpts = { ...createOpts, data: { ...createOpts.data, stages: map(stages, 'id') } };\n\n if (opts.data.stageRequiredToPublishName) {\n const stageRequiredToPublish = stages.find(\n (stage: any) => stage.name === opts.data.stageRequiredToPublishName\n );\n if (!stageRequiredToPublish) {\n throw new errors.ApplicationError('Stage required to publish does not exist');\n }\n\n createOpts = {\n ...createOpts,\n data: { ...createOpts.data, stageRequiredToPublish: stageRequiredToPublish.id },\n };\n }\n\n // Update (un)assigned Content Types\n if (opts.data.contentTypes) {\n transfers = await workflowsContentTypes.migrate({\n destContentTypes: opts.data.contentTypes,\n stageId: stages[0].id,\n });\n }\n\n // Create Workflow\n const createdWorkflow = await strapi.db\n .query(WORKFLOW_MODEL_UID)\n .create(strapi.get('query-params').transform(WORKFLOW_MODEL_UID, createOpts));\n\n metrics.sendDidCreateWorkflow(createdWorkflow.id, !!opts.data.stageRequiredToPublishName);\n\n if (opts.data.stageRequiredToPublishName) {\n await strapi\n .plugin('content-releases')\n .service('release-action')\n ?.validateActionsByContentTypes(opts.data.contentTypes);\n }\n\n return createdWorkflow;\n });\n\n const { contentTypes, stages, stageRequiredToPublish } = toWorkflowSnapshot(createdWorkflow);\n await emitAudit({ strapi }, AUDITED_EVENTS.WORKFLOW_CREATE, {\n ...toWorkflowEvent(createdWorkflow),\n contentTypes,\n stages,\n stageRequiredToPublish,\n });\n await emitContentTypeTransfers(transfers);\n\n return createdWorkflow;\n },\n\n /**\n * Updates an existing workflow.\n * @param {object} workflow - The existing workflow to update.\n * @param {object} opts - Options for updating the workflow.\n * @returns {Promise<object>} - Workflow object that was just updated, populated with `WORKFLOW_POPULATE`.\n * @throws {ApplicationError} - If the supplied stage ID does not belong to the workflow.\n */\n async update(workflow: any, opts: { data: any }) {\n const stageService = getService('stages', { strapi });\n let updateOpts = { ...opts, populate: { ...WORKFLOW_POPULATE } };\n let updatedStages: any = [];\n let updatedStageIds: any;\n\n await workflowValidator.validateWorkflowCount();\n\n let transfers: ContentTypeTransfer[] = [];\n\n const updatedWorkflow = await strapi.db.transaction(async () => {\n // Update stages\n if (opts.data.stages) {\n workflowValidator.validateWorkflowStages(opts.data.stages);\n opts.data.stages.forEach((stage: any) =>\n this.assertStageBelongsToWorkflow(stage.id, workflow)\n );\n\n updatedStages = await stageService.replaceStages(\n workflow.stages,\n opts.data.stages,\n workflow.contentTypes\n );\n updatedStageIds = updatedStages.map((stage: any) => stage.id);\n\n updateOpts = { ...updateOpts, data: { ...updateOpts.data, stages: updatedStageIds } };\n }\n\n if (opts.data.stageRequiredToPublishName !== undefined) {\n const stages = updatedStages ?? workflow.stages;\n\n if (opts.data.stageRequiredToPublishName === null) {\n updateOpts = {\n ...updateOpts,\n data: { ...updateOpts.data, stageRequiredToPublish: null },\n };\n } else {\n const stageRequiredToPublish = stages.find(\n (stage: any) => stage.name === opts.data.stageRequiredToPublishName\n );\n\n if (!stageRequiredToPublish) {\n throw new errors.ApplicationError('Stage required to publish does not exist');\n }\n\n updateOpts = {\n ...updateOpts,\n data: { ...updateOpts.data, stageRequiredToPublish: stageRequiredToPublish.id },\n };\n }\n }\n\n // Update (un)assigned Content Types\n if (opts.data.contentTypes) {\n transfers = await workflowsContentTypes.migrate({\n srcContentTypes: workflow.contentTypes,\n destContentTypes: opts.data.contentTypes,\n stageId: updatedStageIds ? updatedStageIds[0] : workflow.stages[0].id,\n });\n }\n\n metrics.sendDidEditWorkflow(workflow.id, !!opts.data.stageRequiredToPublishName);\n\n const query = strapi.get('query-params').transform(WORKFLOW_MODEL_UID, updateOpts);\n\n // Update Workflow\n const updatedWorkflow = await strapi.db.query(WORKFLOW_MODEL_UID).update({\n ...query,\n where: { id: workflow.id },\n });\n\n await strapi\n .plugin('content-releases')\n .service('release-action')\n ?.validateActionsByContentTypes([\n ...workflow.contentTypes,\n ...(opts.data.contentTypes || []),\n ]);\n\n return updatedWorkflow;\n });\n\n const changes = getWorkflowChanges(\n toWorkflowSnapshot(workflow),\n toWorkflowSnapshot(updatedWorkflow)\n );\n\n if (Object.keys(changes).length > 0) {\n await emitAudit({ strapi }, AUDITED_EVENTS.WORKFLOW_UPDATE, {\n ...toWorkflowEvent(updatedWorkflow),\n changes,\n });\n }\n await emitContentTypeTransfers(transfers);\n\n return updatedWorkflow;\n },\n\n /**\n * Deletes an existing workflow.\n * Also deletes all the workflow stages and migrate all assigned the content types.\n * @param {*} workflow\n * @param {*} opts\n * @returns\n */\n async delete(workflow: any, opts: any) {\n const stageService = getService('stages', { strapi });\n\n const workflowCount = await this.count();\n\n if (workflowCount <= 1) {\n throw new errors.ApplicationError('Can not delete the last workflow');\n }\n\n const deletedWorkflow = await strapi.db.transaction(async () => {\n // Delete stages\n await stageService.deleteMany(workflow.stages);\n\n // Unassign all content types, this will migrate the content types to null\n await workflowsContentTypes.migrate({\n srcContentTypes: workflow.contentTypes,\n destContentTypes: [],\n });\n\n const query = strapi.get('query-params').transform(WORKFLOW_MODEL_UID, opts);\n\n // Delete Workflow\n const deletedWorkflow = await strapi.db.query(WORKFLOW_MODEL_UID).delete({\n ...query,\n where: { id: workflow.id },\n });\n\n await strapi\n .plugin('content-releases')\n .service('release-action')\n ?.validateActionsByContentTypes(workflow.contentTypes);\n\n return deletedWorkflow;\n });\n\n await emitAudit({ strapi }, AUDITED_EVENTS.WORKFLOW_DELETE, toWorkflowEvent(workflow));\n\n return deletedWorkflow;\n },\n\n /**\n * Returns the total count of workflows.\n * @returns {Promise<number>} - Total count of workflows.\n */\n count() {\n return strapi.db.query(WORKFLOW_MODEL_UID).count();\n },\n\n /**\n * Finds the assigned workflow for a given content type ID.\n * @param {string} uid - Content type ID to find the assigned workflow for.\n * @param {object} opts - Options for the query.\n * @returns {Promise<object|null>} - Assigned workflow object if found, or null.\n */\n async getAssignedWorkflow(uid: any, opts: any = {}) {\n const workflows = await this._getAssignedWorkflows(uid, opts);\n\n return workflows.length > 0 ? workflows[0] : null;\n },\n\n /**\n * Finds all the assigned workflows for a given content type ID.\n * Normally, there should only be one workflow assigned to a content type.\n * However, edge cases can occur where a content type is assigned to multiple workflows.\n * @param {string} uid - Content type ID to find the assigned workflows for.\n * @param {object} opts - Options for the query.\n * @returns {Promise<object[]>} - List of assigned workflow objects.\n */\n async _getAssignedWorkflows(uid: any, opts = {}) {\n return this.find({\n ...opts,\n filters: { contentTypes: getWorkflowContentTypeFilter({ strapi }, uid) },\n });\n },\n\n /**\n * Asserts that a content type has an assigned workflow.\n * @param {string} uid - Content type ID to verify the assignment of.\n * @returns {Promise<object>} - Workflow object associated with the content type ID.\n * @throws {ApplicationError} - If no assigned workflow is found for the content type ID.\n */\n async assertContentTypeBelongsToWorkflow(uid: any) {\n const workflow = await this.getAssignedWorkflow(uid, {\n populate: 'stages',\n });\n\n if (!workflow) {\n throw new errors.ApplicationError(\n `Review workflows is not activated on Content Type ${uid}.`\n );\n }\n\n return workflow;\n },\n\n /**\n * Asserts that a stage belongs to a given workflow.\n * @param {string} stageId - ID of stage to check.\n * @param {object} workflow - Workflow object to check against.\n * @returns\n * @throws {ApplicationError} - If the stage does not belong to the specified workflow.\n */\n assertStageBelongsToWorkflow(stageId: any, workflow: any) {\n if (!stageId) {\n return;\n }\n\n const belongs = workflow.stages.some((stage: any) => stage.id === stageId);\n if (!belongs) {\n throw new errors.ApplicationError(`Stage does not belong to workflow \"${workflow.name}\"`);\n }\n },\n };\n};\n"],"names":["processFilters","strapi","filters","processedFilters","isString","contentTypes","getWorkflowContentTypeFilter","processPopulate","populate","WORKFLOW_POPULATE","workflowsContentTypes","workflowsContentTypesFactory","workflowValidator","getService","metrics","emitContentTypeTransfers","transfers","workflowId","name","before","after","changes","getWorkflowChanges","toWorkflowSnapshot","Object","keys","length","emitAudit","AUDITED_EVENTS","WORKFLOW_UPDATE","find","opts","query","get","transform","WORKFLOW_MODEL_UID","db","findMany","findById","id","findOne","where","create","createOpts","validateWorkflowStages","data","stages","validateWorkflowCount","createdWorkflow","transaction","createMany","map","stageRequiredToPublishName","stageRequiredToPublish","stage","errors","ApplicationError","migrate","destContentTypes","stageId","sendDidCreateWorkflow","plugin","service","validateActionsByContentTypes","WORKFLOW_CREATE","toWorkflowEvent","update","workflow","stageService","updateOpts","updatedStages","updatedStageIds","updatedWorkflow","forEach","assertStageBelongsToWorkflow","replaceStages","undefined","srcContentTypes","sendDidEditWorkflow","delete","workflowCount","count","deletedWorkflow","deleteMany","WORKFLOW_DELETE","getAssignedWorkflow","uid","workflows","_getAssignedWorkflows","assertContentTypeBelongsToWorkflow","belongs","some"],"mappings":";;;;;;;;AAcA,MAAMA,cAAAA,GAAiB,CAAC,EAAEC,MAAM,EAA2B,EAAEC,OAAAA,GAAe,EAAE,GAAA;AAC5E,IAAA,MAAMC,gBAAAA,GAAmB;AAAE,QAAA,GAAGD;AAAQ,KAAA;IAEtC,IAAIE,QAAAA,CAASF,OAAAA,CAAQG,YAAY,CAAA,EAAG;QAClCF,gBAAAA,CAAiBE,YAAY,GAAGC,4BAAAA,CAA6B;AAAEL,YAAAA;AAAO,SAAA,EAAGC,QAAQG,YAAY,CAAA;AAC/F,IAAA;IAEA,OAAOF,gBAAAA;AACT,CAAA;AAEA;AACA,MAAMI,kBAAkB,CAACC,QAAAA,GAAAA;;AAEvB,IAAA,IAAI,CAACA,QAAAA,EAAU;QACb,OAAOC,iBAAAA;AACT,IAAA;IAEA,OAAOD,QAAAA;AACT,CAAA;AAEA,gBAAe,CAAA,CAAC,EAAEP,MAAM,EAA2B,GAAA;AACjD,IAAA,MAAMS,wBAAwBC,4BAAAA,CAA6B;AAAEV,QAAAA;AAAO,KAAA,CAAA;IACpE,MAAMW,iBAAAA,GAAoBC,WAAW,YAAA,EAAc;AAAEZ,QAAAA;AAAO,KAAA,CAAA;IAC5D,MAAMa,OAAAA,GAAUD,WAAW,kBAAA,EAAoB;AAAEZ,QAAAA;AAAO,KAAA,CAAA;AAExD,IAAA,MAAMc,2BAA2B,OAAOC,SAAAA,GAAAA;QACtC,KAAK,MAAM,EAAEC,UAAU,EAAEC,IAAI,EAAEC,MAAM,EAAEC,KAAK,EAAE,IAAIJ,SAAAA,CAAW;YAC3D,MAAMK,OAAAA,GAAUC,mBACdC,kBAAAA,CAAmB;gBAAkBL,IAAAA;gBAAMb,YAAAA,EAAcc;AAAO,aAAA,CAAA,EAChEI,kBAAAA,CAAmB;gBAAkBL,IAAAA;gBAAMb,YAAAA,EAAce;AAAM,aAAA,CAAA,CAAA;AAGjE,YAAA,IAAII,OAAOC,IAAI,CAACJ,OAAAA,CAAAA,CAASK,MAAM,GAAG,CAAA,EAAG;AACnC,gBAAA,MAAMC,SAAAA,CAAU;AAAE1B,oBAAAA;iBAAO,EAAG2B,cAAAA,CAAeC,eAAe,EAAE;AAAEZ,oBAAAA,UAAAA;AAAYC,oBAAAA,IAAAA;AAAMG,oBAAAA;AAAQ,iBAAA,CAAA;AAC1F,YAAA;AACF,QAAA;AACF,IAAA,CAAA;IAEA,OAAO;AACL;;;;;AAKC,QACD,MAAMS,IAAAA,CAAAA,CAAKC,IAAAA,GAAY,EAAE,EAAA;AACvB,YAAA,MAAM7B,UAAUF,cAAAA,CAAe;AAAEC,gBAAAA;AAAO,aAAA,EAAG8B,KAAK7B,OAAO,CAAA;YACvD,MAAMM,QAAAA,GAAWD,eAAAA,CAAgBwB,IAAAA,CAAKvB,QAAQ,CAAA;AAE9C,YAAA,MAAMwB,QAAQ/B,MAAAA,CAAOgC,GAAG,CAAC,cAAA,CAAA,CAAgBC,SAAS,CAACC,kBAAAA,EAAoB;AACrE,gBAAA,GAAGJ,IAAI;AACP7B,gBAAAA,OAAAA;AACAM,gBAAAA;AACF,aAAA,CAAA;AAEA,YAAA,OAAOP,OAAOmC,EAAE,CAACJ,KAAK,CAACG,kBAAAA,CAAAA,CAAoBE,QAAQ,CAACL,KAAAA,CAAAA;AACtD,QAAA,CAAA;AAEA;;;;;AAKC,QACDM,QAAAA,CAAAA,CAASC,EAAO,EAAER,IAAAA,GAA2B,EAAE,EAAA;YAC7C,MAAMvB,QAAAA,GAAWD,eAAAA,CAAgBwB,IAAAA,CAAKvB,QAAQ,CAAA;AAE9C,YAAA,MAAMwB,QAAQ/B,MAAAA,CAAOgC,GAAG,CAAC,cAAA,CAAA,CAAgBC,SAAS,CAACC,kBAAAA,EAAoB;AAAE3B,gBAAAA;AAAS,aAAA,CAAA;AAElF,YAAA,OAAOP,OAAOmC,EAAE,CAACJ,KAAK,CAACG,kBAAAA,CAAAA,CAAoBK,OAAO,CAAC;AACjD,gBAAA,GAAGR,KAAK;gBACRS,KAAAA,EAAO;AAAEF,oBAAAA;AAAG;AACd,aAAA,CAAA;AACF,QAAA,CAAA;AAEA;;;;;QAMA,MAAMG,QAAOX,IAAmB,EAAA;AAC9B,YAAA,IAAIY,UAAAA,GAAa;AAAE,gBAAA,GAAGZ,IAAI;gBAAEvB,QAAAA,EAAUC;AAAkB,aAAA;AAExDG,YAAAA,iBAAAA,CAAkBgC,sBAAsB,CAACb,IAAAA,CAAKc,IAAI,CAACC,MAAM,CAAA;YACzD,MAAMlC,iBAAAA,CAAkBmC,qBAAqB,CAAC,CAAA,CAAA;AAE9C,YAAA,IAAI/B,YAAmC,EAAE;AAEzC,YAAA,MAAMgC,kBAAkB,MAAM/C,MAAAA,CAAOmC,EAAE,CAACa,WAAW,CAAC,UAAA;;gBAElD,MAAMH,MAAAA,GAAS,MAAMjC,UAAAA,CAAW,QAAA,EAAU;AAAEZ,oBAAAA;AAAO,iBAAA,CAAA,CAAGiD,UAAU,CAACnB,IAAAA,CAAKc,IAAI,CAACC,MAAM,CAAA;gBACjFH,UAAAA,GAAa;AAAE,oBAAA,GAAGA,UAAU;oBAAEE,IAAAA,EAAM;AAAE,wBAAA,GAAGF,WAAWE,IAAI;AAAEC,wBAAAA,MAAAA,EAAQK,IAAIL,MAAAA,EAAQ,IAAA;AAAM;AAAE,iBAAA;AAEtF,gBAAA,IAAIf,IAAAA,CAAKc,IAAI,CAACO,0BAA0B,EAAE;AACxC,oBAAA,MAAMC,sBAAAA,GAAyBP,MAAAA,CAAOhB,IAAI,CACxC,CAACwB,KAAAA,GAAeA,KAAAA,CAAMpC,IAAI,KAAKa,IAAAA,CAAKc,IAAI,CAACO,0BAA0B,CAAA;AAErE,oBAAA,IAAI,CAACC,sBAAAA,EAAwB;wBAC3B,MAAM,IAAIE,MAAAA,CAAOC,gBAAgB,CAAC,0CAAA,CAAA;AACpC,oBAAA;oBAEAb,UAAAA,GAAa;AACX,wBAAA,GAAGA,UAAU;wBACbE,IAAAA,EAAM;AAAE,4BAAA,GAAGF,WAAWE,IAAI;AAAEQ,4BAAAA,sBAAAA,EAAwBA,uBAAuBd;AAAG;AAChF,qBAAA;AACF,gBAAA;;AAGA,gBAAA,IAAIR,IAAAA,CAAKc,IAAI,CAACxC,YAAY,EAAE;oBAC1BW,SAAAA,GAAY,MAAMN,qBAAAA,CAAsB+C,OAAO,CAAC;wBAC9CC,gBAAAA,EAAkB3B,IAAAA,CAAKc,IAAI,CAACxC,YAAY;AACxCsD,wBAAAA,OAAAA,EAASb,MAAM,CAAC,CAAA,CAAE,CAACP;AACrB,qBAAA,CAAA;AACF,gBAAA;;AAGA,gBAAA,MAAMS,kBAAkB,MAAM/C,MAAAA,CAAOmC,EAAE,CACpCJ,KAAK,CAACG,kBAAAA,CAAAA,CACNO,MAAM,CAACzC,OAAOgC,GAAG,CAAC,cAAA,CAAA,CAAgBC,SAAS,CAACC,kBAAAA,EAAoBQ,UAAAA,CAAAA,CAAAA;gBAEnE7B,OAAAA,CAAQ8C,qBAAqB,CAACZ,eAAAA,CAAgBT,EAAE,EAAE,CAAC,CAACR,IAAAA,CAAKc,IAAI,CAACO,0BAA0B,CAAA;AAExF,gBAAA,IAAIrB,IAAAA,CAAKc,IAAI,CAACO,0BAA0B,EAAE;oBACxC,MAAMnD,MAAAA,CACH4D,MAAM,CAAC,kBAAA,CAAA,CACPC,OAAO,CAAC,gBAAA,CAAA,EACPC,6BAAAA,CAA8BhC,IAAAA,CAAKc,IAAI,CAACxC,YAAY,CAAA;AAC1D,gBAAA;gBAEA,OAAO2C,eAAAA;AACT,YAAA,CAAA,CAAA;YAEA,MAAM,EAAE3C,YAAY,EAAEyC,MAAM,EAAEO,sBAAsB,EAAE,GAAG9B,kBAAAA,CAAmByB,eAAAA,CAAAA;AAC5E,YAAA,MAAMrB,SAAAA,CAAU;AAAE1B,gBAAAA;aAAO,EAAG2B,cAAAA,CAAeoC,eAAe,EAAE;AAC1D,gBAAA,GAAGC,gBAAgBjB,eAAAA,CAAgB;AACnC3C,gBAAAA,YAAAA;AACAyC,gBAAAA,MAAAA;AACAO,gBAAAA;AACF,aAAA,CAAA;AACA,YAAA,MAAMtC,wBAAAA,CAAyBC,SAAAA,CAAAA;YAE/B,OAAOgC,eAAAA;AACT,QAAA,CAAA;AAEA;;;;;;AAMC,QACD,MAAMkB,MAAAA,CAAAA,CAAOC,QAAa,EAAEpC,IAAmB,EAAA;YAC7C,MAAMqC,YAAAA,GAAevD,WAAW,QAAA,EAAU;AAAEZ,gBAAAA;AAAO,aAAA,CAAA;AACnD,YAAA,IAAIoE,UAAAA,GAAa;AAAE,gBAAA,GAAGtC,IAAI;gBAAEvB,QAAAA,EAAU;AAAE,oBAAA,GAAGC;AAAkB;AAAE,aAAA;AAC/D,YAAA,IAAI6D,gBAAqB,EAAE;YAC3B,IAAIC,eAAAA;AAEJ,YAAA,MAAM3D,kBAAkBmC,qBAAqB,EAAA;AAE7C,YAAA,IAAI/B,YAAmC,EAAE;AAEzC,YAAA,MAAMwD,kBAAkB,MAAMvE,MAAAA,CAAOmC,EAAE,CAACa,WAAW,CAAC,UAAA;;AAElD,gBAAA,IAAIlB,IAAAA,CAAKc,IAAI,CAACC,MAAM,EAAE;AACpBlC,oBAAAA,iBAAAA,CAAkBgC,sBAAsB,CAACb,IAAAA,CAAKc,IAAI,CAACC,MAAM,CAAA;AACzDf,oBAAAA,IAAAA,CAAKc,IAAI,CAACC,MAAM,CAAC2B,OAAO,CAAC,CAACnB,KAAAA,GACxB,IAAI,CAACoB,4BAA4B,CAACpB,KAAAA,CAAMf,EAAE,EAAE4B,QAAAA,CAAAA,CAAAA;AAG9CG,oBAAAA,aAAAA,GAAgB,MAAMF,YAAAA,CAAaO,aAAa,CAC9CR,QAAAA,CAASrB,MAAM,EACff,IAAAA,CAAKc,IAAI,CAACC,MAAM,EAChBqB,SAAS9D,YAAY,CAAA;AAEvBkE,oBAAAA,eAAAA,GAAkBD,cAAcnB,GAAG,CAAC,CAACG,KAAAA,GAAeA,MAAMf,EAAE,CAAA;oBAE5D8B,UAAAA,GAAa;AAAE,wBAAA,GAAGA,UAAU;wBAAExB,IAAAA,EAAM;AAAE,4BAAA,GAAGwB,WAAWxB,IAAI;4BAAEC,MAAAA,EAAQyB;AAAgB;AAAE,qBAAA;AACtF,gBAAA;AAEA,gBAAA,IAAIxC,IAAAA,CAAKc,IAAI,CAACO,0BAA0B,KAAKwB,SAAAA,EAAW;oBACtD,MAAM9B,MAAAA,GAASwB,aAAAA,IAAiBH,QAAAA,CAASrB,MAAM;AAE/C,oBAAA,IAAIf,IAAAA,CAAKc,IAAI,CAACO,0BAA0B,KAAK,IAAA,EAAM;wBACjDiB,UAAAA,GAAa;AACX,4BAAA,GAAGA,UAAU;4BACbxB,IAAAA,EAAM;AAAE,gCAAA,GAAGwB,WAAWxB,IAAI;gCAAEQ,sBAAAA,EAAwB;AAAK;AAC3D,yBAAA;oBACF,CAAA,MAAO;AACL,wBAAA,MAAMA,sBAAAA,GAAyBP,MAAAA,CAAOhB,IAAI,CACxC,CAACwB,KAAAA,GAAeA,KAAAA,CAAMpC,IAAI,KAAKa,IAAAA,CAAKc,IAAI,CAACO,0BAA0B,CAAA;AAGrE,wBAAA,IAAI,CAACC,sBAAAA,EAAwB;4BAC3B,MAAM,IAAIE,MAAAA,CAAOC,gBAAgB,CAAC,0CAAA,CAAA;AACpC,wBAAA;wBAEAa,UAAAA,GAAa;AACX,4BAAA,GAAGA,UAAU;4BACbxB,IAAAA,EAAM;AAAE,gCAAA,GAAGwB,WAAWxB,IAAI;AAAEQ,gCAAAA,sBAAAA,EAAwBA,uBAAuBd;AAAG;AAChF,yBAAA;AACF,oBAAA;AACF,gBAAA;;AAGA,gBAAA,IAAIR,IAAAA,CAAKc,IAAI,CAACxC,YAAY,EAAE;oBAC1BW,SAAAA,GAAY,MAAMN,qBAAAA,CAAsB+C,OAAO,CAAC;AAC9CoB,wBAAAA,eAAAA,EAAiBV,SAAS9D,YAAY;wBACtCqD,gBAAAA,EAAkB3B,IAAAA,CAAKc,IAAI,CAACxC,YAAY;wBACxCsD,OAAAA,EAASY,eAAAA,GAAkBA,eAAe,CAAC,CAAA,CAAE,GAAGJ,SAASrB,MAAM,CAAC,CAAA,CAAE,CAACP;AACrE,qBAAA,CAAA;AACF,gBAAA;gBAEAzB,OAAAA,CAAQgE,mBAAmB,CAACX,QAAAA,CAAS5B,EAAE,EAAE,CAAC,CAACR,IAAAA,CAAKc,IAAI,CAACO,0BAA0B,CAAA;AAE/E,gBAAA,MAAMpB,QAAQ/B,MAAAA,CAAOgC,GAAG,CAAC,cAAA,CAAA,CAAgBC,SAAS,CAACC,kBAAAA,EAAoBkC,UAAAA,CAAAA;;gBAGvE,MAAMG,eAAAA,GAAkB,MAAMvE,MAAAA,CAAOmC,EAAE,CAACJ,KAAK,CAACG,kBAAAA,CAAAA,CAAoB+B,MAAM,CAAC;AACvE,oBAAA,GAAGlC,KAAK;oBACRS,KAAAA,EAAO;AAAEF,wBAAAA,EAAAA,EAAI4B,SAAS5B;AAAG;AAC3B,iBAAA,CAAA;AAEA,gBAAA,MAAMtC,OACH4D,MAAM,CAAC,oBACPC,OAAO,CAAC,mBACPC,6BAAAA,CAA8B;AAC3BI,oBAAAA,GAAAA,QAAAA,CAAS9D,YAAY;AACpB0B,oBAAAA,GAAAA,IAAAA,CAAKc,IAAI,CAACxC,YAAY,IAAI;AAC/B,iBAAA,CAAA;gBAEH,OAAOmE,eAAAA;AACT,YAAA,CAAA,CAAA;AAEA,YAAA,MAAMnD,OAAAA,GAAUC,kBAAAA,CACdC,kBAAAA,CAAmB4C,QAAAA,CAAAA,EACnB5C,kBAAAA,CAAmBiD,eAAAA,CAAAA,CAAAA;AAGrB,YAAA,IAAIhD,OAAOC,IAAI,CAACJ,OAAAA,CAAAA,CAASK,MAAM,GAAG,CAAA,EAAG;AACnC,gBAAA,MAAMC,SAAAA,CAAU;AAAE1B,oBAAAA;iBAAO,EAAG2B,cAAAA,CAAeC,eAAe,EAAE;AAC1D,oBAAA,GAAGoC,gBAAgBO,eAAAA,CAAgB;AACnCnD,oBAAAA;AACF,iBAAA,CAAA;AACF,YAAA;AACA,YAAA,MAAMN,wBAAAA,CAAyBC,SAAAA,CAAAA;YAE/B,OAAOwD,eAAAA;AACT,QAAA,CAAA;AAEA;;;;;;AAMC,QACD,MAAMO,MAAAA,CAAAA,CAAOZ,QAAa,EAAEpC,IAAS,EAAA;YACnC,MAAMqC,YAAAA,GAAevD,WAAW,QAAA,EAAU;AAAEZ,gBAAAA;AAAO,aAAA,CAAA;AAEnD,YAAA,MAAM+E,aAAAA,GAAgB,MAAM,IAAI,CAACC,KAAK,EAAA;AAEtC,YAAA,IAAID,iBAAiB,CAAA,EAAG;gBACtB,MAAM,IAAIzB,MAAAA,CAAOC,gBAAgB,CAAC,kCAAA,CAAA;AACpC,YAAA;AAEA,YAAA,MAAM0B,kBAAkB,MAAMjF,MAAAA,CAAOmC,EAAE,CAACa,WAAW,CAAC,UAAA;;AAElD,gBAAA,MAAMmB,YAAAA,CAAae,UAAU,CAAChB,QAAAA,CAASrB,MAAM,CAAA;;gBAG7C,MAAMpC,qBAAAA,CAAsB+C,OAAO,CAAC;AAClCoB,oBAAAA,eAAAA,EAAiBV,SAAS9D,YAAY;AACtCqD,oBAAAA,gBAAAA,EAAkB;AACpB,iBAAA,CAAA;AAEA,gBAAA,MAAM1B,QAAQ/B,MAAAA,CAAOgC,GAAG,CAAC,cAAA,CAAA,CAAgBC,SAAS,CAACC,kBAAAA,EAAoBJ,IAAAA,CAAAA;;gBAGvE,MAAMmD,eAAAA,GAAkB,MAAMjF,MAAAA,CAAOmC,EAAE,CAACJ,KAAK,CAACG,kBAAAA,CAAAA,CAAoB4C,MAAM,CAAC;AACvE,oBAAA,GAAG/C,KAAK;oBACRS,KAAAA,EAAO;AAAEF,wBAAAA,EAAAA,EAAI4B,SAAS5B;AAAG;AAC3B,iBAAA,CAAA;gBAEA,MAAMtC,MAAAA,CACH4D,MAAM,CAAC,kBAAA,CAAA,CACPC,OAAO,CAAC,gBAAA,CAAA,EACPC,6BAAAA,CAA8BI,QAAAA,CAAS9D,YAAY,CAAA;gBAEvD,OAAO6E,eAAAA;AACT,YAAA,CAAA,CAAA;AAEA,YAAA,MAAMvD,SAAAA,CAAU;AAAE1B,gBAAAA;aAAO,EAAG2B,cAAAA,CAAewD,eAAe,EAAEnB,eAAAA,CAAgBE,QAAAA,CAAAA,CAAAA;YAE5E,OAAOe,eAAAA;AACT,QAAA,CAAA;AAEA;;;QAIAD,KAAAA,CAAAA,GAAAA;AACE,YAAA,OAAOhF,OAAOmC,EAAE,CAACJ,KAAK,CAACG,oBAAoB8C,KAAK,EAAA;AAClD,QAAA,CAAA;AAEA;;;;;AAKC,QACD,MAAMI,mBAAAA,CAAAA,CAAoBC,GAAQ,EAAEvD,IAAAA,GAAY,EAAE,EAAA;AAChD,YAAA,MAAMwD,YAAY,MAAM,IAAI,CAACC,qBAAqB,CAACF,GAAAA,EAAKvD,IAAAA,CAAAA;AAExD,YAAA,OAAOwD,UAAU7D,MAAM,GAAG,IAAI6D,SAAS,CAAC,EAAE,GAAG,IAAA;AAC/C,QAAA,CAAA;AAEA;;;;;;;AAOC,QACD,MAAMC,qBAAAA,CAAAA,CAAsBF,GAAQ,EAAEvD,IAAAA,GAAO,EAAE,EAAA;YAC7C,OAAO,IAAI,CAACD,IAAI,CAAC;AACf,gBAAA,GAAGC,IAAI;gBACP7B,OAAAA,EAAS;AAAEG,oBAAAA,YAAAA,EAAcC,4BAAAA,CAA6B;AAAEL,wBAAAA;qBAAO,EAAGqF,GAAAA;AAAK;AACzE,aAAA,CAAA;AACF,QAAA,CAAA;AAEA;;;;;QAMA,MAAMG,oCAAmCH,GAAQ,EAAA;AAC/C,YAAA,MAAMnB,WAAW,MAAM,IAAI,CAACkB,mBAAmB,CAACC,GAAAA,EAAK;gBACnD9E,QAAAA,EAAU;AACZ,aAAA,CAAA;AAEA,YAAA,IAAI,CAAC2D,QAAAA,EAAU;gBACb,MAAM,IAAIZ,OAAOC,gBAAgB,CAC/B,CAAC,kDAAkD,EAAE8B,GAAAA,CAAI,CAAC,CAAC,CAAA;AAE/D,YAAA;YAEA,OAAOnB,QAAAA;AACT,QAAA,CAAA;AAEA;;;;;;QAOAO,4BAAAA,CAAAA,CAA6Bf,OAAY,EAAEQ,QAAa,EAAA;AACtD,YAAA,IAAI,CAACR,OAAAA,EAAS;AACZ,gBAAA;AACF,YAAA;YAEA,MAAM+B,OAAAA,GAAUvB,QAAAA,CAASrB,MAAM,CAAC6C,IAAI,CAAC,CAACrC,KAAAA,GAAeA,KAAAA,CAAMf,EAAE,KAAKoB,OAAAA,CAAAA;AAClE,YAAA,IAAI,CAAC+B,OAAAA,EAAS;gBACZ,MAAM,IAAInC,MAAAA,CAAOC,gBAAgB,CAAC,CAAC,mCAAmC,EAAEW,QAAAA,CAASjD,IAAI,CAAC,CAAC,CAAC,CAAA;AAC1F,YAAA;AACF,QAAA;AACF,KAAA;AACF,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../../../server/src/controllers/workflows.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;;IAsFjC;;OAEG;gBACe,OAAO;
|
|
1
|
+
{"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../../../server/src/controllers/workflows.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;;IAsFjC;;OAEG;gBACe,OAAO;IAqBzB;;OAEG;gBACe,OAAO;IAiCzB;;OAEG;gBACe,OAAO;IAwBzB;;OAEG;cACa,OAAO;;AA3FzB,wBAoHE"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Core } from '@strapi/types';
|
|
2
|
+
/**
|
|
3
|
+
* Exposes the clamped workflow limits to the Plan card and the debug dump. Registered whatever
|
|
4
|
+
* the boot-time license says, so a lapsed or later-renewed license still resolves.
|
|
5
|
+
*/
|
|
6
|
+
export declare const registerReviewWorkflowsEntitlements: (strapi: Core.Strapi) => void;
|
|
7
|
+
//# sourceMappingURL=entitlements.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entitlements.d.ts","sourceRoot":"","sources":["../../../server/src/entitlements.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAW1C;;;GAGG;AACH,eAAO,MAAM,mCAAmC,GAAI,QAAQ,IAAI,CAAC,MAAM,SAoBtE,CAAC"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import type { Core } from '@strapi/types';
|
|
1
2
|
declare const _default: {
|
|
2
3
|
register: ({ strapi }: {
|
|
3
|
-
strapi:
|
|
4
|
+
strapi: Core.Strapi;
|
|
4
5
|
}) => Promise<void>;
|
|
5
6
|
bootstrap: ({ strapi }: {
|
|
6
|
-
strapi:
|
|
7
|
+
strapi: Core.Strapi;
|
|
7
8
|
}) => Promise<void>;
|
|
8
9
|
destroy: () => Promise<void>;
|
|
9
10
|
contentTypes: {
|
|
@@ -102,12 +103,12 @@ declare const _default: {
|
|
|
102
103
|
};
|
|
103
104
|
services: {
|
|
104
105
|
homepage: ({ strapi }: {
|
|
105
|
-
strapi:
|
|
106
|
+
strapi: Core.Strapi;
|
|
106
107
|
}) => {
|
|
107
108
|
getRecentlyAssignedDocuments(): Promise<import("../../shared/contracts/homepage").GetRecentlyAssignedDocuments.Response["data"]>;
|
|
108
109
|
};
|
|
109
110
|
workflows: ({ strapi }: {
|
|
110
|
-
strapi:
|
|
111
|
+
strapi: Core.Strapi;
|
|
111
112
|
}) => {
|
|
112
113
|
find(opts?: any): Promise<any[]>;
|
|
113
114
|
findById(id: any, opts?: {
|
|
@@ -116,7 +117,9 @@ declare const _default: {
|
|
|
116
117
|
create(opts: {
|
|
117
118
|
data: any;
|
|
118
119
|
}): Promise<any>;
|
|
119
|
-
update(workflow: any, opts:
|
|
120
|
+
update(workflow: any, opts: {
|
|
121
|
+
data: any;
|
|
122
|
+
}): Promise<any>;
|
|
120
123
|
delete(workflow: any, opts: any): Promise<any>;
|
|
121
124
|
count(): Promise<number>;
|
|
122
125
|
getAssignedWorkflow(uid: any, opts?: any): Promise<any>;
|
|
@@ -125,7 +128,7 @@ declare const _default: {
|
|
|
125
128
|
assertStageBelongsToWorkflow(stageId: any, workflow: any): void;
|
|
126
129
|
};
|
|
127
130
|
stages: ({ strapi }: {
|
|
128
|
-
strapi:
|
|
131
|
+
strapi: Core.Strapi;
|
|
129
132
|
}) => {
|
|
130
133
|
find({ workflowId, populate }: any): Promise<any[]>;
|
|
131
134
|
findById(id: string | number, { populate }?: any): Promise<any>;
|
|
@@ -146,7 +149,7 @@ declare const _default: {
|
|
|
146
149
|
deleteAllEntitiesStage(contentTypeUID: any): Promise<number>;
|
|
147
150
|
};
|
|
148
151
|
'stage-permissions': ({ strapi }: {
|
|
149
|
-
strapi:
|
|
152
|
+
strapi: Core.Strapi;
|
|
150
153
|
}) => {
|
|
151
154
|
register({ roleId, action, fromStage, }: {
|
|
152
155
|
roleId: number;
|
|
@@ -185,7 +188,7 @@ declare const _default: {
|
|
|
185
188
|
}): boolean;
|
|
186
189
|
};
|
|
187
190
|
assignees: ({ strapi }: {
|
|
188
|
-
strapi:
|
|
191
|
+
strapi: Core.Strapi;
|
|
189
192
|
}) => {
|
|
190
193
|
findEntityAssigneeId(id: string | number, model: import("@strapi/types/dist/uid/index.js").ContentType): Promise<any>;
|
|
191
194
|
updateEntityAssignee(entityToUpdate: {
|
|
@@ -196,7 +199,7 @@ declare const _default: {
|
|
|
196
199
|
}, model: import("@strapi/types/dist/uid/index.js").ContentType, assigneeId: string | null): Promise<import("@strapi/types/dist/modules/documents/index.js").AnyDocument | null>;
|
|
197
200
|
};
|
|
198
201
|
validation: ({ strapi }: {
|
|
199
|
-
strapi:
|
|
202
|
+
strapi: Core.Strapi;
|
|
200
203
|
}) => {
|
|
201
204
|
limits: {
|
|
202
205
|
numberOfWorkflows: number;
|
|
@@ -219,18 +222,13 @@ declare const _default: {
|
|
|
219
222
|
sendDidChangeEntryStage: () => Promise<void>;
|
|
220
223
|
sendDidCreateWorkflow: (workflowId: string, hasRequiredStageToPublish: boolean) => Promise<void>;
|
|
221
224
|
sendDidEditWorkflow: (workflowId: string, hasRequiredStageToPublish: boolean) => Promise<void>;
|
|
222
|
-
sendDidSendReviewWorkflowPropertiesOnceAWeek: (numberOfActiveWorkflows
|
|
225
|
+
sendDidSendReviewWorkflowPropertiesOnceAWeek: ({ numberOfActiveWorkflows, avgStagesCount, maxStagesCount, activatedContentTypes, }: import("./services/metrics").WeeklyMetrics) => Promise<void>;
|
|
223
226
|
sendDidEditAssignee: (fromId: any, toId: any) => Promise<void>;
|
|
224
227
|
};
|
|
225
228
|
'workflow-weekly-metrics': ({ strapi }: {
|
|
226
|
-
strapi:
|
|
229
|
+
strapi: Core.Strapi;
|
|
227
230
|
}) => {
|
|
228
|
-
computeMetrics(): Promise<
|
|
229
|
-
numberOfActiveWorkflows: number;
|
|
230
|
-
avgStagesCount: number;
|
|
231
|
-
maxStagesCount: number | undefined;
|
|
232
|
-
activatedContentTypes: number;
|
|
233
|
-
}>;
|
|
231
|
+
computeMetrics(): Promise<import("./services/metrics").WeeklyMetrics>;
|
|
234
232
|
sendMetrics(): Promise<void>;
|
|
235
233
|
ensureWeeklyStoredCronSchedule(): Promise<any>;
|
|
236
234
|
registerCron(): Promise<void>;
|
|
@@ -254,9 +252,9 @@ declare const _default: {
|
|
|
254
252
|
};
|
|
255
253
|
};
|
|
256
254
|
routes: {
|
|
257
|
-
homepage:
|
|
258
|
-
strapi:
|
|
259
|
-
}) =>
|
|
255
|
+
homepage: Core.Router | ((params: {
|
|
256
|
+
strapi: Core.Strapi;
|
|
257
|
+
}) => Core.Router);
|
|
260
258
|
'review-workflows': {
|
|
261
259
|
type: string;
|
|
262
260
|
routes: {
|
|
@@ -276,6 +274,9 @@ declare const _default: {
|
|
|
276
274
|
};
|
|
277
275
|
};
|
|
278
276
|
} | {
|
|
277
|
+
register({ strapi }: {
|
|
278
|
+
strapi: Core.Strapi;
|
|
279
|
+
}): void;
|
|
279
280
|
contentTypes: {
|
|
280
281
|
workflow: {
|
|
281
282
|
schema: {
|
|
@@ -370,7 +371,6 @@ declare const _default: {
|
|
|
370
371
|
};
|
|
371
372
|
};
|
|
372
373
|
};
|
|
373
|
-
register?: undefined;
|
|
374
374
|
bootstrap?: undefined;
|
|
375
375
|
destroy?: undefined;
|
|
376
376
|
services?: undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../server/src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../server/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAoCuzD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAA8pB,CAAC;oCAAoB,CAAC;0BAAM,CAAC;;wBAAgB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAVrhF;QAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;KAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAShD,wBAA2B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../server/src/register.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAO,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../server/src/register.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAO,MAAM,eAAe,CAAC;yBAqGzB,YAAY;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CAAE;AAAzD,wBA2BE"}
|
|
@@ -14,7 +14,9 @@ declare const _default: {
|
|
|
14
14
|
create(opts: {
|
|
15
15
|
data: any;
|
|
16
16
|
}): Promise<any>;
|
|
17
|
-
update(workflow: any, opts:
|
|
17
|
+
update(workflow: any, opts: {
|
|
18
|
+
data: any;
|
|
19
|
+
}): Promise<any>;
|
|
18
20
|
delete(workflow: any, opts: any): Promise<any>;
|
|
19
21
|
count(): Promise<number>;
|
|
20
22
|
getAssignedWorkflow(uid: any, opts?: any): Promise<any>;
|
|
@@ -117,18 +119,13 @@ declare const _default: {
|
|
|
117
119
|
sendDidChangeEntryStage: () => Promise<void>;
|
|
118
120
|
sendDidCreateWorkflow: (workflowId: string, hasRequiredStageToPublish: boolean) => Promise<void>;
|
|
119
121
|
sendDidEditWorkflow: (workflowId: string, hasRequiredStageToPublish: boolean) => Promise<void>;
|
|
120
|
-
sendDidSendReviewWorkflowPropertiesOnceAWeek: (numberOfActiveWorkflows
|
|
122
|
+
sendDidSendReviewWorkflowPropertiesOnceAWeek: ({ numberOfActiveWorkflows, avgStagesCount, maxStagesCount, activatedContentTypes, }: import("./metrics").WeeklyMetrics) => Promise<void>;
|
|
121
123
|
sendDidEditAssignee: (fromId: any, toId: any) => Promise<void>;
|
|
122
124
|
};
|
|
123
125
|
'workflow-weekly-metrics': ({ strapi }: {
|
|
124
126
|
strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
|
|
125
127
|
}) => {
|
|
126
|
-
computeMetrics(): Promise<
|
|
127
|
-
numberOfActiveWorkflows: number;
|
|
128
|
-
avgStagesCount: number;
|
|
129
|
-
maxStagesCount: number | undefined;
|
|
130
|
-
activatedContentTypes: number;
|
|
131
|
-
}>;
|
|
128
|
+
computeMetrics(): Promise<import("./metrics").WeeklyMetrics>;
|
|
132
129
|
sendMetrics(): Promise<void>;
|
|
133
130
|
ensureWeeklyStoredCronSchedule(): Promise<any>;
|
|
134
131
|
registerCron(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;oBAqByiE,CAAC
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;oBAqByiE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAA8pB,CAAC;gCAAoB,CAAC;sBAAM,CAAC;;oBAAgB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAXtvF,wBAUE"}
|
|
@@ -6,7 +6,13 @@ export declare const sendDidChangeEntryStage: () => Promise<void>;
|
|
|
6
6
|
export declare const sendDidCreateWorkflow: (workflowId: string, hasRequiredStageToPublish: boolean) => Promise<void>;
|
|
7
7
|
export declare const sendDidEditWorkflow: (workflowId: string, hasRequiredStageToPublish: boolean) => Promise<void>;
|
|
8
8
|
export declare const sendDidEditAssignee: (fromId: any, toId: any) => Promise<void>;
|
|
9
|
-
export
|
|
9
|
+
export type WeeklyMetrics = {
|
|
10
|
+
numberOfActiveWorkflows: number;
|
|
11
|
+
avgStagesCount: number;
|
|
12
|
+
maxStagesCount: number | undefined;
|
|
13
|
+
activatedContentTypes: number;
|
|
14
|
+
};
|
|
15
|
+
export declare const sendDidSendReviewWorkflowPropertiesOnceAWeek: ({ numberOfActiveWorkflows, avgStagesCount, maxStagesCount, activatedContentTypes, }: WeeklyMetrics) => Promise<void>;
|
|
10
16
|
declare const _default: {
|
|
11
17
|
sendDidCreateStage: () => Promise<void>;
|
|
12
18
|
sendDidEditStage: () => Promise<void>;
|
|
@@ -14,7 +20,7 @@ declare const _default: {
|
|
|
14
20
|
sendDidChangeEntryStage: () => Promise<void>;
|
|
15
21
|
sendDidCreateWorkflow: (workflowId: string, hasRequiredStageToPublish: boolean) => Promise<void>;
|
|
16
22
|
sendDidEditWorkflow: (workflowId: string, hasRequiredStageToPublish: boolean) => Promise<void>;
|
|
17
|
-
sendDidSendReviewWorkflowPropertiesOnceAWeek: (numberOfActiveWorkflows
|
|
23
|
+
sendDidSendReviewWorkflowPropertiesOnceAWeek: ({ numberOfActiveWorkflows, avgStagesCount, maxStagesCount, activatedContentTypes, }: WeeklyMetrics) => Promise<void>;
|
|
18
24
|
sendDidEditAssignee: (fromId: any, toId: any) => Promise<void>;
|
|
19
25
|
};
|
|
20
26
|
export default _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../server/src/services/metrics/index.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AAEvB,eAAO,MAAM,kBAAkB,qBAE9B,CAAC;AAEF,eAAO,MAAM,gBAAgB,qBAE5B,CAAC;AAEF,eAAO,MAAM,kBAAkB,qBAE9B,CAAC;AAEF,eAAO,MAAM,uBAAuB,qBAEnC,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,YAAY,MAAM,EAClB,2BAA2B,OAAO,kBAGnC,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,YAAY,MAAM,EAClB,2BAA2B,OAAO,kBAGnC,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAU,QAAQ,GAAG,EAAE,MAAM,GAAG,kBAE/D,CAAC;AAEF,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../server/src/services/metrics/index.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AAEvB,eAAO,MAAM,kBAAkB,qBAE9B,CAAC;AAEF,eAAO,MAAM,gBAAgB,qBAE5B,CAAC;AAEF,eAAO,MAAM,kBAAkB,qBAE9B,CAAC;AAEF,eAAO,MAAM,uBAAuB,qBAEnC,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,YAAY,MAAM,EAClB,2BAA2B,OAAO,kBAGnC,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,YAAY,MAAM,EAClB,2BAA2B,OAAO,kBAGnC,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAU,QAAQ,GAAG,EAAE,MAAM,GAAG,kBAE/D,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,uBAAuB,EAAE,MAAM,CAAC;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,qBAAqB,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,4CAA4C,GAAU,qFAKhE,aAAa,kBASf,CAAC;;;;;;wCAtCY,MAAM,6BACS,OAAO;sCAMtB,MAAM,6BACS,OAAO;wIAqBjC,aAAa;kCAhBkC,GAAG,QAAQ,GAAG;;AA2BhE,wBASE"}
|
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
import type { Core } from '@strapi/types';
|
|
2
|
+
import type { WeeklyMetrics } from './index';
|
|
2
3
|
declare const _default: ({ strapi }: {
|
|
3
4
|
strapi: Core.Strapi;
|
|
4
5
|
}) => {
|
|
5
|
-
computeMetrics(): Promise<
|
|
6
|
-
numberOfActiveWorkflows: number;
|
|
7
|
-
avgStagesCount: number;
|
|
8
|
-
maxStagesCount: number | undefined;
|
|
9
|
-
activatedContentTypes: number;
|
|
10
|
-
}>;
|
|
6
|
+
computeMetrics(): Promise<WeeklyMetrics>;
|
|
11
7
|
sendMetrics(): Promise<void>;
|
|
12
8
|
ensureWeeklyStoredCronSchedule(): Promise<any>;
|
|
13
9
|
registerCron(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"weekly-metrics.d.ts","sourceRoot":"","sources":["../../../../../server/src/services/metrics/weekly-metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"weekly-metrics.d.ts","sourceRoot":"","sources":["../../../../../server/src/services/metrics/weekly-metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAK1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;yBAO7B,YAAY;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CAAE;sBAavB,OAAO,CAAC,aAAa,CAAC;;;;;AAblD,wBAgEE"}
|
|
@@ -21,7 +21,7 @@ declare const _default: ({ strapi }: {
|
|
|
21
21
|
/**
|
|
22
22
|
* Creates a new workflow.
|
|
23
23
|
* @param {object} opts - Options for creating the new workflow.
|
|
24
|
-
* @returns {Promise<object>} - Workflow object that was just created
|
|
24
|
+
* @returns {Promise<object>} - Workflow object that was just created, populated with `WORKFLOW_POPULATE`.
|
|
25
25
|
* @throws {ValidationError} - If the workflow has no stages.
|
|
26
26
|
*/
|
|
27
27
|
create(opts: {
|
|
@@ -31,10 +31,12 @@ declare const _default: ({ strapi }: {
|
|
|
31
31
|
* Updates an existing workflow.
|
|
32
32
|
* @param {object} workflow - The existing workflow to update.
|
|
33
33
|
* @param {object} opts - Options for updating the workflow.
|
|
34
|
-
* @returns {Promise<object>} - Workflow object that was just updated
|
|
34
|
+
* @returns {Promise<object>} - Workflow object that was just updated, populated with `WORKFLOW_POPULATE`.
|
|
35
35
|
* @throws {ApplicationError} - If the supplied stage ID does not belong to the workflow.
|
|
36
36
|
*/
|
|
37
|
-
update(workflow: any, opts:
|
|
37
|
+
update(workflow: any, opts: {
|
|
38
|
+
data: any;
|
|
39
|
+
}): Promise<any>;
|
|
38
40
|
/**
|
|
39
41
|
* Deletes an existing workflow.
|
|
40
42
|
* Also deletes all the workflow stages and migrate all assigned the content types.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../../../server/src/services/workflows.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;yBAkC1B,YAAY;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CAAE;IAmB/C;;;;;OAKG;gBACc,GAAG;IAapB;;;;;OAKG;iBACU,GAAG,SAAQ;QAAE,QAAQ,CAAC,EAAE,GAAG,CAAA;KAAE;IAW1C;;;;;OAKG;iBACgB;QAAE,IAAI,EAAE,GAAG,CAAA;KAAE;IAgEhC;;;;;;OAMG;qBACoB,GAAG,QAAQ,GAAG;
|
|
1
|
+
{"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../../../server/src/services/workflows.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;yBAkC1B,YAAY;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CAAE;IAmB/C;;;;;OAKG;gBACc,GAAG;IAapB;;;;;OAKG;iBACU,GAAG,SAAQ;QAAE,QAAQ,CAAC,EAAE,GAAG,CAAA;KAAE;IAW1C;;;;;OAKG;iBACgB;QAAE,IAAI,EAAE,GAAG,CAAA;KAAE;IAgEhC;;;;;;OAMG;qBACoB,GAAG,QAAQ;QAAE,IAAI,EAAE,GAAG,CAAA;KAAE;IAkG/C;;;;;;OAMG;qBACoB,GAAG,QAAQ,GAAG;IAwCrC;;;OAGG;;IAKH;;;;;OAKG;6BAC4B,GAAG,SAAQ,GAAG;IAM7C;;;;;;;OAOG;+BAC8B,GAAG;IAOpC;;;;;OAKG;4CAC2C,GAAG;IAcjD;;;;;;OAMG;0CACmC,GAAG,YAAY,GAAG;;AAnV5D,wBA8VE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-workflows.d.ts","sourceRoot":"","sources":["../../../shared/contracts/review-workflows.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAE5C,KAAK,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAEvD;;GAEG;AACH,kBAAU,cAAc,CAAC;IACvB,UAAiB,OAAO;QACtB,IAAI,EAAE;YACJ,IAAI,EAAE;gBACJ,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;aACzB,CAAC;SACH,CAAC;QACF,KAAK,EAAE,EAAE,CAAC;KACX;IAED,UAAiB,MAAM;QACrB,KAAK,EAAE,MAAM,CAAC;QACd,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;KAClB;IAED,UAAiB,QAAQ;QACvB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC;KACjC;CACF;AAED,UAAU,
|
|
1
|
+
{"version":3,"file":"review-workflows.d.ts","sourceRoot":"","sources":["../../../shared/contracts/review-workflows.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@strapi/review-workflows",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.59.0",
|
|
4
4
|
"description": "Review workflows for your content",
|
|
5
5
|
"homepage": "https://strapi.io",
|
|
6
6
|
"bugs": {
|
|
@@ -54,17 +54,17 @@
|
|
|
54
54
|
"clean": "run -T rimraf ./dist",
|
|
55
55
|
"lint": "run -T eslint . --max-warnings=0",
|
|
56
56
|
"test:front": "run -T cross-env IS_EE=true jest --config ./jest.config.front.js",
|
|
57
|
+
"test:unit:vitest": "vitest run",
|
|
58
|
+
"test:unit:vitest:watch": "vitest --watch",
|
|
57
59
|
"test:ts:back": "run -T tsc -p server/tsconfig.json",
|
|
58
60
|
"test:ts:front": "run -T tsc -p admin/tsconfig.json",
|
|
59
|
-
"test:unit": "run -T jest",
|
|
60
|
-
"test:unit:watch": "run -T jest --watch",
|
|
61
61
|
"watch": "run -T rollup -c -w"
|
|
62
62
|
},
|
|
63
63
|
"dependencies": {
|
|
64
64
|
"@reduxjs/toolkit": "1.9.7",
|
|
65
65
|
"@strapi/design-system": "2.2.4",
|
|
66
66
|
"@strapi/icons": "2.2.4",
|
|
67
|
-
"@strapi/utils": "5.
|
|
67
|
+
"@strapi/utils": "5.59.0",
|
|
68
68
|
"date-fns": "2.30.0",
|
|
69
69
|
"fractional-indexing": "3.2.0",
|
|
70
70
|
"koa": "2.16.4",
|
|
@@ -78,9 +78,9 @@
|
|
|
78
78
|
"yup": "0.32.9"
|
|
79
79
|
},
|
|
80
80
|
"devDependencies": {
|
|
81
|
-
"@strapi/admin": "5.
|
|
82
|
-
"@strapi/content-manager": "5.
|
|
83
|
-
"@strapi/types": "5.
|
|
81
|
+
"@strapi/admin": "5.59.0",
|
|
82
|
+
"@strapi/content-manager": "5.59.0",
|
|
83
|
+
"@strapi/types": "5.59.0",
|
|
84
84
|
"@testing-library/dom": "10.4.1",
|
|
85
85
|
"@testing-library/jest-dom": "6.9.1",
|
|
86
86
|
"@testing-library/react": "16.3.2",
|
|
@@ -92,7 +92,9 @@
|
|
|
92
92
|
"react": "18.3.1",
|
|
93
93
|
"react-dom": "18.3.1",
|
|
94
94
|
"react-router-dom": "6.30.6",
|
|
95
|
-
"styled-components": "6.4.1"
|
|
95
|
+
"styled-components": "6.4.1",
|
|
96
|
+
"vitest": "catalog:",
|
|
97
|
+
"vitest-config": "5.59.0"
|
|
96
98
|
},
|
|
97
99
|
"peerDependencies": {
|
|
98
100
|
"@strapi/admin": "^5.0.0",
|