@strapi/content-type-builder 5.56.0 → 5.57.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.
Files changed (146) hide show
  1. package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.js +117 -13
  2. package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.js.map +1 -1
  3. package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.mjs +118 -13
  4. package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.mjs.map +1 -1
  5. package/dist/admin/components/AIChat/providers/SchemaProvider.js +31 -19
  6. package/dist/admin/components/AIChat/providers/SchemaProvider.js.map +1 -1
  7. package/dist/admin/components/AIChat/providers/SchemaProvider.mjs +31 -19
  8. package/dist/admin/components/AIChat/providers/SchemaProvider.mjs.map +1 -1
  9. package/dist/admin/components/DataManager/DataManagerContext.js.map +1 -1
  10. package/dist/admin/components/DataManager/DataManagerContext.mjs.map +1 -1
  11. package/dist/admin/components/DataManager/DataManagerProvider.js +166 -6
  12. package/dist/admin/components/DataManager/DataManagerProvider.js.map +1 -1
  13. package/dist/admin/components/DataManager/DataManagerProvider.mjs +165 -7
  14. package/dist/admin/components/DataManager/DataManagerProvider.mjs.map +1 -1
  15. package/dist/admin/components/DataManager/RenameMigrationModal.js +285 -0
  16. package/dist/admin/components/DataManager/RenameMigrationModal.js.map +1 -0
  17. package/dist/admin/components/DataManager/RenameMigrationModal.mjs +257 -0
  18. package/dist/admin/components/DataManager/RenameMigrationModal.mjs.map +1 -0
  19. package/dist/admin/components/DataManager/reducer.js +107 -2
  20. package/dist/admin/components/DataManager/reducer.js.map +1 -1
  21. package/dist/admin/components/DataManager/reducer.mjs +106 -2
  22. package/dist/admin/components/DataManager/reducer.mjs.map +1 -1
  23. package/dist/admin/components/DataManager/utils/cleanData.js +8 -1
  24. package/dist/admin/components/DataManager/utils/cleanData.js.map +1 -1
  25. package/dist/admin/components/DataManager/utils/cleanData.mjs +8 -1
  26. package/dist/admin/components/DataManager/utils/cleanData.mjs.map +1 -1
  27. package/dist/admin/components/DataManager/utils/groupRenameChains.js +86 -0
  28. package/dist/admin/components/DataManager/utils/groupRenameChains.js.map +1 -0
  29. package/dist/admin/components/DataManager/utils/groupRenameChains.mjs +84 -0
  30. package/dist/admin/components/DataManager/utils/groupRenameChains.mjs.map +1 -0
  31. package/dist/admin/components/DataManager/utils/isStorageCompatibleRename.js +29 -0
  32. package/dist/admin/components/DataManager/utils/isStorageCompatibleRename.js.map +1 -0
  33. package/dist/admin/components/DataManager/utils/isStorageCompatibleRename.mjs +27 -0
  34. package/dist/admin/components/DataManager/utils/isStorageCompatibleRename.mjs.map +1 -0
  35. package/dist/admin/components/DataManager/utils/resolveAfterEditRenameConsent.js +35 -0
  36. package/dist/admin/components/DataManager/utils/resolveAfterEditRenameConsent.js.map +1 -0
  37. package/dist/admin/components/DataManager/utils/resolveAfterEditRenameConsent.mjs +33 -0
  38. package/dist/admin/components/DataManager/utils/resolveAfterEditRenameConsent.mjs.map +1 -0
  39. package/dist/admin/components/DataManager/utils/splitChainsByInheritedConsent.js +48 -0
  40. package/dist/admin/components/DataManager/utils/splitChainsByInheritedConsent.js.map +1 -0
  41. package/dist/admin/components/DataManager/utils/splitChainsByInheritedConsent.mjs +45 -0
  42. package/dist/admin/components/DataManager/utils/splitChainsByInheritedConsent.mjs.map +1 -0
  43. package/dist/admin/components/FormModal/FormModal.js +142 -8
  44. package/dist/admin/components/FormModal/FormModal.js.map +1 -1
  45. package/dist/admin/components/FormModal/FormModal.mjs +143 -9
  46. package/dist/admin/components/FormModal/FormModal.mjs.map +1 -1
  47. package/dist/admin/components/FormModal/attributes/validation/common.js +6 -5
  48. package/dist/admin/components/FormModal/attributes/validation/common.js.map +1 -1
  49. package/dist/admin/components/FormModal/attributes/validation/common.mjs +1 -1
  50. package/dist/admin/components/FormModal/attributes/validation/common.mjs.map +1 -1
  51. package/dist/admin/components/FormModal/component/createComponentSchema.js +10 -7
  52. package/dist/admin/components/FormModal/component/createComponentSchema.js.map +1 -1
  53. package/dist/admin/components/FormModal/component/createComponentSchema.mjs +1 -1
  54. package/dist/admin/components/FormModal/component/createComponentSchema.mjs.map +1 -1
  55. package/dist/admin/components/FormModal/contentType/createContentTypeSchema.js +24 -21
  56. package/dist/admin/components/FormModal/contentType/createContentTypeSchema.js.map +1 -1
  57. package/dist/admin/components/FormModal/contentType/createContentTypeSchema.mjs +1 -1
  58. package/dist/admin/components/FormModal/contentType/createContentTypeSchema.mjs.map +1 -1
  59. package/dist/admin/components/FormModal/forms/utils/createCollectionName.js +3 -2
  60. package/dist/admin/components/FormModal/forms/utils/createCollectionName.js.map +1 -1
  61. package/dist/admin/components/FormModal/forms/utils/createCollectionName.mjs +1 -1
  62. package/dist/admin/components/FormModal/forms/utils/createCollectionName.mjs.map +1 -1
  63. package/dist/admin/components/FormModal/utils/getRenameStorageChange.js +73 -0
  64. package/dist/admin/components/FormModal/utils/getRenameStorageChange.js.map +1 -0
  65. package/dist/admin/components/FormModal/utils/getRenameStorageChange.mjs +70 -0
  66. package/dist/admin/components/FormModal/utils/getRenameStorageChange.mjs.map +1 -0
  67. package/dist/admin/src/components/AIChat/lib/transforms/schemas/toCTB.d.ts +4 -3
  68. package/dist/admin/src/components/AIChat/lib/types/schema.d.ts +6 -1
  69. package/dist/admin/src/components/DataManager/DataManagerContext.d.ts +28 -2
  70. package/dist/admin/src/components/DataManager/RenameMigrationModal.d.ts +73 -0
  71. package/dist/admin/src/components/DataManager/reducer.d.ts +17 -2
  72. package/dist/admin/src/components/DataManager/utils/cleanData.d.ts +16 -0
  73. package/dist/admin/src/components/DataManager/utils/groupRenameChains.d.ts +31 -0
  74. package/dist/admin/src/components/DataManager/utils/isStorageCompatibleRename.d.ts +10 -0
  75. package/dist/admin/src/components/DataManager/utils/resolveAfterEditRenameConsent.d.ts +24 -0
  76. package/dist/admin/src/components/DataManager/utils/splitChainsByInheritedConsent.d.ts +26 -0
  77. package/dist/admin/src/components/FormModal/utils/getRenameStorageChange.d.ts +40 -0
  78. package/dist/admin/src/types.d.ts +23 -0
  79. package/dist/admin/translations/en.json.js +12 -0
  80. package/dist/admin/translations/en.json.js.map +1 -1
  81. package/dist/admin/translations/en.json.mjs +12 -0
  82. package/dist/admin/translations/en.json.mjs.map +1 -1
  83. package/dist/server/config.js +24 -3
  84. package/dist/server/config.js.map +1 -1
  85. package/dist/server/config.mjs +21 -3
  86. package/dist/server/config.mjs.map +1 -1
  87. package/dist/server/controllers/schema.js +2 -2
  88. package/dist/server/controllers/schema.js.map +1 -1
  89. package/dist/server/controllers/schema.mjs +1 -1
  90. package/dist/server/controllers/schema.mjs.map +1 -1
  91. package/dist/server/controllers/validation/content-type.js +9 -11
  92. package/dist/server/controllers/validation/content-type.js.map +1 -1
  93. package/dist/server/controllers/validation/content-type.mjs +7 -9
  94. package/dist/server/controllers/validation/content-type.mjs.map +1 -1
  95. package/dist/server/controllers/validation/model-schema.js +2 -3
  96. package/dist/server/controllers/validation/model-schema.js.map +1 -1
  97. package/dist/server/controllers/validation/model-schema.mjs +1 -2
  98. package/dist/server/controllers/validation/model-schema.mjs.map +1 -1
  99. package/dist/server/controllers/validation/relations.js +1 -2
  100. package/dist/server/controllers/validation/relations.js.map +1 -1
  101. package/dist/server/controllers/validation/relations.mjs +1 -2
  102. package/dist/server/controllers/validation/relations.mjs.map +1 -1
  103. package/dist/server/controllers/validation/schema.js +42 -23
  104. package/dist/server/controllers/validation/schema.js.map +1 -1
  105. package/dist/server/controllers/validation/schema.mjs +43 -24
  106. package/dist/server/controllers/validation/schema.mjs.map +1 -1
  107. package/dist/server/index.js +1 -1
  108. package/dist/server/index.js.map +1 -1
  109. package/dist/server/services/content-types.js +1 -2
  110. package/dist/server/services/content-types.js.map +1 -1
  111. package/dist/server/services/content-types.mjs +2 -3
  112. package/dist/server/services/content-types.mjs.map +1 -1
  113. package/dist/server/services/migration-builder/index.js +580 -0
  114. package/dist/server/services/migration-builder/index.js.map +1 -0
  115. package/dist/server/services/migration-builder/index.mjs +573 -0
  116. package/dist/server/services/migration-builder/index.mjs.map +1 -0
  117. package/dist/server/services/schema-builder/content-type-builder.js +31 -1
  118. package/dist/server/services/schema-builder/content-type-builder.js.map +1 -1
  119. package/dist/server/services/schema-builder/content-type-builder.mjs +31 -1
  120. package/dist/server/services/schema-builder/content-type-builder.mjs.map +1 -1
  121. package/dist/server/services/schema-mutation.js +30 -2
  122. package/dist/server/services/schema-mutation.js.map +1 -1
  123. package/dist/server/services/schema-mutation.mjs +10 -2
  124. package/dist/server/services/schema-mutation.mjs.map +1 -1
  125. package/dist/server/services/schema.js +259 -15
  126. package/dist/server/services/schema.js.map +1 -1
  127. package/dist/server/services/schema.mjs +252 -9
  128. package/dist/server/services/schema.mjs.map +1 -1
  129. package/dist/server/src/config.d.ts +23 -2
  130. package/dist/server/src/config.d.ts.map +1 -1
  131. package/dist/server/src/controllers/validation/content-type.d.ts +0 -1
  132. package/dist/server/src/controllers/validation/content-type.d.ts.map +1 -1
  133. package/dist/server/src/controllers/validation/relations.d.ts.map +1 -1
  134. package/dist/server/src/controllers/validation/schema.d.ts +28 -0
  135. package/dist/server/src/controllers/validation/schema.d.ts.map +1 -1
  136. package/dist/server/src/index.d.ts +10 -2
  137. package/dist/server/src/index.d.ts.map +1 -1
  138. package/dist/server/src/services/content-types.d.ts.map +1 -1
  139. package/dist/server/src/services/migration-builder/index.d.ts +83 -0
  140. package/dist/server/src/services/migration-builder/index.d.ts.map +1 -0
  141. package/dist/server/src/services/schema-builder/content-type-builder.d.ts.map +1 -1
  142. package/dist/server/src/services/schema-mutation.d.ts +4 -2
  143. package/dist/server/src/services/schema-mutation.d.ts.map +1 -1
  144. package/dist/server/src/services/schema.d.ts +19 -0
  145. package/dist/server/src/services/schema.d.ts.map +1 -1
  146. package/package.json +7 -6
@@ -1 +1 @@
1
- {"version":3,"file":"schema.mjs","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 { isArray, isNil, isNull, isNumber, isObject, isUndefined, snakeCase } from 'lodash/fp';\n\nimport { isReservedAttributeName, isReservedModelName } from '../../services/builder';\nimport { coreUids, typeKinds, VALID_UID_TARGETS } from '../../services/constants';\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 attributes?: Array<{ action: 'create' | 'update' | 'delete'; name: string }>;\n};\n\nconst getEffectiveAttributeNames = (contentType: ContentTypeSchemaAction): string[] => {\n if (contentType.action === 'create') {\n return (contentType.attributes ?? [])\n .filter((attribute) => attribute.action !== 'delete')\n .map((attribute) => attribute.name);\n }\n\n if (contentType.action !== 'update' || !contentType.uid) {\n return [];\n }\n\n const existingContentType = strapi.contentTypes[contentType.uid];\n const names = new Set(existingContentType ? Object.keys(existingContentType.attributes) : []);\n\n for (const attribute of contentType.attributes ?? []) {\n if (attribute.action === 'delete') {\n names.delete(attribute.name);\n } else if (attribute.action === 'create') {\n names.add(attribute.name);\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 !isNil(value.maxLength) &&\n !isNil(value.minLength) &&\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 (!isNil(value.max) && !isNil(value.min) && 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 (isUndefined(value.target) || isUndefined(value.relation)) {\n return;\n }\n\n const { target, relation, targetAttribute } = value;\n\n if (\n target === coreUids.STRAPI_USER &&\n (!STRAPI_USER_RELATIONS.includes(relation) || !isUndefined(targetAttribute))\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 (!isNil(value.targetField) && !isNil(value.default)) {\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' && !isNil(value.default) && !isNil(value.enum)) {\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) || isNull(value) || isObject(value) || 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\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 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});\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","existingContentType","strapi","contentTypes","Object","keys","delete","add","verifyDraftAndPublishReservedAttributes","draftAndPublish","reservedAttributeNames","findDraftAndPublishReservedAttributeNames","getDraftAndPublishEnableBlockedMessage","maxLengthGreaterThanMinLength","value","isNil","maxLength","minLength","isNumber","maxGreaterThanMin","max","min","checkUserTarget","isUndefined","target","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","undefined","isNull","isObject","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","deleteAttributeSchema","contentTypeUIDSchema","custom","componentUIDSchema","categorySchema","CATEGORY_NAME_REGEX","baseComponentSchema","displayName","icon","ICON_REGEX","description","category","createComponentSchema","config","updateComponentSchema","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.mjs","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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"}
@@ -9,7 +9,7 @@ var register = require('./register.js');
9
9
  var index$1 = require('./middlewares/index.js');
10
10
 
11
11
  var index = (()=>({
12
- config,
12
+ config: config.default,
13
13
  bootstrap,
14
14
  register,
15
15
  services: index$4,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../server/src/index.ts"],"sourcesContent":["import config from './config';\nimport bootstrap from './bootstrap';\nimport services from './services';\nimport controllers from './controllers';\nimport routes from './routes';\nimport register from './register';\nimport * as middlewares from './middlewares';\n\nexport default () => ({\n config,\n bootstrap,\n register,\n services,\n controllers,\n routes,\n middlewares,\n});\n"],"names":["config","bootstrap","register","services","controllers","routes","middlewares"],"mappings":";;;;;;;;;;AAQA,YAAe,CAAA,KAAO;AACpBA,QAAAA,MAAAA;AACAC,QAAAA,SAAAA;AACAC,QAAAA,QAAAA;AACAC,kBAAAA,OAAAA;AACAC,qBAAAA,OAAAA;AACAC,gBAAAA,OAAAA;AACAC,qBAAAA;AACF,KAAA,CAAC;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../server/src/index.ts"],"sourcesContent":["import config from './config';\nimport bootstrap from './bootstrap';\nimport services from './services';\nimport controllers from './controllers';\nimport routes from './routes';\nimport register from './register';\nimport * as middlewares from './middlewares';\n\nexport default () => ({\n config,\n bootstrap,\n register,\n services,\n controllers,\n routes,\n middlewares,\n});\n"],"names":["config","bootstrap","register","services","controllers","routes","middlewares"],"mappings":";;;;;;;;;;AAQA,YAAe,CAAA,KAAO;AACpBA,gBAAAA,cAAAA;AACAC,QAAAA,SAAAA;AACAC,QAAAA,QAAAA;AACAC,kBAAAA,OAAAA;AACAC,qBAAAA,OAAAA;AACAC,gBAAAA,OAAAA;AACAC,qBAAAA;AACF,KAAA,CAAC;;;;"}
@@ -1,7 +1,6 @@
1
1
  'use strict';
2
2
 
3
3
  var _ = require('lodash');
4
- var fp = require('lodash/fp');
5
4
  var utils = require('@strapi/utils');
6
5
  var attributes = require('../utils/attributes.js');
7
6
  var index$1 = require('../utils/index.js');
@@ -25,7 +24,7 @@ const pruneFolderReferences = (uids)=>{
25
24
  deletedUids: new Set(uids)
26
25
  });
27
26
  };
28
- const isContentTypeVisible = (model)=>fp.getOr(true, 'pluginOptions.content-type-builder.visible', model) === true;
27
+ const isContentTypeVisible = (model)=>_.get(model, 'pluginOptions.content-type-builder.visible', true) === true;
29
28
  const getRestrictRelationsTo = (contentType)=>{
30
29
  const { uid } = contentType;
31
30
  if (uid === constants.coreUids.STRAPI_USER) {
@@ -1 +1 @@
1
- {"version":3,"file":"content-types.js","sources":["../../../server/src/services/content-types.ts"],"sourcesContent":["import _ from 'lodash';\nimport { getOr } from 'lodash/fp';\nimport { contentTypes as contentTypesUtils, errors } from '@strapi/utils';\nimport type { UID, Struct } from '@strapi/types';\nimport { formatAttributes, replaceTemporaryUIDs } from '../utils/attributes';\nimport { getService } from '../utils';\nimport createBuilder from './schema-builder';\nimport { finalizeSchemaMutation, rollbackSchemaMutation } from './schema-mutation';\nimport { coreUids, pluginsUids } from './constants';\n\nconst { ApplicationError } = errors;\n\nexport const isCTBOwnedApplicationContentType = (uid: UID.ContentType): boolean =>\n uid.startsWith('api::');\n\nexport const assertCTBOwnedApplicationContentType = (uid: UID.ContentType): void => {\n if (!isCTBOwnedApplicationContentType(uid)) {\n throw new ApplicationError(`Content type \"${uid}\" is not managed by CTB and cannot be deleted`);\n }\n};\n\nconst pruneFolderReferences = (uids: UID.ContentType[]) => {\n return getService('content-structure').commitFromUpdate({ deletedUids: new Set(uids) });\n};\n\nexport const isContentTypeVisible = (model: Struct.ContentTypeSchema) =>\n getOr(true, 'pluginOptions.content-type-builder.visible', model) === true;\n\nexport const getRestrictRelationsTo = (contentType: Struct.ContentTypeSchema) => {\n const { uid } = contentType;\n if (uid === coreUids.STRAPI_USER) {\n // TODO: replace with an obj { relation: 'x', bidirectional: true|false }\n return ['oneWay', 'manyWay'];\n }\n\n if (\n uid.startsWith(coreUids.PREFIX) ||\n uid === pluginsUids.UPLOAD_FILE ||\n !isContentTypeVisible(contentType)\n ) {\n return [];\n }\n\n return null;\n};\n\n/**\n * Format a contentType info to be used by the front-end\n */\nexport const formatContentType = (contentType: any) => {\n const { uid, kind, modelName, plugin, collectionName, info } = contentType;\n\n return {\n uid,\n plugin,\n apiID: modelName,\n schema: {\n ...contentTypesUtils.getOptions(contentType),\n displayName: info.displayName,\n singularName: info.singularName,\n pluralName: info.pluralName,\n description: _.get(info, 'description', ''),\n pluginOptions: contentType.pluginOptions,\n kind: kind || 'collectionType',\n collectionName,\n attributes: formatAttributes(contentType),\n visible: isContentTypeVisible(contentType),\n restrictRelationsTo: getRestrictRelationsTo(contentType),\n },\n };\n};\n\nexport const createContentTypes = async (contentTypes: any[]) => {\n const builder = createBuilder();\n const createdContentTypes: any[] = [];\n const generatedApiNames: string[] = [];\n let schemaAlreadyRolledBack = false;\n\n try {\n for (const contentType of contentTypes) {\n createdContentTypes.push(\n await createContentType(contentType, {\n defaultBuilder: builder,\n generatedApiNames,\n deferEvent: true,\n })\n );\n }\n\n const schemaFilesWritten = await builder.writeFiles();\n if (!schemaFilesWritten) {\n schemaAlreadyRolledBack = true;\n throw new ApplicationError('Invalid schema edition');\n }\n } catch (error) {\n const apiHandler = strapi\n .plugin('content-type-builder')\n .service('api-handler') as typeof import('./api-handler');\n await rollbackSchemaMutation({\n builder,\n apiHandler,\n generatedApiNames,\n schemaAlreadyRolledBack,\n });\n\n throw error;\n }\n\n for (const contentType of createdContentTypes) {\n strapi.eventHub.emit('content-type.create', { contentType });\n }\n\n return createdContentTypes;\n};\n\ntype CreateContentTypeOptions = {\n defaultBuilder?: any; // TODO\n generatedApiNames?: string[];\n deferEvent?: boolean;\n};\n\n/**\n * Creates a content type and handle the nested components sent with it\n */\nexport const createContentType = async (\n { contentType, components }: any,\n options: CreateContentTypeOptions = {}\n) => {\n const builder = options.defaultBuilder || createBuilder();\n const uidMap = builder.createNewComponentUIDMap(components || []);\n\n const replaceTmpUIDs = replaceTemporaryUIDs(uidMap);\n\n const newContentType = builder.createContentType(replaceTmpUIDs(contentType));\n\n // allow components to target the new contentType\n const targetContentType = (infos: any) => {\n Object.keys(infos.attributes).forEach((key) => {\n const { target } = infos.attributes[key];\n if (target === '__contentType__') {\n infos.attributes[key].target = newContentType.uid;\n }\n });\n\n return infos;\n };\n\n components?.forEach((component: any) => {\n const options = replaceTmpUIDs(targetContentType(component));\n\n if (!_.has(component, 'uid')) {\n return builder.createComponent(options);\n }\n\n return builder.editComponent(options);\n });\n\n const generatedApiNames = options.generatedApiNames ?? [];\n let schemaAlreadyRolledBack = false;\n\n try {\n // Generate before writing the schema so a successful mutation retains the existing layout.\n if (!contentType.plugin) {\n generatedApiNames.push(contentType.singularName);\n\n await generateAPI({\n displayName: contentType!.displayName || contentType!.info.displayName,\n singularName: contentType!.singularName,\n pluralName: contentType!.pluralName,\n kind: contentType!.kind,\n });\n }\n\n if (!options.defaultBuilder) {\n const schemaFilesWritten = await builder.writeFiles();\n if (!schemaFilesWritten) {\n schemaAlreadyRolledBack = true;\n throw new ApplicationError('Invalid schema edition');\n }\n }\n } catch (error) {\n if (!options.defaultBuilder) {\n const apiHandler = strapi\n .plugin('content-type-builder')\n .service('api-handler') as typeof import('./api-handler');\n await rollbackSchemaMutation({\n builder,\n apiHandler,\n generatedApiNames,\n schemaAlreadyRolledBack,\n });\n }\n\n throw error;\n }\n\n if (!options.deferEvent) {\n strapi.eventHub.emit('content-type.create', { contentType: newContentType });\n }\n\n return newContentType;\n};\n\n/**\n * Generate an API skeleton\n */\nexport const generateAPI = ({\n singularName,\n kind = 'collectionType',\n pluralName,\n displayName,\n}: any) => {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const strapiGenerators = require('@strapi/generators');\n return strapiGenerators.generate(\n 'content-type',\n {\n kind,\n singularName,\n id: singularName,\n pluralName,\n displayName,\n destination: 'new',\n bootstrapApi: true,\n attributes: [],\n },\n { dir: strapi.dirs.app.root }\n );\n};\n\n/**\n * Edits a contentType and handle the nested contentTypes sent with it\n */\nexport const editContentType = async (\n uid: UID.ContentType,\n { contentType, components = [] }: any\n) => {\n const builder = createBuilder();\n\n const previousSchema = builder.contentTypes.get(uid).schema;\n const isPluginContentType = Boolean(builder.contentTypes.get(uid).plugin);\n const previousKind = previousSchema.kind;\n const newKind = contentType.kind || previousKind;\n\n // Restore non-visible attributes from previous schema\n const previousAttributes = previousSchema.attributes;\n const prevNonVisibleAttributes = contentTypesUtils\n .getNonVisibleAttributes(previousSchema)\n .reduce((acc, key) => {\n if (key in previousAttributes) {\n acc[key] = previousAttributes[key];\n }\n\n return acc;\n }, {} as any);\n contentType.attributes = _.merge(prevNonVisibleAttributes, contentType.attributes);\n\n if (newKind !== previousKind && newKind === 'singleType') {\n const entryCount = await strapi.db.query(uid).count();\n if (entryCount > 1) {\n throw new ApplicationError(\n 'You cannot convert a collectionType to a singleType when having multiple entries in DB'\n );\n }\n }\n\n const uidMap = builder.createNewComponentUIDMap(components);\n const replaceTmpUIDs = replaceTemporaryUIDs(uidMap);\n\n const updatedContentType = builder.editContentType({\n uid,\n ...replaceTmpUIDs(contentType),\n });\n\n components.forEach((component: any) => {\n if (!_.has(component, 'uid')) {\n return builder.createComponent(replaceTmpUIDs(component));\n }\n\n return builder.editComponent(replaceTmpUIDs(component));\n });\n\n if (newKind !== previousKind) {\n let schemaAlreadyRolledBack = false;\n const apiHandler = strapi\n .plugin('content-type-builder')\n .service('api-handler') as typeof import('./api-handler');\n await apiHandler.backup(uid);\n\n try {\n await apiHandler.clear(uid, { preserveBackup: true });\n\n if (!isPluginContentType) {\n // generate new api skeleton\n await generateAPI({\n displayName: updatedContentType.schema.info.displayName,\n singularName: updatedContentType.schema.info.singularName,\n pluralName: updatedContentType.schema.info.pluralName,\n kind: updatedContentType.schema.kind,\n });\n }\n\n const schemaFilesWritten = await builder.writeFiles();\n if (!schemaFilesWritten) {\n schemaAlreadyRolledBack = true;\n throw new ApplicationError('Invalid schema edition');\n }\n await pruneFolderReferences([uid]);\n } catch (error) {\n await rollbackSchemaMutation({\n builder,\n apiHandler,\n backedUpApiUids: [uid],\n schemaAlreadyRolledBack,\n });\n\n throw error;\n }\n\n for (const error of await finalizeSchemaMutation({ apiHandler, backedUpApiUids: [uid] })) {\n strapi.log.error(error);\n }\n\n return updatedContentType;\n }\n\n await builder.writeFiles();\n\n strapi.eventHub.emit('content-type.update', { contentType: updatedContentType });\n\n return updatedContentType;\n};\n\nexport const deleteContentTypes = async (uids: UID.ContentType[]) => {\n uids.forEach(assertCTBOwnedApplicationContentType);\n\n const builder = createBuilder();\n const apiHandler = strapi\n .plugin('content-type-builder')\n .service('api-handler') as typeof import('./api-handler');\n\n const deletedContentTypes: any[] = [];\n const backedUpApiUids: UID.ContentType[] = [];\n let schemaAlreadyRolledBack = false;\n\n try {\n for (const uid of uids) {\n await apiHandler.backup(uid);\n backedUpApiUids.push(uid);\n deletedContentTypes.push(builder.deleteContentType(uid));\n }\n\n const schemaFilesWritten = await builder.writeFiles();\n if (!schemaFilesWritten) {\n schemaAlreadyRolledBack = true;\n throw new ApplicationError('Invalid schema edition');\n }\n\n for (const uid of uids) {\n await apiHandler.clear(uid, { preserveBackup: true });\n }\n\n await pruneFolderReferences(uids);\n } catch (error) {\n await rollbackSchemaMutation({\n builder,\n apiHandler,\n backedUpApiUids,\n schemaAlreadyRolledBack,\n });\n\n throw error;\n }\n\n for (const error of await finalizeSchemaMutation({ apiHandler, backedUpApiUids })) {\n strapi.log.error(error);\n }\n\n for (const contentType of deletedContentTypes) {\n strapi.eventHub.emit('content-type.delete', { contentType });\n }\n};\n\n/**\n * Deletes a content type and the api files related to it\n */\nexport const deleteContentType = async (uid: UID.ContentType, defaultBuilder: any = undefined) => {\n assertCTBOwnedApplicationContentType(uid);\n\n const builder = defaultBuilder || createBuilder();\n // make a backup\n const apiHandler = strapi\n .plugin('content-type-builder')\n .service('api-handler') as typeof import('./api-handler');\n await apiHandler.backup(uid);\n\n let contentType;\n let schemaAlreadyRolledBack = false;\n\n if (!defaultBuilder) {\n try {\n contentType = builder.deleteContentType(uid);\n const schemaFilesWritten = await builder.writeFiles();\n if (!schemaFilesWritten) {\n schemaAlreadyRolledBack = true;\n throw new ApplicationError('Invalid schema edition');\n }\n await apiHandler.clear(uid, { preserveBackup: true });\n await pruneFolderReferences([uid]);\n } catch (error) {\n await rollbackSchemaMutation({\n builder,\n apiHandler,\n backedUpApiUids: [uid],\n schemaAlreadyRolledBack,\n });\n\n throw error;\n }\n\n for (const error of await finalizeSchemaMutation({ apiHandler, backedUpApiUids: [uid] })) {\n strapi.log.error(error);\n }\n } else {\n contentType = builder.deleteContentType(uid);\n }\n\n if (!defaultBuilder) {\n strapi.eventHub.emit('content-type.delete', { contentType });\n }\n\n return contentType;\n};\n"],"names":["ApplicationError","errors","isCTBOwnedApplicationContentType","uid","startsWith","assertCTBOwnedApplicationContentType","pruneFolderReferences","uids","getService","commitFromUpdate","deletedUids","Set","isContentTypeVisible","model","getOr","getRestrictRelationsTo","contentType","coreUids","STRAPI_USER","PREFIX","pluginsUids","UPLOAD_FILE","formatContentType","kind","modelName","plugin","collectionName","info","apiID","schema","contentTypesUtils","getOptions","displayName","singularName","pluralName","description","_","get","pluginOptions","attributes","formatAttributes","visible","restrictRelationsTo","createContentTypes","contentTypes","builder","createBuilder","createdContentTypes","generatedApiNames","schemaAlreadyRolledBack","push","createContentType","defaultBuilder","deferEvent","schemaFilesWritten","writeFiles","error","apiHandler","strapi","service","rollbackSchemaMutation","eventHub","emit","components","options","uidMap","createNewComponentUIDMap","replaceTmpUIDs","replaceTemporaryUIDs","newContentType","targetContentType","infos","Object","keys","forEach","key","target","component","has","createComponent","editComponent","generateAPI","strapiGenerators","require","generate","id","destination","bootstrapApi","dir","dirs","app","root","editContentType","previousSchema","isPluginContentType","Boolean","previousKind","newKind","previousAttributes","prevNonVisibleAttributes","getNonVisibleAttributes","reduce","acc","merge","entryCount","db","query","count","updatedContentType","backup","clear","preserveBackup","backedUpApiUids","finalizeSchemaMutation","log","deleteContentTypes","deletedContentTypes","deleteContentType","undefined"],"mappings":"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"}
1
+ {"version":3,"file":"content-types.js","sources":["../../../server/src/services/content-types.ts"],"sourcesContent":["import _, { get } from 'lodash';\n\nimport { contentTypes as contentTypesUtils, errors } from '@strapi/utils';\nimport type { UID, Struct } from '@strapi/types';\nimport { formatAttributes, replaceTemporaryUIDs } from '../utils/attributes';\nimport { getService } from '../utils';\nimport createBuilder from './schema-builder';\nimport { finalizeSchemaMutation, rollbackSchemaMutation } from './schema-mutation';\nimport { coreUids, pluginsUids } from './constants';\n\nconst { ApplicationError } = errors;\n\nexport const isCTBOwnedApplicationContentType = (uid: UID.ContentType): boolean =>\n uid.startsWith('api::');\n\nexport const assertCTBOwnedApplicationContentType = (uid: UID.ContentType): void => {\n if (!isCTBOwnedApplicationContentType(uid)) {\n throw new ApplicationError(`Content type \"${uid}\" is not managed by CTB and cannot be deleted`);\n }\n};\n\nconst pruneFolderReferences = (uids: UID.ContentType[]) => {\n return getService('content-structure').commitFromUpdate({ deletedUids: new Set(uids) });\n};\n\nexport const isContentTypeVisible = (model: Struct.ContentTypeSchema) =>\n get(model, 'pluginOptions.content-type-builder.visible', true) === true;\n\nexport const getRestrictRelationsTo = (contentType: Struct.ContentTypeSchema) => {\n const { uid } = contentType;\n if (uid === coreUids.STRAPI_USER) {\n // TODO: replace with an obj { relation: 'x', bidirectional: true|false }\n return ['oneWay', 'manyWay'];\n }\n\n if (\n uid.startsWith(coreUids.PREFIX) ||\n uid === pluginsUids.UPLOAD_FILE ||\n !isContentTypeVisible(contentType)\n ) {\n return [];\n }\n\n return null;\n};\n\n/**\n * Format a contentType info to be used by the front-end\n */\nexport const formatContentType = (contentType: any) => {\n const { uid, kind, modelName, plugin, collectionName, info } = contentType;\n\n return {\n uid,\n plugin,\n apiID: modelName,\n schema: {\n ...contentTypesUtils.getOptions(contentType),\n displayName: info.displayName,\n singularName: info.singularName,\n pluralName: info.pluralName,\n description: _.get(info, 'description', ''),\n pluginOptions: contentType.pluginOptions,\n kind: kind || 'collectionType',\n collectionName,\n attributes: formatAttributes(contentType),\n visible: isContentTypeVisible(contentType),\n restrictRelationsTo: getRestrictRelationsTo(contentType),\n },\n };\n};\n\nexport const createContentTypes = async (contentTypes: any[]) => {\n const builder = createBuilder();\n const createdContentTypes: any[] = [];\n const generatedApiNames: string[] = [];\n let schemaAlreadyRolledBack = false;\n\n try {\n for (const contentType of contentTypes) {\n createdContentTypes.push(\n await createContentType(contentType, {\n defaultBuilder: builder,\n generatedApiNames,\n deferEvent: true,\n })\n );\n }\n\n const schemaFilesWritten = await builder.writeFiles();\n if (!schemaFilesWritten) {\n schemaAlreadyRolledBack = true;\n throw new ApplicationError('Invalid schema edition');\n }\n } catch (error) {\n const apiHandler = strapi\n .plugin('content-type-builder')\n .service('api-handler') as typeof import('./api-handler');\n await rollbackSchemaMutation({\n builder,\n apiHandler,\n generatedApiNames,\n schemaAlreadyRolledBack,\n });\n\n throw error;\n }\n\n for (const contentType of createdContentTypes) {\n strapi.eventHub.emit('content-type.create', { contentType });\n }\n\n return createdContentTypes;\n};\n\ntype CreateContentTypeOptions = {\n defaultBuilder?: any; // TODO\n generatedApiNames?: string[];\n deferEvent?: boolean;\n};\n\n/**\n * Creates a content type and handle the nested components sent with it\n */\nexport const createContentType = async (\n { contentType, components }: any,\n options: CreateContentTypeOptions = {}\n) => {\n const builder = options.defaultBuilder || createBuilder();\n const uidMap = builder.createNewComponentUIDMap(components || []);\n\n const replaceTmpUIDs = replaceTemporaryUIDs(uidMap);\n\n const newContentType = builder.createContentType(replaceTmpUIDs(contentType));\n\n // allow components to target the new contentType\n const targetContentType = (infos: any) => {\n Object.keys(infos.attributes).forEach((key) => {\n const { target } = infos.attributes[key];\n if (target === '__contentType__') {\n infos.attributes[key].target = newContentType.uid;\n }\n });\n\n return infos;\n };\n\n components?.forEach((component: any) => {\n const options = replaceTmpUIDs(targetContentType(component));\n\n if (!_.has(component, 'uid')) {\n return builder.createComponent(options);\n }\n\n return builder.editComponent(options);\n });\n\n const generatedApiNames = options.generatedApiNames ?? [];\n let schemaAlreadyRolledBack = false;\n\n try {\n // Generate before writing the schema so a successful mutation retains the existing layout.\n if (!contentType.plugin) {\n generatedApiNames.push(contentType.singularName);\n\n await generateAPI({\n displayName: contentType!.displayName || contentType!.info.displayName,\n singularName: contentType!.singularName,\n pluralName: contentType!.pluralName,\n kind: contentType!.kind,\n });\n }\n\n if (!options.defaultBuilder) {\n const schemaFilesWritten = await builder.writeFiles();\n if (!schemaFilesWritten) {\n schemaAlreadyRolledBack = true;\n throw new ApplicationError('Invalid schema edition');\n }\n }\n } catch (error) {\n if (!options.defaultBuilder) {\n const apiHandler = strapi\n .plugin('content-type-builder')\n .service('api-handler') as typeof import('./api-handler');\n await rollbackSchemaMutation({\n builder,\n apiHandler,\n generatedApiNames,\n schemaAlreadyRolledBack,\n });\n }\n\n throw error;\n }\n\n if (!options.deferEvent) {\n strapi.eventHub.emit('content-type.create', { contentType: newContentType });\n }\n\n return newContentType;\n};\n\n/**\n * Generate an API skeleton\n */\nexport const generateAPI = ({\n singularName,\n kind = 'collectionType',\n pluralName,\n displayName,\n}: any) => {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const strapiGenerators = require('@strapi/generators');\n return strapiGenerators.generate(\n 'content-type',\n {\n kind,\n singularName,\n id: singularName,\n pluralName,\n displayName,\n destination: 'new',\n bootstrapApi: true,\n attributes: [],\n },\n { dir: strapi.dirs.app.root }\n );\n};\n\n/**\n * Edits a contentType and handle the nested contentTypes sent with it\n */\nexport const editContentType = async (\n uid: UID.ContentType,\n { contentType, components = [] }: any\n) => {\n const builder = createBuilder();\n\n const previousSchema = builder.contentTypes.get(uid).schema;\n const isPluginContentType = Boolean(builder.contentTypes.get(uid).plugin);\n const previousKind = previousSchema.kind;\n const newKind = contentType.kind || previousKind;\n\n // Restore non-visible attributes from previous schema\n const previousAttributes = previousSchema.attributes;\n const prevNonVisibleAttributes = contentTypesUtils\n .getNonVisibleAttributes(previousSchema)\n .reduce((acc, key) => {\n if (key in previousAttributes) {\n acc[key] = previousAttributes[key];\n }\n\n return acc;\n }, {} as any);\n contentType.attributes = _.merge(prevNonVisibleAttributes, contentType.attributes);\n\n if (newKind !== previousKind && newKind === 'singleType') {\n const entryCount = await strapi.db.query(uid).count();\n if (entryCount > 1) {\n throw new ApplicationError(\n 'You cannot convert a collectionType to a singleType when having multiple entries in DB'\n );\n }\n }\n\n const uidMap = builder.createNewComponentUIDMap(components);\n const replaceTmpUIDs = replaceTemporaryUIDs(uidMap);\n\n const updatedContentType = builder.editContentType({\n uid,\n ...replaceTmpUIDs(contentType),\n });\n\n components.forEach((component: any) => {\n if (!_.has(component, 'uid')) {\n return builder.createComponent(replaceTmpUIDs(component));\n }\n\n return builder.editComponent(replaceTmpUIDs(component));\n });\n\n if (newKind !== previousKind) {\n let schemaAlreadyRolledBack = false;\n const apiHandler = strapi\n .plugin('content-type-builder')\n .service('api-handler') as typeof import('./api-handler');\n await apiHandler.backup(uid);\n\n try {\n await apiHandler.clear(uid, { preserveBackup: true });\n\n if (!isPluginContentType) {\n // generate new api skeleton\n await generateAPI({\n displayName: updatedContentType.schema.info.displayName,\n singularName: updatedContentType.schema.info.singularName,\n pluralName: updatedContentType.schema.info.pluralName,\n kind: updatedContentType.schema.kind,\n });\n }\n\n const schemaFilesWritten = await builder.writeFiles();\n if (!schemaFilesWritten) {\n schemaAlreadyRolledBack = true;\n throw new ApplicationError('Invalid schema edition');\n }\n await pruneFolderReferences([uid]);\n } catch (error) {\n await rollbackSchemaMutation({\n builder,\n apiHandler,\n backedUpApiUids: [uid],\n schemaAlreadyRolledBack,\n });\n\n throw error;\n }\n\n for (const error of await finalizeSchemaMutation({ apiHandler, backedUpApiUids: [uid] })) {\n strapi.log.error(error);\n }\n\n return updatedContentType;\n }\n\n await builder.writeFiles();\n\n strapi.eventHub.emit('content-type.update', { contentType: updatedContentType });\n\n return updatedContentType;\n};\n\nexport const deleteContentTypes = async (uids: UID.ContentType[]) => {\n uids.forEach(assertCTBOwnedApplicationContentType);\n\n const builder = createBuilder();\n const apiHandler = strapi\n .plugin('content-type-builder')\n .service('api-handler') as typeof import('./api-handler');\n\n const deletedContentTypes: any[] = [];\n const backedUpApiUids: UID.ContentType[] = [];\n let schemaAlreadyRolledBack = false;\n\n try {\n for (const uid of uids) {\n await apiHandler.backup(uid);\n backedUpApiUids.push(uid);\n deletedContentTypes.push(builder.deleteContentType(uid));\n }\n\n const schemaFilesWritten = await builder.writeFiles();\n if (!schemaFilesWritten) {\n schemaAlreadyRolledBack = true;\n throw new ApplicationError('Invalid schema edition');\n }\n\n for (const uid of uids) {\n await apiHandler.clear(uid, { preserveBackup: true });\n }\n\n await pruneFolderReferences(uids);\n } catch (error) {\n await rollbackSchemaMutation({\n builder,\n apiHandler,\n backedUpApiUids,\n schemaAlreadyRolledBack,\n });\n\n throw error;\n }\n\n for (const error of await finalizeSchemaMutation({ apiHandler, backedUpApiUids })) {\n strapi.log.error(error);\n }\n\n for (const contentType of deletedContentTypes) {\n strapi.eventHub.emit('content-type.delete', { contentType });\n }\n};\n\n/**\n * Deletes a content type and the api files related to it\n */\nexport const deleteContentType = async (uid: UID.ContentType, defaultBuilder: any = undefined) => {\n assertCTBOwnedApplicationContentType(uid);\n\n const builder = defaultBuilder || createBuilder();\n // make a backup\n const apiHandler = strapi\n .plugin('content-type-builder')\n .service('api-handler') as typeof import('./api-handler');\n await apiHandler.backup(uid);\n\n let contentType;\n let schemaAlreadyRolledBack = false;\n\n if (!defaultBuilder) {\n try {\n contentType = builder.deleteContentType(uid);\n const schemaFilesWritten = await builder.writeFiles();\n if (!schemaFilesWritten) {\n schemaAlreadyRolledBack = true;\n throw new ApplicationError('Invalid schema edition');\n }\n await apiHandler.clear(uid, { preserveBackup: true });\n await pruneFolderReferences([uid]);\n } catch (error) {\n await rollbackSchemaMutation({\n builder,\n apiHandler,\n backedUpApiUids: [uid],\n schemaAlreadyRolledBack,\n });\n\n throw error;\n }\n\n for (const error of await finalizeSchemaMutation({ apiHandler, backedUpApiUids: [uid] })) {\n strapi.log.error(error);\n }\n } else {\n contentType = builder.deleteContentType(uid);\n }\n\n if (!defaultBuilder) {\n strapi.eventHub.emit('content-type.delete', { contentType });\n }\n\n return contentType;\n};\n"],"names":["ApplicationError","errors","isCTBOwnedApplicationContentType","uid","startsWith","assertCTBOwnedApplicationContentType","pruneFolderReferences","uids","getService","commitFromUpdate","deletedUids","Set","isContentTypeVisible","model","get","getRestrictRelationsTo","contentType","coreUids","STRAPI_USER","PREFIX","pluginsUids","UPLOAD_FILE","formatContentType","kind","modelName","plugin","collectionName","info","apiID","schema","contentTypesUtils","getOptions","displayName","singularName","pluralName","description","_","pluginOptions","attributes","formatAttributes","visible","restrictRelationsTo","createContentTypes","contentTypes","builder","createBuilder","createdContentTypes","generatedApiNames","schemaAlreadyRolledBack","push","createContentType","defaultBuilder","deferEvent","schemaFilesWritten","writeFiles","error","apiHandler","strapi","service","rollbackSchemaMutation","eventHub","emit","components","options","uidMap","createNewComponentUIDMap","replaceTmpUIDs","replaceTemporaryUIDs","newContentType","targetContentType","infos","Object","keys","forEach","key","target","component","has","createComponent","editComponent","generateAPI","strapiGenerators","require","generate","id","destination","bootstrapApi","dir","dirs","app","root","editContentType","previousSchema","isPluginContentType","Boolean","previousKind","newKind","previousAttributes","prevNonVisibleAttributes","getNonVisibleAttributes","reduce","acc","merge","entryCount","db","query","count","updatedContentType","backup","clear","preserveBackup","backedUpApiUids","finalizeSchemaMutation","log","deleteContentTypes","deletedContentTypes","deleteContentType","undefined"],"mappings":"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"}
@@ -1,5 +1,4 @@
1
- import _ from 'lodash';
2
- import { getOr } from 'lodash/fp';
1
+ import _, { get } from 'lodash';
3
2
  import { errors, contentTypes } from '@strapi/utils';
4
3
  import { formatAttributes, replaceTemporaryUIDs } from '../utils/attributes.mjs';
5
4
  import { getService } from '../utils/index.mjs';
@@ -19,7 +18,7 @@ const pruneFolderReferences = (uids)=>{
19
18
  deletedUids: new Set(uids)
20
19
  });
21
20
  };
22
- const isContentTypeVisible = (model)=>getOr(true, 'pluginOptions.content-type-builder.visible', model) === true;
21
+ const isContentTypeVisible = (model)=>get(model, 'pluginOptions.content-type-builder.visible', true) === true;
23
22
  const getRestrictRelationsTo = (contentType)=>{
24
23
  const { uid } = contentType;
25
24
  if (uid === coreUids.STRAPI_USER) {
@@ -1 +1 @@
1
- {"version":3,"file":"content-types.mjs","sources":["../../../server/src/services/content-types.ts"],"sourcesContent":["import _ from 'lodash';\nimport { getOr } from 'lodash/fp';\nimport { contentTypes as contentTypesUtils, errors } from '@strapi/utils';\nimport type { UID, Struct } from '@strapi/types';\nimport { formatAttributes, replaceTemporaryUIDs } from '../utils/attributes';\nimport { getService } from '../utils';\nimport createBuilder from './schema-builder';\nimport { finalizeSchemaMutation, rollbackSchemaMutation } from './schema-mutation';\nimport { coreUids, pluginsUids } from './constants';\n\nconst { ApplicationError } = errors;\n\nexport const isCTBOwnedApplicationContentType = (uid: UID.ContentType): boolean =>\n uid.startsWith('api::');\n\nexport const assertCTBOwnedApplicationContentType = (uid: UID.ContentType): void => {\n if (!isCTBOwnedApplicationContentType(uid)) {\n throw new ApplicationError(`Content type \"${uid}\" is not managed by CTB and cannot be deleted`);\n }\n};\n\nconst pruneFolderReferences = (uids: UID.ContentType[]) => {\n return getService('content-structure').commitFromUpdate({ deletedUids: new Set(uids) });\n};\n\nexport const isContentTypeVisible = (model: Struct.ContentTypeSchema) =>\n getOr(true, 'pluginOptions.content-type-builder.visible', model) === true;\n\nexport const getRestrictRelationsTo = (contentType: Struct.ContentTypeSchema) => {\n const { uid } = contentType;\n if (uid === coreUids.STRAPI_USER) {\n // TODO: replace with an obj { relation: 'x', bidirectional: true|false }\n return ['oneWay', 'manyWay'];\n }\n\n if (\n uid.startsWith(coreUids.PREFIX) ||\n uid === pluginsUids.UPLOAD_FILE ||\n !isContentTypeVisible(contentType)\n ) {\n return [];\n }\n\n return null;\n};\n\n/**\n * Format a contentType info to be used by the front-end\n */\nexport const formatContentType = (contentType: any) => {\n const { uid, kind, modelName, plugin, collectionName, info } = contentType;\n\n return {\n uid,\n plugin,\n apiID: modelName,\n schema: {\n ...contentTypesUtils.getOptions(contentType),\n displayName: info.displayName,\n singularName: info.singularName,\n pluralName: info.pluralName,\n description: _.get(info, 'description', ''),\n pluginOptions: contentType.pluginOptions,\n kind: kind || 'collectionType',\n collectionName,\n attributes: formatAttributes(contentType),\n visible: isContentTypeVisible(contentType),\n restrictRelationsTo: getRestrictRelationsTo(contentType),\n },\n };\n};\n\nexport const createContentTypes = async (contentTypes: any[]) => {\n const builder = createBuilder();\n const createdContentTypes: any[] = [];\n const generatedApiNames: string[] = [];\n let schemaAlreadyRolledBack = false;\n\n try {\n for (const contentType of contentTypes) {\n createdContentTypes.push(\n await createContentType(contentType, {\n defaultBuilder: builder,\n generatedApiNames,\n deferEvent: true,\n })\n );\n }\n\n const schemaFilesWritten = await builder.writeFiles();\n if (!schemaFilesWritten) {\n schemaAlreadyRolledBack = true;\n throw new ApplicationError('Invalid schema edition');\n }\n } catch (error) {\n const apiHandler = strapi\n .plugin('content-type-builder')\n .service('api-handler') as typeof import('./api-handler');\n await rollbackSchemaMutation({\n builder,\n apiHandler,\n generatedApiNames,\n schemaAlreadyRolledBack,\n });\n\n throw error;\n }\n\n for (const contentType of createdContentTypes) {\n strapi.eventHub.emit('content-type.create', { contentType });\n }\n\n return createdContentTypes;\n};\n\ntype CreateContentTypeOptions = {\n defaultBuilder?: any; // TODO\n generatedApiNames?: string[];\n deferEvent?: boolean;\n};\n\n/**\n * Creates a content type and handle the nested components sent with it\n */\nexport const createContentType = async (\n { contentType, components }: any,\n options: CreateContentTypeOptions = {}\n) => {\n const builder = options.defaultBuilder || createBuilder();\n const uidMap = builder.createNewComponentUIDMap(components || []);\n\n const replaceTmpUIDs = replaceTemporaryUIDs(uidMap);\n\n const newContentType = builder.createContentType(replaceTmpUIDs(contentType));\n\n // allow components to target the new contentType\n const targetContentType = (infos: any) => {\n Object.keys(infos.attributes).forEach((key) => {\n const { target } = infos.attributes[key];\n if (target === '__contentType__') {\n infos.attributes[key].target = newContentType.uid;\n }\n });\n\n return infos;\n };\n\n components?.forEach((component: any) => {\n const options = replaceTmpUIDs(targetContentType(component));\n\n if (!_.has(component, 'uid')) {\n return builder.createComponent(options);\n }\n\n return builder.editComponent(options);\n });\n\n const generatedApiNames = options.generatedApiNames ?? [];\n let schemaAlreadyRolledBack = false;\n\n try {\n // Generate before writing the schema so a successful mutation retains the existing layout.\n if (!contentType.plugin) {\n generatedApiNames.push(contentType.singularName);\n\n await generateAPI({\n displayName: contentType!.displayName || contentType!.info.displayName,\n singularName: contentType!.singularName,\n pluralName: contentType!.pluralName,\n kind: contentType!.kind,\n });\n }\n\n if (!options.defaultBuilder) {\n const schemaFilesWritten = await builder.writeFiles();\n if (!schemaFilesWritten) {\n schemaAlreadyRolledBack = true;\n throw new ApplicationError('Invalid schema edition');\n }\n }\n } catch (error) {\n if (!options.defaultBuilder) {\n const apiHandler = strapi\n .plugin('content-type-builder')\n .service('api-handler') as typeof import('./api-handler');\n await rollbackSchemaMutation({\n builder,\n apiHandler,\n generatedApiNames,\n schemaAlreadyRolledBack,\n });\n }\n\n throw error;\n }\n\n if (!options.deferEvent) {\n strapi.eventHub.emit('content-type.create', { contentType: newContentType });\n }\n\n return newContentType;\n};\n\n/**\n * Generate an API skeleton\n */\nexport const generateAPI = ({\n singularName,\n kind = 'collectionType',\n pluralName,\n displayName,\n}: any) => {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const strapiGenerators = require('@strapi/generators');\n return strapiGenerators.generate(\n 'content-type',\n {\n kind,\n singularName,\n id: singularName,\n pluralName,\n displayName,\n destination: 'new',\n bootstrapApi: true,\n attributes: [],\n },\n { dir: strapi.dirs.app.root }\n );\n};\n\n/**\n * Edits a contentType and handle the nested contentTypes sent with it\n */\nexport const editContentType = async (\n uid: UID.ContentType,\n { contentType, components = [] }: any\n) => {\n const builder = createBuilder();\n\n const previousSchema = builder.contentTypes.get(uid).schema;\n const isPluginContentType = Boolean(builder.contentTypes.get(uid).plugin);\n const previousKind = previousSchema.kind;\n const newKind = contentType.kind || previousKind;\n\n // Restore non-visible attributes from previous schema\n const previousAttributes = previousSchema.attributes;\n const prevNonVisibleAttributes = contentTypesUtils\n .getNonVisibleAttributes(previousSchema)\n .reduce((acc, key) => {\n if (key in previousAttributes) {\n acc[key] = previousAttributes[key];\n }\n\n return acc;\n }, {} as any);\n contentType.attributes = _.merge(prevNonVisibleAttributes, contentType.attributes);\n\n if (newKind !== previousKind && newKind === 'singleType') {\n const entryCount = await strapi.db.query(uid).count();\n if (entryCount > 1) {\n throw new ApplicationError(\n 'You cannot convert a collectionType to a singleType when having multiple entries in DB'\n );\n }\n }\n\n const uidMap = builder.createNewComponentUIDMap(components);\n const replaceTmpUIDs = replaceTemporaryUIDs(uidMap);\n\n const updatedContentType = builder.editContentType({\n uid,\n ...replaceTmpUIDs(contentType),\n });\n\n components.forEach((component: any) => {\n if (!_.has(component, 'uid')) {\n return builder.createComponent(replaceTmpUIDs(component));\n }\n\n return builder.editComponent(replaceTmpUIDs(component));\n });\n\n if (newKind !== previousKind) {\n let schemaAlreadyRolledBack = false;\n const apiHandler = strapi\n .plugin('content-type-builder')\n .service('api-handler') as typeof import('./api-handler');\n await apiHandler.backup(uid);\n\n try {\n await apiHandler.clear(uid, { preserveBackup: true });\n\n if (!isPluginContentType) {\n // generate new api skeleton\n await generateAPI({\n displayName: updatedContentType.schema.info.displayName,\n singularName: updatedContentType.schema.info.singularName,\n pluralName: updatedContentType.schema.info.pluralName,\n kind: updatedContentType.schema.kind,\n });\n }\n\n const schemaFilesWritten = await builder.writeFiles();\n if (!schemaFilesWritten) {\n schemaAlreadyRolledBack = true;\n throw new ApplicationError('Invalid schema edition');\n }\n await pruneFolderReferences([uid]);\n } catch (error) {\n await rollbackSchemaMutation({\n builder,\n apiHandler,\n backedUpApiUids: [uid],\n schemaAlreadyRolledBack,\n });\n\n throw error;\n }\n\n for (const error of await finalizeSchemaMutation({ apiHandler, backedUpApiUids: [uid] })) {\n strapi.log.error(error);\n }\n\n return updatedContentType;\n }\n\n await builder.writeFiles();\n\n strapi.eventHub.emit('content-type.update', { contentType: updatedContentType });\n\n return updatedContentType;\n};\n\nexport const deleteContentTypes = async (uids: UID.ContentType[]) => {\n uids.forEach(assertCTBOwnedApplicationContentType);\n\n const builder = createBuilder();\n const apiHandler = strapi\n .plugin('content-type-builder')\n .service('api-handler') as typeof import('./api-handler');\n\n const deletedContentTypes: any[] = [];\n const backedUpApiUids: UID.ContentType[] = [];\n let schemaAlreadyRolledBack = false;\n\n try {\n for (const uid of uids) {\n await apiHandler.backup(uid);\n backedUpApiUids.push(uid);\n deletedContentTypes.push(builder.deleteContentType(uid));\n }\n\n const schemaFilesWritten = await builder.writeFiles();\n if (!schemaFilesWritten) {\n schemaAlreadyRolledBack = true;\n throw new ApplicationError('Invalid schema edition');\n }\n\n for (const uid of uids) {\n await apiHandler.clear(uid, { preserveBackup: true });\n }\n\n await pruneFolderReferences(uids);\n } catch (error) {\n await rollbackSchemaMutation({\n builder,\n apiHandler,\n backedUpApiUids,\n schemaAlreadyRolledBack,\n });\n\n throw error;\n }\n\n for (const error of await finalizeSchemaMutation({ apiHandler, backedUpApiUids })) {\n strapi.log.error(error);\n }\n\n for (const contentType of deletedContentTypes) {\n strapi.eventHub.emit('content-type.delete', { contentType });\n }\n};\n\n/**\n * Deletes a content type and the api files related to it\n */\nexport const deleteContentType = async (uid: UID.ContentType, defaultBuilder: any = undefined) => {\n assertCTBOwnedApplicationContentType(uid);\n\n const builder = defaultBuilder || createBuilder();\n // make a backup\n const apiHandler = strapi\n .plugin('content-type-builder')\n .service('api-handler') as typeof import('./api-handler');\n await apiHandler.backup(uid);\n\n let contentType;\n let schemaAlreadyRolledBack = false;\n\n if (!defaultBuilder) {\n try {\n contentType = builder.deleteContentType(uid);\n const schemaFilesWritten = await builder.writeFiles();\n if (!schemaFilesWritten) {\n schemaAlreadyRolledBack = true;\n throw new ApplicationError('Invalid schema edition');\n }\n await apiHandler.clear(uid, { preserveBackup: true });\n await pruneFolderReferences([uid]);\n } catch (error) {\n await rollbackSchemaMutation({\n builder,\n apiHandler,\n backedUpApiUids: [uid],\n schemaAlreadyRolledBack,\n });\n\n throw error;\n }\n\n for (const error of await finalizeSchemaMutation({ apiHandler, backedUpApiUids: [uid] })) {\n strapi.log.error(error);\n }\n } else {\n contentType = builder.deleteContentType(uid);\n }\n\n if (!defaultBuilder) {\n strapi.eventHub.emit('content-type.delete', { contentType });\n }\n\n return contentType;\n};\n"],"names":["ApplicationError","errors","isCTBOwnedApplicationContentType","uid","startsWith","assertCTBOwnedApplicationContentType","pruneFolderReferences","uids","getService","commitFromUpdate","deletedUids","Set","isContentTypeVisible","model","getOr","getRestrictRelationsTo","contentType","coreUids","STRAPI_USER","PREFIX","pluginsUids","UPLOAD_FILE","formatContentType","kind","modelName","plugin","collectionName","info","apiID","schema","contentTypesUtils","getOptions","displayName","singularName","pluralName","description","_","get","pluginOptions","attributes","formatAttributes","visible","restrictRelationsTo","createContentTypes","contentTypes","builder","createBuilder","createdContentTypes","generatedApiNames","schemaAlreadyRolledBack","push","createContentType","defaultBuilder","deferEvent","schemaFilesWritten","writeFiles","error","apiHandler","strapi","service","rollbackSchemaMutation","eventHub","emit","components","options","uidMap","createNewComponentUIDMap","replaceTmpUIDs","replaceTemporaryUIDs","newContentType","targetContentType","infos","Object","keys","forEach","key","target","component","has","createComponent","editComponent","generateAPI","strapiGenerators","require","generate","id","destination","bootstrapApi","dir","dirs","app","root","editContentType","previousSchema","isPluginContentType","Boolean","previousKind","newKind","previousAttributes","prevNonVisibleAttributes","getNonVisibleAttributes","reduce","acc","merge","entryCount","db","query","count","updatedContentType","backup","clear","preserveBackup","backedUpApiUids","finalizeSchemaMutation","log","deleteContentTypes","deletedContentTypes","deleteContentType","undefined"],"mappings":"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"}
1
+ {"version":3,"file":"content-types.mjs","sources":["../../../server/src/services/content-types.ts"],"sourcesContent":["import _, { get } from 'lodash';\n\nimport { contentTypes as contentTypesUtils, errors } from '@strapi/utils';\nimport type { UID, Struct } from '@strapi/types';\nimport { formatAttributes, replaceTemporaryUIDs } from '../utils/attributes';\nimport { getService } from '../utils';\nimport createBuilder from './schema-builder';\nimport { finalizeSchemaMutation, rollbackSchemaMutation } from './schema-mutation';\nimport { coreUids, pluginsUids } from './constants';\n\nconst { ApplicationError } = errors;\n\nexport const isCTBOwnedApplicationContentType = (uid: UID.ContentType): boolean =>\n uid.startsWith('api::');\n\nexport const assertCTBOwnedApplicationContentType = (uid: UID.ContentType): void => {\n if (!isCTBOwnedApplicationContentType(uid)) {\n throw new ApplicationError(`Content type \"${uid}\" is not managed by CTB and cannot be deleted`);\n }\n};\n\nconst pruneFolderReferences = (uids: UID.ContentType[]) => {\n return getService('content-structure').commitFromUpdate({ deletedUids: new Set(uids) });\n};\n\nexport const isContentTypeVisible = (model: Struct.ContentTypeSchema) =>\n get(model, 'pluginOptions.content-type-builder.visible', true) === true;\n\nexport const getRestrictRelationsTo = (contentType: Struct.ContentTypeSchema) => {\n const { uid } = contentType;\n if (uid === coreUids.STRAPI_USER) {\n // TODO: replace with an obj { relation: 'x', bidirectional: true|false }\n return ['oneWay', 'manyWay'];\n }\n\n if (\n uid.startsWith(coreUids.PREFIX) ||\n uid === pluginsUids.UPLOAD_FILE ||\n !isContentTypeVisible(contentType)\n ) {\n return [];\n }\n\n return null;\n};\n\n/**\n * Format a contentType info to be used by the front-end\n */\nexport const formatContentType = (contentType: any) => {\n const { uid, kind, modelName, plugin, collectionName, info } = contentType;\n\n return {\n uid,\n plugin,\n apiID: modelName,\n schema: {\n ...contentTypesUtils.getOptions(contentType),\n displayName: info.displayName,\n singularName: info.singularName,\n pluralName: info.pluralName,\n description: _.get(info, 'description', ''),\n pluginOptions: contentType.pluginOptions,\n kind: kind || 'collectionType',\n collectionName,\n attributes: formatAttributes(contentType),\n visible: isContentTypeVisible(contentType),\n restrictRelationsTo: getRestrictRelationsTo(contentType),\n },\n };\n};\n\nexport const createContentTypes = async (contentTypes: any[]) => {\n const builder = createBuilder();\n const createdContentTypes: any[] = [];\n const generatedApiNames: string[] = [];\n let schemaAlreadyRolledBack = false;\n\n try {\n for (const contentType of contentTypes) {\n createdContentTypes.push(\n await createContentType(contentType, {\n defaultBuilder: builder,\n generatedApiNames,\n deferEvent: true,\n })\n );\n }\n\n const schemaFilesWritten = await builder.writeFiles();\n if (!schemaFilesWritten) {\n schemaAlreadyRolledBack = true;\n throw new ApplicationError('Invalid schema edition');\n }\n } catch (error) {\n const apiHandler = strapi\n .plugin('content-type-builder')\n .service('api-handler') as typeof import('./api-handler');\n await rollbackSchemaMutation({\n builder,\n apiHandler,\n generatedApiNames,\n schemaAlreadyRolledBack,\n });\n\n throw error;\n }\n\n for (const contentType of createdContentTypes) {\n strapi.eventHub.emit('content-type.create', { contentType });\n }\n\n return createdContentTypes;\n};\n\ntype CreateContentTypeOptions = {\n defaultBuilder?: any; // TODO\n generatedApiNames?: string[];\n deferEvent?: boolean;\n};\n\n/**\n * Creates a content type and handle the nested components sent with it\n */\nexport const createContentType = async (\n { contentType, components }: any,\n options: CreateContentTypeOptions = {}\n) => {\n const builder = options.defaultBuilder || createBuilder();\n const uidMap = builder.createNewComponentUIDMap(components || []);\n\n const replaceTmpUIDs = replaceTemporaryUIDs(uidMap);\n\n const newContentType = builder.createContentType(replaceTmpUIDs(contentType));\n\n // allow components to target the new contentType\n const targetContentType = (infos: any) => {\n Object.keys(infos.attributes).forEach((key) => {\n const { target } = infos.attributes[key];\n if (target === '__contentType__') {\n infos.attributes[key].target = newContentType.uid;\n }\n });\n\n return infos;\n };\n\n components?.forEach((component: any) => {\n const options = replaceTmpUIDs(targetContentType(component));\n\n if (!_.has(component, 'uid')) {\n return builder.createComponent(options);\n }\n\n return builder.editComponent(options);\n });\n\n const generatedApiNames = options.generatedApiNames ?? [];\n let schemaAlreadyRolledBack = false;\n\n try {\n // Generate before writing the schema so a successful mutation retains the existing layout.\n if (!contentType.plugin) {\n generatedApiNames.push(contentType.singularName);\n\n await generateAPI({\n displayName: contentType!.displayName || contentType!.info.displayName,\n singularName: contentType!.singularName,\n pluralName: contentType!.pluralName,\n kind: contentType!.kind,\n });\n }\n\n if (!options.defaultBuilder) {\n const schemaFilesWritten = await builder.writeFiles();\n if (!schemaFilesWritten) {\n schemaAlreadyRolledBack = true;\n throw new ApplicationError('Invalid schema edition');\n }\n }\n } catch (error) {\n if (!options.defaultBuilder) {\n const apiHandler = strapi\n .plugin('content-type-builder')\n .service('api-handler') as typeof import('./api-handler');\n await rollbackSchemaMutation({\n builder,\n apiHandler,\n generatedApiNames,\n schemaAlreadyRolledBack,\n });\n }\n\n throw error;\n }\n\n if (!options.deferEvent) {\n strapi.eventHub.emit('content-type.create', { contentType: newContentType });\n }\n\n return newContentType;\n};\n\n/**\n * Generate an API skeleton\n */\nexport const generateAPI = ({\n singularName,\n kind = 'collectionType',\n pluralName,\n displayName,\n}: any) => {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const strapiGenerators = require('@strapi/generators');\n return strapiGenerators.generate(\n 'content-type',\n {\n kind,\n singularName,\n id: singularName,\n pluralName,\n displayName,\n destination: 'new',\n bootstrapApi: true,\n attributes: [],\n },\n { dir: strapi.dirs.app.root }\n );\n};\n\n/**\n * Edits a contentType and handle the nested contentTypes sent with it\n */\nexport const editContentType = async (\n uid: UID.ContentType,\n { contentType, components = [] }: any\n) => {\n const builder = createBuilder();\n\n const previousSchema = builder.contentTypes.get(uid).schema;\n const isPluginContentType = Boolean(builder.contentTypes.get(uid).plugin);\n const previousKind = previousSchema.kind;\n const newKind = contentType.kind || previousKind;\n\n // Restore non-visible attributes from previous schema\n const previousAttributes = previousSchema.attributes;\n const prevNonVisibleAttributes = contentTypesUtils\n .getNonVisibleAttributes(previousSchema)\n .reduce((acc, key) => {\n if (key in previousAttributes) {\n acc[key] = previousAttributes[key];\n }\n\n return acc;\n }, {} as any);\n contentType.attributes = _.merge(prevNonVisibleAttributes, contentType.attributes);\n\n if (newKind !== previousKind && newKind === 'singleType') {\n const entryCount = await strapi.db.query(uid).count();\n if (entryCount > 1) {\n throw new ApplicationError(\n 'You cannot convert a collectionType to a singleType when having multiple entries in DB'\n );\n }\n }\n\n const uidMap = builder.createNewComponentUIDMap(components);\n const replaceTmpUIDs = replaceTemporaryUIDs(uidMap);\n\n const updatedContentType = builder.editContentType({\n uid,\n ...replaceTmpUIDs(contentType),\n });\n\n components.forEach((component: any) => {\n if (!_.has(component, 'uid')) {\n return builder.createComponent(replaceTmpUIDs(component));\n }\n\n return builder.editComponent(replaceTmpUIDs(component));\n });\n\n if (newKind !== previousKind) {\n let schemaAlreadyRolledBack = false;\n const apiHandler = strapi\n .plugin('content-type-builder')\n .service('api-handler') as typeof import('./api-handler');\n await apiHandler.backup(uid);\n\n try {\n await apiHandler.clear(uid, { preserveBackup: true });\n\n if (!isPluginContentType) {\n // generate new api skeleton\n await generateAPI({\n displayName: updatedContentType.schema.info.displayName,\n singularName: updatedContentType.schema.info.singularName,\n pluralName: updatedContentType.schema.info.pluralName,\n kind: updatedContentType.schema.kind,\n });\n }\n\n const schemaFilesWritten = await builder.writeFiles();\n if (!schemaFilesWritten) {\n schemaAlreadyRolledBack = true;\n throw new ApplicationError('Invalid schema edition');\n }\n await pruneFolderReferences([uid]);\n } catch (error) {\n await rollbackSchemaMutation({\n builder,\n apiHandler,\n backedUpApiUids: [uid],\n schemaAlreadyRolledBack,\n });\n\n throw error;\n }\n\n for (const error of await finalizeSchemaMutation({ apiHandler, backedUpApiUids: [uid] })) {\n strapi.log.error(error);\n }\n\n return updatedContentType;\n }\n\n await builder.writeFiles();\n\n strapi.eventHub.emit('content-type.update', { contentType: updatedContentType });\n\n return updatedContentType;\n};\n\nexport const deleteContentTypes = async (uids: UID.ContentType[]) => {\n uids.forEach(assertCTBOwnedApplicationContentType);\n\n const builder = createBuilder();\n const apiHandler = strapi\n .plugin('content-type-builder')\n .service('api-handler') as typeof import('./api-handler');\n\n const deletedContentTypes: any[] = [];\n const backedUpApiUids: UID.ContentType[] = [];\n let schemaAlreadyRolledBack = false;\n\n try {\n for (const uid of uids) {\n await apiHandler.backup(uid);\n backedUpApiUids.push(uid);\n deletedContentTypes.push(builder.deleteContentType(uid));\n }\n\n const schemaFilesWritten = await builder.writeFiles();\n if (!schemaFilesWritten) {\n schemaAlreadyRolledBack = true;\n throw new ApplicationError('Invalid schema edition');\n }\n\n for (const uid of uids) {\n await apiHandler.clear(uid, { preserveBackup: true });\n }\n\n await pruneFolderReferences(uids);\n } catch (error) {\n await rollbackSchemaMutation({\n builder,\n apiHandler,\n backedUpApiUids,\n schemaAlreadyRolledBack,\n });\n\n throw error;\n }\n\n for (const error of await finalizeSchemaMutation({ apiHandler, backedUpApiUids })) {\n strapi.log.error(error);\n }\n\n for (const contentType of deletedContentTypes) {\n strapi.eventHub.emit('content-type.delete', { contentType });\n }\n};\n\n/**\n * Deletes a content type and the api files related to it\n */\nexport const deleteContentType = async (uid: UID.ContentType, defaultBuilder: any = undefined) => {\n assertCTBOwnedApplicationContentType(uid);\n\n const builder = defaultBuilder || createBuilder();\n // make a backup\n const apiHandler = strapi\n .plugin('content-type-builder')\n .service('api-handler') as typeof import('./api-handler');\n await apiHandler.backup(uid);\n\n let contentType;\n let schemaAlreadyRolledBack = false;\n\n if (!defaultBuilder) {\n try {\n contentType = builder.deleteContentType(uid);\n const schemaFilesWritten = await builder.writeFiles();\n if (!schemaFilesWritten) {\n schemaAlreadyRolledBack = true;\n throw new ApplicationError('Invalid schema edition');\n }\n await apiHandler.clear(uid, { preserveBackup: true });\n await pruneFolderReferences([uid]);\n } catch (error) {\n await rollbackSchemaMutation({\n builder,\n apiHandler,\n backedUpApiUids: [uid],\n schemaAlreadyRolledBack,\n });\n\n throw error;\n }\n\n for (const error of await finalizeSchemaMutation({ apiHandler, backedUpApiUids: [uid] })) {\n strapi.log.error(error);\n }\n } else {\n contentType = builder.deleteContentType(uid);\n }\n\n if (!defaultBuilder) {\n strapi.eventHub.emit('content-type.delete', { contentType });\n }\n\n return contentType;\n};\n"],"names":["ApplicationError","errors","isCTBOwnedApplicationContentType","uid","startsWith","assertCTBOwnedApplicationContentType","pruneFolderReferences","uids","getService","commitFromUpdate","deletedUids","Set","isContentTypeVisible","model","get","getRestrictRelationsTo","contentType","coreUids","STRAPI_USER","PREFIX","pluginsUids","UPLOAD_FILE","formatContentType","kind","modelName","plugin","collectionName","info","apiID","schema","contentTypesUtils","getOptions","displayName","singularName","pluralName","description","_","pluginOptions","attributes","formatAttributes","visible","restrictRelationsTo","createContentTypes","contentTypes","builder","createBuilder","createdContentTypes","generatedApiNames","schemaAlreadyRolledBack","push","createContentType","defaultBuilder","deferEvent","schemaFilesWritten","writeFiles","error","apiHandler","strapi","service","rollbackSchemaMutation","eventHub","emit","components","options","uidMap","createNewComponentUIDMap","replaceTmpUIDs","replaceTemporaryUIDs","newContentType","targetContentType","infos","Object","keys","forEach","key","target","component","has","createComponent","editComponent","generateAPI","strapiGenerators","require","generate","id","destination","bootstrapApi","dir","dirs","app","root","editContentType","previousSchema","isPluginContentType","Boolean","previousKind","newKind","previousAttributes","prevNonVisibleAttributes","getNonVisibleAttributes","reduce","acc","merge","entryCount","db","query","count","updatedContentType","backup","clear","preserveBackup","backedUpApiUids","finalizeSchemaMutation","log","deleteContentTypes","deletedContentTypes","deleteContentType","undefined"],"mappings":"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"}