@strapi/content-type-builder 5.31.0 → 5.31.1
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/components/FormModal/attributes/types.js +1 -1
- package/dist/admin/components/FormModal/attributes/types.js.map +1 -1
- package/dist/admin/components/FormModal/attributes/types.mjs +2 -2
- package/dist/admin/components/FormModal/attributes/types.mjs.map +1 -1
- package/dist/admin/components/FormModal/attributes/validation/common.js +25 -0
- package/dist/admin/components/FormModal/attributes/validation/common.js.map +1 -1
- package/dist/admin/components/FormModal/attributes/validation/common.mjs +25 -1
- package/dist/admin/components/FormModal/attributes/validation/common.mjs.map +1 -1
- package/dist/admin/src/components/FormModal/attributes/validation/common.d.ts +12 -1
- package/dist/server/controllers/validation/types.js +10 -0
- package/dist/server/controllers/validation/types.js.map +1 -1
- package/dist/server/controllers/validation/types.mjs +10 -0
- package/dist/server/controllers/validation/types.mjs.map +1 -1
- package/package.json +5 -5
|
@@ -288,7 +288,7 @@ const attributeTypes = {
|
|
|
288
288
|
return yup__namespace.object(shape);
|
|
289
289
|
},
|
|
290
290
|
string (usedAttributeNames, reservedNames) {
|
|
291
|
-
const shape = common.
|
|
291
|
+
const shape = common.createStringShape(usedAttributeNames, reservedNames);
|
|
292
292
|
return yup__namespace.object(shape);
|
|
293
293
|
},
|
|
294
294
|
text (usedAttributeNames, reservedNames) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sources":["../../../../../admin/src/components/FormModal/attributes/types.ts"],"sourcesContent":["import { translatedErrors as errorsTrads } from '@strapi/admin/strapi-admin';\nimport uniq from 'lodash/uniq';\nimport * as yup from 'yup';\n\nimport { getRelationType } from '../../../utils/getRelationType';\nimport { getTrad } from '../../../utils/getTrad';\nimport { toRegressedEnumValue } from '../../../utils/toRegressedEnumValue';\n\nimport {\n alreadyUsedAttributeNames,\n createTextShape,\n isMinSuperiorThanMax,\n isNameAllowed,\n NAME_REGEX,\n validators,\n} from './validation/common';\n\nimport type { Schema } from '@strapi/types';\n\nexport const attributeTypes = {\n date(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n datetime(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n time(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n default(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n biginteger(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup\n .string()\n .nullable()\n .matches(/^-?\\d*$/),\n unique: validators.unique(),\n required: validators.required(),\n max: yup\n .string()\n .nullable()\n .matches(/^-?\\d*$/, errorsTrads.regex.id),\n min: yup\n .string()\n .nullable()\n .test(isMinSuperiorThanMax<string | null>())\n .matches(/^-?\\d*$/, errorsTrads.regex.id),\n };\n\n return yup.object(shape);\n },\n boolean(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n default: yup.boolean().nullable(),\n required: validators.required(),\n unique: validators.unique(),\n };\n\n return yup.object(shape);\n },\n component(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n max: validators.max(),\n min: validators.min(),\n component: yup.string().required(errorsTrads.required.id),\n };\n\n return yup.object(shape);\n },\n decimal(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup.number(),\n required: validators.required(),\n max: yup.number(),\n min: yup.number().test(isMinSuperiorThanMax<number>()),\n };\n\n return yup.object(shape);\n },\n dynamiczone(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n max: validators.max(),\n min: validators.min(),\n };\n\n return yup.object(shape);\n },\n email(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup.string().email().nullable(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n enumeration(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n /**\n * For enumerations the least common denomiator is GraphQL, where\n * values needs to match the secure name regex:\n * GraphQL Spec https://spec.graphql.org/June2018/#sec-Names\n *\n * Therefore we need to make sure our users only use values, which\n * can be returned by GraphQL, by checking the regressed values\n * agains the GraphQL regex.\n *\n * TODO V5: check if we can avoid this coupling by moving this logic\n * into the GraphQL plugin.\n */\n const GRAPHQL_ENUM_REGEX = /^[_A-Za-z][_0-9A-Za-z]*$/;\n\n const shape = {\n name: yup\n .string()\n .test(alreadyUsedAttributeNames(usedAttributeNames))\n .test(isNameAllowed(reservedNames))\n .matches(GRAPHQL_ENUM_REGEX, errorsTrads.regex.id)\n .required(errorsTrads.required.id),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n enum: yup\n .array()\n .of(yup.string())\n .min(1, errorsTrads.min.id)\n .test({\n name: 'areEnumValuesUnique',\n message: getTrad('error.validation.enum-duplicate'),\n test(values) {\n if (!values) {\n return false;\n }\n const duplicates = uniq(\n values\n .map(toRegressedEnumValue)\n .filter((value, index, values) => values.indexOf(value) !== index)\n );\n\n return !duplicates.length;\n },\n })\n .test({\n name: 'doesNotHaveEmptyValues',\n message: getTrad('error.validation.enum-empty-string'),\n test: (values) => {\n if (!values) {\n return false;\n }\n return !values.map(toRegressedEnumValue).some((val) => val === '');\n },\n })\n .test({\n name: 'doesMatchRegex',\n message: getTrad('error.validation.enum-regex'),\n test: (values) => {\n if (!values) {\n return false;\n }\n return values\n .map(toRegressedEnumValue)\n .every((value) => GRAPHQL_ENUM_REGEX.test(value));\n },\n }),\n enumName: yup.string().nullable(),\n };\n\n return yup.object(shape);\n },\n float(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n default: yup.number(),\n max: yup.number(),\n min: yup.number().test(isMinSuperiorThanMax<number>()),\n };\n\n return yup.object(shape);\n },\n integer(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup.number().integer(),\n unique: validators.unique(),\n required: validators.required(),\n max: validators.max(),\n min: validators.min(),\n };\n\n return yup.object(shape);\n },\n json(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n unique: validators.unique(),\n };\n\n return yup.object(shape);\n },\n media(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n multiple: yup.boolean(),\n required: validators.required(),\n allowedTypes: yup\n .array()\n .of(yup.string().oneOf(['images', 'videos', 'files', 'audios']))\n .min(1)\n .nullable(),\n };\n\n return yup.object(shape);\n },\n password(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n relation(\n usedAttributeNames: Array<string>,\n reservedNames: Array<string>,\n alreadyTakenTargetAttributes: Array<{ name: string }>,\n {\n initialData,\n modifiedData,\n }: {\n initialData: { targetAttribute?: string };\n modifiedData: {\n name?: string;\n relation?: Schema.Attribute.RelationKind.WithTarget;\n targetAttribute?: string;\n };\n }\n ) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n target: yup.string().required(errorsTrads.required.id),\n relation: yup.string().required(),\n type: yup.string().required(),\n targetAttribute: yup.lazy(() => {\n const relationType = getRelationType(modifiedData.relation!, modifiedData.targetAttribute);\n\n if (relationType === 'oneWay' || relationType === 'manyWay') {\n return yup.string().nullable();\n }\n\n const schema = yup.string().test(isNameAllowed(reservedNames));\n const initialForbiddenName = [\n ...alreadyTakenTargetAttributes.map(({ name }) => name),\n modifiedData.name,\n ];\n\n const forbiddenTargetAttributeName = initialForbiddenName.filter(\n (val) => val !== initialData.targetAttribute\n );\n\n return schema\n .matches(NAME_REGEX, errorsTrads.regex.id)\n .test({\n name: 'forbiddenTargetAttributeName',\n message: getTrad('error.validation.relation.targetAttribute-taken'),\n test(value) {\n if (!value) {\n return false;\n }\n\n return !forbiddenTargetAttributeName.includes(value);\n },\n })\n .required(errorsTrads.required.id);\n }),\n };\n\n return yup.object(shape);\n },\n richtext(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n blocks(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n string(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = createTextShape(usedAttributeNames, reservedNames);\n\n return yup.object(shape);\n },\n text(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = createTextShape(usedAttributeNames, reservedNames);\n\n return yup.object(shape);\n },\n uid(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = createTextShape(usedAttributeNames, reservedNames);\n\n return yup.object(shape);\n },\n};\n"],"names":["attributeTypes","date","usedAttributeNames","reservedNames","shape","name","validators","type","yup","object","datetime","time","default","biginteger","string","nullable","matches","unique","required","max","errorsTrads","regex","id","min","test","isMinSuperiorThanMax","boolean","component","decimal","number","dynamiczone","email","maxLength","minLength","enumeration","GRAPHQL_ENUM_REGEX","alreadyUsedAttributeNames","isNameAllowed","enum","array","of","message","getTrad","values","duplicates","uniq","map","toRegressedEnumValue","filter","value","index","indexOf","length","some","val","every","enumName","float","integer","json","media","multiple","allowedTypes","oneOf","password","relation","alreadyTakenTargetAttributes","initialData","modifiedData","target","targetAttribute","lazy","relationType","getRelationType","schema","initialForbiddenName","forbiddenTargetAttributeName","NAME_REGEX","includes","richtext","blocks","createTextShape","text","uid"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../../../../../admin/src/components/FormModal/attributes/types.ts"],"sourcesContent":["import { translatedErrors as errorsTrads } from '@strapi/admin/strapi-admin';\nimport uniq from 'lodash/uniq';\nimport * as yup from 'yup';\n\nimport { getRelationType } from '../../../utils/getRelationType';\nimport { getTrad } from '../../../utils/getTrad';\nimport { toRegressedEnumValue } from '../../../utils/toRegressedEnumValue';\n\nimport {\n alreadyUsedAttributeNames,\n createStringShape,\n createTextShape,\n isMinSuperiorThanMax,\n isNameAllowed,\n NAME_REGEX,\n validators,\n} from './validation/common';\n\nimport type { Schema } from '@strapi/types';\n\nexport const attributeTypes = {\n date(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n datetime(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n time(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n default(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n biginteger(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup\n .string()\n .nullable()\n .matches(/^-?\\d*$/),\n unique: validators.unique(),\n required: validators.required(),\n max: yup\n .string()\n .nullable()\n .matches(/^-?\\d*$/, errorsTrads.regex.id),\n min: yup\n .string()\n .nullable()\n .test(isMinSuperiorThanMax<string | null>())\n .matches(/^-?\\d*$/, errorsTrads.regex.id),\n };\n\n return yup.object(shape);\n },\n boolean(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n default: yup.boolean().nullable(),\n required: validators.required(),\n unique: validators.unique(),\n };\n\n return yup.object(shape);\n },\n component(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n max: validators.max(),\n min: validators.min(),\n component: yup.string().required(errorsTrads.required.id),\n };\n\n return yup.object(shape);\n },\n decimal(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup.number(),\n required: validators.required(),\n max: yup.number(),\n min: yup.number().test(isMinSuperiorThanMax<number>()),\n };\n\n return yup.object(shape);\n },\n dynamiczone(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n max: validators.max(),\n min: validators.min(),\n };\n\n return yup.object(shape);\n },\n email(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup.string().email().nullable(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n enumeration(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n /**\n * For enumerations the least common denomiator is GraphQL, where\n * values needs to match the secure name regex:\n * GraphQL Spec https://spec.graphql.org/June2018/#sec-Names\n *\n * Therefore we need to make sure our users only use values, which\n * can be returned by GraphQL, by checking the regressed values\n * agains the GraphQL regex.\n *\n * TODO V5: check if we can avoid this coupling by moving this logic\n * into the GraphQL plugin.\n */\n const GRAPHQL_ENUM_REGEX = /^[_A-Za-z][_0-9A-Za-z]*$/;\n\n const shape = {\n name: yup\n .string()\n .test(alreadyUsedAttributeNames(usedAttributeNames))\n .test(isNameAllowed(reservedNames))\n .matches(GRAPHQL_ENUM_REGEX, errorsTrads.regex.id)\n .required(errorsTrads.required.id),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n enum: yup\n .array()\n .of(yup.string())\n .min(1, errorsTrads.min.id)\n .test({\n name: 'areEnumValuesUnique',\n message: getTrad('error.validation.enum-duplicate'),\n test(values) {\n if (!values) {\n return false;\n }\n const duplicates = uniq(\n values\n .map(toRegressedEnumValue)\n .filter((value, index, values) => values.indexOf(value) !== index)\n );\n\n return !duplicates.length;\n },\n })\n .test({\n name: 'doesNotHaveEmptyValues',\n message: getTrad('error.validation.enum-empty-string'),\n test: (values) => {\n if (!values) {\n return false;\n }\n return !values.map(toRegressedEnumValue).some((val) => val === '');\n },\n })\n .test({\n name: 'doesMatchRegex',\n message: getTrad('error.validation.enum-regex'),\n test: (values) => {\n if (!values) {\n return false;\n }\n return values\n .map(toRegressedEnumValue)\n .every((value) => GRAPHQL_ENUM_REGEX.test(value));\n },\n }),\n enumName: yup.string().nullable(),\n };\n\n return yup.object(shape);\n },\n float(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n default: yup.number(),\n max: yup.number(),\n min: yup.number().test(isMinSuperiorThanMax<number>()),\n };\n\n return yup.object(shape);\n },\n integer(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup.number().integer(),\n unique: validators.unique(),\n required: validators.required(),\n max: validators.max(),\n min: validators.min(),\n };\n\n return yup.object(shape);\n },\n json(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n unique: validators.unique(),\n };\n\n return yup.object(shape);\n },\n media(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n multiple: yup.boolean(),\n required: validators.required(),\n allowedTypes: yup\n .array()\n .of(yup.string().oneOf(['images', 'videos', 'files', 'audios']))\n .min(1)\n .nullable(),\n };\n\n return yup.object(shape);\n },\n password(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n relation(\n usedAttributeNames: Array<string>,\n reservedNames: Array<string>,\n alreadyTakenTargetAttributes: Array<{ name: string }>,\n {\n initialData,\n modifiedData,\n }: {\n initialData: { targetAttribute?: string };\n modifiedData: {\n name?: string;\n relation?: Schema.Attribute.RelationKind.WithTarget;\n targetAttribute?: string;\n };\n }\n ) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n target: yup.string().required(errorsTrads.required.id),\n relation: yup.string().required(),\n type: yup.string().required(),\n targetAttribute: yup.lazy(() => {\n const relationType = getRelationType(modifiedData.relation!, modifiedData.targetAttribute);\n\n if (relationType === 'oneWay' || relationType === 'manyWay') {\n return yup.string().nullable();\n }\n\n const schema = yup.string().test(isNameAllowed(reservedNames));\n const initialForbiddenName = [\n ...alreadyTakenTargetAttributes.map(({ name }) => name),\n modifiedData.name,\n ];\n\n const forbiddenTargetAttributeName = initialForbiddenName.filter(\n (val) => val !== initialData.targetAttribute\n );\n\n return schema\n .matches(NAME_REGEX, errorsTrads.regex.id)\n .test({\n name: 'forbiddenTargetAttributeName',\n message: getTrad('error.validation.relation.targetAttribute-taken'),\n test(value) {\n if (!value) {\n return false;\n }\n\n return !forbiddenTargetAttributeName.includes(value);\n },\n })\n .required(errorsTrads.required.id);\n }),\n };\n\n return yup.object(shape);\n },\n richtext(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n blocks(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n string(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = createStringShape(usedAttributeNames, reservedNames);\n\n return yup.object(shape);\n },\n text(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = createTextShape(usedAttributeNames, reservedNames);\n\n return yup.object(shape);\n },\n uid(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = createTextShape(usedAttributeNames, reservedNames);\n\n return yup.object(shape);\n },\n};\n"],"names":["attributeTypes","date","usedAttributeNames","reservedNames","shape","name","validators","type","yup","object","datetime","time","default","biginteger","string","nullable","matches","unique","required","max","errorsTrads","regex","id","min","test","isMinSuperiorThanMax","boolean","component","decimal","number","dynamiczone","email","maxLength","minLength","enumeration","GRAPHQL_ENUM_REGEX","alreadyUsedAttributeNames","isNameAllowed","enum","array","of","message","getTrad","values","duplicates","uniq","map","toRegressedEnumValue","filter","value","index","indexOf","length","some","val","every","enumName","float","integer","json","media","multiple","allowedTypes","oneOf","password","relation","alreadyTakenTargetAttributes","initialData","modifiedData","target","targetAttribute","lazy","relationType","getRelationType","schema","initialForbiddenName","forbiddenTargetAttributeName","NAME_REGEX","includes","richtext","blocks","createStringShape","text","createTextShape","uid"],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import * as yup from 'yup';
|
|
|
4
4
|
import { getRelationType } from '../../../utils/getRelationType.mjs';
|
|
5
5
|
import { getTrad } from '../../../utils/getTrad.mjs';
|
|
6
6
|
import { toRegressedEnumValue } from '../../../utils/toRegressedEnumValue.mjs';
|
|
7
|
-
import { validators, isMinSuperiorThanMax, alreadyUsedAttributeNames, isNameAllowed, NAME_REGEX, createTextShape } from './validation/common.mjs';
|
|
7
|
+
import { validators, isMinSuperiorThanMax, alreadyUsedAttributeNames, isNameAllowed, NAME_REGEX, createStringShape, createTextShape } from './validation/common.mjs';
|
|
8
8
|
|
|
9
9
|
const attributeTypes = {
|
|
10
10
|
date (usedAttributeNames, reservedNames) {
|
|
@@ -267,7 +267,7 @@ const attributeTypes = {
|
|
|
267
267
|
return yup.object(shape);
|
|
268
268
|
},
|
|
269
269
|
string (usedAttributeNames, reservedNames) {
|
|
270
|
-
const shape =
|
|
270
|
+
const shape = createStringShape(usedAttributeNames, reservedNames);
|
|
271
271
|
return yup.object(shape);
|
|
272
272
|
},
|
|
273
273
|
text (usedAttributeNames, reservedNames) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.mjs","sources":["../../../../../admin/src/components/FormModal/attributes/types.ts"],"sourcesContent":["import { translatedErrors as errorsTrads } from '@strapi/admin/strapi-admin';\nimport uniq from 'lodash/uniq';\nimport * as yup from 'yup';\n\nimport { getRelationType } from '../../../utils/getRelationType';\nimport { getTrad } from '../../../utils/getTrad';\nimport { toRegressedEnumValue } from '../../../utils/toRegressedEnumValue';\n\nimport {\n alreadyUsedAttributeNames,\n createTextShape,\n isMinSuperiorThanMax,\n isNameAllowed,\n NAME_REGEX,\n validators,\n} from './validation/common';\n\nimport type { Schema } from '@strapi/types';\n\nexport const attributeTypes = {\n date(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n datetime(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n time(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n default(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n biginteger(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup\n .string()\n .nullable()\n .matches(/^-?\\d*$/),\n unique: validators.unique(),\n required: validators.required(),\n max: yup\n .string()\n .nullable()\n .matches(/^-?\\d*$/, errorsTrads.regex.id),\n min: yup\n .string()\n .nullable()\n .test(isMinSuperiorThanMax<string | null>())\n .matches(/^-?\\d*$/, errorsTrads.regex.id),\n };\n\n return yup.object(shape);\n },\n boolean(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n default: yup.boolean().nullable(),\n required: validators.required(),\n unique: validators.unique(),\n };\n\n return yup.object(shape);\n },\n component(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n max: validators.max(),\n min: validators.min(),\n component: yup.string().required(errorsTrads.required.id),\n };\n\n return yup.object(shape);\n },\n decimal(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup.number(),\n required: validators.required(),\n max: yup.number(),\n min: yup.number().test(isMinSuperiorThanMax<number>()),\n };\n\n return yup.object(shape);\n },\n dynamiczone(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n max: validators.max(),\n min: validators.min(),\n };\n\n return yup.object(shape);\n },\n email(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup.string().email().nullable(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n enumeration(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n /**\n * For enumerations the least common denomiator is GraphQL, where\n * values needs to match the secure name regex:\n * GraphQL Spec https://spec.graphql.org/June2018/#sec-Names\n *\n * Therefore we need to make sure our users only use values, which\n * can be returned by GraphQL, by checking the regressed values\n * agains the GraphQL regex.\n *\n * TODO V5: check if we can avoid this coupling by moving this logic\n * into the GraphQL plugin.\n */\n const GRAPHQL_ENUM_REGEX = /^[_A-Za-z][_0-9A-Za-z]*$/;\n\n const shape = {\n name: yup\n .string()\n .test(alreadyUsedAttributeNames(usedAttributeNames))\n .test(isNameAllowed(reservedNames))\n .matches(GRAPHQL_ENUM_REGEX, errorsTrads.regex.id)\n .required(errorsTrads.required.id),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n enum: yup\n .array()\n .of(yup.string())\n .min(1, errorsTrads.min.id)\n .test({\n name: 'areEnumValuesUnique',\n message: getTrad('error.validation.enum-duplicate'),\n test(values) {\n if (!values) {\n return false;\n }\n const duplicates = uniq(\n values\n .map(toRegressedEnumValue)\n .filter((value, index, values) => values.indexOf(value) !== index)\n );\n\n return !duplicates.length;\n },\n })\n .test({\n name: 'doesNotHaveEmptyValues',\n message: getTrad('error.validation.enum-empty-string'),\n test: (values) => {\n if (!values) {\n return false;\n }\n return !values.map(toRegressedEnumValue).some((val) => val === '');\n },\n })\n .test({\n name: 'doesMatchRegex',\n message: getTrad('error.validation.enum-regex'),\n test: (values) => {\n if (!values) {\n return false;\n }\n return values\n .map(toRegressedEnumValue)\n .every((value) => GRAPHQL_ENUM_REGEX.test(value));\n },\n }),\n enumName: yup.string().nullable(),\n };\n\n return yup.object(shape);\n },\n float(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n default: yup.number(),\n max: yup.number(),\n min: yup.number().test(isMinSuperiorThanMax<number>()),\n };\n\n return yup.object(shape);\n },\n integer(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup.number().integer(),\n unique: validators.unique(),\n required: validators.required(),\n max: validators.max(),\n min: validators.min(),\n };\n\n return yup.object(shape);\n },\n json(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n unique: validators.unique(),\n };\n\n return yup.object(shape);\n },\n media(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n multiple: yup.boolean(),\n required: validators.required(),\n allowedTypes: yup\n .array()\n .of(yup.string().oneOf(['images', 'videos', 'files', 'audios']))\n .min(1)\n .nullable(),\n };\n\n return yup.object(shape);\n },\n password(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n relation(\n usedAttributeNames: Array<string>,\n reservedNames: Array<string>,\n alreadyTakenTargetAttributes: Array<{ name: string }>,\n {\n initialData,\n modifiedData,\n }: {\n initialData: { targetAttribute?: string };\n modifiedData: {\n name?: string;\n relation?: Schema.Attribute.RelationKind.WithTarget;\n targetAttribute?: string;\n };\n }\n ) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n target: yup.string().required(errorsTrads.required.id),\n relation: yup.string().required(),\n type: yup.string().required(),\n targetAttribute: yup.lazy(() => {\n const relationType = getRelationType(modifiedData.relation!, modifiedData.targetAttribute);\n\n if (relationType === 'oneWay' || relationType === 'manyWay') {\n return yup.string().nullable();\n }\n\n const schema = yup.string().test(isNameAllowed(reservedNames));\n const initialForbiddenName = [\n ...alreadyTakenTargetAttributes.map(({ name }) => name),\n modifiedData.name,\n ];\n\n const forbiddenTargetAttributeName = initialForbiddenName.filter(\n (val) => val !== initialData.targetAttribute\n );\n\n return schema\n .matches(NAME_REGEX, errorsTrads.regex.id)\n .test({\n name: 'forbiddenTargetAttributeName',\n message: getTrad('error.validation.relation.targetAttribute-taken'),\n test(value) {\n if (!value) {\n return false;\n }\n\n return !forbiddenTargetAttributeName.includes(value);\n },\n })\n .required(errorsTrads.required.id);\n }),\n };\n\n return yup.object(shape);\n },\n richtext(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n blocks(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n string(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = createTextShape(usedAttributeNames, reservedNames);\n\n return yup.object(shape);\n },\n text(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = createTextShape(usedAttributeNames, reservedNames);\n\n return yup.object(shape);\n },\n uid(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = createTextShape(usedAttributeNames, reservedNames);\n\n return yup.object(shape);\n },\n};\n"],"names":["attributeTypes","date","usedAttributeNames","reservedNames","shape","name","validators","type","yup","object","datetime","time","default","biginteger","string","nullable","matches","unique","required","max","errorsTrads","regex","id","min","test","isMinSuperiorThanMax","boolean","component","decimal","number","dynamiczone","email","maxLength","minLength","enumeration","GRAPHQL_ENUM_REGEX","alreadyUsedAttributeNames","isNameAllowed","enum","array","of","message","getTrad","values","duplicates","uniq","map","toRegressedEnumValue","filter","value","index","indexOf","length","some","val","every","enumName","float","integer","json","media","multiple","allowedTypes","oneOf","password","relation","alreadyTakenTargetAttributes","initialData","modifiedData","target","targetAttribute","lazy","relationType","getRelationType","schema","initialForbiddenName","forbiddenTargetAttributeName","NAME_REGEX","includes","richtext","blocks","createTextShape","text","uid"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.mjs","sources":["../../../../../admin/src/components/FormModal/attributes/types.ts"],"sourcesContent":["import { translatedErrors as errorsTrads } from '@strapi/admin/strapi-admin';\nimport uniq from 'lodash/uniq';\nimport * as yup from 'yup';\n\nimport { getRelationType } from '../../../utils/getRelationType';\nimport { getTrad } from '../../../utils/getTrad';\nimport { toRegressedEnumValue } from '../../../utils/toRegressedEnumValue';\n\nimport {\n alreadyUsedAttributeNames,\n createStringShape,\n createTextShape,\n isMinSuperiorThanMax,\n isNameAllowed,\n NAME_REGEX,\n validators,\n} from './validation/common';\n\nimport type { Schema } from '@strapi/types';\n\nexport const attributeTypes = {\n date(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n datetime(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n time(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n default(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n biginteger(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup\n .string()\n .nullable()\n .matches(/^-?\\d*$/),\n unique: validators.unique(),\n required: validators.required(),\n max: yup\n .string()\n .nullable()\n .matches(/^-?\\d*$/, errorsTrads.regex.id),\n min: yup\n .string()\n .nullable()\n .test(isMinSuperiorThanMax<string | null>())\n .matches(/^-?\\d*$/, errorsTrads.regex.id),\n };\n\n return yup.object(shape);\n },\n boolean(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n default: yup.boolean().nullable(),\n required: validators.required(),\n unique: validators.unique(),\n };\n\n return yup.object(shape);\n },\n component(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n max: validators.max(),\n min: validators.min(),\n component: yup.string().required(errorsTrads.required.id),\n };\n\n return yup.object(shape);\n },\n decimal(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup.number(),\n required: validators.required(),\n max: yup.number(),\n min: yup.number().test(isMinSuperiorThanMax<number>()),\n };\n\n return yup.object(shape);\n },\n dynamiczone(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n max: validators.max(),\n min: validators.min(),\n };\n\n return yup.object(shape);\n },\n email(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup.string().email().nullable(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n enumeration(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n /**\n * For enumerations the least common denomiator is GraphQL, where\n * values needs to match the secure name regex:\n * GraphQL Spec https://spec.graphql.org/June2018/#sec-Names\n *\n * Therefore we need to make sure our users only use values, which\n * can be returned by GraphQL, by checking the regressed values\n * agains the GraphQL regex.\n *\n * TODO V5: check if we can avoid this coupling by moving this logic\n * into the GraphQL plugin.\n */\n const GRAPHQL_ENUM_REGEX = /^[_A-Za-z][_0-9A-Za-z]*$/;\n\n const shape = {\n name: yup\n .string()\n .test(alreadyUsedAttributeNames(usedAttributeNames))\n .test(isNameAllowed(reservedNames))\n .matches(GRAPHQL_ENUM_REGEX, errorsTrads.regex.id)\n .required(errorsTrads.required.id),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n enum: yup\n .array()\n .of(yup.string())\n .min(1, errorsTrads.min.id)\n .test({\n name: 'areEnumValuesUnique',\n message: getTrad('error.validation.enum-duplicate'),\n test(values) {\n if (!values) {\n return false;\n }\n const duplicates = uniq(\n values\n .map(toRegressedEnumValue)\n .filter((value, index, values) => values.indexOf(value) !== index)\n );\n\n return !duplicates.length;\n },\n })\n .test({\n name: 'doesNotHaveEmptyValues',\n message: getTrad('error.validation.enum-empty-string'),\n test: (values) => {\n if (!values) {\n return false;\n }\n return !values.map(toRegressedEnumValue).some((val) => val === '');\n },\n })\n .test({\n name: 'doesMatchRegex',\n message: getTrad('error.validation.enum-regex'),\n test: (values) => {\n if (!values) {\n return false;\n }\n return values\n .map(toRegressedEnumValue)\n .every((value) => GRAPHQL_ENUM_REGEX.test(value));\n },\n }),\n enumName: yup.string().nullable(),\n };\n\n return yup.object(shape);\n },\n float(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n default: yup.number(),\n max: yup.number(),\n min: yup.number().test(isMinSuperiorThanMax<number>()),\n };\n\n return yup.object(shape);\n },\n integer(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup.number().integer(),\n unique: validators.unique(),\n required: validators.required(),\n max: validators.max(),\n min: validators.min(),\n };\n\n return yup.object(shape);\n },\n json(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n unique: validators.unique(),\n };\n\n return yup.object(shape);\n },\n media(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n multiple: yup.boolean(),\n required: validators.required(),\n allowedTypes: yup\n .array()\n .of(yup.string().oneOf(['images', 'videos', 'files', 'audios']))\n .min(1)\n .nullable(),\n };\n\n return yup.object(shape);\n },\n password(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n relation(\n usedAttributeNames: Array<string>,\n reservedNames: Array<string>,\n alreadyTakenTargetAttributes: Array<{ name: string }>,\n {\n initialData,\n modifiedData,\n }: {\n initialData: { targetAttribute?: string };\n modifiedData: {\n name?: string;\n relation?: Schema.Attribute.RelationKind.WithTarget;\n targetAttribute?: string;\n };\n }\n ) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n target: yup.string().required(errorsTrads.required.id),\n relation: yup.string().required(),\n type: yup.string().required(),\n targetAttribute: yup.lazy(() => {\n const relationType = getRelationType(modifiedData.relation!, modifiedData.targetAttribute);\n\n if (relationType === 'oneWay' || relationType === 'manyWay') {\n return yup.string().nullable();\n }\n\n const schema = yup.string().test(isNameAllowed(reservedNames));\n const initialForbiddenName = [\n ...alreadyTakenTargetAttributes.map(({ name }) => name),\n modifiedData.name,\n ];\n\n const forbiddenTargetAttributeName = initialForbiddenName.filter(\n (val) => val !== initialData.targetAttribute\n );\n\n return schema\n .matches(NAME_REGEX, errorsTrads.regex.id)\n .test({\n name: 'forbiddenTargetAttributeName',\n message: getTrad('error.validation.relation.targetAttribute-taken'),\n test(value) {\n if (!value) {\n return false;\n }\n\n return !forbiddenTargetAttributeName.includes(value);\n },\n })\n .required(errorsTrads.required.id);\n }),\n };\n\n return yup.object(shape);\n },\n richtext(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n blocks(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n string(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = createStringShape(usedAttributeNames, reservedNames);\n\n return yup.object(shape);\n },\n text(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = createTextShape(usedAttributeNames, reservedNames);\n\n return yup.object(shape);\n },\n uid(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = createTextShape(usedAttributeNames, reservedNames);\n\n return yup.object(shape);\n },\n};\n"],"names":["attributeTypes","date","usedAttributeNames","reservedNames","shape","name","validators","type","yup","object","datetime","time","default","biginteger","string","nullable","matches","unique","required","max","errorsTrads","regex","id","min","test","isMinSuperiorThanMax","boolean","component","decimal","number","dynamiczone","email","maxLength","minLength","enumeration","GRAPHQL_ENUM_REGEX","alreadyUsedAttributeNames","isNameAllowed","enum","array","of","message","getTrad","values","duplicates","uniq","map","toRegressedEnumValue","filter","value","index","indexOf","length","some","val","every","enumName","float","integer","json","media","multiple","allowedTypes","oneOf","password","relation","alreadyTakenTargetAttributes","initialData","modifiedData","target","targetAttribute","lazy","relationType","getRelationType","schema","initialForbiddenName","forbiddenTargetAttributeName","NAME_REGEX","includes","richtext","blocks","createStringShape","text","createTextShape","uid"],"mappings":"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"}
|
|
@@ -66,6 +66,7 @@ const validators = {
|
|
|
66
66
|
return schema;
|
|
67
67
|
}).nullable(),
|
|
68
68
|
maxLength: ()=>yup__namespace.number().integer().positive(getTrad.getTrad('error.validation.positive')).nullable(),
|
|
69
|
+
maxLengthString: ()=>yup__namespace.number().integer().positive(getTrad.getTrad('error.validation.positive')).max(255, 'Maximum length for short text fields is 255 characters').nullable(),
|
|
69
70
|
minLength: ()=>yup__namespace.number().integer().min(1).when('maxLength', (maxLength, schema)=>{
|
|
70
71
|
if (maxLength) {
|
|
71
72
|
return schema.max(maxLength, getTrad.getTrad('error.validation.minSupMax'));
|
|
@@ -102,6 +103,29 @@ const createTextShape = (usedAttributeNames, reservedNames)=>{
|
|
|
102
103
|
};
|
|
103
104
|
return shape;
|
|
104
105
|
};
|
|
106
|
+
const createStringShape = (usedAttributeNames, reservedNames)=>{
|
|
107
|
+
const shape = {
|
|
108
|
+
name: validators.name(usedAttributeNames, reservedNames),
|
|
109
|
+
type: validators.type(),
|
|
110
|
+
default: validators.default(),
|
|
111
|
+
unique: validators.unique(),
|
|
112
|
+
required: validators.required(),
|
|
113
|
+
maxLength: validators.maxLengthString(),
|
|
114
|
+
minLength: validators.minLength(),
|
|
115
|
+
regex: yup__namespace.string().test({
|
|
116
|
+
name: 'isValidRegExpPattern',
|
|
117
|
+
message: getTrad.getTrad('error.validation.regex'),
|
|
118
|
+
test (value) {
|
|
119
|
+
try {
|
|
120
|
+
return new RegExp(value || '') !== null;
|
|
121
|
+
} catch (e) {
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}).nullable()
|
|
126
|
+
};
|
|
127
|
+
return shape;
|
|
128
|
+
};
|
|
105
129
|
const isMinSuperiorThanMax = ()=>({
|
|
106
130
|
name: 'isMinSuperiorThanMax',
|
|
107
131
|
message: getTrad.getTrad('error.validation.minSupMax'),
|
|
@@ -122,6 +146,7 @@ const isMinSuperiorThanMax = ()=>({
|
|
|
122
146
|
|
|
123
147
|
exports.NAME_REGEX = NAME_REGEX;
|
|
124
148
|
exports.alreadyUsedAttributeNames = alreadyUsedAttributeNames;
|
|
149
|
+
exports.createStringShape = createStringShape;
|
|
125
150
|
exports.createTextShape = createTextShape;
|
|
126
151
|
exports.isMinSuperiorThanMax = isMinSuperiorThanMax;
|
|
127
152
|
exports.isNameAllowed = isNameAllowed;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sources":["../../../../../../admin/src/components/FormModal/attributes/validation/common.ts"],"sourcesContent":["import { translatedErrors as errorsTrads } from '@strapi/admin/strapi-admin';\nimport { snakeCase } from 'lodash/fp';\nimport toNumber from 'lodash/toNumber';\nimport * as yup from 'yup';\n\nimport { getTrad } from '../../../../utils/getTrad';\n\nconst NAME_REGEX = /^[A-Za-z][_0-9A-Za-z]*$/;\n\nconst alreadyUsedAttributeNames = (\n usedNames: Array<string>\n): yup.TestConfig<string | undefined, Record<string, unknown>> => {\n return {\n name: 'attributeNameAlreadyUsed',\n message: errorsTrads.unique.id,\n test(value: string | undefined) {\n if (!value) {\n return false;\n }\n const snakeCaseKey = snakeCase(value);\n\n return !usedNames.some((existingKey) => {\n return snakeCase(existingKey) === snakeCaseKey;\n });\n },\n };\n};\n\nconst getUsedContentTypeAttributeNames = (\n ctShema: any,\n isEdition: boolean,\n attributeNameToEdit: string\n) => {\n const attributes = ctShema?.attributes ?? {};\n\n return Object.keys(attributes).filter((attr) => {\n if (isEdition) {\n return attr !== attributeNameToEdit;\n }\n\n return true;\n });\n};\n\nconst isNameAllowed = (\n reservedNames: Array<string>\n): yup.TestConfig<string | undefined, Record<string, unknown>> => {\n return {\n name: 'forbiddenAttributeName',\n message: getTrad('error.attributeName.reserved-name'),\n test(value: string | undefined) {\n if (!value) {\n return false;\n }\n const snakeCaseKey = snakeCase(value);\n\n return !reservedNames.some((existingKey) => {\n return snakeCase(existingKey) === snakeCaseKey;\n });\n },\n };\n};\n\nconst validators = {\n default: () => yup.string().nullable(),\n max: () => yup.number().integer().nullable(),\n min: () =>\n yup\n .number()\n .integer()\n .when('max', (max, schema) => {\n if (max) {\n return schema.max(max, getTrad('error.validation.minSupMax'));\n }\n\n return schema;\n })\n .nullable(),\n maxLength: () => yup.number().integer().positive(getTrad('error.validation.positive')).nullable(),\n minLength: () =>\n yup\n .number()\n .integer()\n .min(1)\n .when('maxLength', (maxLength, schema) => {\n if (maxLength) {\n return schema.max(maxLength, getTrad('error.validation.minSupMax'));\n }\n\n return schema;\n })\n .nullable(),\n name(usedNames: Array<string>, reservedNames: Array<string>) {\n return yup\n .string()\n .test(alreadyUsedAttributeNames(usedNames))\n .test(isNameAllowed(reservedNames))\n .matches(NAME_REGEX, errorsTrads.regex.id)\n .required(errorsTrads.required.id);\n },\n required: () => yup.boolean(),\n type: () => yup.string().required(errorsTrads.required.id),\n unique: () => yup.boolean().nullable(),\n};\n\nconst createTextShape = (usedAttributeNames: Array<string>, reservedNames: Array<string>) => {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n regex: yup\n .string()\n .test({\n name: 'isValidRegExpPattern',\n message: getTrad('error.validation.regex'),\n test(value) {\n try {\n return new RegExp(value || '') !== null;\n } catch (e) {\n return false;\n }\n },\n })\n .nullable(),\n };\n\n return shape;\n};\n\ntype GenericIsMinSuperiorThanMax<T extends (string | null) | number> = yup.TestConfig<\n T | undefined,\n Record<string, unknown>\n>;\n\nconst isMinSuperiorThanMax = <\n T extends (string | null) | number,\n>(): GenericIsMinSuperiorThanMax<T> => ({\n name: 'isMinSuperiorThanMax',\n message: getTrad('error.validation.minSupMax'),\n test(min: T | undefined) {\n if (!min) {\n return true;\n }\n\n const { max } = (this as any).parent;\n\n if (!max) {\n return true;\n }\n\n if (Number.isNaN(toNumber(min))) {\n return true;\n }\n\n return toNumber(max) >= toNumber(min);\n },\n});\n\nexport {\n alreadyUsedAttributeNames,\n createTextShape,\n getUsedContentTypeAttributeNames,\n isMinSuperiorThanMax,\n isNameAllowed,\n NAME_REGEX,\n validators,\n};\n"],"names":["NAME_REGEX","alreadyUsedAttributeNames","usedNames","name","message","errorsTrads","unique","id","test","value","snakeCaseKey","snakeCase","some","existingKey","isNameAllowed","reservedNames","getTrad","validators","default","yup","string","nullable","max","number","integer","min","when","schema","maxLength","positive","minLength","matches","regex","required","boolean","type","createTextShape","usedAttributeNames","shape","RegExp","e","isMinSuperiorThanMax","parent","Number","isNaN","toNumber"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"common.js","sources":["../../../../../../admin/src/components/FormModal/attributes/validation/common.ts"],"sourcesContent":["import { translatedErrors as errorsTrads } from '@strapi/admin/strapi-admin';\nimport { snakeCase } from 'lodash/fp';\nimport toNumber from 'lodash/toNumber';\nimport * as yup from 'yup';\n\nimport { getTrad } from '../../../../utils/getTrad';\n\nconst NAME_REGEX = /^[A-Za-z][_0-9A-Za-z]*$/;\n\nconst alreadyUsedAttributeNames = (\n usedNames: Array<string>\n): yup.TestConfig<string | undefined, Record<string, unknown>> => {\n return {\n name: 'attributeNameAlreadyUsed',\n message: errorsTrads.unique.id,\n test(value: string | undefined) {\n if (!value) {\n return false;\n }\n const snakeCaseKey = snakeCase(value);\n\n return !usedNames.some((existingKey) => {\n return snakeCase(existingKey) === snakeCaseKey;\n });\n },\n };\n};\n\nconst getUsedContentTypeAttributeNames = (\n ctShema: any,\n isEdition: boolean,\n attributeNameToEdit: string\n) => {\n const attributes = ctShema?.attributes ?? {};\n\n return Object.keys(attributes).filter((attr) => {\n if (isEdition) {\n return attr !== attributeNameToEdit;\n }\n\n return true;\n });\n};\n\nconst isNameAllowed = (\n reservedNames: Array<string>\n): yup.TestConfig<string | undefined, Record<string, unknown>> => {\n return {\n name: 'forbiddenAttributeName',\n message: getTrad('error.attributeName.reserved-name'),\n test(value: string | undefined) {\n if (!value) {\n return false;\n }\n const snakeCaseKey = snakeCase(value);\n\n return !reservedNames.some((existingKey) => {\n return snakeCase(existingKey) === snakeCaseKey;\n });\n },\n };\n};\n\nconst validators = {\n default: () => yup.string().nullable(),\n max: () => yup.number().integer().nullable(),\n min: () =>\n yup\n .number()\n .integer()\n .when('max', (max, schema) => {\n if (max) {\n return schema.max(max, getTrad('error.validation.minSupMax'));\n }\n\n return schema;\n })\n .nullable(),\n maxLength: () => yup.number().integer().positive(getTrad('error.validation.positive')).nullable(),\n maxLengthString: () =>\n yup\n .number()\n .integer()\n .positive(getTrad('error.validation.positive'))\n .max(255, 'Maximum length for short text fields is 255 characters')\n .nullable(),\n minLength: () =>\n yup\n .number()\n .integer()\n .min(1)\n .when('maxLength', (maxLength, schema) => {\n if (maxLength) {\n return schema.max(maxLength, getTrad('error.validation.minSupMax'));\n }\n\n return schema;\n })\n .nullable(),\n name(usedNames: Array<string>, reservedNames: Array<string>) {\n return yup\n .string()\n .test(alreadyUsedAttributeNames(usedNames))\n .test(isNameAllowed(reservedNames))\n .matches(NAME_REGEX, errorsTrads.regex.id)\n .required(errorsTrads.required.id);\n },\n required: () => yup.boolean(),\n type: () => yup.string().required(errorsTrads.required.id),\n unique: () => yup.boolean().nullable(),\n};\n\nconst createTextShape = (usedAttributeNames: Array<string>, reservedNames: Array<string>) => {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n regex: yup\n .string()\n .test({\n name: 'isValidRegExpPattern',\n message: getTrad('error.validation.regex'),\n test(value) {\n try {\n return new RegExp(value || '') !== null;\n } catch (e) {\n return false;\n }\n },\n })\n .nullable(),\n };\n\n return shape;\n};\n\nconst createStringShape = (usedAttributeNames: Array<string>, reservedNames: Array<string>) => {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLengthString(),\n minLength: validators.minLength(),\n regex: yup\n .string()\n .test({\n name: 'isValidRegExpPattern',\n message: getTrad('error.validation.regex'),\n test(value) {\n try {\n return new RegExp(value || '') !== null;\n } catch (e) {\n return false;\n }\n },\n })\n .nullable(),\n };\n\n return shape;\n};\n\ntype GenericIsMinSuperiorThanMax<T extends (string | null) | number> = yup.TestConfig<\n T | undefined,\n Record<string, unknown>\n>;\n\nconst isMinSuperiorThanMax = <\n T extends (string | null) | number,\n>(): GenericIsMinSuperiorThanMax<T> => ({\n name: 'isMinSuperiorThanMax',\n message: getTrad('error.validation.minSupMax'),\n test(min: T | undefined) {\n if (!min) {\n return true;\n }\n\n const { max } = (this as any).parent;\n\n if (!max) {\n return true;\n }\n\n if (Number.isNaN(toNumber(min))) {\n return true;\n }\n\n return toNumber(max) >= toNumber(min);\n },\n});\n\nexport {\n alreadyUsedAttributeNames,\n createStringShape,\n createTextShape,\n getUsedContentTypeAttributeNames,\n isMinSuperiorThanMax,\n isNameAllowed,\n NAME_REGEX,\n validators,\n};\n"],"names":["NAME_REGEX","alreadyUsedAttributeNames","usedNames","name","message","errorsTrads","unique","id","test","value","snakeCaseKey","snakeCase","some","existingKey","isNameAllowed","reservedNames","getTrad","validators","default","yup","string","nullable","max","number","integer","min","when","schema","maxLength","positive","maxLengthString","minLength","matches","regex","required","boolean","type","createTextShape","usedAttributeNames","shape","RegExp","e","createStringShape","isMinSuperiorThanMax","parent","Number","isNaN","toNumber"],"mappings":"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"}
|
|
@@ -45,6 +45,7 @@ const validators = {
|
|
|
45
45
|
return schema;
|
|
46
46
|
}).nullable(),
|
|
47
47
|
maxLength: ()=>yup.number().integer().positive(getTrad('error.validation.positive')).nullable(),
|
|
48
|
+
maxLengthString: ()=>yup.number().integer().positive(getTrad('error.validation.positive')).max(255, 'Maximum length for short text fields is 255 characters').nullable(),
|
|
48
49
|
minLength: ()=>yup.number().integer().min(1).when('maxLength', (maxLength, schema)=>{
|
|
49
50
|
if (maxLength) {
|
|
50
51
|
return schema.max(maxLength, getTrad('error.validation.minSupMax'));
|
|
@@ -81,6 +82,29 @@ const createTextShape = (usedAttributeNames, reservedNames)=>{
|
|
|
81
82
|
};
|
|
82
83
|
return shape;
|
|
83
84
|
};
|
|
85
|
+
const createStringShape = (usedAttributeNames, reservedNames)=>{
|
|
86
|
+
const shape = {
|
|
87
|
+
name: validators.name(usedAttributeNames, reservedNames),
|
|
88
|
+
type: validators.type(),
|
|
89
|
+
default: validators.default(),
|
|
90
|
+
unique: validators.unique(),
|
|
91
|
+
required: validators.required(),
|
|
92
|
+
maxLength: validators.maxLengthString(),
|
|
93
|
+
minLength: validators.minLength(),
|
|
94
|
+
regex: yup.string().test({
|
|
95
|
+
name: 'isValidRegExpPattern',
|
|
96
|
+
message: getTrad('error.validation.regex'),
|
|
97
|
+
test (value) {
|
|
98
|
+
try {
|
|
99
|
+
return new RegExp(value || '') !== null;
|
|
100
|
+
} catch (e) {
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}).nullable()
|
|
105
|
+
};
|
|
106
|
+
return shape;
|
|
107
|
+
};
|
|
84
108
|
const isMinSuperiorThanMax = ()=>({
|
|
85
109
|
name: 'isMinSuperiorThanMax',
|
|
86
110
|
message: getTrad('error.validation.minSupMax'),
|
|
@@ -99,5 +123,5 @@ const isMinSuperiorThanMax = ()=>({
|
|
|
99
123
|
}
|
|
100
124
|
});
|
|
101
125
|
|
|
102
|
-
export { NAME_REGEX, alreadyUsedAttributeNames, createTextShape, isMinSuperiorThanMax, isNameAllowed, validators };
|
|
126
|
+
export { NAME_REGEX, alreadyUsedAttributeNames, createStringShape, createTextShape, isMinSuperiorThanMax, isNameAllowed, validators };
|
|
103
127
|
//# sourceMappingURL=common.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.mjs","sources":["../../../../../../admin/src/components/FormModal/attributes/validation/common.ts"],"sourcesContent":["import { translatedErrors as errorsTrads } from '@strapi/admin/strapi-admin';\nimport { snakeCase } from 'lodash/fp';\nimport toNumber from 'lodash/toNumber';\nimport * as yup from 'yup';\n\nimport { getTrad } from '../../../../utils/getTrad';\n\nconst NAME_REGEX = /^[A-Za-z][_0-9A-Za-z]*$/;\n\nconst alreadyUsedAttributeNames = (\n usedNames: Array<string>\n): yup.TestConfig<string | undefined, Record<string, unknown>> => {\n return {\n name: 'attributeNameAlreadyUsed',\n message: errorsTrads.unique.id,\n test(value: string | undefined) {\n if (!value) {\n return false;\n }\n const snakeCaseKey = snakeCase(value);\n\n return !usedNames.some((existingKey) => {\n return snakeCase(existingKey) === snakeCaseKey;\n });\n },\n };\n};\n\nconst getUsedContentTypeAttributeNames = (\n ctShema: any,\n isEdition: boolean,\n attributeNameToEdit: string\n) => {\n const attributes = ctShema?.attributes ?? {};\n\n return Object.keys(attributes).filter((attr) => {\n if (isEdition) {\n return attr !== attributeNameToEdit;\n }\n\n return true;\n });\n};\n\nconst isNameAllowed = (\n reservedNames: Array<string>\n): yup.TestConfig<string | undefined, Record<string, unknown>> => {\n return {\n name: 'forbiddenAttributeName',\n message: getTrad('error.attributeName.reserved-name'),\n test(value: string | undefined) {\n if (!value) {\n return false;\n }\n const snakeCaseKey = snakeCase(value);\n\n return !reservedNames.some((existingKey) => {\n return snakeCase(existingKey) === snakeCaseKey;\n });\n },\n };\n};\n\nconst validators = {\n default: () => yup.string().nullable(),\n max: () => yup.number().integer().nullable(),\n min: () =>\n yup\n .number()\n .integer()\n .when('max', (max, schema) => {\n if (max) {\n return schema.max(max, getTrad('error.validation.minSupMax'));\n }\n\n return schema;\n })\n .nullable(),\n maxLength: () => yup.number().integer().positive(getTrad('error.validation.positive')).nullable(),\n minLength: () =>\n yup\n .number()\n .integer()\n .min(1)\n .when('maxLength', (maxLength, schema) => {\n if (maxLength) {\n return schema.max(maxLength, getTrad('error.validation.minSupMax'));\n }\n\n return schema;\n })\n .nullable(),\n name(usedNames: Array<string>, reservedNames: Array<string>) {\n return yup\n .string()\n .test(alreadyUsedAttributeNames(usedNames))\n .test(isNameAllowed(reservedNames))\n .matches(NAME_REGEX, errorsTrads.regex.id)\n .required(errorsTrads.required.id);\n },\n required: () => yup.boolean(),\n type: () => yup.string().required(errorsTrads.required.id),\n unique: () => yup.boolean().nullable(),\n};\n\nconst createTextShape = (usedAttributeNames: Array<string>, reservedNames: Array<string>) => {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n regex: yup\n .string()\n .test({\n name: 'isValidRegExpPattern',\n message: getTrad('error.validation.regex'),\n test(value) {\n try {\n return new RegExp(value || '') !== null;\n } catch (e) {\n return false;\n }\n },\n })\n .nullable(),\n };\n\n return shape;\n};\n\ntype GenericIsMinSuperiorThanMax<T extends (string | null) | number> = yup.TestConfig<\n T | undefined,\n Record<string, unknown>\n>;\n\nconst isMinSuperiorThanMax = <\n T extends (string | null) | number,\n>(): GenericIsMinSuperiorThanMax<T> => ({\n name: 'isMinSuperiorThanMax',\n message: getTrad('error.validation.minSupMax'),\n test(min: T | undefined) {\n if (!min) {\n return true;\n }\n\n const { max } = (this as any).parent;\n\n if (!max) {\n return true;\n }\n\n if (Number.isNaN(toNumber(min))) {\n return true;\n }\n\n return toNumber(max) >= toNumber(min);\n },\n});\n\nexport {\n alreadyUsedAttributeNames,\n createTextShape,\n getUsedContentTypeAttributeNames,\n isMinSuperiorThanMax,\n isNameAllowed,\n NAME_REGEX,\n validators,\n};\n"],"names":["NAME_REGEX","alreadyUsedAttributeNames","usedNames","name","message","errorsTrads","unique","id","test","value","snakeCaseKey","snakeCase","some","existingKey","isNameAllowed","reservedNames","getTrad","validators","default","yup","string","nullable","max","number","integer","min","when","schema","maxLength","positive","minLength","matches","regex","required","boolean","type","createTextShape","usedAttributeNames","shape","RegExp","e","isMinSuperiorThanMax","parent","Number","isNaN","toNumber"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"common.mjs","sources":["../../../../../../admin/src/components/FormModal/attributes/validation/common.ts"],"sourcesContent":["import { translatedErrors as errorsTrads } from '@strapi/admin/strapi-admin';\nimport { snakeCase } from 'lodash/fp';\nimport toNumber from 'lodash/toNumber';\nimport * as yup from 'yup';\n\nimport { getTrad } from '../../../../utils/getTrad';\n\nconst NAME_REGEX = /^[A-Za-z][_0-9A-Za-z]*$/;\n\nconst alreadyUsedAttributeNames = (\n usedNames: Array<string>\n): yup.TestConfig<string | undefined, Record<string, unknown>> => {\n return {\n name: 'attributeNameAlreadyUsed',\n message: errorsTrads.unique.id,\n test(value: string | undefined) {\n if (!value) {\n return false;\n }\n const snakeCaseKey = snakeCase(value);\n\n return !usedNames.some((existingKey) => {\n return snakeCase(existingKey) === snakeCaseKey;\n });\n },\n };\n};\n\nconst getUsedContentTypeAttributeNames = (\n ctShema: any,\n isEdition: boolean,\n attributeNameToEdit: string\n) => {\n const attributes = ctShema?.attributes ?? {};\n\n return Object.keys(attributes).filter((attr) => {\n if (isEdition) {\n return attr !== attributeNameToEdit;\n }\n\n return true;\n });\n};\n\nconst isNameAllowed = (\n reservedNames: Array<string>\n): yup.TestConfig<string | undefined, Record<string, unknown>> => {\n return {\n name: 'forbiddenAttributeName',\n message: getTrad('error.attributeName.reserved-name'),\n test(value: string | undefined) {\n if (!value) {\n return false;\n }\n const snakeCaseKey = snakeCase(value);\n\n return !reservedNames.some((existingKey) => {\n return snakeCase(existingKey) === snakeCaseKey;\n });\n },\n };\n};\n\nconst validators = {\n default: () => yup.string().nullable(),\n max: () => yup.number().integer().nullable(),\n min: () =>\n yup\n .number()\n .integer()\n .when('max', (max, schema) => {\n if (max) {\n return schema.max(max, getTrad('error.validation.minSupMax'));\n }\n\n return schema;\n })\n .nullable(),\n maxLength: () => yup.number().integer().positive(getTrad('error.validation.positive')).nullable(),\n maxLengthString: () =>\n yup\n .number()\n .integer()\n .positive(getTrad('error.validation.positive'))\n .max(255, 'Maximum length for short text fields is 255 characters')\n .nullable(),\n minLength: () =>\n yup\n .number()\n .integer()\n .min(1)\n .when('maxLength', (maxLength, schema) => {\n if (maxLength) {\n return schema.max(maxLength, getTrad('error.validation.minSupMax'));\n }\n\n return schema;\n })\n .nullable(),\n name(usedNames: Array<string>, reservedNames: Array<string>) {\n return yup\n .string()\n .test(alreadyUsedAttributeNames(usedNames))\n .test(isNameAllowed(reservedNames))\n .matches(NAME_REGEX, errorsTrads.regex.id)\n .required(errorsTrads.required.id);\n },\n required: () => yup.boolean(),\n type: () => yup.string().required(errorsTrads.required.id),\n unique: () => yup.boolean().nullable(),\n};\n\nconst createTextShape = (usedAttributeNames: Array<string>, reservedNames: Array<string>) => {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n regex: yup\n .string()\n .test({\n name: 'isValidRegExpPattern',\n message: getTrad('error.validation.regex'),\n test(value) {\n try {\n return new RegExp(value || '') !== null;\n } catch (e) {\n return false;\n }\n },\n })\n .nullable(),\n };\n\n return shape;\n};\n\nconst createStringShape = (usedAttributeNames: Array<string>, reservedNames: Array<string>) => {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLengthString(),\n minLength: validators.minLength(),\n regex: yup\n .string()\n .test({\n name: 'isValidRegExpPattern',\n message: getTrad('error.validation.regex'),\n test(value) {\n try {\n return new RegExp(value || '') !== null;\n } catch (e) {\n return false;\n }\n },\n })\n .nullable(),\n };\n\n return shape;\n};\n\ntype GenericIsMinSuperiorThanMax<T extends (string | null) | number> = yup.TestConfig<\n T | undefined,\n Record<string, unknown>\n>;\n\nconst isMinSuperiorThanMax = <\n T extends (string | null) | number,\n>(): GenericIsMinSuperiorThanMax<T> => ({\n name: 'isMinSuperiorThanMax',\n message: getTrad('error.validation.minSupMax'),\n test(min: T | undefined) {\n if (!min) {\n return true;\n }\n\n const { max } = (this as any).parent;\n\n if (!max) {\n return true;\n }\n\n if (Number.isNaN(toNumber(min))) {\n return true;\n }\n\n return toNumber(max) >= toNumber(min);\n },\n});\n\nexport {\n alreadyUsedAttributeNames,\n createStringShape,\n createTextShape,\n getUsedContentTypeAttributeNames,\n isMinSuperiorThanMax,\n isNameAllowed,\n NAME_REGEX,\n validators,\n};\n"],"names":["NAME_REGEX","alreadyUsedAttributeNames","usedNames","name","message","errorsTrads","unique","id","test","value","snakeCaseKey","snakeCase","some","existingKey","isNameAllowed","reservedNames","getTrad","validators","default","yup","string","nullable","max","number","integer","min","when","schema","maxLength","positive","maxLengthString","minLength","matches","regex","required","boolean","type","createTextShape","usedAttributeNames","shape","RegExp","e","createStringShape","isMinSuperiorThanMax","parent","Number","isNaN","toNumber"],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ declare const validators: {
|
|
|
8
8
|
max: () => yup.NumberSchema<number | null | undefined, Record<string, any>, number | null | undefined>;
|
|
9
9
|
min: () => yup.NumberSchema<number | null | undefined, Record<string, any>, number | null | undefined>;
|
|
10
10
|
maxLength: () => yup.NumberSchema<number | null | undefined, Record<string, any>, number | null | undefined>;
|
|
11
|
+
maxLengthString: () => yup.NumberSchema<number | null | undefined, Record<string, any>, number | null | undefined>;
|
|
11
12
|
minLength: () => yup.NumberSchema<number | null | undefined, Record<string, any>, number | null | undefined>;
|
|
12
13
|
name(usedNames: Array<string>, reservedNames: Array<string>): import("yup/lib/string").RequiredStringSchema<string | undefined, Record<string, any>>;
|
|
13
14
|
required: () => yup.BooleanSchema<boolean | undefined, Record<string, any>, boolean | undefined>;
|
|
@@ -24,6 +25,16 @@ declare const createTextShape: (usedAttributeNames: Array<string>, reservedNames
|
|
|
24
25
|
minLength: yup.NumberSchema<number | null | undefined, Record<string, any>, number | null | undefined>;
|
|
25
26
|
regex: yup.default<string | null | undefined, Record<string, any>, string | null | undefined>;
|
|
26
27
|
};
|
|
28
|
+
declare const createStringShape: (usedAttributeNames: Array<string>, reservedNames: Array<string>) => {
|
|
29
|
+
name: import("yup/lib/string").RequiredStringSchema<string | undefined, Record<string, any>>;
|
|
30
|
+
type: import("yup/lib/string").RequiredStringSchema<string | undefined, Record<string, any>>;
|
|
31
|
+
default: yup.default<string | null | undefined, Record<string, any>, string | null | undefined>;
|
|
32
|
+
unique: yup.BooleanSchema<boolean | null | undefined, import("yup/lib/types").AnyObject, boolean | null | undefined>;
|
|
33
|
+
required: yup.BooleanSchema<boolean | undefined, Record<string, any>, boolean | undefined>;
|
|
34
|
+
maxLength: yup.NumberSchema<number | null | undefined, Record<string, any>, number | null | undefined>;
|
|
35
|
+
minLength: yup.NumberSchema<number | null | undefined, Record<string, any>, number | null | undefined>;
|
|
36
|
+
regex: yup.default<string | null | undefined, Record<string, any>, string | null | undefined>;
|
|
37
|
+
};
|
|
27
38
|
type GenericIsMinSuperiorThanMax<T extends (string | null) | number> = yup.TestConfig<T | undefined, Record<string, unknown>>;
|
|
28
39
|
declare const isMinSuperiorThanMax: <T extends string | number | null>() => GenericIsMinSuperiorThanMax<T>;
|
|
29
|
-
export { alreadyUsedAttributeNames, createTextShape, getUsedContentTypeAttributeNames, isMinSuperiorThanMax, isNameAllowed, NAME_REGEX, validators, };
|
|
40
|
+
export { alreadyUsedAttributeNames, createStringShape, createTextShape, getUsedContentTypeAttributeNames, isMinSuperiorThanMax, isNameAllowed, NAME_REGEX, validators, };
|
|
@@ -74,6 +74,16 @@ const getTypeShape = (attribute, { attributes } = {})=>{
|
|
|
74
74
|
/**
|
|
75
75
|
* scalar types
|
|
76
76
|
*/ case 'string':
|
|
77
|
+
{
|
|
78
|
+
return {
|
|
79
|
+
default: utils.yup.string(),
|
|
80
|
+
required: common.validators.required,
|
|
81
|
+
unique: common.validators.unique,
|
|
82
|
+
minLength: common.validators.minLength,
|
|
83
|
+
maxLength: common.validators.maxLength.max(255).test(maxLengthIsGreaterThanOrEqualToMinLength),
|
|
84
|
+
regex: utils.yup.string().test(common.isValidRegExpPattern)
|
|
85
|
+
};
|
|
86
|
+
}
|
|
77
87
|
case 'text':
|
|
78
88
|
{
|
|
79
89
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sources":["../../../../server/src/controllers/validation/types.ts"],"sourcesContent":["import _ from 'lodash';\nimport { yup } from '@strapi/utils';\n\nimport type { TestContext } from 'yup';\nimport type { Schema, Struct } from '@strapi/types';\n\nimport { modelTypes, VALID_UID_TARGETS } from '../../services/constants';\nimport {\n validators,\n areEnumValuesUnique,\n isValidDefaultJSON,\n isValidName,\n isValidEnum,\n isValidRegExpPattern,\n UID_REGEX,\n} from './common';\n\nexport type GetTypeValidatorOptions = {\n types: ReadonlyArray<string>;\n attributes?: Struct.SchemaAttributes;\n modelType?: (typeof modelTypes)[keyof typeof modelTypes];\n};\n\nconst maxLengthIsGreaterThanOrEqualToMinLength = {\n name: 'isGreaterThanMin',\n message: 'maxLength must be greater or equal to minLength',\n test(this: TestContext, value: unknown) {\n const { minLength } = this.parent;\n return !(!_.isUndefined(minLength) && !_.isUndefined(value) && (value as number) < minLength);\n },\n};\n\nexport const getTypeValidator = (\n attribute: Schema.Attribute.AnyAttribute,\n { types, modelType, attributes }: GetTypeValidatorOptions\n) => {\n return yup.object({\n type: yup\n .string()\n .oneOf([...types])\n .required(),\n configurable: yup.boolean().nullable(),\n private: yup.boolean().nullable(),\n pluginOptions: yup.object(),\n ...getTypeShape(attribute, { modelType, attributes }),\n } as any);\n};\n\nconst getTypeShape = (attribute: Schema.Attribute.AnyAttribute, { attributes }: any = {}) => {\n switch (attribute.type) {\n /**\n * complex types\n */\n\n case 'media': {\n return {\n multiple: yup.boolean(),\n required: validators.required,\n allowedTypes: yup\n .array()\n .of(yup.string().oneOf(['images', 'videos', 'files', 'audios']))\n .min(1),\n };\n }\n\n case 'uid': {\n return {\n required: validators.required,\n targetField: yup\n .string()\n .oneOf(\n Object.keys(attributes!).filter((key) =>\n VALID_UID_TARGETS.includes(_.get(attributes![key] as any, 'type'))\n )\n )\n .nullable(),\n default: yup\n .string()\n .test(\n 'isValidDefaultUID',\n 'cannot define a default UID if the targetField is set',\n function (value) {\n const { targetField } = this.parent;\n return !!(_.isNil(targetField) || _.isNil(value));\n }\n )\n .test(\n 'isValidDefaultRegexUID',\n `\\${path} must match the custom regex or the default one \"${UID_REGEX}\"`,\n function (value) {\n const { regex } = this.parent;\n\n if (regex) {\n return !_.isNil(value) && (value === '' || new RegExp(regex).test(value));\n }\n\n return value === '' || UID_REGEX.test(value as string);\n }\n ),\n minLength: validators.minLength,\n maxLength: validators.maxLength.max(256).test(maxLengthIsGreaterThanOrEqualToMinLength),\n options: yup.object().shape({\n separator: yup.string(),\n lowercase: yup.boolean(),\n decamelize: yup.boolean(),\n customReplacements: yup.array().of(yup.array().of(yup.string()).min(2).max(2)),\n preserveLeadingUnderscore: yup.boolean(),\n }),\n regex: yup.string().test(isValidRegExpPattern),\n };\n }\n\n /**\n * scalar types\n */\n case 'string':\n case 'text': {\n return {\n default: yup.string(),\n required: validators.required,\n unique: validators.unique,\n minLength: validators.minLength,\n maxLength: validators.maxLength,\n regex: yup.string().test(isValidRegExpPattern),\n };\n }\n case 'richtext': {\n return {\n default: yup.string(),\n required: validators.required,\n minLength: validators.minLength,\n maxLength: validators.maxLength,\n };\n }\n case 'blocks': {\n return {\n required: validators.required,\n };\n }\n case 'json': {\n return {\n default: yup.mixed().test(isValidDefaultJSON),\n required: validators.required,\n };\n }\n case 'enumeration': {\n return {\n enum: yup\n .array()\n .of(yup.string().test(isValidEnum).required())\n .min(1)\n .test(areEnumValuesUnique)\n .required(),\n default: yup.string().when('enum', (enumVal) => yup.string().oneOf(enumVal)),\n enumName: yup.string().test(isValidName),\n required: validators.required,\n };\n }\n case 'password': {\n return {\n required: validators.required,\n minLength: validators.minLength,\n maxLength: validators.maxLength,\n };\n }\n case 'email': {\n return {\n default: yup.string().email(),\n required: validators.required,\n unique: validators.unique,\n minLength: validators.minLength,\n maxLength: validators.maxLength,\n };\n }\n case 'integer': {\n return {\n default: yup.number().integer(),\n required: validators.required,\n unique: validators.unique,\n min: yup.number().integer(),\n max: yup.number().integer(),\n };\n }\n case 'biginteger': {\n return {\n default: yup.string().nullable().matches(/^\\d*$/),\n required: validators.required,\n unique: validators.unique,\n min: yup.string().nullable().matches(/^\\d*$/),\n max: yup.string().nullable().matches(/^\\d*$/),\n };\n }\n case 'float': {\n return {\n default: yup.number(),\n required: validators.required,\n unique: validators.unique,\n min: yup.number(),\n max: yup.number(),\n };\n }\n case 'decimal': {\n return {\n default: yup.number(),\n required: validators.required,\n unique: validators.unique,\n min: yup.number(),\n max: yup.number(),\n };\n }\n case 'time':\n case 'datetime':\n case 'date': {\n return {\n default: yup.string(),\n required: validators.required,\n unique: validators.unique,\n };\n }\n case 'boolean': {\n return {\n default: yup.boolean(),\n required: validators.required,\n };\n }\n\n case 'component': {\n return {\n required: validators.required,\n repeatable: yup.boolean(),\n // TODO: Add correct server validation for nested components\n component: yup.string().required(),\n min: yup.number(),\n max: yup.number(),\n };\n }\n\n case 'dynamiczone': {\n return {\n required: validators.required,\n components: yup\n .array()\n .of(yup.string().required())\n .test('isArray', '${path} must be an array', (value) => Array.isArray(value))\n .min(1),\n min: yup.number(),\n max: yup.number(),\n };\n }\n\n default: {\n return {};\n }\n }\n};\n"],"names":["maxLengthIsGreaterThanOrEqualToMinLength","name","message","test","value","minLength","parent","_","isUndefined","getTypeValidator","attribute","types","modelType","attributes","yup","object","type","string","oneOf","required","configurable","boolean","nullable","private","pluginOptions","getTypeShape","multiple","validators","allowedTypes","array","of","min","targetField","Object","keys","filter","key","VALID_UID_TARGETS","includes","get","default","isNil","UID_REGEX","regex","RegExp","maxLength","max","options","shape","separator","lowercase","decamelize","customReplacements","preserveLeadingUnderscore","isValidRegExpPattern","unique","mixed","isValidDefaultJSON","enum","isValidEnum","areEnumValuesUnique","when","enumVal","enumName","isValidName","email","number","integer","matches","repeatable","component","components","Array","isArray"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../../../../server/src/controllers/validation/types.ts"],"sourcesContent":["import _ from 'lodash';\nimport { yup } from '@strapi/utils';\n\nimport type { TestContext } from 'yup';\nimport type { Schema, Struct } from '@strapi/types';\n\nimport { modelTypes, VALID_UID_TARGETS } from '../../services/constants';\nimport {\n validators,\n areEnumValuesUnique,\n isValidDefaultJSON,\n isValidName,\n isValidEnum,\n isValidRegExpPattern,\n UID_REGEX,\n} from './common';\n\nexport type GetTypeValidatorOptions = {\n types: ReadonlyArray<string>;\n attributes?: Struct.SchemaAttributes;\n modelType?: (typeof modelTypes)[keyof typeof modelTypes];\n};\n\nconst maxLengthIsGreaterThanOrEqualToMinLength = {\n name: 'isGreaterThanMin',\n message: 'maxLength must be greater or equal to minLength',\n test(this: TestContext, value: unknown) {\n const { minLength } = this.parent;\n return !(!_.isUndefined(minLength) && !_.isUndefined(value) && (value as number) < minLength);\n },\n};\n\nexport const getTypeValidator = (\n attribute: Schema.Attribute.AnyAttribute,\n { types, modelType, attributes }: GetTypeValidatorOptions\n) => {\n return yup.object({\n type: yup\n .string()\n .oneOf([...types])\n .required(),\n configurable: yup.boolean().nullable(),\n private: yup.boolean().nullable(),\n pluginOptions: yup.object(),\n ...getTypeShape(attribute, { modelType, attributes }),\n } as any);\n};\n\nconst getTypeShape = (attribute: Schema.Attribute.AnyAttribute, { attributes }: any = {}) => {\n switch (attribute.type) {\n /**\n * complex types\n */\n\n case 'media': {\n return {\n multiple: yup.boolean(),\n required: validators.required,\n allowedTypes: yup\n .array()\n .of(yup.string().oneOf(['images', 'videos', 'files', 'audios']))\n .min(1),\n };\n }\n\n case 'uid': {\n return {\n required: validators.required,\n targetField: yup\n .string()\n .oneOf(\n Object.keys(attributes!).filter((key) =>\n VALID_UID_TARGETS.includes(_.get(attributes![key] as any, 'type'))\n )\n )\n .nullable(),\n default: yup\n .string()\n .test(\n 'isValidDefaultUID',\n 'cannot define a default UID if the targetField is set',\n function (value) {\n const { targetField } = this.parent;\n return !!(_.isNil(targetField) || _.isNil(value));\n }\n )\n .test(\n 'isValidDefaultRegexUID',\n `\\${path} must match the custom regex or the default one \"${UID_REGEX}\"`,\n function (value) {\n const { regex } = this.parent;\n\n if (regex) {\n return !_.isNil(value) && (value === '' || new RegExp(regex).test(value));\n }\n\n return value === '' || UID_REGEX.test(value as string);\n }\n ),\n minLength: validators.minLength,\n maxLength: validators.maxLength.max(256).test(maxLengthIsGreaterThanOrEqualToMinLength),\n options: yup.object().shape({\n separator: yup.string(),\n lowercase: yup.boolean(),\n decamelize: yup.boolean(),\n customReplacements: yup.array().of(yup.array().of(yup.string()).min(2).max(2)),\n preserveLeadingUnderscore: yup.boolean(),\n }),\n regex: yup.string().test(isValidRegExpPattern),\n };\n }\n\n /**\n * scalar types\n */\n case 'string': {\n return {\n default: yup.string(),\n required: validators.required,\n unique: validators.unique,\n minLength: validators.minLength,\n maxLength: validators.maxLength.max(255).test(maxLengthIsGreaterThanOrEqualToMinLength),\n regex: yup.string().test(isValidRegExpPattern),\n };\n }\n case 'text': {\n return {\n default: yup.string(),\n required: validators.required,\n unique: validators.unique,\n minLength: validators.minLength,\n maxLength: validators.maxLength,\n regex: yup.string().test(isValidRegExpPattern),\n };\n }\n case 'richtext': {\n return {\n default: yup.string(),\n required: validators.required,\n minLength: validators.minLength,\n maxLength: validators.maxLength,\n };\n }\n case 'blocks': {\n return {\n required: validators.required,\n };\n }\n case 'json': {\n return {\n default: yup.mixed().test(isValidDefaultJSON),\n required: validators.required,\n };\n }\n case 'enumeration': {\n return {\n enum: yup\n .array()\n .of(yup.string().test(isValidEnum).required())\n .min(1)\n .test(areEnumValuesUnique)\n .required(),\n default: yup.string().when('enum', (enumVal) => yup.string().oneOf(enumVal)),\n enumName: yup.string().test(isValidName),\n required: validators.required,\n };\n }\n case 'password': {\n return {\n required: validators.required,\n minLength: validators.minLength,\n maxLength: validators.maxLength,\n };\n }\n case 'email': {\n return {\n default: yup.string().email(),\n required: validators.required,\n unique: validators.unique,\n minLength: validators.minLength,\n maxLength: validators.maxLength,\n };\n }\n case 'integer': {\n return {\n default: yup.number().integer(),\n required: validators.required,\n unique: validators.unique,\n min: yup.number().integer(),\n max: yup.number().integer(),\n };\n }\n case 'biginteger': {\n return {\n default: yup.string().nullable().matches(/^\\d*$/),\n required: validators.required,\n unique: validators.unique,\n min: yup.string().nullable().matches(/^\\d*$/),\n max: yup.string().nullable().matches(/^\\d*$/),\n };\n }\n case 'float': {\n return {\n default: yup.number(),\n required: validators.required,\n unique: validators.unique,\n min: yup.number(),\n max: yup.number(),\n };\n }\n case 'decimal': {\n return {\n default: yup.number(),\n required: validators.required,\n unique: validators.unique,\n min: yup.number(),\n max: yup.number(),\n };\n }\n case 'time':\n case 'datetime':\n case 'date': {\n return {\n default: yup.string(),\n required: validators.required,\n unique: validators.unique,\n };\n }\n case 'boolean': {\n return {\n default: yup.boolean(),\n required: validators.required,\n };\n }\n\n case 'component': {\n return {\n required: validators.required,\n repeatable: yup.boolean(),\n // TODO: Add correct server validation for nested components\n component: yup.string().required(),\n min: yup.number(),\n max: yup.number(),\n };\n }\n\n case 'dynamiczone': {\n return {\n required: validators.required,\n components: yup\n .array()\n .of(yup.string().required())\n .test('isArray', '${path} must be an array', (value) => Array.isArray(value))\n .min(1),\n min: yup.number(),\n max: yup.number(),\n };\n }\n\n default: {\n return {};\n }\n }\n};\n"],"names":["maxLengthIsGreaterThanOrEqualToMinLength","name","message","test","value","minLength","parent","_","isUndefined","getTypeValidator","attribute","types","modelType","attributes","yup","object","type","string","oneOf","required","configurable","boolean","nullable","private","pluginOptions","getTypeShape","multiple","validators","allowedTypes","array","of","min","targetField","Object","keys","filter","key","VALID_UID_TARGETS","includes","get","default","isNil","UID_REGEX","regex","RegExp","maxLength","max","options","shape","separator","lowercase","decamelize","customReplacements","preserveLeadingUnderscore","isValidRegExpPattern","unique","mixed","isValidDefaultJSON","enum","isValidEnum","areEnumValuesUnique","when","enumVal","enumName","isValidName","email","number","integer","matches","repeatable","component","components","Array","isArray"],"mappings":";;;;;;;AAuBA,MAAMA,wCAA2C,GAAA;IAC/CC,IAAM,EAAA,kBAAA;IACNC,OAAS,EAAA,iDAAA;AACTC,IAAAA,IAAAA,CAAAA,CAAwBC,KAAc,EAAA;AACpC,QAAA,MAAM,EAAEC,SAAS,EAAE,GAAG,IAAI,CAACC,MAAM;AACjC,QAAA,OAAO,EAAE,CAACC,CAAAA,CAAEC,WAAW,CAACH,SAAAA,CAAAA,IAAc,CAACE,CAAAA,CAAEC,WAAW,CAACJ,KAAU,CAAA,IAACA,QAAmBC,SAAQ,CAAA;AAC7F;AACF,CAAA;AAEO,MAAMI,gBAAmB,GAAA,CAC9BC,SACA,EAAA,EAAEC,KAAK,EAAEC,SAAS,EAAEC,UAAU,EAA2B,GAAA;IAEzD,OAAOC,SAAAA,CAAIC,MAAM,CAAC;AAChBC,QAAAA,IAAAA,EAAMF,SACHG,CAAAA,MAAM,EACNC,CAAAA,KAAK,CAAC;AAAIP,YAAAA,GAAAA;AAAM,SAAA,CAAA,CAChBQ,QAAQ,EAAA;QACXC,YAAcN,EAAAA,SAAAA,CAAIO,OAAO,EAAA,CAAGC,QAAQ,EAAA;QACpCC,OAAST,EAAAA,SAAAA,CAAIO,OAAO,EAAA,CAAGC,QAAQ,EAAA;AAC/BE,QAAAA,aAAAA,EAAeV,UAAIC,MAAM,EAAA;AACzB,QAAA,GAAGU,aAAaf,SAAW,EAAA;AAAEE,YAAAA,SAAAA;AAAWC,YAAAA;SAAa;AACvD,KAAA,CAAA;AACF;AAEA,MAAMY,YAAAA,GAAe,CAACf,SAA0C,EAAA,EAAEG,UAAU,EAAO,GAAG,EAAE,GAAA;AACtF,IAAA,OAAQH,UAAUM,IAAI;AACpB;;AAEC,QAED,KAAK,OAAA;AAAS,YAAA;gBACZ,OAAO;AACLU,oBAAAA,QAAAA,EAAUZ,UAAIO,OAAO,EAAA;AACrBF,oBAAAA,QAAAA,EAAUQ,kBAAWR,QAAQ;oBAC7BS,YAAcd,EAAAA,SAAAA,CACXe,KAAK,EACLC,CAAAA,EAAE,CAAChB,SAAIG,CAAAA,MAAM,EAAGC,CAAAA,KAAK,CAAC;AAAC,wBAAA,QAAA;AAAU,wBAAA,QAAA;AAAU,wBAAA,OAAA;AAAS,wBAAA;AAAS,qBAAA,CAAA,CAAA,CAC7Da,GAAG,CAAC,CAAA;AACT,iBAAA;AACF;QAEA,KAAK,KAAA;AAAO,YAAA;gBACV,OAAO;AACLZ,oBAAAA,QAAAA,EAAUQ,kBAAWR,QAAQ;oBAC7Ba,WAAalB,EAAAA,SAAAA,CACVG,MAAM,EAAA,CACNC,KAAK,CACJe,OAAOC,IAAI,CAACrB,UAAasB,CAAAA,CAAAA,MAAM,CAAC,CAACC,MAC/BC,2BAAkBC,CAAAA,QAAQ,CAAC/B,CAAAA,CAAEgC,GAAG,CAAC1B,UAAW,CAACuB,GAAAA,CAAI,EAAS,MAAA,CAAA,CAAA,CAAA,CAAA,CAG7Dd,QAAQ,EAAA;oBACXkB,OAAS1B,EAAAA,SAAAA,CACNG,MAAM,EACNd,CAAAA,IAAI,CACH,mBACA,EAAA,uDAAA,EACA,SAAUC,KAAK,EAAA;AACb,wBAAA,MAAM,EAAE4B,WAAW,EAAE,GAAG,IAAI,CAAC1B,MAAM;wBACnC,OAAO,CAAC,EAAEC,CAAEkC,CAAAA,KAAK,CAACT,WAAgBzB,CAAAA,IAAAA,CAAAA,CAAEkC,KAAK,CAACrC,KAAK,CAAA,CAAA;qBAGlDD,CAAAA,CAAAA,IAAI,CACH,wBAAA,EACA,CAAC,yDAAyD,EAAEuC,gBAAAA,CAAU,CAAC,CAAC,EACxE,SAAUtC,KAAK,EAAA;AACb,wBAAA,MAAM,EAAEuC,KAAK,EAAE,GAAG,IAAI,CAACrC,MAAM;AAE7B,wBAAA,IAAIqC,KAAO,EAAA;AACT,4BAAA,OAAO,CAACpC,CAAAA,CAAEkC,KAAK,CAACrC,KAAWA,CAAAA,KAAAA,KAAU,KAAA,EAAA,IAAM,IAAIwC,MAAAA,CAAOD,KAAOxC,CAAAA,CAAAA,IAAI,CAACC,KAAK,CAAA,CAAA;AACzE;AAEA,wBAAA,OAAOA,KAAU,KAAA,EAAA,IAAMsC,gBAAUvC,CAAAA,IAAI,CAACC,KAAAA,CAAAA;AACxC,qBAAA,CAAA;AAEJC,oBAAAA,SAAAA,EAAWsB,kBAAWtB,SAAS;AAC/BwC,oBAAAA,SAAAA,EAAWlB,kBAAWkB,SAAS,CAACC,GAAG,CAAC,GAAA,CAAA,CAAK3C,IAAI,CAACH,wCAAAA,CAAAA;AAC9C+C,oBAAAA,OAAAA,EAASjC,SAAIC,CAAAA,MAAM,EAAGiC,CAAAA,KAAK,CAAC;AAC1BC,wBAAAA,SAAAA,EAAWnC,UAAIG,MAAM,EAAA;AACrBiC,wBAAAA,SAAAA,EAAWpC,UAAIO,OAAO,EAAA;AACtB8B,wBAAAA,UAAAA,EAAYrC,UAAIO,OAAO,EAAA;AACvB+B,wBAAAA,kBAAAA,EAAoBtC,UAAIe,KAAK,EAAA,CAAGC,EAAE,CAAChB,UAAIe,KAAK,EAAA,CAAGC,EAAE,CAAChB,UAAIG,MAAM,EAAA,CAAA,CAAIc,GAAG,CAAC,CAAA,CAAA,CAAGe,GAAG,CAAC,CAAA,CAAA,CAAA;AAC3EO,wBAAAA,yBAAAA,EAA2BvC,UAAIO,OAAO;AACxC,qBAAA,CAAA;AACAsB,oBAAAA,KAAAA,EAAO7B,SAAIG,CAAAA,MAAM,EAAGd,CAAAA,IAAI,CAACmD,2BAAAA;AAC3B,iBAAA;AACF;AAEA;;AAEC,QACD,KAAK,QAAA;AAAU,YAAA;gBACb,OAAO;AACLd,oBAAAA,OAAAA,EAAS1B,UAAIG,MAAM,EAAA;AACnBE,oBAAAA,QAAAA,EAAUQ,kBAAWR,QAAQ;AAC7BoC,oBAAAA,MAAAA,EAAQ5B,kBAAW4B,MAAM;AACzBlD,oBAAAA,SAAAA,EAAWsB,kBAAWtB,SAAS;AAC/BwC,oBAAAA,SAAAA,EAAWlB,kBAAWkB,SAAS,CAACC,GAAG,CAAC,GAAA,CAAA,CAAK3C,IAAI,CAACH,wCAAAA,CAAAA;AAC9C2C,oBAAAA,KAAAA,EAAO7B,SAAIG,CAAAA,MAAM,EAAGd,CAAAA,IAAI,CAACmD,2BAAAA;AAC3B,iBAAA;AACF;QACA,KAAK,MAAA;AAAQ,YAAA;gBACX,OAAO;AACLd,oBAAAA,OAAAA,EAAS1B,UAAIG,MAAM,EAAA;AACnBE,oBAAAA,QAAAA,EAAUQ,kBAAWR,QAAQ;AAC7BoC,oBAAAA,MAAAA,EAAQ5B,kBAAW4B,MAAM;AACzBlD,oBAAAA,SAAAA,EAAWsB,kBAAWtB,SAAS;AAC/BwC,oBAAAA,SAAAA,EAAWlB,kBAAWkB,SAAS;AAC/BF,oBAAAA,KAAAA,EAAO7B,SAAIG,CAAAA,MAAM,EAAGd,CAAAA,IAAI,CAACmD,2BAAAA;AAC3B,iBAAA;AACF;QACA,KAAK,UAAA;AAAY,YAAA;gBACf,OAAO;AACLd,oBAAAA,OAAAA,EAAS1B,UAAIG,MAAM,EAAA;AACnBE,oBAAAA,QAAAA,EAAUQ,kBAAWR,QAAQ;AAC7Bd,oBAAAA,SAAAA,EAAWsB,kBAAWtB,SAAS;AAC/BwC,oBAAAA,SAAAA,EAAWlB,kBAAWkB;AACxB,iBAAA;AACF;QACA,KAAK,QAAA;AAAU,YAAA;gBACb,OAAO;AACL1B,oBAAAA,QAAAA,EAAUQ,kBAAWR;AACvB,iBAAA;AACF;QACA,KAAK,MAAA;AAAQ,YAAA;gBACX,OAAO;AACLqB,oBAAAA,OAAAA,EAAS1B,SAAI0C,CAAAA,KAAK,EAAGrD,CAAAA,IAAI,CAACsD,yBAAAA,CAAAA;AAC1BtC,oBAAAA,QAAAA,EAAUQ,kBAAWR;AACvB,iBAAA;AACF;QACA,KAAK,aAAA;AAAe,YAAA;gBAClB,OAAO;AACLuC,oBAAAA,IAAAA,EAAM5C,UACHe,KAAK,EAAA,CACLC,EAAE,CAAChB,SAAAA,CAAIG,MAAM,EAAGd,CAAAA,IAAI,CAACwD,kBAAaxC,CAAAA,CAAAA,QAAQ,IAC1CY,GAAG,CAAC,GACJ5B,IAAI,CAACyD,4BACLzC,QAAQ,EAAA;AACXqB,oBAAAA,OAAAA,EAAS1B,SAAIG,CAAAA,MAAM,EAAG4C,CAAAA,IAAI,CAAC,MAAA,EAAQ,CAACC,OAAAA,GAAYhD,SAAIG,CAAAA,MAAM,EAAGC,CAAAA,KAAK,CAAC4C,OAAAA,CAAAA,CAAAA;AACnEC,oBAAAA,QAAAA,EAAUjD,SAAIG,CAAAA,MAAM,EAAGd,CAAAA,IAAI,CAAC6D,kBAAAA,CAAAA;AAC5B7C,oBAAAA,QAAAA,EAAUQ,kBAAWR;AACvB,iBAAA;AACF;QACA,KAAK,UAAA;AAAY,YAAA;gBACf,OAAO;AACLA,oBAAAA,QAAAA,EAAUQ,kBAAWR,QAAQ;AAC7Bd,oBAAAA,SAAAA,EAAWsB,kBAAWtB,SAAS;AAC/BwC,oBAAAA,SAAAA,EAAWlB,kBAAWkB;AACxB,iBAAA;AACF;QACA,KAAK,OAAA;AAAS,YAAA;gBACZ,OAAO;oBACLL,OAAS1B,EAAAA,SAAAA,CAAIG,MAAM,EAAA,CAAGgD,KAAK,EAAA;AAC3B9C,oBAAAA,QAAAA,EAAUQ,kBAAWR,QAAQ;AAC7BoC,oBAAAA,MAAAA,EAAQ5B,kBAAW4B,MAAM;AACzBlD,oBAAAA,SAAAA,EAAWsB,kBAAWtB,SAAS;AAC/BwC,oBAAAA,SAAAA,EAAWlB,kBAAWkB;AACxB,iBAAA;AACF;QACA,KAAK,SAAA;AAAW,YAAA;gBACd,OAAO;oBACLL,OAAS1B,EAAAA,SAAAA,CAAIoD,MAAM,EAAA,CAAGC,OAAO,EAAA;AAC7BhD,oBAAAA,QAAAA,EAAUQ,kBAAWR,QAAQ;AAC7BoC,oBAAAA,MAAAA,EAAQ5B,kBAAW4B,MAAM;oBACzBxB,GAAKjB,EAAAA,SAAAA,CAAIoD,MAAM,EAAA,CAAGC,OAAO,EAAA;oBACzBrB,GAAKhC,EAAAA,SAAAA,CAAIoD,MAAM,EAAA,CAAGC,OAAO;AAC3B,iBAAA;AACF;QACA,KAAK,YAAA;AAAc,YAAA;gBACjB,OAAO;AACL3B,oBAAAA,OAAAA,EAAS1B,UAAIG,MAAM,EAAA,CAAGK,QAAQ,EAAA,CAAG8C,OAAO,CAAC,OAAA,CAAA;AACzCjD,oBAAAA,QAAAA,EAAUQ,kBAAWR,QAAQ;AAC7BoC,oBAAAA,MAAAA,EAAQ5B,kBAAW4B,MAAM;AACzBxB,oBAAAA,GAAAA,EAAKjB,UAAIG,MAAM,EAAA,CAAGK,QAAQ,EAAA,CAAG8C,OAAO,CAAC,OAAA,CAAA;AACrCtB,oBAAAA,GAAAA,EAAKhC,UAAIG,MAAM,EAAA,CAAGK,QAAQ,EAAA,CAAG8C,OAAO,CAAC,OAAA;AACvC,iBAAA;AACF;QACA,KAAK,OAAA;AAAS,YAAA;gBACZ,OAAO;AACL5B,oBAAAA,OAAAA,EAAS1B,UAAIoD,MAAM,EAAA;AACnB/C,oBAAAA,QAAAA,EAAUQ,kBAAWR,QAAQ;AAC7BoC,oBAAAA,MAAAA,EAAQ5B,kBAAW4B,MAAM;AACzBxB,oBAAAA,GAAAA,EAAKjB,UAAIoD,MAAM,EAAA;AACfpB,oBAAAA,GAAAA,EAAKhC,UAAIoD,MAAM;AACjB,iBAAA;AACF;QACA,KAAK,SAAA;AAAW,YAAA;gBACd,OAAO;AACL1B,oBAAAA,OAAAA,EAAS1B,UAAIoD,MAAM,EAAA;AACnB/C,oBAAAA,QAAAA,EAAUQ,kBAAWR,QAAQ;AAC7BoC,oBAAAA,MAAAA,EAAQ5B,kBAAW4B,MAAM;AACzBxB,oBAAAA,GAAAA,EAAKjB,UAAIoD,MAAM,EAAA;AACfpB,oBAAAA,GAAAA,EAAKhC,UAAIoD,MAAM;AACjB,iBAAA;AACF;QACA,KAAK,MAAA;QACL,KAAK,UAAA;QACL,KAAK,MAAA;AAAQ,YAAA;gBACX,OAAO;AACL1B,oBAAAA,OAAAA,EAAS1B,UAAIG,MAAM,EAAA;AACnBE,oBAAAA,QAAAA,EAAUQ,kBAAWR,QAAQ;AAC7BoC,oBAAAA,MAAAA,EAAQ5B,kBAAW4B;AACrB,iBAAA;AACF;QACA,KAAK,SAAA;AAAW,YAAA;gBACd,OAAO;AACLf,oBAAAA,OAAAA,EAAS1B,UAAIO,OAAO,EAAA;AACpBF,oBAAAA,QAAAA,EAAUQ,kBAAWR;AACvB,iBAAA;AACF;QAEA,KAAK,WAAA;AAAa,YAAA;gBAChB,OAAO;AACLA,oBAAAA,QAAAA,EAAUQ,kBAAWR,QAAQ;AAC7BkD,oBAAAA,UAAAA,EAAYvD,UAAIO,OAAO,EAAA;;oBAEvBiD,SAAWxD,EAAAA,SAAAA,CAAIG,MAAM,EAAA,CAAGE,QAAQ,EAAA;AAChCY,oBAAAA,GAAAA,EAAKjB,UAAIoD,MAAM,EAAA;AACfpB,oBAAAA,GAAAA,EAAKhC,UAAIoD,MAAM;AACjB,iBAAA;AACF;QAEA,KAAK,aAAA;AAAe,YAAA;gBAClB,OAAO;AACL/C,oBAAAA,QAAAA,EAAUQ,kBAAWR,QAAQ;oBAC7BoD,UAAYzD,EAAAA,SAAAA,CACTe,KAAK,EACLC,CAAAA,EAAE,CAAChB,SAAIG,CAAAA,MAAM,GAAGE,QAAQ,EAAA,CAAA,CACxBhB,IAAI,CAAC,SAAA,EAAW,4BAA4B,CAACC,KAAAA,GAAUoE,MAAMC,OAAO,CAACrE,KACrE2B,CAAAA,CAAAA,CAAAA,GAAG,CAAC,CAAA,CAAA;AACPA,oBAAAA,GAAAA,EAAKjB,UAAIoD,MAAM,EAAA;AACfpB,oBAAAA,GAAAA,EAAKhC,UAAIoD,MAAM;AACjB,iBAAA;AACF;AAEA,QAAA;AAAS,YAAA;AACP,gBAAA,OAAO,EAAC;AACV;AACF;AACF,CAAA;;;;"}
|
|
@@ -72,6 +72,16 @@ const getTypeShape = (attribute, { attributes } = {})=>{
|
|
|
72
72
|
/**
|
|
73
73
|
* scalar types
|
|
74
74
|
*/ case 'string':
|
|
75
|
+
{
|
|
76
|
+
return {
|
|
77
|
+
default: yup.string(),
|
|
78
|
+
required: validators.required,
|
|
79
|
+
unique: validators.unique,
|
|
80
|
+
minLength: validators.minLength,
|
|
81
|
+
maxLength: validators.maxLength.max(255).test(maxLengthIsGreaterThanOrEqualToMinLength),
|
|
82
|
+
regex: yup.string().test(isValidRegExpPattern)
|
|
83
|
+
};
|
|
84
|
+
}
|
|
75
85
|
case 'text':
|
|
76
86
|
{
|
|
77
87
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.mjs","sources":["../../../../server/src/controllers/validation/types.ts"],"sourcesContent":["import _ from 'lodash';\nimport { yup } from '@strapi/utils';\n\nimport type { TestContext } from 'yup';\nimport type { Schema, Struct } from '@strapi/types';\n\nimport { modelTypes, VALID_UID_TARGETS } from '../../services/constants';\nimport {\n validators,\n areEnumValuesUnique,\n isValidDefaultJSON,\n isValidName,\n isValidEnum,\n isValidRegExpPattern,\n UID_REGEX,\n} from './common';\n\nexport type GetTypeValidatorOptions = {\n types: ReadonlyArray<string>;\n attributes?: Struct.SchemaAttributes;\n modelType?: (typeof modelTypes)[keyof typeof modelTypes];\n};\n\nconst maxLengthIsGreaterThanOrEqualToMinLength = {\n name: 'isGreaterThanMin',\n message: 'maxLength must be greater or equal to minLength',\n test(this: TestContext, value: unknown) {\n const { minLength } = this.parent;\n return !(!_.isUndefined(minLength) && !_.isUndefined(value) && (value as number) < minLength);\n },\n};\n\nexport const getTypeValidator = (\n attribute: Schema.Attribute.AnyAttribute,\n { types, modelType, attributes }: GetTypeValidatorOptions\n) => {\n return yup.object({\n type: yup\n .string()\n .oneOf([...types])\n .required(),\n configurable: yup.boolean().nullable(),\n private: yup.boolean().nullable(),\n pluginOptions: yup.object(),\n ...getTypeShape(attribute, { modelType, attributes }),\n } as any);\n};\n\nconst getTypeShape = (attribute: Schema.Attribute.AnyAttribute, { attributes }: any = {}) => {\n switch (attribute.type) {\n /**\n * complex types\n */\n\n case 'media': {\n return {\n multiple: yup.boolean(),\n required: validators.required,\n allowedTypes: yup\n .array()\n .of(yup.string().oneOf(['images', 'videos', 'files', 'audios']))\n .min(1),\n };\n }\n\n case 'uid': {\n return {\n required: validators.required,\n targetField: yup\n .string()\n .oneOf(\n Object.keys(attributes!).filter((key) =>\n VALID_UID_TARGETS.includes(_.get(attributes![key] as any, 'type'))\n )\n )\n .nullable(),\n default: yup\n .string()\n .test(\n 'isValidDefaultUID',\n 'cannot define a default UID if the targetField is set',\n function (value) {\n const { targetField } = this.parent;\n return !!(_.isNil(targetField) || _.isNil(value));\n }\n )\n .test(\n 'isValidDefaultRegexUID',\n `\\${path} must match the custom regex or the default one \"${UID_REGEX}\"`,\n function (value) {\n const { regex } = this.parent;\n\n if (regex) {\n return !_.isNil(value) && (value === '' || new RegExp(regex).test(value));\n }\n\n return value === '' || UID_REGEX.test(value as string);\n }\n ),\n minLength: validators.minLength,\n maxLength: validators.maxLength.max(256).test(maxLengthIsGreaterThanOrEqualToMinLength),\n options: yup.object().shape({\n separator: yup.string(),\n lowercase: yup.boolean(),\n decamelize: yup.boolean(),\n customReplacements: yup.array().of(yup.array().of(yup.string()).min(2).max(2)),\n preserveLeadingUnderscore: yup.boolean(),\n }),\n regex: yup.string().test(isValidRegExpPattern),\n };\n }\n\n /**\n * scalar types\n */\n case 'string':\n case 'text': {\n return {\n default: yup.string(),\n required: validators.required,\n unique: validators.unique,\n minLength: validators.minLength,\n maxLength: validators.maxLength,\n regex: yup.string().test(isValidRegExpPattern),\n };\n }\n case 'richtext': {\n return {\n default: yup.string(),\n required: validators.required,\n minLength: validators.minLength,\n maxLength: validators.maxLength,\n };\n }\n case 'blocks': {\n return {\n required: validators.required,\n };\n }\n case 'json': {\n return {\n default: yup.mixed().test(isValidDefaultJSON),\n required: validators.required,\n };\n }\n case 'enumeration': {\n return {\n enum: yup\n .array()\n .of(yup.string().test(isValidEnum).required())\n .min(1)\n .test(areEnumValuesUnique)\n .required(),\n default: yup.string().when('enum', (enumVal) => yup.string().oneOf(enumVal)),\n enumName: yup.string().test(isValidName),\n required: validators.required,\n };\n }\n case 'password': {\n return {\n required: validators.required,\n minLength: validators.minLength,\n maxLength: validators.maxLength,\n };\n }\n case 'email': {\n return {\n default: yup.string().email(),\n required: validators.required,\n unique: validators.unique,\n minLength: validators.minLength,\n maxLength: validators.maxLength,\n };\n }\n case 'integer': {\n return {\n default: yup.number().integer(),\n required: validators.required,\n unique: validators.unique,\n min: yup.number().integer(),\n max: yup.number().integer(),\n };\n }\n case 'biginteger': {\n return {\n default: yup.string().nullable().matches(/^\\d*$/),\n required: validators.required,\n unique: validators.unique,\n min: yup.string().nullable().matches(/^\\d*$/),\n max: yup.string().nullable().matches(/^\\d*$/),\n };\n }\n case 'float': {\n return {\n default: yup.number(),\n required: validators.required,\n unique: validators.unique,\n min: yup.number(),\n max: yup.number(),\n };\n }\n case 'decimal': {\n return {\n default: yup.number(),\n required: validators.required,\n unique: validators.unique,\n min: yup.number(),\n max: yup.number(),\n };\n }\n case 'time':\n case 'datetime':\n case 'date': {\n return {\n default: yup.string(),\n required: validators.required,\n unique: validators.unique,\n };\n }\n case 'boolean': {\n return {\n default: yup.boolean(),\n required: validators.required,\n };\n }\n\n case 'component': {\n return {\n required: validators.required,\n repeatable: yup.boolean(),\n // TODO: Add correct server validation for nested components\n component: yup.string().required(),\n min: yup.number(),\n max: yup.number(),\n };\n }\n\n case 'dynamiczone': {\n return {\n required: validators.required,\n components: yup\n .array()\n .of(yup.string().required())\n .test('isArray', '${path} must be an array', (value) => Array.isArray(value))\n .min(1),\n min: yup.number(),\n max: yup.number(),\n };\n }\n\n default: {\n return {};\n }\n }\n};\n"],"names":["maxLengthIsGreaterThanOrEqualToMinLength","name","message","test","value","minLength","parent","_","isUndefined","getTypeValidator","attribute","types","modelType","attributes","yup","object","type","string","oneOf","required","configurable","boolean","nullable","private","pluginOptions","getTypeShape","multiple","validators","allowedTypes","array","of","min","targetField","Object","keys","filter","key","VALID_UID_TARGETS","includes","get","default","isNil","UID_REGEX","regex","RegExp","maxLength","max","options","shape","separator","lowercase","decamelize","customReplacements","preserveLeadingUnderscore","isValidRegExpPattern","unique","mixed","isValidDefaultJSON","enum","isValidEnum","areEnumValuesUnique","when","enumVal","enumName","isValidName","email","number","integer","matches","repeatable","component","components","Array","isArray"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.mjs","sources":["../../../../server/src/controllers/validation/types.ts"],"sourcesContent":["import _ from 'lodash';\nimport { yup } from '@strapi/utils';\n\nimport type { TestContext } from 'yup';\nimport type { Schema, Struct } from '@strapi/types';\n\nimport { modelTypes, VALID_UID_TARGETS } from '../../services/constants';\nimport {\n validators,\n areEnumValuesUnique,\n isValidDefaultJSON,\n isValidName,\n isValidEnum,\n isValidRegExpPattern,\n UID_REGEX,\n} from './common';\n\nexport type GetTypeValidatorOptions = {\n types: ReadonlyArray<string>;\n attributes?: Struct.SchemaAttributes;\n modelType?: (typeof modelTypes)[keyof typeof modelTypes];\n};\n\nconst maxLengthIsGreaterThanOrEqualToMinLength = {\n name: 'isGreaterThanMin',\n message: 'maxLength must be greater or equal to minLength',\n test(this: TestContext, value: unknown) {\n const { minLength } = this.parent;\n return !(!_.isUndefined(minLength) && !_.isUndefined(value) && (value as number) < minLength);\n },\n};\n\nexport const getTypeValidator = (\n attribute: Schema.Attribute.AnyAttribute,\n { types, modelType, attributes }: GetTypeValidatorOptions\n) => {\n return yup.object({\n type: yup\n .string()\n .oneOf([...types])\n .required(),\n configurable: yup.boolean().nullable(),\n private: yup.boolean().nullable(),\n pluginOptions: yup.object(),\n ...getTypeShape(attribute, { modelType, attributes }),\n } as any);\n};\n\nconst getTypeShape = (attribute: Schema.Attribute.AnyAttribute, { attributes }: any = {}) => {\n switch (attribute.type) {\n /**\n * complex types\n */\n\n case 'media': {\n return {\n multiple: yup.boolean(),\n required: validators.required,\n allowedTypes: yup\n .array()\n .of(yup.string().oneOf(['images', 'videos', 'files', 'audios']))\n .min(1),\n };\n }\n\n case 'uid': {\n return {\n required: validators.required,\n targetField: yup\n .string()\n .oneOf(\n Object.keys(attributes!).filter((key) =>\n VALID_UID_TARGETS.includes(_.get(attributes![key] as any, 'type'))\n )\n )\n .nullable(),\n default: yup\n .string()\n .test(\n 'isValidDefaultUID',\n 'cannot define a default UID if the targetField is set',\n function (value) {\n const { targetField } = this.parent;\n return !!(_.isNil(targetField) || _.isNil(value));\n }\n )\n .test(\n 'isValidDefaultRegexUID',\n `\\${path} must match the custom regex or the default one \"${UID_REGEX}\"`,\n function (value) {\n const { regex } = this.parent;\n\n if (regex) {\n return !_.isNil(value) && (value === '' || new RegExp(regex).test(value));\n }\n\n return value === '' || UID_REGEX.test(value as string);\n }\n ),\n minLength: validators.minLength,\n maxLength: validators.maxLength.max(256).test(maxLengthIsGreaterThanOrEqualToMinLength),\n options: yup.object().shape({\n separator: yup.string(),\n lowercase: yup.boolean(),\n decamelize: yup.boolean(),\n customReplacements: yup.array().of(yup.array().of(yup.string()).min(2).max(2)),\n preserveLeadingUnderscore: yup.boolean(),\n }),\n regex: yup.string().test(isValidRegExpPattern),\n };\n }\n\n /**\n * scalar types\n */\n case 'string': {\n return {\n default: yup.string(),\n required: validators.required,\n unique: validators.unique,\n minLength: validators.minLength,\n maxLength: validators.maxLength.max(255).test(maxLengthIsGreaterThanOrEqualToMinLength),\n regex: yup.string().test(isValidRegExpPattern),\n };\n }\n case 'text': {\n return {\n default: yup.string(),\n required: validators.required,\n unique: validators.unique,\n minLength: validators.minLength,\n maxLength: validators.maxLength,\n regex: yup.string().test(isValidRegExpPattern),\n };\n }\n case 'richtext': {\n return {\n default: yup.string(),\n required: validators.required,\n minLength: validators.minLength,\n maxLength: validators.maxLength,\n };\n }\n case 'blocks': {\n return {\n required: validators.required,\n };\n }\n case 'json': {\n return {\n default: yup.mixed().test(isValidDefaultJSON),\n required: validators.required,\n };\n }\n case 'enumeration': {\n return {\n enum: yup\n .array()\n .of(yup.string().test(isValidEnum).required())\n .min(1)\n .test(areEnumValuesUnique)\n .required(),\n default: yup.string().when('enum', (enumVal) => yup.string().oneOf(enumVal)),\n enumName: yup.string().test(isValidName),\n required: validators.required,\n };\n }\n case 'password': {\n return {\n required: validators.required,\n minLength: validators.minLength,\n maxLength: validators.maxLength,\n };\n }\n case 'email': {\n return {\n default: yup.string().email(),\n required: validators.required,\n unique: validators.unique,\n minLength: validators.minLength,\n maxLength: validators.maxLength,\n };\n }\n case 'integer': {\n return {\n default: yup.number().integer(),\n required: validators.required,\n unique: validators.unique,\n min: yup.number().integer(),\n max: yup.number().integer(),\n };\n }\n case 'biginteger': {\n return {\n default: yup.string().nullable().matches(/^\\d*$/),\n required: validators.required,\n unique: validators.unique,\n min: yup.string().nullable().matches(/^\\d*$/),\n max: yup.string().nullable().matches(/^\\d*$/),\n };\n }\n case 'float': {\n return {\n default: yup.number(),\n required: validators.required,\n unique: validators.unique,\n min: yup.number(),\n max: yup.number(),\n };\n }\n case 'decimal': {\n return {\n default: yup.number(),\n required: validators.required,\n unique: validators.unique,\n min: yup.number(),\n max: yup.number(),\n };\n }\n case 'time':\n case 'datetime':\n case 'date': {\n return {\n default: yup.string(),\n required: validators.required,\n unique: validators.unique,\n };\n }\n case 'boolean': {\n return {\n default: yup.boolean(),\n required: validators.required,\n };\n }\n\n case 'component': {\n return {\n required: validators.required,\n repeatable: yup.boolean(),\n // TODO: Add correct server validation for nested components\n component: yup.string().required(),\n min: yup.number(),\n max: yup.number(),\n };\n }\n\n case 'dynamiczone': {\n return {\n required: validators.required,\n components: yup\n .array()\n .of(yup.string().required())\n .test('isArray', '${path} must be an array', (value) => Array.isArray(value))\n .min(1),\n min: yup.number(),\n max: yup.number(),\n };\n }\n\n default: {\n return {};\n }\n }\n};\n"],"names":["maxLengthIsGreaterThanOrEqualToMinLength","name","message","test","value","minLength","parent","_","isUndefined","getTypeValidator","attribute","types","modelType","attributes","yup","object","type","string","oneOf","required","configurable","boolean","nullable","private","pluginOptions","getTypeShape","multiple","validators","allowedTypes","array","of","min","targetField","Object","keys","filter","key","VALID_UID_TARGETS","includes","get","default","isNil","UID_REGEX","regex","RegExp","maxLength","max","options","shape","separator","lowercase","decamelize","customReplacements","preserveLeadingUnderscore","isValidRegExpPattern","unique","mixed","isValidDefaultJSON","enum","isValidEnum","areEnumValuesUnique","when","enumVal","enumName","isValidName","email","number","integer","matches","repeatable","component","components","Array","isArray"],"mappings":";;;;;AAuBA,MAAMA,wCAA2C,GAAA;IAC/CC,IAAM,EAAA,kBAAA;IACNC,OAAS,EAAA,iDAAA;AACTC,IAAAA,IAAAA,CAAAA,CAAwBC,KAAc,EAAA;AACpC,QAAA,MAAM,EAAEC,SAAS,EAAE,GAAG,IAAI,CAACC,MAAM;AACjC,QAAA,OAAO,EAAE,CAACC,CAAAA,CAAEC,WAAW,CAACH,SAAAA,CAAAA,IAAc,CAACE,CAAAA,CAAEC,WAAW,CAACJ,KAAU,CAAA,IAACA,QAAmBC,SAAQ,CAAA;AAC7F;AACF,CAAA;AAEO,MAAMI,gBAAmB,GAAA,CAC9BC,SACA,EAAA,EAAEC,KAAK,EAAEC,SAAS,EAAEC,UAAU,EAA2B,GAAA;IAEzD,OAAOC,GAAAA,CAAIC,MAAM,CAAC;AAChBC,QAAAA,IAAAA,EAAMF,GACHG,CAAAA,MAAM,EACNC,CAAAA,KAAK,CAAC;AAAIP,YAAAA,GAAAA;AAAM,SAAA,CAAA,CAChBQ,QAAQ,EAAA;QACXC,YAAcN,EAAAA,GAAAA,CAAIO,OAAO,EAAA,CAAGC,QAAQ,EAAA;QACpCC,OAAST,EAAAA,GAAAA,CAAIO,OAAO,EAAA,CAAGC,QAAQ,EAAA;AAC/BE,QAAAA,aAAAA,EAAeV,IAAIC,MAAM,EAAA;AACzB,QAAA,GAAGU,aAAaf,SAAW,EAAA;AAAEE,YAAAA,SAAAA;AAAWC,YAAAA;SAAa;AACvD,KAAA,CAAA;AACF;AAEA,MAAMY,YAAAA,GAAe,CAACf,SAA0C,EAAA,EAAEG,UAAU,EAAO,GAAG,EAAE,GAAA;AACtF,IAAA,OAAQH,UAAUM,IAAI;AACpB;;AAEC,QAED,KAAK,OAAA;AAAS,YAAA;gBACZ,OAAO;AACLU,oBAAAA,QAAAA,EAAUZ,IAAIO,OAAO,EAAA;AACrBF,oBAAAA,QAAAA,EAAUQ,WAAWR,QAAQ;oBAC7BS,YAAcd,EAAAA,GAAAA,CACXe,KAAK,EACLC,CAAAA,EAAE,CAAChB,GAAIG,CAAAA,MAAM,EAAGC,CAAAA,KAAK,CAAC;AAAC,wBAAA,QAAA;AAAU,wBAAA,QAAA;AAAU,wBAAA,OAAA;AAAS,wBAAA;AAAS,qBAAA,CAAA,CAAA,CAC7Da,GAAG,CAAC,CAAA;AACT,iBAAA;AACF;QAEA,KAAK,KAAA;AAAO,YAAA;gBACV,OAAO;AACLZ,oBAAAA,QAAAA,EAAUQ,WAAWR,QAAQ;oBAC7Ba,WAAalB,EAAAA,GAAAA,CACVG,MAAM,EAAA,CACNC,KAAK,CACJe,OAAOC,IAAI,CAACrB,UAAasB,CAAAA,CAAAA,MAAM,CAAC,CAACC,MAC/BC,iBAAkBC,CAAAA,QAAQ,CAAC/B,CAAAA,CAAEgC,GAAG,CAAC1B,UAAW,CAACuB,GAAAA,CAAI,EAAS,MAAA,CAAA,CAAA,CAAA,CAAA,CAG7Dd,QAAQ,EAAA;oBACXkB,OAAS1B,EAAAA,GAAAA,CACNG,MAAM,EACNd,CAAAA,IAAI,CACH,mBACA,EAAA,uDAAA,EACA,SAAUC,KAAK,EAAA;AACb,wBAAA,MAAM,EAAE4B,WAAW,EAAE,GAAG,IAAI,CAAC1B,MAAM;wBACnC,OAAO,CAAC,EAAEC,CAAEkC,CAAAA,KAAK,CAACT,WAAgBzB,CAAAA,IAAAA,CAAAA,CAAEkC,KAAK,CAACrC,KAAK,CAAA,CAAA;qBAGlDD,CAAAA,CAAAA,IAAI,CACH,wBAAA,EACA,CAAC,yDAAyD,EAAEuC,SAAAA,CAAU,CAAC,CAAC,EACxE,SAAUtC,KAAK,EAAA;AACb,wBAAA,MAAM,EAAEuC,KAAK,EAAE,GAAG,IAAI,CAACrC,MAAM;AAE7B,wBAAA,IAAIqC,KAAO,EAAA;AACT,4BAAA,OAAO,CAACpC,CAAAA,CAAEkC,KAAK,CAACrC,KAAWA,CAAAA,KAAAA,KAAU,KAAA,EAAA,IAAM,IAAIwC,MAAAA,CAAOD,KAAOxC,CAAAA,CAAAA,IAAI,CAACC,KAAK,CAAA,CAAA;AACzE;AAEA,wBAAA,OAAOA,KAAU,KAAA,EAAA,IAAMsC,SAAUvC,CAAAA,IAAI,CAACC,KAAAA,CAAAA;AACxC,qBAAA,CAAA;AAEJC,oBAAAA,SAAAA,EAAWsB,WAAWtB,SAAS;AAC/BwC,oBAAAA,SAAAA,EAAWlB,WAAWkB,SAAS,CAACC,GAAG,CAAC,GAAA,CAAA,CAAK3C,IAAI,CAACH,wCAAAA,CAAAA;AAC9C+C,oBAAAA,OAAAA,EAASjC,GAAIC,CAAAA,MAAM,EAAGiC,CAAAA,KAAK,CAAC;AAC1BC,wBAAAA,SAAAA,EAAWnC,IAAIG,MAAM,EAAA;AACrBiC,wBAAAA,SAAAA,EAAWpC,IAAIO,OAAO,EAAA;AACtB8B,wBAAAA,UAAAA,EAAYrC,IAAIO,OAAO,EAAA;AACvB+B,wBAAAA,kBAAAA,EAAoBtC,IAAIe,KAAK,EAAA,CAAGC,EAAE,CAAChB,IAAIe,KAAK,EAAA,CAAGC,EAAE,CAAChB,IAAIG,MAAM,EAAA,CAAA,CAAIc,GAAG,CAAC,CAAA,CAAA,CAAGe,GAAG,CAAC,CAAA,CAAA,CAAA;AAC3EO,wBAAAA,yBAAAA,EAA2BvC,IAAIO,OAAO;AACxC,qBAAA,CAAA;AACAsB,oBAAAA,KAAAA,EAAO7B,GAAIG,CAAAA,MAAM,EAAGd,CAAAA,IAAI,CAACmD,oBAAAA;AAC3B,iBAAA;AACF;AAEA;;AAEC,QACD,KAAK,QAAA;AAAU,YAAA;gBACb,OAAO;AACLd,oBAAAA,OAAAA,EAAS1B,IAAIG,MAAM,EAAA;AACnBE,oBAAAA,QAAAA,EAAUQ,WAAWR,QAAQ;AAC7BoC,oBAAAA,MAAAA,EAAQ5B,WAAW4B,MAAM;AACzBlD,oBAAAA,SAAAA,EAAWsB,WAAWtB,SAAS;AAC/BwC,oBAAAA,SAAAA,EAAWlB,WAAWkB,SAAS,CAACC,GAAG,CAAC,GAAA,CAAA,CAAK3C,IAAI,CAACH,wCAAAA,CAAAA;AAC9C2C,oBAAAA,KAAAA,EAAO7B,GAAIG,CAAAA,MAAM,EAAGd,CAAAA,IAAI,CAACmD,oBAAAA;AAC3B,iBAAA;AACF;QACA,KAAK,MAAA;AAAQ,YAAA;gBACX,OAAO;AACLd,oBAAAA,OAAAA,EAAS1B,IAAIG,MAAM,EAAA;AACnBE,oBAAAA,QAAAA,EAAUQ,WAAWR,QAAQ;AAC7BoC,oBAAAA,MAAAA,EAAQ5B,WAAW4B,MAAM;AACzBlD,oBAAAA,SAAAA,EAAWsB,WAAWtB,SAAS;AAC/BwC,oBAAAA,SAAAA,EAAWlB,WAAWkB,SAAS;AAC/BF,oBAAAA,KAAAA,EAAO7B,GAAIG,CAAAA,MAAM,EAAGd,CAAAA,IAAI,CAACmD,oBAAAA;AAC3B,iBAAA;AACF;QACA,KAAK,UAAA;AAAY,YAAA;gBACf,OAAO;AACLd,oBAAAA,OAAAA,EAAS1B,IAAIG,MAAM,EAAA;AACnBE,oBAAAA,QAAAA,EAAUQ,WAAWR,QAAQ;AAC7Bd,oBAAAA,SAAAA,EAAWsB,WAAWtB,SAAS;AAC/BwC,oBAAAA,SAAAA,EAAWlB,WAAWkB;AACxB,iBAAA;AACF;QACA,KAAK,QAAA;AAAU,YAAA;gBACb,OAAO;AACL1B,oBAAAA,QAAAA,EAAUQ,WAAWR;AACvB,iBAAA;AACF;QACA,KAAK,MAAA;AAAQ,YAAA;gBACX,OAAO;AACLqB,oBAAAA,OAAAA,EAAS1B,GAAI0C,CAAAA,KAAK,EAAGrD,CAAAA,IAAI,CAACsD,kBAAAA,CAAAA;AAC1BtC,oBAAAA,QAAAA,EAAUQ,WAAWR;AACvB,iBAAA;AACF;QACA,KAAK,aAAA;AAAe,YAAA;gBAClB,OAAO;AACLuC,oBAAAA,IAAAA,EAAM5C,IACHe,KAAK,EAAA,CACLC,EAAE,CAAChB,GAAAA,CAAIG,MAAM,EAAGd,CAAAA,IAAI,CAACwD,WAAaxC,CAAAA,CAAAA,QAAQ,IAC1CY,GAAG,CAAC,GACJ5B,IAAI,CAACyD,qBACLzC,QAAQ,EAAA;AACXqB,oBAAAA,OAAAA,EAAS1B,GAAIG,CAAAA,MAAM,EAAG4C,CAAAA,IAAI,CAAC,MAAA,EAAQ,CAACC,OAAAA,GAAYhD,GAAIG,CAAAA,MAAM,EAAGC,CAAAA,KAAK,CAAC4C,OAAAA,CAAAA,CAAAA;AACnEC,oBAAAA,QAAAA,EAAUjD,GAAIG,CAAAA,MAAM,EAAGd,CAAAA,IAAI,CAAC6D,WAAAA,CAAAA;AAC5B7C,oBAAAA,QAAAA,EAAUQ,WAAWR;AACvB,iBAAA;AACF;QACA,KAAK,UAAA;AAAY,YAAA;gBACf,OAAO;AACLA,oBAAAA,QAAAA,EAAUQ,WAAWR,QAAQ;AAC7Bd,oBAAAA,SAAAA,EAAWsB,WAAWtB,SAAS;AAC/BwC,oBAAAA,SAAAA,EAAWlB,WAAWkB;AACxB,iBAAA;AACF;QACA,KAAK,OAAA;AAAS,YAAA;gBACZ,OAAO;oBACLL,OAAS1B,EAAAA,GAAAA,CAAIG,MAAM,EAAA,CAAGgD,KAAK,EAAA;AAC3B9C,oBAAAA,QAAAA,EAAUQ,WAAWR,QAAQ;AAC7BoC,oBAAAA,MAAAA,EAAQ5B,WAAW4B,MAAM;AACzBlD,oBAAAA,SAAAA,EAAWsB,WAAWtB,SAAS;AAC/BwC,oBAAAA,SAAAA,EAAWlB,WAAWkB;AACxB,iBAAA;AACF;QACA,KAAK,SAAA;AAAW,YAAA;gBACd,OAAO;oBACLL,OAAS1B,EAAAA,GAAAA,CAAIoD,MAAM,EAAA,CAAGC,OAAO,EAAA;AAC7BhD,oBAAAA,QAAAA,EAAUQ,WAAWR,QAAQ;AAC7BoC,oBAAAA,MAAAA,EAAQ5B,WAAW4B,MAAM;oBACzBxB,GAAKjB,EAAAA,GAAAA,CAAIoD,MAAM,EAAA,CAAGC,OAAO,EAAA;oBACzBrB,GAAKhC,EAAAA,GAAAA,CAAIoD,MAAM,EAAA,CAAGC,OAAO;AAC3B,iBAAA;AACF;QACA,KAAK,YAAA;AAAc,YAAA;gBACjB,OAAO;AACL3B,oBAAAA,OAAAA,EAAS1B,IAAIG,MAAM,EAAA,CAAGK,QAAQ,EAAA,CAAG8C,OAAO,CAAC,OAAA,CAAA;AACzCjD,oBAAAA,QAAAA,EAAUQ,WAAWR,QAAQ;AAC7BoC,oBAAAA,MAAAA,EAAQ5B,WAAW4B,MAAM;AACzBxB,oBAAAA,GAAAA,EAAKjB,IAAIG,MAAM,EAAA,CAAGK,QAAQ,EAAA,CAAG8C,OAAO,CAAC,OAAA,CAAA;AACrCtB,oBAAAA,GAAAA,EAAKhC,IAAIG,MAAM,EAAA,CAAGK,QAAQ,EAAA,CAAG8C,OAAO,CAAC,OAAA;AACvC,iBAAA;AACF;QACA,KAAK,OAAA;AAAS,YAAA;gBACZ,OAAO;AACL5B,oBAAAA,OAAAA,EAAS1B,IAAIoD,MAAM,EAAA;AACnB/C,oBAAAA,QAAAA,EAAUQ,WAAWR,QAAQ;AAC7BoC,oBAAAA,MAAAA,EAAQ5B,WAAW4B,MAAM;AACzBxB,oBAAAA,GAAAA,EAAKjB,IAAIoD,MAAM,EAAA;AACfpB,oBAAAA,GAAAA,EAAKhC,IAAIoD,MAAM;AACjB,iBAAA;AACF;QACA,KAAK,SAAA;AAAW,YAAA;gBACd,OAAO;AACL1B,oBAAAA,OAAAA,EAAS1B,IAAIoD,MAAM,EAAA;AACnB/C,oBAAAA,QAAAA,EAAUQ,WAAWR,QAAQ;AAC7BoC,oBAAAA,MAAAA,EAAQ5B,WAAW4B,MAAM;AACzBxB,oBAAAA,GAAAA,EAAKjB,IAAIoD,MAAM,EAAA;AACfpB,oBAAAA,GAAAA,EAAKhC,IAAIoD,MAAM;AACjB,iBAAA;AACF;QACA,KAAK,MAAA;QACL,KAAK,UAAA;QACL,KAAK,MAAA;AAAQ,YAAA;gBACX,OAAO;AACL1B,oBAAAA,OAAAA,EAAS1B,IAAIG,MAAM,EAAA;AACnBE,oBAAAA,QAAAA,EAAUQ,WAAWR,QAAQ;AAC7BoC,oBAAAA,MAAAA,EAAQ5B,WAAW4B;AACrB,iBAAA;AACF;QACA,KAAK,SAAA;AAAW,YAAA;gBACd,OAAO;AACLf,oBAAAA,OAAAA,EAAS1B,IAAIO,OAAO,EAAA;AACpBF,oBAAAA,QAAAA,EAAUQ,WAAWR;AACvB,iBAAA;AACF;QAEA,KAAK,WAAA;AAAa,YAAA;gBAChB,OAAO;AACLA,oBAAAA,QAAAA,EAAUQ,WAAWR,QAAQ;AAC7BkD,oBAAAA,UAAAA,EAAYvD,IAAIO,OAAO,EAAA;;oBAEvBiD,SAAWxD,EAAAA,GAAAA,CAAIG,MAAM,EAAA,CAAGE,QAAQ,EAAA;AAChCY,oBAAAA,GAAAA,EAAKjB,IAAIoD,MAAM,EAAA;AACfpB,oBAAAA,GAAAA,EAAKhC,IAAIoD,MAAM;AACjB,iBAAA;AACF;QAEA,KAAK,aAAA;AAAe,YAAA;gBAClB,OAAO;AACL/C,oBAAAA,QAAAA,EAAUQ,WAAWR,QAAQ;oBAC7BoD,UAAYzD,EAAAA,GAAAA,CACTe,KAAK,EACLC,CAAAA,EAAE,CAAChB,GAAIG,CAAAA,MAAM,GAAGE,QAAQ,EAAA,CAAA,CACxBhB,IAAI,CAAC,SAAA,EAAW,4BAA4B,CAACC,KAAAA,GAAUoE,MAAMC,OAAO,CAACrE,KACrE2B,CAAAA,CAAAA,CAAAA,GAAG,CAAC,CAAA,CAAA;AACPA,oBAAAA,GAAAA,EAAKjB,IAAIoD,MAAM,EAAA;AACfpB,oBAAAA,GAAAA,EAAKhC,IAAIoD,MAAM;AACjB,iBAAA;AACF;AAEA,QAAA;AAAS,YAAA;AACP,gBAAA,OAAO,EAAC;AACV;AACF;AACF,CAAA;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@strapi/content-type-builder",
|
|
3
|
-
"version": "5.31.
|
|
3
|
+
"version": "5.31.1",
|
|
4
4
|
"description": "Create and manage content types",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -68,9 +68,9 @@
|
|
|
68
68
|
"@reduxjs/toolkit": "1.9.7",
|
|
69
69
|
"@sindresorhus/slugify": "1.1.0",
|
|
70
70
|
"@strapi/design-system": "2.0.0-rc.30",
|
|
71
|
-
"@strapi/generators": "5.31.
|
|
71
|
+
"@strapi/generators": "5.31.1",
|
|
72
72
|
"@strapi/icons": "2.0.0-rc.30",
|
|
73
|
-
"@strapi/utils": "5.31.
|
|
73
|
+
"@strapi/utils": "5.31.1",
|
|
74
74
|
"ai": "5.0.26",
|
|
75
75
|
"date-fns": "2.30.0",
|
|
76
76
|
"fs-extra": "11.2.0",
|
|
@@ -88,8 +88,8 @@
|
|
|
88
88
|
"zod": "3.25.67"
|
|
89
89
|
},
|
|
90
90
|
"devDependencies": {
|
|
91
|
-
"@strapi/admin": "5.31.
|
|
92
|
-
"@strapi/types": "5.31.
|
|
91
|
+
"@strapi/admin": "5.31.1",
|
|
92
|
+
"@strapi/types": "5.31.1",
|
|
93
93
|
"@testing-library/dom": "10.1.0",
|
|
94
94
|
"@testing-library/react": "15.0.7",
|
|
95
95
|
"@testing-library/user-event": "14.5.2",
|