{"version":3,"file":"review-workflows.mjs","sources":["../../../server/src/validation/review-workflows.ts"],"sourcesContent":["/* eslint-disable func-names */\nimport { yup, validateYupSchema } from '@strapi/utils';\nimport { hasStageAttribute } from '../utils/review-workflows';\nimport { STAGE_TRANSITION_UID } from '../constants/workflows';\n\nconst fromPermissionObject = yup.object().shape({\n  role: yup.number().integer().min(1).required(),\n  action: yup.string().oneOf([STAGE_TRANSITION_UID]).required(),\n  actionParameters: yup.object().shape({\n    from: yup.number().integer().min(1),\n  }),\n});\n\nconst toPermissionObject = yup.object().shape({\n  role: yup.number().integer().min(1).required(),\n  action: yup.string().oneOf([STAGE_TRANSITION_UID]).required(),\n  actionParameters: yup.object().shape({\n    to: yup.number().integer().min(1),\n  }),\n});\n\nconst stageObject = yup.object().shape({\n  id: yup.number().integer().min(1),\n  name: yup.string().max(255).required(),\n  color: yup.string().matches(/^#(?:[0-9a-fA-F]{3}){1,2}$/i), // hex color\n  fromPermissions: yup.array().of(fromPermissionObject),\n  toPermissions: yup.array().of(toPermissionObject),\n});\n\nconst validateUpdateStageOnEntitySchema = yup\n  .object()\n  .shape({\n    id: yup.number().integer().min(1).required(),\n  })\n  .required();\n\nconst validateContentTypes = yup.array().of(\n  yup\n    .string()\n    .test({\n      name: 'content-type-exists',\n      message: (value) => `Content type ${value.originalValue} does not exist`,\n      test(uid: any) {\n        // Warning; we use the strapi global - to avoid that, it would need to refactor how\n        // we generate validation function by using a factory with the strapi instance as parameter.\n        return !!strapi.getModel(uid);\n      },\n    })\n    .test({\n      name: 'content-type-review-workflow-enabled',\n      message: (value) =>\n        `Content type ${value.originalValue} does not have review workflow enabled`,\n      test(uid: any) {\n        const model = strapi.getModel(uid);\n\n        // It's not a valid content type if it doesn't have the stage attribute\n        return hasStageAttribute(model);\n      },\n    })\n);\n\nconst validateWorkflowCreateSchema = yup.object().shape({\n  name: yup.string().max(255).min(1, 'Workflow name can not be empty').required(),\n  stages: yup\n    .array()\n    .of(stageObject)\n    // @ts-expect-error - add unique property into the yup namespace typing\n    .uniqueProperty('name', 'Stage name must be unique')\n    .min(1, 'Can not create a workflow without stages')\n    .max(200, 'Can not have more than 200 stages')\n    .required('Can not create a workflow without stages'),\n  contentTypes: validateContentTypes,\n  stageRequiredToPublishName: yup.string().min(1).nullable(),\n});\n\nconst validateWorkflowUpdateSchema = yup.object().shape({\n  name: yup.string().max(255).min(1, 'Workflow name can not be empty'),\n  stages: yup\n    .array()\n    .of(stageObject)\n    // @ts-expect-error - add unique property into the yup namespace typing\n    .uniqueProperty('name', 'Stage name must be unique')\n    .min(1, 'Can not update a workflow without stages')\n    .max(200, 'Can not have more than 200 stages'),\n  contentTypes: validateContentTypes,\n  stageRequiredToPublishName: yup.string().min(1).nullable(),\n});\n\nconst validateUpdateAssigneeOnEntitySchema = yup\n  .object()\n  .shape({\n    id: yup.number().integer().min(1).nullable(),\n  })\n  .required();\n\nconst validateLocaleSchema = yup.string().nullable();\n\nexport const validateWorkflowCreate = validateYupSchema(validateWorkflowCreateSchema);\nexport const validateUpdateStageOnEntity = validateYupSchema(validateUpdateStageOnEntitySchema);\nexport const validateUpdateAssigneeOnEntity = validateYupSchema(\n  validateUpdateAssigneeOnEntitySchema\n);\nexport const validateWorkflowUpdate = validateYupSchema(validateWorkflowUpdateSchema);\nexport const validateLocale = validateYupSchema(validateLocaleSchema);\n\nexport default {\n  validateWorkflowCreate,\n  validateUpdateStageOnEntity,\n  validateUpdateAssigneeOnEntity,\n  validateWorkflowUpdate,\n  validateLocale,\n};\n"],"names":["fromPermissionObject","yup","object","shape","role","number","integer","min","required","action","string","oneOf","STAGE_TRANSITION_UID","actionParameters","from","toPermissionObject","to","stageObject","id","name","max","color","matches","fromPermissions","array","of","toPermissions","validateUpdateStageOnEntitySchema","validateContentTypes","test","message","value","originalValue","uid","strapi","getModel","model","hasStageAttribute","validateWorkflowCreateSchema","stages","uniqueProperty","contentTypes","stageRequiredToPublishName","nullable","validateWorkflowUpdateSchema","validateUpdateAssigneeOnEntitySchema","validateLocaleSchema","validateWorkflowCreate","validateYupSchema","validateUpdateStageOnEntity","validateUpdateAssigneeOnEntity","validateWorkflowUpdate","validateLocale"],"mappings":"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"}