@strapi/content-type-builder 5.58.0 → 5.60.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/components/AIChat/FeedbackModal.js +13 -7
- package/dist/admin/components/AIChat/FeedbackModal.js.map +1 -1
- package/dist/admin/components/AIChat/FeedbackModal.mjs +14 -8
- package/dist/admin/components/AIChat/FeedbackModal.mjs.map +1 -1
- package/dist/admin/components/AIChat/UploadCodeModal.js +12 -6
- package/dist/admin/components/AIChat/UploadCodeModal.js.map +1 -1
- package/dist/admin/components/AIChat/UploadCodeModal.mjs +13 -7
- package/dist/admin/components/AIChat/UploadCodeModal.mjs.map +1 -1
- package/dist/admin/components/AIChat/UploadFigmaModal.js +12 -6
- package/dist/admin/components/AIChat/UploadFigmaModal.js.map +1 -1
- package/dist/admin/components/AIChat/UploadFigmaModal.mjs +13 -7
- package/dist/admin/components/AIChat/UploadFigmaModal.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/Attachments/components/Attachment.js +6 -3
- package/dist/admin/components/AIChat/components/Attachments/components/Attachment.js.map +1 -1
- package/dist/admin/components/AIChat/components/Attachments/components/Attachment.mjs +7 -4
- package/dist/admin/components/AIChat/components/Attachments/components/Attachment.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/Collapsible.js +9 -4
- package/dist/admin/components/AIChat/components/Collapsible.js.map +1 -1
- package/dist/admin/components/AIChat/components/Collapsible.mjs +10 -5
- package/dist/admin/components/AIChat/components/Collapsible.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/Dropzone.js +13 -6
- package/dist/admin/components/AIChat/components/Dropzone.js.map +1 -1
- package/dist/admin/components/AIChat/components/Dropzone.mjs +14 -7
- package/dist/admin/components/AIChat/components/Dropzone.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/FloatingPanel.js +11 -4
- package/dist/admin/components/AIChat/components/FloatingPanel.js.map +1 -1
- package/dist/admin/components/AIChat/components/FloatingPanel.mjs +12 -5
- package/dist/admin/components/AIChat/components/FloatingPanel.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/FullScreenImage.js +16 -8
- package/dist/admin/components/AIChat/components/FullScreenImage.js.map +1 -1
- package/dist/admin/components/AIChat/components/FullScreenImage.mjs +17 -9
- package/dist/admin/components/AIChat/components/FullScreenImage.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/Input.js +6 -3
- package/dist/admin/components/AIChat/components/Input.js.map +1 -1
- package/dist/admin/components/AIChat/components/Input.mjs +7 -4
- package/dist/admin/components/AIChat/components/Input.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/Messages/Message.js +88 -12
- package/dist/admin/components/AIChat/components/Messages/Message.js.map +1 -1
- package/dist/admin/components/AIChat/components/Messages/Message.mjs +87 -13
- package/dist/admin/components/AIChat/components/Messages/Message.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/StepModal.js +44 -17
- package/dist/admin/components/AIChat/components/StepModal.js.map +1 -1
- package/dist/admin/components/AIChat/components/StepModal.mjs +45 -18
- package/dist/admin/components/AIChat/components/StepModal.mjs.map +1 -1
- package/dist/admin/components/AIChat/providers/ChatProvider.js +79 -27
- package/dist/admin/components/AIChat/providers/ChatProvider.js.map +1 -1
- package/dist/admin/components/AIChat/providers/ChatProvider.mjs +80 -28
- package/dist/admin/components/AIChat/providers/ChatProvider.mjs.map +1 -1
- package/dist/admin/components/AIChat/providers/SchemaProvider.js +6 -3
- package/dist/admin/components/AIChat/providers/SchemaProvider.js.map +1 -1
- package/dist/admin/components/AIChat/providers/SchemaProvider.mjs +7 -4
- package/dist/admin/components/AIChat/providers/SchemaProvider.mjs.map +1 -1
- package/dist/admin/components/AttributeOptions/AttributeOption.js +2 -2
- package/dist/admin/components/AttributeOptions/AttributeOption.js.map +1 -1
- package/dist/admin/components/AttributeOptions/AttributeOption.mjs +2 -2
- package/dist/admin/components/AttributeOptions/AttributeOption.mjs.map +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/lib/buildFolderTree.js.map +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/lib/buildFolderTree.mjs.map +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/lib/dropProjection.js.map +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/lib/dropProjection.mjs.map +1 -1
- package/dist/admin/components/CustomRadioGroup/CustomRadioGroup.js +2 -1
- package/dist/admin/components/CustomRadioGroup/CustomRadioGroup.js.map +1 -1
- package/dist/admin/components/CustomRadioGroup/CustomRadioGroup.mjs +2 -1
- package/dist/admin/components/CustomRadioGroup/CustomRadioGroup.mjs.map +1 -1
- package/dist/admin/components/DataManager/DataManagerProvider.js +317 -275
- package/dist/admin/components/DataManager/DataManagerProvider.js.map +1 -1
- package/dist/admin/components/DataManager/DataManagerProvider.mjs +319 -277
- package/dist/admin/components/DataManager/DataManagerProvider.mjs.map +1 -1
- package/dist/admin/components/DataManager/RenameMigrationModal.js.map +1 -1
- package/dist/admin/components/DataManager/RenameMigrationModal.mjs.map +1 -1
- package/dist/admin/components/DataManager/reducer.js +31 -4
- package/dist/admin/components/DataManager/reducer.js.map +1 -1
- package/dist/admin/components/DataManager/reducer.mjs +31 -4
- package/dist/admin/components/DataManager/reducer.mjs.map +1 -1
- package/dist/admin/components/DynamicZoneList.js +2 -1
- package/dist/admin/components/DynamicZoneList.js.map +1 -1
- package/dist/admin/components/DynamicZoneList.mjs +2 -1
- package/dist/admin/components/DynamicZoneList.mjs.map +1 -1
- package/dist/admin/components/FormModal/attributes/ConditionForm.js +2 -1
- package/dist/admin/components/FormModal/attributes/ConditionForm.js.map +1 -1
- package/dist/admin/components/FormModal/attributes/ConditionForm.mjs +2 -1
- package/dist/admin/components/FormModal/attributes/ConditionForm.mjs.map +1 -1
- package/dist/admin/components/FormModal/attributes/types.js +2 -2
- 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/forms/forms.js +1 -1
- package/dist/admin/components/FormModal/forms/forms.js.map +1 -1
- package/dist/admin/components/FormModal/forms/forms.mjs +1 -1
- package/dist/admin/components/FormModal/forms/forms.mjs.map +1 -1
- package/dist/admin/components/GenericInputs.js +2 -1
- package/dist/admin/components/GenericInputs.js.map +1 -1
- package/dist/admin/components/GenericInputs.mjs +2 -1
- package/dist/admin/components/GenericInputs.mjs.map +1 -1
- package/dist/admin/components/TabForm.js.map +1 -1
- package/dist/admin/components/TabForm.mjs.map +1 -1
- package/dist/admin/src/components/AIChat/components/FullScreenImage.d.ts +8 -0
- package/dist/admin/src/components/AIChat/components/Messages/Message.d.ts +20 -0
- package/dist/admin/utils/folderTelemetry.js.map +1 -1
- package/dist/admin/utils/folderTelemetry.mjs.map +1 -1
- package/dist/admin/utils/formAPI.js.map +1 -1
- package/dist/admin/utils/formAPI.mjs.map +1 -1
- package/dist/server/controllers/validation/common.js +1 -1
- package/dist/server/controllers/validation/common.js.map +1 -1
- package/dist/server/controllers/validation/common.mjs +1 -1
- package/dist/server/controllers/validation/common.mjs.map +1 -1
- package/dist/server/controllers/validation/schema.js +3 -2
- package/dist/server/controllers/validation/schema.js.map +1 -1
- package/dist/server/controllers/validation/schema.mjs +4 -3
- package/dist/server/controllers/validation/schema.mjs.map +1 -1
- package/dist/server/register.js.map +1 -1
- package/dist/server/register.mjs.map +1 -1
- package/dist/server/services/migration-builder/index.js.map +1 -1
- package/dist/server/services/migration-builder/index.mjs.map +1 -1
- package/dist/server/services/schema.js +34 -1
- package/dist/server/services/schema.js.map +1 -1
- package/dist/server/services/schema.mjs +34 -1
- package/dist/server/services/schema.mjs.map +1 -1
- package/dist/server/src/controllers/validation/schema.d.ts.map +1 -1
- package/dist/server/src/register.d.ts.map +1 -1
- package/dist/server/src/services/migration-builder/index.d.ts.map +1 -1
- package/dist/server/src/services/schema-builder/types.d.ts.map +1 -1
- package/dist/server/src/services/schema.d.ts.map +1 -1
- package/dist/server/src/utils/uid-target.d.ts +18 -0
- package/dist/server/src/utils/uid-target.d.ts.map +1 -0
- package/dist/server/utils/uid-target.js +34 -0
- package/dist/server/utils/uid-target.js.map +1 -0
- package/dist/server/utils/uid-target.mjs +31 -0
- package/dist/server/utils/uid-target.mjs.map +1 -0
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.mjs","sources":["../../../../server/src/controllers/validation/common.ts"],"sourcesContent":["/* eslint-disable no-template-curly-in-string */\nimport { yup, strings } from '@strapi/utils';\nimport _ from 'lodash';\nimport { TestConfig } from 'yup';\n\nexport const validators = {\n required: yup.boolean(),\n unique: yup.boolean(),\n minLength: yup.number().integer().positive(),\n maxLength: yup.number().integer().positive(),\n};\n\nexport const NAME_REGEX = /^[A-Za-z][_0-9A-Za-z]*$/;\nexport const COLLECTION_NAME_REGEX = /^[A-Za-z][-_0-9A-Za-z]*$/;\nexport const CATEGORY_NAME_REGEX = /^[A-Za-z][-_0-9A-Za-z]*$/;\nexport const ICON_REGEX = /^[A-Za-z0-9][-A-Za-z0-9]*$/;\nexport const UID_REGEX = /^[A-Za-z0-9-_.~]*$/;\nexport const KEBAB_BASE_REGEX = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;\n// Fully-qualified content-type uid: `api::a.a` / `plugin::p.p` / `strapi::x` / `admin::x`.\nexport const CONTENT_TYPE_UID_REGEX = /^((strapi|admin)::[\\w-]+|(api|plugin)::[\\w-]+\\.[\\w-]+)$/;\n\nexport type CommonTestConfig = TestConfig<unknown | undefined, Record<string, unknown>>;\n\nexport const isValidName: CommonTestConfig = {\n name: 'isValidName',\n message: `\\${path} must match the following regex: ${NAME_REGEX}`,\n test: (val: unknown) => val === '' || NAME_REGEX.test(val as string),\n};\n\nexport const isValidIcon: CommonTestConfig = {\n name: 'isValidIcon',\n message: `\\${path} is not a valid icon name. Make sure your icon name starts with an alphanumeric character and only includes alphanumeric characters or dashes.`,\n test: (val) => val === '' || ICON_REGEX.test(val as string),\n};\n\nexport const isValidUID: CommonTestConfig = {\n name: 'isValidUID',\n message: `\\${path} must match the following regex: ${UID_REGEX}`,\n test: (val) => val === '' || UID_REGEX.test(val as string),\n};\n\nexport const isValidCategoryName: CommonTestConfig = {\n name: 'isValidCategoryName',\n message: `\\${path} must start with a letter and only contain letters, numbers, dashes and underscores`,\n test: (val) => val === '' || CATEGORY_NAME_REGEX.test(val as string),\n};\n\nexport const isValidCollectionName: CommonTestConfig = {\n name: 'isValidCollectionName',\n message: `\\${path} must match the following regex: ${COLLECTION_NAME_REGEX}`,\n test: (val) => val === '' || COLLECTION_NAME_REGEX.test(val as string),\n};\n\nexport const isValidKey = (key: string): CommonTestConfig => ({\n name: 'isValidKey',\n message: `Attribute name '${key}' must match the following regex: ${NAME_REGEX}`,\n test: () => NAME_REGEX.test(key),\n});\n\nexport const isValidEnum: CommonTestConfig = {\n name: 'isValidEnum',\n message: '${path} should not start with number',\n test: (val) => val === '' || !strings.startsWithANumber(val as string),\n};\n\nexport const areEnumValuesUnique: CommonTestConfig = {\n name: 'areEnumValuesUnique',\n message: '${path} cannot contain duplicate values',\n test(values) {\n const filtered = [...new Set(values as string[])];\n\n return filtered.length === (values as string[]).length;\n },\n};\n\nexport const isValidRegExpPattern: CommonTestConfig = {\n name: 'isValidRegExpPattern',\n message: '${path} must be a valid RexExp pattern string',\n test: (val) => val === '' || !!new RegExp(val as string),\n};\n\nexport const isValidDefaultJSON: CommonTestConfig = {\n name: 'isValidDefaultJSON',\n message: '${path} is not a valid JSON',\n test(val) {\n if (val === undefined) {\n return true;\n }\n\n if (_.isNumber(val) || _.isNull(val) || _.isObject(val) ||
|
|
1
|
+
{"version":3,"file":"common.mjs","sources":["../../../../server/src/controllers/validation/common.ts"],"sourcesContent":["/* eslint-disable no-template-curly-in-string */\nimport { yup, strings } from '@strapi/utils';\nimport _ from 'lodash';\nimport { TestConfig } from 'yup';\n\nexport const validators = {\n required: yup.boolean(),\n unique: yup.boolean(),\n minLength: yup.number().integer().positive(),\n maxLength: yup.number().integer().positive(),\n};\n\nexport const NAME_REGEX = /^[A-Za-z][_0-9A-Za-z]*$/;\nexport const COLLECTION_NAME_REGEX = /^[A-Za-z][-_0-9A-Za-z]*$/;\nexport const CATEGORY_NAME_REGEX = /^[A-Za-z][-_0-9A-Za-z]*$/;\nexport const ICON_REGEX = /^[A-Za-z0-9][-A-Za-z0-9]*$/;\nexport const UID_REGEX = /^[A-Za-z0-9-_.~]*$/;\nexport const KEBAB_BASE_REGEX = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;\n// Fully-qualified content-type uid: `api::a.a` / `plugin::p.p` / `strapi::x` / `admin::x`.\nexport const CONTENT_TYPE_UID_REGEX = /^((strapi|admin)::[\\w-]+|(api|plugin)::[\\w-]+\\.[\\w-]+)$/;\n\nexport type CommonTestConfig = TestConfig<unknown | undefined, Record<string, unknown>>;\n\nexport const isValidName: CommonTestConfig = {\n name: 'isValidName',\n message: `\\${path} must match the following regex: ${NAME_REGEX}`,\n test: (val: unknown) => val === '' || NAME_REGEX.test(val as string),\n};\n\nexport const isValidIcon: CommonTestConfig = {\n name: 'isValidIcon',\n message: `\\${path} is not a valid icon name. Make sure your icon name starts with an alphanumeric character and only includes alphanumeric characters or dashes.`,\n test: (val) => val === '' || ICON_REGEX.test(val as string),\n};\n\nexport const isValidUID: CommonTestConfig = {\n name: 'isValidUID',\n message: `\\${path} must match the following regex: ${UID_REGEX}`,\n test: (val) => val === '' || UID_REGEX.test(val as string),\n};\n\nexport const isValidCategoryName: CommonTestConfig = {\n name: 'isValidCategoryName',\n message: `\\${path} must start with a letter and only contain letters, numbers, dashes and underscores`,\n test: (val) => val === '' || CATEGORY_NAME_REGEX.test(val as string),\n};\n\nexport const isValidCollectionName: CommonTestConfig = {\n name: 'isValidCollectionName',\n message: `\\${path} must match the following regex: ${COLLECTION_NAME_REGEX}`,\n test: (val) => val === '' || COLLECTION_NAME_REGEX.test(val as string),\n};\n\nexport const isValidKey = (key: string): CommonTestConfig => ({\n name: 'isValidKey',\n message: `Attribute name '${key}' must match the following regex: ${NAME_REGEX}`,\n test: () => NAME_REGEX.test(key),\n});\n\nexport const isValidEnum: CommonTestConfig = {\n name: 'isValidEnum',\n message: '${path} should not start with number',\n test: (val) => val === '' || !strings.startsWithANumber(val as string),\n};\n\nexport const areEnumValuesUnique: CommonTestConfig = {\n name: 'areEnumValuesUnique',\n message: '${path} cannot contain duplicate values',\n test(values) {\n const filtered = [...new Set(values as string[])];\n\n return filtered.length === (values as string[]).length;\n },\n};\n\nexport const isValidRegExpPattern: CommonTestConfig = {\n name: 'isValidRegExpPattern',\n message: '${path} must be a valid RexExp pattern string',\n test: (val) => val === '' || !!new RegExp(val as string),\n};\n\nexport const isValidDefaultJSON: CommonTestConfig = {\n name: 'isValidDefaultJSON',\n message: '${path} is not a valid JSON',\n test(val) {\n if (val === undefined) {\n return true;\n }\n\n if (_.isNumber(val) || _.isNull(val) || _.isObject(val) || Array.isArray(val)) {\n return true;\n }\n\n try {\n JSON.parse(val as string);\n\n return true;\n } catch {\n return false;\n }\n },\n};\n"],"names":["validators","required","yup","boolean","unique","minLength","number","integer","positive","maxLength","NAME_REGEX","COLLECTION_NAME_REGEX","CATEGORY_NAME_REGEX","ICON_REGEX","UID_REGEX","KEBAB_BASE_REGEX","CONTENT_TYPE_UID_REGEX","isValidName","name","message","test","val","isValidIcon","isValidCategoryName","isValidCollectionName","isValidKey","key","isValidEnum","strings","startsWithANumber","areEnumValuesUnique","values","filtered","Set","length","isValidRegExpPattern","RegExp","isValidDefaultJSON","undefined","_","isNumber","isNull","isObject","Array","isArray","JSON","parse"],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ var _ = require('lodash');
|
|
|
6
6
|
var builder = require('../../services/builder.js');
|
|
7
7
|
var constants = require('../../services/constants.js');
|
|
8
8
|
var attributes = require('../../utils/attributes.js');
|
|
9
|
+
var uidTarget = require('../../utils/uid-target.js');
|
|
9
10
|
var common = require('./common.js');
|
|
10
11
|
var contentStructure = require('./content-structure.js');
|
|
11
12
|
|
|
@@ -45,7 +46,7 @@ const verifyUidTargetField = (attributes, ctx)=>{
|
|
|
45
46
|
}
|
|
46
47
|
const { properties, action } = attribute;
|
|
47
48
|
if (properties.type === 'uid' && properties.targetField) {
|
|
48
|
-
const targetAttr = attributes.find((attr)=>attr.name === properties.targetField);
|
|
49
|
+
const targetAttr = attributes.find((attr)=>attr.action !== 'delete' && attr.name === properties.targetField);
|
|
49
50
|
if (!targetAttr) {
|
|
50
51
|
// NOTE: on update we are setting it to undefined later in the process instead to handle renames
|
|
51
52
|
if (action === 'create') {
|
|
@@ -54,7 +55,7 @@ const verifyUidTargetField = (attributes, ctx)=>{
|
|
|
54
55
|
message: 'Target does not exist'
|
|
55
56
|
});
|
|
56
57
|
}
|
|
57
|
-
} else if (!
|
|
58
|
+
} else if (!targetAttr.properties || !uidTarget.isValidUidTarget(targetAttr.properties)) {
|
|
58
59
|
ctx.addIssue({
|
|
59
60
|
code: 'custom',
|
|
60
61
|
message: 'Invalid target type'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sources":["../../../../server/src/controllers/validation/schema.ts"],"sourcesContent":["import * as z from 'zod/v4';\nimport { strings, validateZodSchema, contentTypes } from '@strapi/utils';\nimport type { Struct, UID } from '@strapi/types';\nimport { isNumber, isObject, snakeCase } from 'lodash';\n\nimport { isReservedAttributeName, isReservedModelName } from '../../services/builder';\nimport { coreUids, typeKinds, VALID_UID_TARGETS } from '../../services/constants';\nimport { isConfigurable } from '../../utils/attributes';\n\nimport {\n CATEGORY_NAME_REGEX,\n ICON_REGEX,\n COLLECTION_NAME_REGEX,\n KEBAB_BASE_REGEX,\n NAME_REGEX,\n} from './common';\nimport { contentStructureFileSchema, type ContentStructureFileInput } from './content-structure';\n\ntype SchemaMeta =\n | {\n modelType: 'contentType';\n kind?: Struct.ContentTypeKind;\n }\n | {\n modelType: 'component';\n };\n\ntype SuperRefinement<T> = (value: T, ctx: z.RefinementCtx) => void | Promise<void>;\n\nconst uniqueAttributeName: SuperRefinement<{ name: string }[]> = (attributes, ctx) => {\n const names = new Set(attributes.map((attribute) => snakeCase(attribute.name)));\n if (names.size !== attributes.length) {\n ctx.addIssue({\n code: 'custom',\n message: 'Attributes must have unique names',\n });\n }\n};\n\nconst verifyUidTargetField: SuperRefinement<\n {\n action: 'create' | 'update' | 'delete';\n name: string;\n properties?: {\n type: unknown;\n targetField?: string | null;\n };\n }[]\n> = (attributes, ctx) => {\n attributes.forEach((attribute) => {\n if (!attribute.properties) {\n return;\n }\n\n const { properties, action } = attribute;\n\n if (properties.type === 'uid' && properties.targetField) {\n const targetAttr = attributes.find((attr) => attr.name === properties.targetField);\n\n if (!targetAttr) {\n // NOTE: on update we are setting it to undefined later in the process instead to handle renames\n if (action === 'create') {\n ctx.addIssue({\n code: 'custom',\n message: 'Target does not exist',\n });\n }\n } else if (\n !VALID_UID_TARGETS.some((validUIdTarget) => validUIdTarget === targetAttr.properties?.type)\n ) {\n ctx.addIssue({\n code: 'custom',\n message: 'Invalid target type',\n });\n }\n }\n });\n};\n\nconst verifySingularAndPluralNames: SuperRefinement<Record<string, unknown>> = (obj, ctx) => {\n // singular and plural can only be provided on creation\n if (obj.action !== 'create') {\n return;\n }\n\n if (obj.singularName === obj.pluralName) {\n ctx.addIssue({\n code: 'custom',\n message: 'Singular and plural names must be different',\n path: ['singularName'],\n });\n }\n};\n\ntype ContentTypeSchemaAction = {\n action: 'create' | 'update' | 'delete';\n draftAndPublish?: boolean;\n uid?: UID.ContentType;\n renames?: Array<{ oldName: string; newName: string }>;\n attributes?: Array<{ action: 'create' | 'update' | 'delete'; name: string }>;\n};\n\n// The payload carries the full attribute list and the saved schema is built from\n// it, so the names that will be written are the payload attributes that are not\n// deleted. The rename hops do not decide what is saved. The one exception is\n// non-configurable attributes: the builder keeps them from the current schema\n// whatever the payload says, so they are always part of the saved schema.\nconst getEffectiveAttributeNames = (contentType: ContentTypeSchemaAction): string[] => {\n const names = new Set(\n (contentType.attributes ?? [])\n .filter((attribute) => attribute.action !== 'delete')\n .map((attribute) => attribute.name)\n );\n\n if (contentType.action === 'update' && contentType.uid) {\n const existingAttributes = strapi.contentTypes[contentType.uid]?.attributes ?? {};\n\n for (const [name, attribute] of Object.entries(existingAttributes)) {\n if (!isConfigurable(attribute)) {\n names.add(name);\n }\n }\n }\n\n return [...names];\n};\n\nexport const verifyDraftAndPublishReservedAttributes: SuperRefinement<ContentTypeSchemaAction> = (\n contentType,\n ctx\n) => {\n if (contentType.action === 'delete' || !contentType.draftAndPublish) {\n return;\n }\n\n const reservedAttributeNames = contentTypes.findDraftAndPublishReservedAttributeNames(\n getEffectiveAttributeNames(contentType)\n );\n\n if (reservedAttributeNames.length > 0) {\n ctx.addIssue({\n code: 'custom',\n message: contentTypes.getDraftAndPublishEnableBlockedMessage(reservedAttributeNames),\n path: ['draftAndPublish'],\n });\n }\n};\n\nexport const maxLengthGreaterThanMinLength: SuperRefinement<Record<string, unknown>> = (\n value,\n ctx\n) => {\n if (\n value.maxLength != null &&\n value.minLength != null &&\n isNumber(value.maxLength) &&\n isNumber(value.minLength)\n ) {\n if (value.maxLength < value.minLength) {\n ctx.addIssue({\n code: 'custom',\n message: 'maxLength must be greater or equal to minLength',\n path: ['maxLength'],\n });\n }\n }\n};\n\nexport const maxGreaterThanMin: SuperRefinement<Record<string, unknown>> = (value, ctx) => {\n if (value.max != null && value.min != null && isNumber(value.max) && isNumber(value.min)) {\n if (value.max < value.min) {\n ctx.addIssue({\n code: 'custom',\n message: 'max must be greater or equal to min',\n path: ['max'],\n });\n }\n }\n};\n\nconst checkUserTarget: SuperRefinement<{\n type: string;\n target?: string;\n relation?: string;\n targetAttribute?: string | null;\n}> = (value, ctx) => {\n if (value.type !== 'relation') {\n return;\n }\n\n if (value.target === undefined || value.relation === undefined) {\n return;\n }\n\n const { target, relation, targetAttribute } = value;\n\n if (\n target === coreUids.STRAPI_USER &&\n (!STRAPI_USER_RELATIONS.includes(relation) || targetAttribute !== undefined)\n ) {\n ctx.addIssue({\n code: 'custom',\n path: ['relation'],\n message: `Relations to ${coreUids.STRAPI_USER} must be one of the following values: ${STRAPI_USER_RELATIONS.join(', ')} without targetAttribute`,\n });\n }\n};\n\nconst uidRefinement: SuperRefinement<{\n type: string;\n default?: unknown;\n targetField?: string | null;\n}> = (value, ctx) => {\n if (value.targetField != null && value.default != null) {\n ctx.addIssue({\n code: 'custom',\n message: 'Cannot define a default UID if the targetField is set',\n path: ['default'],\n });\n }\n};\n\nconst enumRefinement: SuperRefinement<{\n type: string;\n default?: unknown;\n enum?: string[];\n}> = (value, ctx) => {\n if (value.type === 'enumeration' && value.default != null && value.enum != null) {\n if (value.default === '' || !value.enum.some((v) => v === value.default)) {\n ctx.addIssue({\n code: 'custom',\n message: 'Default value must be one of the enum values',\n path: ['default'],\n });\n }\n }\n};\n\nconst conditionSchema = z.object({\n visible: z.record(z.string(), z.array(z.any())),\n});\n\nconst basePropertiesSchema = z.object({\n type: z.enum([\n 'string',\n 'text',\n 'richtext',\n 'blocks',\n 'json',\n 'enumeration',\n 'password',\n 'email',\n 'integer',\n 'biginteger',\n 'float',\n 'decimal',\n 'time',\n 'datetime',\n 'date',\n 'timestamp',\n 'boolean',\n 'component',\n 'uid',\n 'customField',\n 'media',\n 'relation',\n 'dynamiczone',\n ]),\n configurable: z.boolean().nullish(),\n private: z.boolean().nullish(),\n // Keep null invalid so searchability is always an explicit boolean when provided.\n searchable: z.boolean().optional(),\n pluginOptions: z.record(z.string(), z.unknown()).optional(),\n conditions: z.preprocess((val) => {\n return val;\n }, conditionSchema.optional()),\n});\n\nconst maxLengthSchema = z.number().int().positive().optional();\nconst minLengthSchema = z.number().int().positive().optional();\n\nconst requiredSchema = z.boolean().optional();\nconst uniqueSchema = z.boolean().optional();\n\nconst STRAPI_USER_RELATIONS = ['oneToOne', 'oneToMany'];\n\nconst baseRelationSchema = z.object({\n type: z.literal('relation'),\n relation: z.enum([\n 'oneToOne',\n 'oneToMany',\n 'manyToOne',\n 'manyToMany',\n 'morphOne',\n 'morphMany',\n 'morphToOne',\n 'morphToMany',\n ]),\n configurable: z.boolean().nullish(),\n required: requiredSchema,\n private: z.boolean().nullish(),\n pluginOptions: z.record(z.string(), z.unknown()).optional(),\n conditions: z.preprocess((val) => {\n return val;\n }, conditionSchema.optional()),\n});\n\nconst oneToOneSchema = baseRelationSchema.extend({\n relation: z.literal('oneToOne'),\n target: z.string(),\n targetAttribute: z.string().nullish(),\n});\n\nconst oneWaySchema = baseRelationSchema.extend({\n relation: z.literal('oneToOne'),\n target: z.string(),\n});\n\nconst oneToManySchema = baseRelationSchema.extend({\n relation: z.literal('oneToMany'),\n target: z.string(),\n targetAttribute: z.string().nullish(),\n});\n\nconst manyWaySchema = baseRelationSchema.extend({\n relation: z.literal('oneToMany'),\n target: z.string(),\n});\n\nconst manyToOneSchema = baseRelationSchema.extend({\n relation: z.literal('manyToOne'),\n target: z.string(),\n targetAttribute: z.string().nullish(),\n});\n\nconst manyToManySchema = baseRelationSchema.extend({\n relation: z.literal('manyToMany'),\n target: z.string(),\n targetAttribute: z.string().nullish(),\n});\n\nconst morphOneSchema = baseRelationSchema.extend({\n relation: z.literal('morphOne'),\n target: z.string(),\n targetAttribute: z.string().nullish(),\n});\n\nconst morphManySchema = baseRelationSchema.extend({\n relation: z.literal('morphMany'),\n target: z.string(),\n targetAttribute: z.string().nullish(),\n});\n\nconst morphToOneSchema = baseRelationSchema.extend({\n relation: z.literal('morphToOne'),\n});\n\nconst morphToManySchema = baseRelationSchema.extend({\n relation: z.literal('morphToMany'),\n});\n\nconst createRelationSchema = (meta: SchemaMeta) => {\n switch (meta.modelType) {\n case 'contentType': {\n switch (meta.kind) {\n case 'singleType':\n return z.discriminatedUnion('relation', [\n oneToOneSchema,\n oneToManySchema,\n morphOneSchema,\n morphManySchema,\n morphToOneSchema,\n morphToManySchema,\n ]);\n\n case 'collectionType':\n return z.discriminatedUnion('relation', [\n oneToOneSchema,\n oneToManySchema,\n manyToOneSchema,\n manyToManySchema,\n morphOneSchema,\n morphManySchema,\n morphToOneSchema,\n morphToManySchema,\n ]);\n default:\n throw new Error('Invalid content type kind');\n }\n }\n\n case 'component': {\n return z.discriminatedUnion('relation', [oneWaySchema, manyWaySchema]);\n }\n default:\n throw new Error('Invalid model type');\n }\n};\n\nconst richTextSchema = basePropertiesSchema.extend({\n type: z.literal('richtext'),\n required: requiredSchema,\n minLength: minLengthSchema,\n maxLength: maxLengthSchema,\n default: z.string().optional(),\n});\n\nconst blocksSchema = basePropertiesSchema.extend({\n type: z.literal('blocks'),\n required: requiredSchema,\n});\n\nconst jsonSchema = basePropertiesSchema.extend({\n type: z.literal('json'),\n required: requiredSchema,\n default: z\n .unknown()\n .optional()\n .refine((value) => {\n if (value === undefined) {\n return true;\n }\n\n if (isNumber(value) || value === null || isObject(value) || Array.isArray(value)) {\n return true;\n }\n\n try {\n JSON.parse(value as string);\n\n return true;\n } catch {\n return false;\n }\n }),\n});\n\nconst enumerationSchema = basePropertiesSchema.extend({\n type: z.literal('enumeration'),\n required: requiredSchema,\n default: z.string().optional(),\n enumName: z\n .string()\n .optional()\n .refine((value) => {\n return value === '' || NAME_REGEX.test(value as string);\n }, 'Invalid enum name'),\n enum: z\n .array(\n z.string().refine((value) => {\n return value === '' || !strings.startsWithANumber(value as string);\n })\n )\n .min(1)\n .refine((values) => {\n const filtered = [...new Set(values)];\n return filtered.length === values.length;\n }),\n});\n\nconst textSchema = basePropertiesSchema.extend({\n type: z.literal('text'),\n default: z.string().nullish(),\n minLength: minLengthSchema,\n maxLength: maxLengthSchema,\n required: requiredSchema,\n unique: uniqueSchema,\n regex: z\n .string()\n .optional()\n .refine((value) => {\n return value === '' || !!new RegExp(value as string);\n }, 'Invalid regular expression pattern'),\n});\n\nconst stringSchema = textSchema.extend({\n type: z.literal('string'),\n});\n\nconst passwordSchema = basePropertiesSchema.extend({\n type: z.literal('password'),\n required: requiredSchema,\n minLength: minLengthSchema,\n maxLength: maxLengthSchema,\n});\n\nconst emailSchema = basePropertiesSchema.extend({\n type: z.literal('email'),\n required: requiredSchema,\n minLength: minLengthSchema,\n maxLength: maxLengthSchema,\n default: z.string().email().optional(),\n unique: uniqueSchema,\n});\n\nconst integerSchema = basePropertiesSchema.extend({\n type: z.literal('integer'),\n required: requiredSchema,\n default: z.number().int().optional(),\n unique: uniqueSchema,\n min: z.number().int().optional(),\n max: z.number().int().optional(),\n});\n\nconst bigIntegerSchema = basePropertiesSchema.extend({\n type: z.literal('biginteger'),\n required: requiredSchema,\n unique: uniqueSchema,\n default: z.string().regex(/^\\d*$/).nullish(),\n min: z.string().regex(/^\\d*$/).nullish(),\n max: z.string().regex(/^\\d*$/).nullish(),\n});\n\nconst floatSchema = basePropertiesSchema.extend({\n type: z.literal('float'),\n required: requiredSchema,\n unique: uniqueSchema,\n default: z.number().optional(),\n min: z.number().optional(),\n max: z.number().optional(),\n});\n\nconst decimalSchema = basePropertiesSchema.extend({\n type: z.literal('decimal'),\n required: requiredSchema,\n unique: uniqueSchema,\n default: z.number().optional(),\n min: z.number().optional(),\n max: z.number().optional(),\n});\n\nconst timeSchema = basePropertiesSchema.extend({\n type: z.literal('time'),\n required: requiredSchema,\n unique: uniqueSchema,\n default: z.string().optional(),\n});\n\nconst dateSchema = timeSchema.extend({\n type: z.literal('date'),\n});\n\nconst dateTimeSchema = timeSchema.extend({\n type: z.literal('datetime'),\n});\n\nconst timeStampSchema = basePropertiesSchema.extend({\n type: z.literal('timestamp'),\n});\n\nconst booleanSchema = basePropertiesSchema.extend({\n type: z.literal('boolean'),\n required: requiredSchema,\n default: z.boolean().optional(),\n});\n\nconst componentSchema = basePropertiesSchema.extend({\n type: z.literal('component'),\n component: z.string(),\n repeatable: z.boolean().optional(),\n required: requiredSchema,\n min: z.number().optional(),\n max: z.number().optional(),\n});\n\nconst dynamicZoneSchema = basePropertiesSchema.extend({\n type: z.literal('dynamiczone'),\n components: z.array(z.string()).nonempty(),\n required: requiredSchema,\n min: z.number().optional(),\n max: z.number().optional(),\n});\n\nconst mediaSchema = basePropertiesSchema.extend({\n type: z.literal('media'),\n multiple: z.boolean().optional(),\n required: requiredSchema,\n allowedTypes: z\n .array(z.enum(['images', 'videos', 'files', 'audios']))\n .nonempty()\n .optional(),\n});\n\nconst uidSchema = basePropertiesSchema.extend({\n type: z.literal('uid'),\n targetField: z.string().nullish(),\n required: requiredSchema,\n default: z.string().nullish(),\n minLength: minLengthSchema,\n maxLength: maxLengthSchema,\n options: z\n .object({\n separator: z.string().optional(),\n lowercase: z.boolean().optional(),\n decamelize: z.boolean().optional(),\n customReplacements: z.array(z.array(z.string()).length(2)).optional(),\n preserveLeadingUnderscore: z.boolean().optional(),\n })\n .optional(),\n regex: z\n .string()\n .optional()\n .refine((value) => {\n return value === '' || !!new RegExp(value as string);\n }, 'Invalid regular expression pattern'),\n});\n\nconst customFieldSchema = basePropertiesSchema.extend({\n type: z.literal('customField'),\n customField: z.string(),\n});\n\nconst attributePropertiesSchema = (meta: SchemaMeta) => {\n const relationSchema = createRelationSchema(meta);\n\n const base = z.union([\n mediaSchema,\n textSchema,\n stringSchema,\n richTextSchema,\n blocksSchema,\n jsonSchema,\n enumerationSchema,\n passwordSchema,\n emailSchema,\n integerSchema,\n bigIntegerSchema,\n floatSchema,\n decimalSchema,\n timeSchema,\n dateSchema,\n dateTimeSchema,\n timeStampSchema,\n booleanSchema,\n componentSchema,\n customFieldSchema.passthrough(),\n\n relationSchema,\n ]);\n\n if (meta.modelType === 'component') {\n return base\n .superRefine(enumRefinement)\n .superRefine(checkUserTarget)\n .superRefine(maxGreaterThanMin)\n .superRefine(maxLengthGreaterThanMinLength);\n }\n\n return z\n .union([...base.options, uidSchema, dynamicZoneSchema])\n .superRefine(enumRefinement)\n .superRefine(checkUserTarget)\n .superRefine(uidRefinement)\n .superRefine(maxGreaterThanMin)\n .superRefine(maxLengthGreaterThanMinLength);\n};\n\nconst createAttributeSchema = (meta: SchemaMeta) =>\n z.object({\n action: z.literal('create'),\n name: z\n .string()\n .regex(NAME_REGEX)\n .refine((value) => !isReservedAttributeName(value), 'Attribute name is reserved'),\n properties: attributePropertiesSchema(meta),\n });\n\nconst updateAttributeSchema = (meta: SchemaMeta) =>\n z.object({\n action: z.literal('update'),\n name: z.string(),\n properties: attributePropertiesSchema(meta),\n });\n\n// Ordered list of attribute rename hops performed by the user for a given\n// content-type / component, used to generate a data-preserving rename migration.\n// The order is significant: the migration replays each hop verbatim.\n// Names end up in generated migration code, so they are held to the attribute\n// name rules. The new name is held to the same reserved-name rules as a newly\n// created attribute. The old name only has to be a name an attribute can\n// legally carry today: `status` is reserved only while draft and publish is\n// enabled, and renaming it away is exactly how a type gets to enable it.\nconst renameHopNameSchema = z.string().min(1).max(64).regex(NAME_REGEX);\n\nconst renameHopOldNameSchema = renameHopNameSchema.refine(\n (value) => !contentTypes.isReservedAttributeName(value, { draftAndPublish: false }),\n 'Attribute name is reserved'\n);\n\nconst renameHopNewNameSchema = renameHopNameSchema.refine(\n (value) => !isReservedAttributeName(value),\n 'Attribute name is reserved'\n);\n\nconst renamesSchema = z\n .array(\n z\n .object({\n oldName: renameHopOldNameSchema,\n newName: renameHopNewNameSchema,\n })\n .refine((hop) => hop.oldName !== hop.newName, 'A rename must change the attribute name')\n )\n .max(200)\n .optional();\n\nconst deleteAttributeSchema = z.object({\n action: z.literal('delete'),\n name: z.string(),\n});\n\nconst contentTypeUIDSchema = z.custom<UID.ContentType>((value) => {\n return typeof value === 'string' && value.length > 0;\n});\n\nconst componentUIDSchema = z.custom<UID.Component>((value) => {\n return typeof value === 'string' && value.length > 0;\n});\n\nconst categorySchema = z.string().min(1).regex(CATEGORY_NAME_REGEX);\n\nconst baseComponentSchema = z.object({\n uid: componentUIDSchema,\n displayName: z.string().min(1),\n icon: z.string().regex(ICON_REGEX).optional(),\n description: z.string().optional(),\n category: categorySchema,\n pluginOptions: z.record(z.string(), z.unknown()).optional(),\n});\n\nconst createComponentSchema = baseComponentSchema.extend({\n action: z.literal('create'),\n config: z.record(z.string(), z.unknown()).optional().default({}),\n attributes: z\n .array(\n createAttributeSchema({\n modelType: 'component',\n })\n )\n .superRefine(uniqueAttributeName),\n});\n\nconst updateComponentSchema = baseComponentSchema.extend({\n action: z.literal('update'),\n category: categorySchema.optional(),\n renames: renamesSchema,\n attributes: z\n .array(\n z.discriminatedUnion('action', [\n createAttributeSchema({\n modelType: 'component',\n }),\n updateAttributeSchema({\n modelType: 'component',\n }),\n deleteAttributeSchema,\n ])\n )\n .superRefine(uniqueAttributeName),\n});\n\nconst deleteComponentSchema = z.object({\n action: z.literal('delete'),\n uid: componentUIDSchema,\n});\n\nconst baseContentTypeSchema = z.object({\n uid: contentTypeUIDSchema,\n displayName: z.string().min(1),\n description: z.string().optional(),\n draftAndPublish: z.boolean(),\n options: z.record(z.string(), z.unknown()).optional().default({}),\n pluginOptions: z.record(z.string(), z.unknown()).optional().default({}),\n kind: z.enum([typeKinds.SINGLE_TYPE, typeKinds.COLLECTION_TYPE]).optional(),\n});\n\nconst baseCreateContentTypeSchema = baseContentTypeSchema.extend({\n action: z.literal('create'),\n plugin: z.string().min(1).optional(),\n collectionName: z.string().regex(COLLECTION_NAME_REGEX).optional(),\n singularName: z\n .string()\n .min(1)\n .regex(KEBAB_BASE_REGEX, 'Must be kebab case')\n .refine((value) => !isReservedModelName(value), 'Model name is reserved'),\n pluralName: z\n .string()\n .min(1)\n .regex(KEBAB_BASE_REGEX, 'Must be kebab case')\n .refine((value) => !isReservedModelName(value), 'Model name is reserved'),\n config: z.record(z.string(), z.unknown()).optional(),\n});\n\nconst createSingleTypeSchema = baseCreateContentTypeSchema.extend({\n kind: z.literal(typeKinds.SINGLE_TYPE),\n attributes: z\n .array(\n createAttributeSchema({\n modelType: 'contentType',\n kind: 'singleType',\n })\n )\n .superRefine(uniqueAttributeName)\n .superRefine(verifyUidTargetField),\n});\n\nconst createCollectionTypeSchema = baseCreateContentTypeSchema.extend({\n kind: z.literal(typeKinds.COLLECTION_TYPE),\n attributes: z\n .array(\n createAttributeSchema({\n modelType: 'contentType',\n kind: 'collectionType',\n })\n )\n .superRefine(uniqueAttributeName)\n .superRefine(verifyUidTargetField),\n});\n\nconst baseUpdateContentTypeSchema = baseContentTypeSchema.extend({\n action: z.literal('update'),\n renames: renamesSchema,\n});\n\nconst updateSingleTypeSchema = baseUpdateContentTypeSchema.extend({\n kind: z.literal(typeKinds.SINGLE_TYPE).optional(),\n attributes: z\n .array(\n z.discriminatedUnion('action', [\n createAttributeSchema({\n modelType: 'contentType',\n kind: 'singleType',\n }),\n updateAttributeSchema({\n modelType: 'contentType',\n kind: 'singleType',\n }),\n deleteAttributeSchema,\n ])\n )\n .superRefine(uniqueAttributeName)\n .superRefine(verifyUidTargetField),\n});\n\nconst updateCollectionTypeSchema = baseUpdateContentTypeSchema.extend({\n kind: z.literal(typeKinds.COLLECTION_TYPE).optional(),\n attributes: z\n .array(\n z.union([\n createAttributeSchema({\n modelType: 'contentType',\n kind: 'collectionType',\n }),\n updateAttributeSchema({\n modelType: 'contentType',\n kind: 'collectionType',\n }),\n deleteAttributeSchema,\n ])\n )\n .superRefine(uniqueAttributeName)\n .superRefine(verifyUidTargetField),\n});\n\nconst deleteContentTypeSchema = z.object({\n action: z.literal('delete'),\n uid: contentTypeUIDSchema,\n});\n\nconst schemaSchema = z.object({\n components: z\n .array(z.union([createComponentSchema, updateComponentSchema, deleteComponentSchema]))\n .optional()\n .default([]),\n contentTypes: z\n .array(\n z\n .union([\n createSingleTypeSchema,\n createCollectionTypeSchema,\n updateSingleTypeSchema,\n updateCollectionTypeSchema,\n deleteContentTypeSchema,\n ])\n .superRefine(verifySingularAndPluralNames)\n .superRefine(verifyDraftAndPublishReservedAttributes)\n )\n .optional()\n .default([]),\n contentStructure: contentStructureFileSchema.optional(),\n});\n\ntype CreateComponentType = z.infer<typeof createComponentSchema>;\ntype UpdateComponentType = z.infer<typeof updateComponentSchema>;\ntype DeleteComponentType = z.infer<typeof deleteComponentSchema>;\ntype CreateCollectionType = z.infer<typeof createCollectionTypeSchema>;\ntype CreateSingleType = z.infer<typeof createSingleTypeSchema>;\ntype UpdateSingleType = z.infer<typeof updateSingleTypeSchema>;\ntype UpdateCollectionType = z.infer<typeof updateCollectionTypeSchema>;\ntype DeleteContentType = z.infer<typeof deleteContentTypeSchema>;\n\nexport type Schema = {\n components: Array<CreateComponentType | UpdateComponentType | DeleteComponentType>;\n contentTypes: Array<\n | CreateSingleType\n | CreateCollectionType\n | UpdateSingleType\n | UpdateCollectionType\n | DeleteContentType\n >;\n contentStructure?: ContentStructureFileInput;\n};\n\nconst updateSchemaInput = z.object(\n {\n data: schemaSchema,\n },\n {\n error: (issue) =>\n issue.input === undefined\n ? 'Schema is required'\n : 'Invalid schema, expected an object with a data property',\n }\n);\n\nexport const validateUpdateSchema = validateZodSchema(updateSchemaInput);\n"],"names":["uniqueAttributeName","attributes","ctx","names","Set","map","attribute","snakeCase","name","size","length","addIssue","code","message","verifyUidTargetField","forEach","properties","action","type","targetField","targetAttr","find","attr","VALID_UID_TARGETS","some","validUIdTarget","verifySingularAndPluralNames","obj","singularName","pluralName","path","getEffectiveAttributeNames","contentType","filter","uid","existingAttributes","strapi","contentTypes","Object","entries","isConfigurable","add","verifyDraftAndPublishReservedAttributes","draftAndPublish","reservedAttributeNames","findDraftAndPublishReservedAttributeNames","getDraftAndPublishEnableBlockedMessage","maxLengthGreaterThanMinLength","value","maxLength","minLength","isNumber","maxGreaterThanMin","max","min","checkUserTarget","target","undefined","relation","targetAttribute","coreUids","STRAPI_USER","STRAPI_USER_RELATIONS","includes","join","uidRefinement","default","enumRefinement","enum","v","conditionSchema","z","object","visible","record","string","array","any","basePropertiesSchema","configurable","boolean","nullish","private","searchable","optional","pluginOptions","unknown","conditions","preprocess","val","maxLengthSchema","number","int","positive","minLengthSchema","requiredSchema","uniqueSchema","baseRelationSchema","literal","required","oneToOneSchema","extend","oneWaySchema","oneToManySchema","manyWaySchema","manyToOneSchema","manyToManySchema","morphOneSchema","morphManySchema","morphToOneSchema","morphToManySchema","createRelationSchema","meta","modelType","kind","discriminatedUnion","Error","richTextSchema","blocksSchema","jsonSchema","refine","isObject","Array","isArray","JSON","parse","enumerationSchema","enumName","NAME_REGEX","test","strings","startsWithANumber","values","filtered","textSchema","unique","regex","RegExp","stringSchema","passwordSchema","emailSchema","email","integerSchema","bigIntegerSchema","floatSchema","decimalSchema","timeSchema","dateSchema","dateTimeSchema","timeStampSchema","booleanSchema","componentSchema","component","repeatable","dynamicZoneSchema","components","nonempty","mediaSchema","multiple","allowedTypes","uidSchema","options","separator","lowercase","decamelize","customReplacements","preserveLeadingUnderscore","customFieldSchema","customField","attributePropertiesSchema","relationSchema","base","union","passthrough","superRefine","createAttributeSchema","isReservedAttributeName","updateAttributeSchema","renameHopNameSchema","renameHopOldNameSchema","renameHopNewNameSchema","renamesSchema","oldName","newName","hop","deleteAttributeSchema","contentTypeUIDSchema","custom","componentUIDSchema","categorySchema","CATEGORY_NAME_REGEX","baseComponentSchema","displayName","icon","ICON_REGEX","description","category","createComponentSchema","config","updateComponentSchema","renames","deleteComponentSchema","baseContentTypeSchema","typeKinds","SINGLE_TYPE","COLLECTION_TYPE","baseCreateContentTypeSchema","plugin","collectionName","COLLECTION_NAME_REGEX","KEBAB_BASE_REGEX","isReservedModelName","createSingleTypeSchema","createCollectionTypeSchema","baseUpdateContentTypeSchema","updateSingleTypeSchema","updateCollectionTypeSchema","deleteContentTypeSchema","schemaSchema","contentStructure","contentStructureFileSchema","updateSchemaInput","data","error","issue","input","validateUpdateSchema","validateZodSchema"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"schema.js","sources":["../../../../server/src/controllers/validation/schema.ts"],"sourcesContent":["import * as z from 'zod/v4';\nimport { strings, validateZodSchema, contentTypes } from '@strapi/utils';\nimport type { Struct, UID } from '@strapi/types';\nimport { isNumber, isObject, snakeCase } from 'lodash';\n\nimport { isReservedAttributeName, isReservedModelName } from '../../services/builder';\nimport { coreUids, typeKinds } from '../../services/constants';\nimport { isConfigurable } from '../../utils/attributes';\nimport { isValidUidTarget } from '../../utils/uid-target';\n\nimport {\n CATEGORY_NAME_REGEX,\n ICON_REGEX,\n COLLECTION_NAME_REGEX,\n KEBAB_BASE_REGEX,\n NAME_REGEX,\n} from './common';\nimport { contentStructureFileSchema, type ContentStructureFileInput } from './content-structure';\n\ntype SchemaMeta =\n | {\n modelType: 'contentType';\n kind?: Struct.ContentTypeKind;\n }\n | {\n modelType: 'component';\n };\n\ntype SuperRefinement<T> = (value: T, ctx: z.RefinementCtx) => void | Promise<void>;\n\nconst uniqueAttributeName: SuperRefinement<{ name: string }[]> = (attributes, ctx) => {\n const names = new Set(attributes.map((attribute) => snakeCase(attribute.name)));\n if (names.size !== attributes.length) {\n ctx.addIssue({\n code: 'custom',\n message: 'Attributes must have unique names',\n });\n }\n};\n\nconst verifyUidTargetField: SuperRefinement<\n {\n action: 'create' | 'update' | 'delete';\n name: string;\n properties?: {\n type: unknown;\n customField?: unknown;\n targetField?: string | null;\n };\n }[]\n> = (attributes, ctx) => {\n attributes.forEach((attribute) => {\n if (!attribute.properties) {\n return;\n }\n\n const { properties, action } = attribute;\n\n if (properties.type === 'uid' && properties.targetField) {\n const targetAttr = attributes.find(\n (attr) => attr.action !== 'delete' && attr.name === properties.targetField\n );\n\n if (!targetAttr) {\n // NOTE: on update we are setting it to undefined later in the process instead to handle renames\n if (action === 'create') {\n ctx.addIssue({\n code: 'custom',\n message: 'Target does not exist',\n });\n }\n } else if (!targetAttr.properties || !isValidUidTarget(targetAttr.properties)) {\n ctx.addIssue({\n code: 'custom',\n message: 'Invalid target type',\n });\n }\n }\n });\n};\n\nconst verifySingularAndPluralNames: SuperRefinement<Record<string, unknown>> = (obj, ctx) => {\n // singular and plural can only be provided on creation\n if (obj.action !== 'create') {\n return;\n }\n\n if (obj.singularName === obj.pluralName) {\n ctx.addIssue({\n code: 'custom',\n message: 'Singular and plural names must be different',\n path: ['singularName'],\n });\n }\n};\n\ntype ContentTypeSchemaAction = {\n action: 'create' | 'update' | 'delete';\n draftAndPublish?: boolean;\n uid?: UID.ContentType;\n renames?: Array<{ oldName: string; newName: string }>;\n attributes?: Array<{ action: 'create' | 'update' | 'delete'; name: string }>;\n};\n\n// The payload carries the full attribute list and the saved schema is built from\n// it, so the names that will be written are the payload attributes that are not\n// deleted. The rename hops do not decide what is saved. The one exception is\n// non-configurable attributes: the builder keeps them from the current schema\n// whatever the payload says, so they are always part of the saved schema.\nconst getEffectiveAttributeNames = (contentType: ContentTypeSchemaAction): string[] => {\n const names = new Set(\n (contentType.attributes ?? [])\n .filter((attribute) => attribute.action !== 'delete')\n .map((attribute) => attribute.name)\n );\n\n if (contentType.action === 'update' && contentType.uid) {\n const existingAttributes = strapi.contentTypes[contentType.uid]?.attributes ?? {};\n\n for (const [name, attribute] of Object.entries(existingAttributes)) {\n if (!isConfigurable(attribute)) {\n names.add(name);\n }\n }\n }\n\n return [...names];\n};\n\nexport const verifyDraftAndPublishReservedAttributes: SuperRefinement<ContentTypeSchemaAction> = (\n contentType,\n ctx\n) => {\n if (contentType.action === 'delete' || !contentType.draftAndPublish) {\n return;\n }\n\n const reservedAttributeNames = contentTypes.findDraftAndPublishReservedAttributeNames(\n getEffectiveAttributeNames(contentType)\n );\n\n if (reservedAttributeNames.length > 0) {\n ctx.addIssue({\n code: 'custom',\n message: contentTypes.getDraftAndPublishEnableBlockedMessage(reservedAttributeNames),\n path: ['draftAndPublish'],\n });\n }\n};\n\nexport const maxLengthGreaterThanMinLength: SuperRefinement<Record<string, unknown>> = (\n value,\n ctx\n) => {\n if (\n value.maxLength != null &&\n value.minLength != null &&\n isNumber(value.maxLength) &&\n isNumber(value.minLength)\n ) {\n if (value.maxLength < value.minLength) {\n ctx.addIssue({\n code: 'custom',\n message: 'maxLength must be greater or equal to minLength',\n path: ['maxLength'],\n });\n }\n }\n};\n\nexport const maxGreaterThanMin: SuperRefinement<Record<string, unknown>> = (value, ctx) => {\n if (value.max != null && value.min != null && isNumber(value.max) && isNumber(value.min)) {\n if (value.max < value.min) {\n ctx.addIssue({\n code: 'custom',\n message: 'max must be greater or equal to min',\n path: ['max'],\n });\n }\n }\n};\n\nconst checkUserTarget: SuperRefinement<{\n type: string;\n target?: string;\n relation?: string;\n targetAttribute?: string | null;\n}> = (value, ctx) => {\n if (value.type !== 'relation') {\n return;\n }\n\n if (value.target === undefined || value.relation === undefined) {\n return;\n }\n\n const { target, relation, targetAttribute } = value;\n\n if (\n target === coreUids.STRAPI_USER &&\n (!STRAPI_USER_RELATIONS.includes(relation) || targetAttribute !== undefined)\n ) {\n ctx.addIssue({\n code: 'custom',\n path: ['relation'],\n message: `Relations to ${coreUids.STRAPI_USER} must be one of the following values: ${STRAPI_USER_RELATIONS.join(', ')} without targetAttribute`,\n });\n }\n};\n\nconst uidRefinement: SuperRefinement<{\n type: string;\n default?: unknown;\n targetField?: string | null;\n}> = (value, ctx) => {\n if (value.targetField != null && value.default != null) {\n ctx.addIssue({\n code: 'custom',\n message: 'Cannot define a default UID if the targetField is set',\n path: ['default'],\n });\n }\n};\n\nconst enumRefinement: SuperRefinement<{\n type: string;\n default?: unknown;\n enum?: string[];\n}> = (value, ctx) => {\n if (value.type === 'enumeration' && value.default != null && value.enum != null) {\n if (value.default === '' || !value.enum.some((v) => v === value.default)) {\n ctx.addIssue({\n code: 'custom',\n message: 'Default value must be one of the enum values',\n path: ['default'],\n });\n }\n }\n};\n\nconst conditionSchema = z.object({\n visible: z.record(z.string(), z.array(z.any())),\n});\n\nconst basePropertiesSchema = z.object({\n type: z.enum([\n 'string',\n 'text',\n 'richtext',\n 'blocks',\n 'json',\n 'enumeration',\n 'password',\n 'email',\n 'integer',\n 'biginteger',\n 'float',\n 'decimal',\n 'time',\n 'datetime',\n 'date',\n 'timestamp',\n 'boolean',\n 'component',\n 'uid',\n 'customField',\n 'media',\n 'relation',\n 'dynamiczone',\n ]),\n configurable: z.boolean().nullish(),\n private: z.boolean().nullish(),\n // Keep null invalid so searchability is always an explicit boolean when provided.\n searchable: z.boolean().optional(),\n pluginOptions: z.record(z.string(), z.unknown()).optional(),\n conditions: z.preprocess((val) => {\n return val;\n }, conditionSchema.optional()),\n});\n\nconst maxLengthSchema = z.number().int().positive().optional();\nconst minLengthSchema = z.number().int().positive().optional();\n\nconst requiredSchema = z.boolean().optional();\nconst uniqueSchema = z.boolean().optional();\n\nconst STRAPI_USER_RELATIONS = ['oneToOne', 'oneToMany'];\n\nconst baseRelationSchema = z.object({\n type: z.literal('relation'),\n relation: z.enum([\n 'oneToOne',\n 'oneToMany',\n 'manyToOne',\n 'manyToMany',\n 'morphOne',\n 'morphMany',\n 'morphToOne',\n 'morphToMany',\n ]),\n configurable: z.boolean().nullish(),\n required: requiredSchema,\n private: z.boolean().nullish(),\n pluginOptions: z.record(z.string(), z.unknown()).optional(),\n conditions: z.preprocess((val) => {\n return val;\n }, conditionSchema.optional()),\n});\n\nconst oneToOneSchema = baseRelationSchema.extend({\n relation: z.literal('oneToOne'),\n target: z.string(),\n targetAttribute: z.string().nullish(),\n});\n\nconst oneWaySchema = baseRelationSchema.extend({\n relation: z.literal('oneToOne'),\n target: z.string(),\n});\n\nconst oneToManySchema = baseRelationSchema.extend({\n relation: z.literal('oneToMany'),\n target: z.string(),\n targetAttribute: z.string().nullish(),\n});\n\nconst manyWaySchema = baseRelationSchema.extend({\n relation: z.literal('oneToMany'),\n target: z.string(),\n});\n\nconst manyToOneSchema = baseRelationSchema.extend({\n relation: z.literal('manyToOne'),\n target: z.string(),\n targetAttribute: z.string().nullish(),\n});\n\nconst manyToManySchema = baseRelationSchema.extend({\n relation: z.literal('manyToMany'),\n target: z.string(),\n targetAttribute: z.string().nullish(),\n});\n\nconst morphOneSchema = baseRelationSchema.extend({\n relation: z.literal('morphOne'),\n target: z.string(),\n targetAttribute: z.string().nullish(),\n});\n\nconst morphManySchema = baseRelationSchema.extend({\n relation: z.literal('morphMany'),\n target: z.string(),\n targetAttribute: z.string().nullish(),\n});\n\nconst morphToOneSchema = baseRelationSchema.extend({\n relation: z.literal('morphToOne'),\n});\n\nconst morphToManySchema = baseRelationSchema.extend({\n relation: z.literal('morphToMany'),\n});\n\nconst createRelationSchema = (meta: SchemaMeta) => {\n switch (meta.modelType) {\n case 'contentType': {\n switch (meta.kind) {\n case 'singleType':\n return z.discriminatedUnion('relation', [\n oneToOneSchema,\n oneToManySchema,\n morphOneSchema,\n morphManySchema,\n morphToOneSchema,\n morphToManySchema,\n ]);\n\n case 'collectionType':\n return z.discriminatedUnion('relation', [\n oneToOneSchema,\n oneToManySchema,\n manyToOneSchema,\n manyToManySchema,\n morphOneSchema,\n morphManySchema,\n morphToOneSchema,\n morphToManySchema,\n ]);\n default:\n throw new Error('Invalid content type kind');\n }\n }\n\n case 'component': {\n return z.discriminatedUnion('relation', [oneWaySchema, manyWaySchema]);\n }\n default:\n throw new Error('Invalid model type');\n }\n};\n\nconst richTextSchema = basePropertiesSchema.extend({\n type: z.literal('richtext'),\n required: requiredSchema,\n minLength: minLengthSchema,\n maxLength: maxLengthSchema,\n default: z.string().optional(),\n});\n\nconst blocksSchema = basePropertiesSchema.extend({\n type: z.literal('blocks'),\n required: requiredSchema,\n});\n\nconst jsonSchema = basePropertiesSchema.extend({\n type: z.literal('json'),\n required: requiredSchema,\n default: z\n .unknown()\n .optional()\n .refine((value) => {\n if (value === undefined) {\n return true;\n }\n\n if (isNumber(value) || value === null || isObject(value) || Array.isArray(value)) {\n return true;\n }\n\n try {\n JSON.parse(value as string);\n\n return true;\n } catch {\n return false;\n }\n }),\n});\n\nconst enumerationSchema = basePropertiesSchema.extend({\n type: z.literal('enumeration'),\n required: requiredSchema,\n default: z.string().optional(),\n enumName: z\n .string()\n .optional()\n .refine((value) => {\n return value === '' || NAME_REGEX.test(value as string);\n }, 'Invalid enum name'),\n enum: z\n .array(\n z.string().refine((value) => {\n return value === '' || !strings.startsWithANumber(value as string);\n })\n )\n .min(1)\n .refine((values) => {\n const filtered = [...new Set(values)];\n return filtered.length === values.length;\n }),\n});\n\nconst textSchema = basePropertiesSchema.extend({\n type: z.literal('text'),\n default: z.string().nullish(),\n minLength: minLengthSchema,\n maxLength: maxLengthSchema,\n required: requiredSchema,\n unique: uniqueSchema,\n regex: z\n .string()\n .optional()\n .refine((value) => {\n return value === '' || !!new RegExp(value as string);\n }, 'Invalid regular expression pattern'),\n});\n\nconst stringSchema = textSchema.extend({\n type: z.literal('string'),\n});\n\nconst passwordSchema = basePropertiesSchema.extend({\n type: z.literal('password'),\n required: requiredSchema,\n minLength: minLengthSchema,\n maxLength: maxLengthSchema,\n});\n\nconst emailSchema = basePropertiesSchema.extend({\n type: z.literal('email'),\n required: requiredSchema,\n minLength: minLengthSchema,\n maxLength: maxLengthSchema,\n default: z.string().email().optional(),\n unique: uniqueSchema,\n});\n\nconst integerSchema = basePropertiesSchema.extend({\n type: z.literal('integer'),\n required: requiredSchema,\n default: z.number().int().optional(),\n unique: uniqueSchema,\n min: z.number().int().optional(),\n max: z.number().int().optional(),\n});\n\nconst bigIntegerSchema = basePropertiesSchema.extend({\n type: z.literal('biginteger'),\n required: requiredSchema,\n unique: uniqueSchema,\n default: z.string().regex(/^\\d*$/).nullish(),\n min: z.string().regex(/^\\d*$/).nullish(),\n max: z.string().regex(/^\\d*$/).nullish(),\n});\n\nconst floatSchema = basePropertiesSchema.extend({\n type: z.literal('float'),\n required: requiredSchema,\n unique: uniqueSchema,\n default: z.number().optional(),\n min: z.number().optional(),\n max: z.number().optional(),\n});\n\nconst decimalSchema = basePropertiesSchema.extend({\n type: z.literal('decimal'),\n required: requiredSchema,\n unique: uniqueSchema,\n default: z.number().optional(),\n min: z.number().optional(),\n max: z.number().optional(),\n});\n\nconst timeSchema = basePropertiesSchema.extend({\n type: z.literal('time'),\n required: requiredSchema,\n unique: uniqueSchema,\n default: z.string().optional(),\n});\n\nconst dateSchema = timeSchema.extend({\n type: z.literal('date'),\n});\n\nconst dateTimeSchema = timeSchema.extend({\n type: z.literal('datetime'),\n});\n\nconst timeStampSchema = basePropertiesSchema.extend({\n type: z.literal('timestamp'),\n});\n\nconst booleanSchema = basePropertiesSchema.extend({\n type: z.literal('boolean'),\n required: requiredSchema,\n default: z.boolean().optional(),\n});\n\nconst componentSchema = basePropertiesSchema.extend({\n type: z.literal('component'),\n component: z.string(),\n repeatable: z.boolean().optional(),\n required: requiredSchema,\n min: z.number().optional(),\n max: z.number().optional(),\n});\n\nconst dynamicZoneSchema = basePropertiesSchema.extend({\n type: z.literal('dynamiczone'),\n components: z.array(z.string()).nonempty(),\n required: requiredSchema,\n min: z.number().optional(),\n max: z.number().optional(),\n});\n\nconst mediaSchema = basePropertiesSchema.extend({\n type: z.literal('media'),\n multiple: z.boolean().optional(),\n required: requiredSchema,\n allowedTypes: z\n .array(z.enum(['images', 'videos', 'files', 'audios']))\n .nonempty()\n .optional(),\n});\n\nconst uidSchema = basePropertiesSchema.extend({\n type: z.literal('uid'),\n targetField: z.string().nullish(),\n required: requiredSchema,\n default: z.string().nullish(),\n minLength: minLengthSchema,\n maxLength: maxLengthSchema,\n options: z\n .object({\n separator: z.string().optional(),\n lowercase: z.boolean().optional(),\n decamelize: z.boolean().optional(),\n customReplacements: z.array(z.array(z.string()).length(2)).optional(),\n preserveLeadingUnderscore: z.boolean().optional(),\n })\n .optional(),\n regex: z\n .string()\n .optional()\n .refine((value) => {\n return value === '' || !!new RegExp(value as string);\n }, 'Invalid regular expression pattern'),\n});\n\nconst customFieldSchema = basePropertiesSchema.extend({\n type: z.literal('customField'),\n customField: z.string(),\n});\n\nconst attributePropertiesSchema = (meta: SchemaMeta) => {\n const relationSchema = createRelationSchema(meta);\n\n const base = z.union([\n mediaSchema,\n textSchema,\n stringSchema,\n richTextSchema,\n blocksSchema,\n jsonSchema,\n enumerationSchema,\n passwordSchema,\n emailSchema,\n integerSchema,\n bigIntegerSchema,\n floatSchema,\n decimalSchema,\n timeSchema,\n dateSchema,\n dateTimeSchema,\n timeStampSchema,\n booleanSchema,\n componentSchema,\n customFieldSchema.passthrough(),\n\n relationSchema,\n ]);\n\n if (meta.modelType === 'component') {\n return base\n .superRefine(enumRefinement)\n .superRefine(checkUserTarget)\n .superRefine(maxGreaterThanMin)\n .superRefine(maxLengthGreaterThanMinLength);\n }\n\n return z\n .union([...base.options, uidSchema, dynamicZoneSchema])\n .superRefine(enumRefinement)\n .superRefine(checkUserTarget)\n .superRefine(uidRefinement)\n .superRefine(maxGreaterThanMin)\n .superRefine(maxLengthGreaterThanMinLength);\n};\n\nconst createAttributeSchema = (meta: SchemaMeta) =>\n z.object({\n action: z.literal('create'),\n name: z\n .string()\n .regex(NAME_REGEX)\n .refine((value) => !isReservedAttributeName(value), 'Attribute name is reserved'),\n properties: attributePropertiesSchema(meta),\n });\n\nconst updateAttributeSchema = (meta: SchemaMeta) =>\n z.object({\n action: z.literal('update'),\n name: z.string(),\n properties: attributePropertiesSchema(meta),\n });\n\n// Ordered list of attribute rename hops performed by the user for a given\n// content-type / component, used to generate a data-preserving rename migration.\n// The order is significant: the migration replays each hop verbatim.\n// Names end up in generated migration code, so they are held to the attribute\n// name rules. The new name is held to the same reserved-name rules as a newly\n// created attribute. The old name only has to be a name an attribute can\n// legally carry today: `status` is reserved only while draft and publish is\n// enabled, and renaming it away is exactly how a type gets to enable it.\nconst renameHopNameSchema = z.string().min(1).max(64).regex(NAME_REGEX);\n\nconst renameHopOldNameSchema = renameHopNameSchema.refine(\n (value) => !contentTypes.isReservedAttributeName(value, { draftAndPublish: false }),\n 'Attribute name is reserved'\n);\n\nconst renameHopNewNameSchema = renameHopNameSchema.refine(\n (value) => !isReservedAttributeName(value),\n 'Attribute name is reserved'\n);\n\nconst renamesSchema = z\n .array(\n z\n .object({\n oldName: renameHopOldNameSchema,\n newName: renameHopNewNameSchema,\n })\n .refine((hop) => hop.oldName !== hop.newName, 'A rename must change the attribute name')\n )\n .max(200)\n .optional();\n\nconst deleteAttributeSchema = z.object({\n action: z.literal('delete'),\n name: z.string(),\n});\n\nconst contentTypeUIDSchema = z.custom<UID.ContentType>((value) => {\n return typeof value === 'string' && value.length > 0;\n});\n\nconst componentUIDSchema = z.custom<UID.Component>((value) => {\n return typeof value === 'string' && value.length > 0;\n});\n\nconst categorySchema = z.string().min(1).regex(CATEGORY_NAME_REGEX);\n\nconst baseComponentSchema = z.object({\n uid: componentUIDSchema,\n displayName: z.string().min(1),\n icon: z.string().regex(ICON_REGEX).optional(),\n description: z.string().optional(),\n category: categorySchema,\n pluginOptions: z.record(z.string(), z.unknown()).optional(),\n});\n\nconst createComponentSchema = baseComponentSchema.extend({\n action: z.literal('create'),\n config: z.record(z.string(), z.unknown()).optional().default({}),\n attributes: z\n .array(\n createAttributeSchema({\n modelType: 'component',\n })\n )\n .superRefine(uniqueAttributeName),\n});\n\nconst updateComponentSchema = baseComponentSchema.extend({\n action: z.literal('update'),\n category: categorySchema.optional(),\n renames: renamesSchema,\n attributes: z\n .array(\n z.discriminatedUnion('action', [\n createAttributeSchema({\n modelType: 'component',\n }),\n updateAttributeSchema({\n modelType: 'component',\n }),\n deleteAttributeSchema,\n ])\n )\n .superRefine(uniqueAttributeName),\n});\n\nconst deleteComponentSchema = z.object({\n action: z.literal('delete'),\n uid: componentUIDSchema,\n});\n\nconst baseContentTypeSchema = z.object({\n uid: contentTypeUIDSchema,\n displayName: z.string().min(1),\n description: z.string().optional(),\n draftAndPublish: z.boolean(),\n options: z.record(z.string(), z.unknown()).optional().default({}),\n pluginOptions: z.record(z.string(), z.unknown()).optional().default({}),\n kind: z.enum([typeKinds.SINGLE_TYPE, typeKinds.COLLECTION_TYPE]).optional(),\n});\n\nconst baseCreateContentTypeSchema = baseContentTypeSchema.extend({\n action: z.literal('create'),\n plugin: z.string().min(1).optional(),\n collectionName: z.string().regex(COLLECTION_NAME_REGEX).optional(),\n singularName: z\n .string()\n .min(1)\n .regex(KEBAB_BASE_REGEX, 'Must be kebab case')\n .refine((value) => !isReservedModelName(value), 'Model name is reserved'),\n pluralName: z\n .string()\n .min(1)\n .regex(KEBAB_BASE_REGEX, 'Must be kebab case')\n .refine((value) => !isReservedModelName(value), 'Model name is reserved'),\n config: z.record(z.string(), z.unknown()).optional(),\n});\n\nconst createSingleTypeSchema = baseCreateContentTypeSchema.extend({\n kind: z.literal(typeKinds.SINGLE_TYPE),\n attributes: z\n .array(\n createAttributeSchema({\n modelType: 'contentType',\n kind: 'singleType',\n })\n )\n .superRefine(uniqueAttributeName)\n .superRefine(verifyUidTargetField),\n});\n\nconst createCollectionTypeSchema = baseCreateContentTypeSchema.extend({\n kind: z.literal(typeKinds.COLLECTION_TYPE),\n attributes: z\n .array(\n createAttributeSchema({\n modelType: 'contentType',\n kind: 'collectionType',\n })\n )\n .superRefine(uniqueAttributeName)\n .superRefine(verifyUidTargetField),\n});\n\nconst baseUpdateContentTypeSchema = baseContentTypeSchema.extend({\n action: z.literal('update'),\n renames: renamesSchema,\n});\n\nconst updateSingleTypeSchema = baseUpdateContentTypeSchema.extend({\n kind: z.literal(typeKinds.SINGLE_TYPE).optional(),\n attributes: z\n .array(\n z.discriminatedUnion('action', [\n createAttributeSchema({\n modelType: 'contentType',\n kind: 'singleType',\n }),\n updateAttributeSchema({\n modelType: 'contentType',\n kind: 'singleType',\n }),\n deleteAttributeSchema,\n ])\n )\n .superRefine(uniqueAttributeName)\n .superRefine(verifyUidTargetField),\n});\n\nconst updateCollectionTypeSchema = baseUpdateContentTypeSchema.extend({\n kind: z.literal(typeKinds.COLLECTION_TYPE).optional(),\n attributes: z\n .array(\n z.union([\n createAttributeSchema({\n modelType: 'contentType',\n kind: 'collectionType',\n }),\n updateAttributeSchema({\n modelType: 'contentType',\n kind: 'collectionType',\n }),\n deleteAttributeSchema,\n ])\n )\n .superRefine(uniqueAttributeName)\n .superRefine(verifyUidTargetField),\n});\n\nconst deleteContentTypeSchema = z.object({\n action: z.literal('delete'),\n uid: contentTypeUIDSchema,\n});\n\nconst schemaSchema = z.object({\n components: z\n .array(z.union([createComponentSchema, updateComponentSchema, deleteComponentSchema]))\n .optional()\n .default([]),\n contentTypes: z\n .array(\n z\n .union([\n createSingleTypeSchema,\n createCollectionTypeSchema,\n updateSingleTypeSchema,\n updateCollectionTypeSchema,\n deleteContentTypeSchema,\n ])\n .superRefine(verifySingularAndPluralNames)\n .superRefine(verifyDraftAndPublishReservedAttributes)\n )\n .optional()\n .default([]),\n contentStructure: contentStructureFileSchema.optional(),\n});\n\ntype CreateComponentType = z.infer<typeof createComponentSchema>;\ntype UpdateComponentType = z.infer<typeof updateComponentSchema>;\ntype DeleteComponentType = z.infer<typeof deleteComponentSchema>;\ntype CreateCollectionType = z.infer<typeof createCollectionTypeSchema>;\ntype CreateSingleType = z.infer<typeof createSingleTypeSchema>;\ntype UpdateSingleType = z.infer<typeof updateSingleTypeSchema>;\ntype UpdateCollectionType = z.infer<typeof updateCollectionTypeSchema>;\ntype DeleteContentType = z.infer<typeof deleteContentTypeSchema>;\n\nexport type Schema = {\n components: Array<CreateComponentType | UpdateComponentType | DeleteComponentType>;\n contentTypes: Array<\n | CreateSingleType\n | CreateCollectionType\n | UpdateSingleType\n | UpdateCollectionType\n | DeleteContentType\n >;\n contentStructure?: ContentStructureFileInput;\n};\n\nconst updateSchemaInput = z.object(\n {\n data: schemaSchema,\n },\n {\n error: (issue) =>\n issue.input === undefined\n ? 'Schema is required'\n : 'Invalid schema, expected an object with a data property',\n }\n);\n\nexport const validateUpdateSchema = validateZodSchema(updateSchemaInput);\n"],"names":["uniqueAttributeName","attributes","ctx","names","Set","map","attribute","snakeCase","name","size","length","addIssue","code","message","verifyUidTargetField","forEach","properties","action","type","targetField","targetAttr","find","attr","isValidUidTarget","verifySingularAndPluralNames","obj","singularName","pluralName","path","getEffectiveAttributeNames","contentType","filter","uid","existingAttributes","strapi","contentTypes","Object","entries","isConfigurable","add","verifyDraftAndPublishReservedAttributes","draftAndPublish","reservedAttributeNames","findDraftAndPublishReservedAttributeNames","getDraftAndPublishEnableBlockedMessage","maxLengthGreaterThanMinLength","value","maxLength","minLength","isNumber","maxGreaterThanMin","max","min","checkUserTarget","target","undefined","relation","targetAttribute","coreUids","STRAPI_USER","STRAPI_USER_RELATIONS","includes","join","uidRefinement","default","enumRefinement","enum","some","v","conditionSchema","z","object","visible","record","string","array","any","basePropertiesSchema","configurable","boolean","nullish","private","searchable","optional","pluginOptions","unknown","conditions","preprocess","val","maxLengthSchema","number","int","positive","minLengthSchema","requiredSchema","uniqueSchema","baseRelationSchema","literal","required","oneToOneSchema","extend","oneWaySchema","oneToManySchema","manyWaySchema","manyToOneSchema","manyToManySchema","morphOneSchema","morphManySchema","morphToOneSchema","morphToManySchema","createRelationSchema","meta","modelType","kind","discriminatedUnion","Error","richTextSchema","blocksSchema","jsonSchema","refine","isObject","Array","isArray","JSON","parse","enumerationSchema","enumName","NAME_REGEX","test","strings","startsWithANumber","values","filtered","textSchema","unique","regex","RegExp","stringSchema","passwordSchema","emailSchema","email","integerSchema","bigIntegerSchema","floatSchema","decimalSchema","timeSchema","dateSchema","dateTimeSchema","timeStampSchema","booleanSchema","componentSchema","component","repeatable","dynamicZoneSchema","components","nonempty","mediaSchema","multiple","allowedTypes","uidSchema","options","separator","lowercase","decamelize","customReplacements","preserveLeadingUnderscore","customFieldSchema","customField","attributePropertiesSchema","relationSchema","base","union","passthrough","superRefine","createAttributeSchema","isReservedAttributeName","updateAttributeSchema","renameHopNameSchema","renameHopOldNameSchema","renameHopNewNameSchema","renamesSchema","oldName","newName","hop","deleteAttributeSchema","contentTypeUIDSchema","custom","componentUIDSchema","categorySchema","CATEGORY_NAME_REGEX","baseComponentSchema","displayName","icon","ICON_REGEX","description","category","createComponentSchema","config","updateComponentSchema","renames","deleteComponentSchema","baseContentTypeSchema","typeKinds","SINGLE_TYPE","COLLECTION_TYPE","baseCreateContentTypeSchema","plugin","collectionName","COLLECTION_NAME_REGEX","KEBAB_BASE_REGEX","isReservedModelName","createSingleTypeSchema","createCollectionTypeSchema","baseUpdateContentTypeSchema","updateSingleTypeSchema","updateCollectionTypeSchema","deleteContentTypeSchema","schemaSchema","contentStructure","contentStructureFileSchema","updateSchemaInput","data","error","issue","input","validateUpdateSchema","validateZodSchema"],"mappings":"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"}
|
|
@@ -2,8 +2,9 @@ import * as z from 'zod/v4';
|
|
|
2
2
|
import { strings, contentTypes, validateZodSchema } from '@strapi/utils';
|
|
3
3
|
import { isNumber, isObject, snakeCase } from 'lodash';
|
|
4
4
|
import { isReservedAttributeName, isReservedModelName } from '../../services/builder.mjs';
|
|
5
|
-
import { typeKinds,
|
|
5
|
+
import { typeKinds, coreUids } from '../../services/constants.mjs';
|
|
6
6
|
import { isConfigurable } from '../../utils/attributes.mjs';
|
|
7
|
+
import { isValidUidTarget } from '../../utils/uid-target.mjs';
|
|
7
8
|
import { NAME_REGEX, CATEGORY_NAME_REGEX, ICON_REGEX, KEBAB_BASE_REGEX, COLLECTION_NAME_REGEX } from './common.mjs';
|
|
8
9
|
import { contentStructureFileSchema } from './content-structure.mjs';
|
|
9
10
|
|
|
@@ -23,7 +24,7 @@ const verifyUidTargetField = (attributes, ctx)=>{
|
|
|
23
24
|
}
|
|
24
25
|
const { properties, action } = attribute;
|
|
25
26
|
if (properties.type === 'uid' && properties.targetField) {
|
|
26
|
-
const targetAttr = attributes.find((attr)=>attr.name === properties.targetField);
|
|
27
|
+
const targetAttr = attributes.find((attr)=>attr.action !== 'delete' && attr.name === properties.targetField);
|
|
27
28
|
if (!targetAttr) {
|
|
28
29
|
// NOTE: on update we are setting it to undefined later in the process instead to handle renames
|
|
29
30
|
if (action === 'create') {
|
|
@@ -32,7 +33,7 @@ const verifyUidTargetField = (attributes, ctx)=>{
|
|
|
32
33
|
message: 'Target does not exist'
|
|
33
34
|
});
|
|
34
35
|
}
|
|
35
|
-
} else if (!
|
|
36
|
+
} else if (!targetAttr.properties || !isValidUidTarget(targetAttr.properties)) {
|
|
36
37
|
ctx.addIssue({
|
|
37
38
|
code: 'custom',
|
|
38
39
|
message: 'Invalid target type'
|