@strapi/content-type-builder 5.54.0 → 5.55.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (208) hide show
  1. package/dist/admin/components/AIChat/hooks/useAIFetch.js +6 -2
  2. package/dist/admin/components/AIChat/hooks/useAIFetch.js.map +1 -1
  3. package/dist/admin/components/AIChat/hooks/useAIFetch.mjs +7 -3
  4. package/dist/admin/components/AIChat/hooks/useAIFetch.mjs.map +1 -1
  5. package/dist/admin/components/AIChat/hooks/usePrefetchAIToken.js +20 -0
  6. package/dist/admin/components/AIChat/hooks/usePrefetchAIToken.js.map +1 -0
  7. package/dist/admin/components/AIChat/hooks/usePrefetchAIToken.mjs +18 -0
  8. package/dist/admin/components/AIChat/hooks/usePrefetchAIToken.mjs.map +1 -0
  9. package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.js +83 -59
  10. package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.js.map +1 -1
  11. package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs +86 -62
  12. package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs.map +1 -1
  13. package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/DeleteFolderDialog.js +112 -0
  14. package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/DeleteFolderDialog.js.map +1 -0
  15. package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/DeleteFolderDialog.mjs +110 -0
  16. package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/DeleteFolderDialog.mjs.map +1 -0
  17. package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/FolderNameField.js +159 -0
  18. package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/FolderNameField.js.map +1 -0
  19. package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/FolderNameField.mjs +157 -0
  20. package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/FolderNameField.mjs.map +1 -0
  21. package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/FolderNavSection.js +311 -0
  22. package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/FolderNavSection.js.map +1 -0
  23. package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/FolderNavSection.mjs +309 -0
  24. package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/FolderNavSection.mjs.map +1 -0
  25. package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/SortableTreeRow.js +379 -0
  26. package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/SortableTreeRow.js.map +1 -0
  27. package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/SortableTreeRow.mjs +376 -0
  28. package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/SortableTreeRow.mjs.map +1 -0
  29. package/dist/admin/components/ContentTypeBuilderNav/hooks/useContentTypeBuilderMenu.js +172 -0
  30. package/dist/admin/components/ContentTypeBuilderNav/hooks/useContentTypeBuilderMenu.js.map +1 -0
  31. package/dist/admin/components/ContentTypeBuilderNav/hooks/useContentTypeBuilderMenu.mjs +166 -0
  32. package/dist/admin/components/ContentTypeBuilderNav/hooks/useContentTypeBuilderMenu.mjs.map +1 -0
  33. package/dist/admin/components/ContentTypeBuilderNav/hooks/useFolderActions.js +62 -0
  34. package/dist/admin/components/ContentTypeBuilderNav/hooks/useFolderActions.js.map +1 -0
  35. package/dist/admin/components/ContentTypeBuilderNav/hooks/useFolderActions.mjs +60 -0
  36. package/dist/admin/components/ContentTypeBuilderNav/hooks/useFolderActions.mjs.map +1 -0
  37. package/dist/admin/components/ContentTypeBuilderNav/hooks/useSortableTree.js +145 -0
  38. package/dist/admin/components/ContentTypeBuilderNav/hooks/useSortableTree.js.map +1 -0
  39. package/dist/admin/components/ContentTypeBuilderNav/hooks/useSortableTree.mjs +143 -0
  40. package/dist/admin/components/ContentTypeBuilderNav/hooks/useSortableTree.mjs.map +1 -0
  41. package/dist/admin/components/ContentTypeBuilderNav/lib/buildFolderTree.js +176 -0
  42. package/dist/admin/components/ContentTypeBuilderNav/lib/buildFolderTree.js.map +1 -0
  43. package/dist/admin/components/ContentTypeBuilderNav/lib/buildFolderTree.mjs +169 -0
  44. package/dist/admin/components/ContentTypeBuilderNav/lib/buildFolderTree.mjs.map +1 -0
  45. package/dist/admin/components/ContentTypeBuilderNav/lib/dropProjection.js +277 -0
  46. package/dist/admin/components/ContentTypeBuilderNav/lib/dropProjection.js.map +1 -0
  47. package/dist/admin/components/ContentTypeBuilderNav/lib/dropProjection.mjs +273 -0
  48. package/dist/admin/components/ContentTypeBuilderNav/lib/dropProjection.mjs.map +1 -0
  49. package/dist/admin/components/ContentTypeBuilderNav/lib/flatModel.js +62 -0
  50. package/dist/admin/components/ContentTypeBuilderNav/lib/flatModel.js.map +1 -0
  51. package/dist/admin/components/ContentTypeBuilderNav/lib/flatModel.mjs +58 -0
  52. package/dist/admin/components/ContentTypeBuilderNav/lib/flatModel.mjs.map +1 -0
  53. package/dist/admin/components/DataManager/DataManagerContext.js.map +1 -1
  54. package/dist/admin/components/DataManager/DataManagerContext.mjs.map +1 -1
  55. package/dist/admin/components/DataManager/DataManagerProvider.js +70 -8
  56. package/dist/admin/components/DataManager/DataManagerProvider.js.map +1 -1
  57. package/dist/admin/components/DataManager/DataManagerProvider.mjs +70 -8
  58. package/dist/admin/components/DataManager/DataManagerProvider.mjs.map +1 -1
  59. package/dist/admin/components/DataManager/reducer.js +411 -33
  60. package/dist/admin/components/DataManager/reducer.js.map +1 -1
  61. package/dist/admin/components/DataManager/reducer.mjs +411 -33
  62. package/dist/admin/components/DataManager/reducer.mjs.map +1 -1
  63. package/dist/admin/components/DataManager/utils/cleanData.js +11 -2
  64. package/dist/admin/components/DataManager/utils/cleanData.js.map +1 -1
  65. package/dist/admin/components/DataManager/utils/cleanData.mjs +11 -2
  66. package/dist/admin/components/DataManager/utils/cleanData.mjs.map +1 -1
  67. package/dist/admin/components/DataManager/utils/contentStructure.js +150 -0
  68. package/dist/admin/components/DataManager/utils/contentStructure.js.map +1 -0
  69. package/dist/admin/components/DataManager/utils/contentStructure.mjs +133 -0
  70. package/dist/admin/components/DataManager/utils/contentStructure.mjs.map +1 -0
  71. package/dist/admin/components/FolderSelect.js +200 -0
  72. package/dist/admin/components/FolderSelect.js.map +1 -0
  73. package/dist/admin/components/FolderSelect.mjs +198 -0
  74. package/dist/admin/components/FolderSelect.mjs.map +1 -0
  75. package/dist/admin/components/FormModal/FormModal.js +23 -2
  76. package/dist/admin/components/FormModal/FormModal.js.map +1 -1
  77. package/dist/admin/components/FormModal/FormModal.mjs +23 -2
  78. package/dist/admin/components/FormModal/FormModal.mjs.map +1 -1
  79. package/dist/admin/components/FormModal/contentType/contentTypeForm.js +15 -18
  80. package/dist/admin/components/FormModal/contentType/contentTypeForm.js.map +1 -1
  81. package/dist/admin/components/FormModal/contentType/contentTypeForm.mjs +15 -18
  82. package/dist/admin/components/FormModal/contentType/contentTypeForm.mjs.map +1 -1
  83. package/dist/admin/components/FormModal/reducer.js +6 -0
  84. package/dist/admin/components/FormModal/reducer.js.map +1 -1
  85. package/dist/admin/components/FormModal/reducer.mjs +6 -0
  86. package/dist/admin/components/FormModal/reducer.mjs.map +1 -1
  87. package/dist/admin/pages/App/index.js +2 -5
  88. package/dist/admin/pages/App/index.js.map +1 -1
  89. package/dist/admin/pages/App/index.mjs +2 -5
  90. package/dist/admin/pages/App/index.mjs.map +1 -1
  91. package/dist/admin/src/components/AIChat/hooks/usePrefetchAIToken.d.ts +1 -0
  92. package/dist/admin/src/components/ContentTypeBuilderNav/components/FolderNav/DeleteFolderDialog.d.ts +16 -0
  93. package/dist/admin/src/components/ContentTypeBuilderNav/components/FolderNav/FolderNameField.d.ts +12 -0
  94. package/dist/admin/src/components/ContentTypeBuilderNav/components/FolderNav/FolderNavSection.d.ts +14 -0
  95. package/dist/admin/src/components/ContentTypeBuilderNav/components/FolderNav/SortableTreeRow.d.ts +38 -0
  96. package/dist/admin/src/components/ContentTypeBuilderNav/{useContentTypeBuilderMenu.d.ts → hooks/useContentTypeBuilderMenu.d.ts} +17 -7
  97. package/dist/admin/src/components/ContentTypeBuilderNav/hooks/useFolderActions.d.ts +42 -0
  98. package/dist/admin/src/components/ContentTypeBuilderNav/hooks/useSortableTree.d.ts +53 -0
  99. package/dist/admin/src/components/ContentTypeBuilderNav/lib/buildFolderTree.d.ts +42 -0
  100. package/dist/admin/src/components/ContentTypeBuilderNav/lib/dropProjection.d.ts +58 -0
  101. package/dist/admin/src/components/ContentTypeBuilderNav/lib/flatModel.d.ts +18 -0
  102. package/dist/admin/src/components/DataManager/DataManagerContext.d.ts +41 -0
  103. package/dist/admin/src/components/DataManager/reducer.d.ts +105 -1
  104. package/dist/admin/src/components/DataManager/utils/cleanData.d.ts +5 -1
  105. package/dist/admin/src/components/DataManager/utils/contentStructure.d.ts +68 -0
  106. package/dist/admin/src/components/FolderSelect.d.ts +18 -0
  107. package/dist/admin/src/components/FormModal/contentType/contentTypeForm.d.ts +0 -21
  108. package/dist/admin/src/components/FormModal/forms/forms.d.ts +0 -10
  109. package/dist/admin/src/components/FormModal/reducer.d.ts +7 -0
  110. package/dist/admin/src/utils/folderTelemetry.d.ts +5 -0
  111. package/dist/admin/translations/en.json.js +23 -0
  112. package/dist/admin/translations/en.json.js.map +1 -1
  113. package/dist/admin/translations/en.json.mjs +23 -0
  114. package/dist/admin/translations/en.json.mjs.map +1 -1
  115. package/dist/admin/utils/folderTelemetry.js +19 -0
  116. package/dist/admin/utils/folderTelemetry.js.map +1 -0
  117. package/dist/admin/utils/folderTelemetry.mjs +16 -0
  118. package/dist/admin/utils/folderTelemetry.mjs.map +1 -0
  119. package/dist/server/controllers/schema.js +1 -1
  120. package/dist/server/controllers/schema.js.map +1 -1
  121. package/dist/server/controllers/schema.mjs +1 -1
  122. package/dist/server/controllers/schema.mjs.map +1 -1
  123. package/dist/server/controllers/validation/common.js +3 -0
  124. package/dist/server/controllers/validation/common.js.map +1 -1
  125. package/dist/server/controllers/validation/common.mjs +3 -1
  126. package/dist/server/controllers/validation/common.mjs.map +1 -1
  127. package/dist/server/controllers/validation/content-structure.js +177 -0
  128. package/dist/server/controllers/validation/content-structure.js.map +1 -0
  129. package/dist/server/controllers/validation/content-structure.mjs +173 -0
  130. package/dist/server/controllers/validation/content-structure.mjs.map +1 -0
  131. package/dist/server/controllers/validation/schema.js +3 -1
  132. package/dist/server/controllers/validation/schema.js.map +1 -1
  133. package/dist/server/controllers/validation/schema.mjs +3 -1
  134. package/dist/server/controllers/validation/schema.mjs.map +1 -1
  135. package/dist/server/register.js +1 -1
  136. package/dist/server/register.js.map +1 -1
  137. package/dist/server/register.mjs +1 -1
  138. package/dist/server/register.mjs.map +1 -1
  139. package/dist/server/routes/content-api.js +4 -4
  140. package/dist/server/routes/content-api.js.map +1 -1
  141. package/dist/server/routes/content-api.mjs +4 -4
  142. package/dist/server/routes/content-api.mjs.map +1 -1
  143. package/dist/server/services/api-handler.js +37 -4
  144. package/dist/server/services/api-handler.js.map +1 -1
  145. package/dist/server/services/api-handler.mjs +36 -5
  146. package/dist/server/services/api-handler.mjs.map +1 -1
  147. package/dist/server/services/content-structure.js +174 -0
  148. package/dist/server/services/content-structure.js.map +1 -0
  149. package/dist/server/services/content-structure.mjs +172 -0
  150. package/dist/server/services/content-structure.mjs.map +1 -0
  151. package/dist/server/services/content-types.js +196 -44
  152. package/dist/server/services/content-types.js.map +1 -1
  153. package/dist/server/services/content-types.mjs +195 -45
  154. package/dist/server/services/content-types.mjs.map +1 -1
  155. package/dist/server/services/index.js +3 -1
  156. package/dist/server/services/index.js.map +1 -1
  157. package/dist/server/services/index.mjs +3 -1
  158. package/dist/server/services/index.mjs.map +1 -1
  159. package/dist/server/services/schema-builder/index.js +4 -2
  160. package/dist/server/services/schema-builder/index.js.map +1 -1
  161. package/dist/server/services/schema-builder/index.mjs +4 -2
  162. package/dist/server/services/schema-builder/index.mjs.map +1 -1
  163. package/dist/server/services/schema-builder/schema-handler.js +16 -16
  164. package/dist/server/services/schema-builder/schema-handler.js.map +1 -1
  165. package/dist/server/services/schema-builder/schema-handler.mjs +16 -16
  166. package/dist/server/services/schema-builder/schema-handler.mjs.map +1 -1
  167. package/dist/server/services/schema-mutation.js +46 -0
  168. package/dist/server/services/schema-mutation.js.map +1 -0
  169. package/dist/server/services/schema-mutation.mjs +43 -0
  170. package/dist/server/services/schema-mutation.mjs.map +1 -0
  171. package/dist/server/services/schema.js +134 -79
  172. package/dist/server/services/schema.js.map +1 -1
  173. package/dist/server/services/schema.mjs +135 -80
  174. package/dist/server/services/schema.mjs.map +1 -1
  175. package/dist/server/src/controllers/schema.d.ts.map +1 -1
  176. package/dist/server/src/controllers/validation/common.d.ts +1 -0
  177. package/dist/server/src/controllers/validation/common.d.ts.map +1 -1
  178. package/dist/server/src/controllers/validation/content-structure.d.ts +56 -0
  179. package/dist/server/src/controllers/validation/content-structure.d.ts.map +1 -0
  180. package/dist/server/src/controllers/validation/schema.d.ts +35 -0
  181. package/dist/server/src/controllers/validation/schema.d.ts.map +1 -1
  182. package/dist/server/src/index.d.ts +3 -0
  183. package/dist/server/src/index.d.ts.map +1 -1
  184. package/dist/server/src/routes/content-api.d.ts.map +1 -1
  185. package/dist/server/src/services/api-handler.d.ts +13 -1
  186. package/dist/server/src/services/api-handler.d.ts.map +1 -1
  187. package/dist/server/src/services/content-structure.d.ts +37 -0
  188. package/dist/server/src/services/content-structure.d.ts.map +1 -0
  189. package/dist/server/src/services/content-types.d.ts +4 -0
  190. package/dist/server/src/services/content-types.d.ts.map +1 -1
  191. package/dist/server/src/services/index.d.ts +4 -0
  192. package/dist/server/src/services/index.d.ts.map +1 -1
  193. package/dist/server/src/services/schema-builder/index.d.ts +3 -1
  194. package/dist/server/src/services/schema-builder/index.d.ts.map +1 -1
  195. package/dist/server/src/services/schema-builder/schema-handler.d.ts.map +1 -1
  196. package/dist/server/src/services/schema-mutation.d.ts +26 -0
  197. package/dist/server/src/services/schema-mutation.d.ts.map +1 -0
  198. package/dist/server/src/services/schema.d.ts +1 -0
  199. package/dist/server/src/services/schema.d.ts.map +1 -1
  200. package/dist/server/src/utils/index.d.ts +2 -0
  201. package/dist/server/src/utils/index.d.ts.map +1 -1
  202. package/dist/server/utils/index.js.map +1 -1
  203. package/dist/server/utils/index.mjs.map +1 -1
  204. package/package.json +6 -6
  205. package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js +0 -157
  206. package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js.map +0 -1
  207. package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.mjs +0 -151
  208. package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.mjs.map +0 -1
@@ -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';\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});\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};\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","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 { 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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"}
@@ -3,7 +3,7 @@
3
3
  var utils = require('@strapi/utils');
4
4
 
5
5
  var register = (async ({ strapi })=>{
6
- const isAiEnabled = strapi.ai.admin.isEnabled();
6
+ const isAiEnabled = strapi.ai.admin.isStrapiManagedAiEnabled();
7
7
  if (isAiEnabled) {
8
8
  const s3Domains = [
9
9
  'strapi-ai-staging.s3.us-east-1.amazonaws.com',
@@ -1 +1 @@
1
- {"version":3,"file":"register.js","sources":["../../server/src/register.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport { CSP_DEFAULTS, extendMiddlewareConfiguration } from '@strapi/utils';\n\nexport default async ({ strapi }: { strapi: Core.Strapi }) => {\n const isAiEnabled = strapi.ai.admin.isEnabled();\n\n if (isAiEnabled) {\n const s3Domains = [\n 'strapi-ai-staging.s3.us-east-1.amazonaws.com',\n 'strapi-ai-production.s3.us-east-1.amazonaws.com',\n ];\n\n const defaultImgSrc = CSP_DEFAULTS['img-src'];\n const defaultMediaSrc = CSP_DEFAULTS['media-src'];\n\n // Extend the security middleware configuration to include S3 domains + defaults\n const middlewares = strapi.config.get('middlewares') as (\n | string\n | { name?: string; config?: any }\n )[];\n\n const configuredMiddlewares = extendMiddlewareConfiguration(middlewares, {\n name: 'strapi::security',\n config: {\n contentSecurityPolicy: {\n directives: {\n 'img-src': [...defaultImgSrc, ...s3Domains],\n 'media-src': [...defaultMediaSrc, ...s3Domains],\n },\n },\n },\n });\n\n strapi.config.set('middlewares', configuredMiddlewares);\n }\n};\n"],"names":["strapi","isAiEnabled","ai","admin","isEnabled","s3Domains","defaultImgSrc","CSP_DEFAULTS","defaultMediaSrc","middlewares","config","get","configuredMiddlewares","extendMiddlewareConfiguration","name","contentSecurityPolicy","directives","set"],"mappings":";;;;AAGA,eAAe,CAAA,OAAO,EAAEA,MAAM,EAA2B,GAAA;AACvD,IAAA,MAAMC,cAAcD,MAAAA,CAAOE,EAAE,CAACC,KAAK,CAACC,SAAS,EAAA;AAE7C,IAAA,IAAIH,WAAAA,EAAa;AACf,QAAA,MAAMI,SAAAA,GAAY;AAChB,YAAA,8CAAA;AACA,YAAA;AACD,SAAA;QAED,MAAMC,aAAAA,GAAgBC,kBAAY,CAAC,SAAA,CAAU;QAC7C,MAAMC,eAAAA,GAAkBD,kBAAY,CAAC,WAAA,CAAY;;AAGjD,QAAA,MAAME,WAAAA,GAAcT,MAAAA,CAAOU,MAAM,CAACC,GAAG,CAAC,aAAA,CAAA;QAKtC,MAAMC,qBAAAA,GAAwBC,oCAA8BJ,WAAAA,EAAa;YACvEK,IAAAA,EAAM,kBAAA;YACNJ,MAAAA,EAAQ;gBACNK,qBAAAA,EAAuB;oBACrBC,UAAAA,EAAY;wBACV,SAAA,EAAW;AAAIV,4BAAAA,GAAAA,aAAAA;AAAkBD,4BAAAA,GAAAA;AAAU,yBAAA;wBAC3C,WAAA,EAAa;AAAIG,4BAAAA,GAAAA,eAAAA;AAAoBH,4BAAAA,GAAAA;AAAU;AACjD;AACF;AACF;AACF,SAAA,CAAA;AAEAL,QAAAA,MAAAA,CAAOU,MAAM,CAACO,GAAG,CAAC,aAAA,EAAeL,qBAAAA,CAAAA;AACnC,IAAA;AACF,CAAA;;;;"}
1
+ {"version":3,"file":"register.js","sources":["../../server/src/register.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport { CSP_DEFAULTS, extendMiddlewareConfiguration } from '@strapi/utils';\n\nexport default async ({ strapi }: { strapi: Core.Strapi }) => {\n const isAiEnabled = strapi.ai.admin.isStrapiManagedAiEnabled();\n\n if (isAiEnabled) {\n const s3Domains = [\n 'strapi-ai-staging.s3.us-east-1.amazonaws.com',\n 'strapi-ai-production.s3.us-east-1.amazonaws.com',\n ];\n\n const defaultImgSrc = CSP_DEFAULTS['img-src'];\n const defaultMediaSrc = CSP_DEFAULTS['media-src'];\n\n // Extend the security middleware configuration to include S3 domains + defaults\n const middlewares = strapi.config.get('middlewares') as (\n | string\n | { name?: string; config?: any }\n )[];\n\n const configuredMiddlewares = extendMiddlewareConfiguration(middlewares, {\n name: 'strapi::security',\n config: {\n contentSecurityPolicy: {\n directives: {\n 'img-src': [...defaultImgSrc, ...s3Domains],\n 'media-src': [...defaultMediaSrc, ...s3Domains],\n },\n },\n },\n });\n\n strapi.config.set('middlewares', configuredMiddlewares);\n }\n};\n"],"names":["strapi","isAiEnabled","ai","admin","isStrapiManagedAiEnabled","s3Domains","defaultImgSrc","CSP_DEFAULTS","defaultMediaSrc","middlewares","config","get","configuredMiddlewares","extendMiddlewareConfiguration","name","contentSecurityPolicy","directives","set"],"mappings":";;;;AAGA,eAAe,CAAA,OAAO,EAAEA,MAAM,EAA2B,GAAA;AACvD,IAAA,MAAMC,cAAcD,MAAAA,CAAOE,EAAE,CAACC,KAAK,CAACC,wBAAwB,EAAA;AAE5D,IAAA,IAAIH,WAAAA,EAAa;AACf,QAAA,MAAMI,SAAAA,GAAY;AAChB,YAAA,8CAAA;AACA,YAAA;AACD,SAAA;QAED,MAAMC,aAAAA,GAAgBC,kBAAY,CAAC,SAAA,CAAU;QAC7C,MAAMC,eAAAA,GAAkBD,kBAAY,CAAC,WAAA,CAAY;;AAGjD,QAAA,MAAME,WAAAA,GAAcT,MAAAA,CAAOU,MAAM,CAACC,GAAG,CAAC,aAAA,CAAA;QAKtC,MAAMC,qBAAAA,GAAwBC,oCAA8BJ,WAAAA,EAAa;YACvEK,IAAAA,EAAM,kBAAA;YACNJ,MAAAA,EAAQ;gBACNK,qBAAAA,EAAuB;oBACrBC,UAAAA,EAAY;wBACV,SAAA,EAAW;AAAIV,4BAAAA,GAAAA,aAAAA;AAAkBD,4BAAAA,GAAAA;AAAU,yBAAA;wBAC3C,WAAA,EAAa;AAAIG,4BAAAA,GAAAA,eAAAA;AAAoBH,4BAAAA,GAAAA;AAAU;AACjD;AACF;AACF;AACF,SAAA,CAAA;AAEAL,QAAAA,MAAAA,CAAOU,MAAM,CAACO,GAAG,CAAC,aAAA,EAAeL,qBAAAA,CAAAA;AACnC,IAAA;AACF,CAAA;;;;"}
@@ -1,7 +1,7 @@
1
1
  import { CSP_DEFAULTS, extendMiddlewareConfiguration } from '@strapi/utils';
2
2
 
3
3
  var register = (async ({ strapi })=>{
4
- const isAiEnabled = strapi.ai.admin.isEnabled();
4
+ const isAiEnabled = strapi.ai.admin.isStrapiManagedAiEnabled();
5
5
  if (isAiEnabled) {
6
6
  const s3Domains = [
7
7
  'strapi-ai-staging.s3.us-east-1.amazonaws.com',
@@ -1 +1 @@
1
- {"version":3,"file":"register.mjs","sources":["../../server/src/register.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport { CSP_DEFAULTS, extendMiddlewareConfiguration } from '@strapi/utils';\n\nexport default async ({ strapi }: { strapi: Core.Strapi }) => {\n const isAiEnabled = strapi.ai.admin.isEnabled();\n\n if (isAiEnabled) {\n const s3Domains = [\n 'strapi-ai-staging.s3.us-east-1.amazonaws.com',\n 'strapi-ai-production.s3.us-east-1.amazonaws.com',\n ];\n\n const defaultImgSrc = CSP_DEFAULTS['img-src'];\n const defaultMediaSrc = CSP_DEFAULTS['media-src'];\n\n // Extend the security middleware configuration to include S3 domains + defaults\n const middlewares = strapi.config.get('middlewares') as (\n | string\n | { name?: string; config?: any }\n )[];\n\n const configuredMiddlewares = extendMiddlewareConfiguration(middlewares, {\n name: 'strapi::security',\n config: {\n contentSecurityPolicy: {\n directives: {\n 'img-src': [...defaultImgSrc, ...s3Domains],\n 'media-src': [...defaultMediaSrc, ...s3Domains],\n },\n },\n },\n });\n\n strapi.config.set('middlewares', configuredMiddlewares);\n }\n};\n"],"names":["strapi","isAiEnabled","ai","admin","isEnabled","s3Domains","defaultImgSrc","CSP_DEFAULTS","defaultMediaSrc","middlewares","config","get","configuredMiddlewares","extendMiddlewareConfiguration","name","contentSecurityPolicy","directives","set"],"mappings":";;AAGA,eAAe,CAAA,OAAO,EAAEA,MAAM,EAA2B,GAAA;AACvD,IAAA,MAAMC,cAAcD,MAAAA,CAAOE,EAAE,CAACC,KAAK,CAACC,SAAS,EAAA;AAE7C,IAAA,IAAIH,WAAAA,EAAa;AACf,QAAA,MAAMI,SAAAA,GAAY;AAChB,YAAA,8CAAA;AACA,YAAA;AACD,SAAA;QAED,MAAMC,aAAAA,GAAgBC,YAAY,CAAC,SAAA,CAAU;QAC7C,MAAMC,eAAAA,GAAkBD,YAAY,CAAC,WAAA,CAAY;;AAGjD,QAAA,MAAME,WAAAA,GAAcT,MAAAA,CAAOU,MAAM,CAACC,GAAG,CAAC,aAAA,CAAA;QAKtC,MAAMC,qBAAAA,GAAwBC,8BAA8BJ,WAAAA,EAAa;YACvEK,IAAAA,EAAM,kBAAA;YACNJ,MAAAA,EAAQ;gBACNK,qBAAAA,EAAuB;oBACrBC,UAAAA,EAAY;wBACV,SAAA,EAAW;AAAIV,4BAAAA,GAAAA,aAAAA;AAAkBD,4BAAAA,GAAAA;AAAU,yBAAA;wBAC3C,WAAA,EAAa;AAAIG,4BAAAA,GAAAA,eAAAA;AAAoBH,4BAAAA,GAAAA;AAAU;AACjD;AACF;AACF;AACF,SAAA,CAAA;AAEAL,QAAAA,MAAAA,CAAOU,MAAM,CAACO,GAAG,CAAC,aAAA,EAAeL,qBAAAA,CAAAA;AACnC,IAAA;AACF,CAAA;;;;"}
1
+ {"version":3,"file":"register.mjs","sources":["../../server/src/register.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport { CSP_DEFAULTS, extendMiddlewareConfiguration } from '@strapi/utils';\n\nexport default async ({ strapi }: { strapi: Core.Strapi }) => {\n const isAiEnabled = strapi.ai.admin.isStrapiManagedAiEnabled();\n\n if (isAiEnabled) {\n const s3Domains = [\n 'strapi-ai-staging.s3.us-east-1.amazonaws.com',\n 'strapi-ai-production.s3.us-east-1.amazonaws.com',\n ];\n\n const defaultImgSrc = CSP_DEFAULTS['img-src'];\n const defaultMediaSrc = CSP_DEFAULTS['media-src'];\n\n // Extend the security middleware configuration to include S3 domains + defaults\n const middlewares = strapi.config.get('middlewares') as (\n | string\n | { name?: string; config?: any }\n )[];\n\n const configuredMiddlewares = extendMiddlewareConfiguration(middlewares, {\n name: 'strapi::security',\n config: {\n contentSecurityPolicy: {\n directives: {\n 'img-src': [...defaultImgSrc, ...s3Domains],\n 'media-src': [...defaultMediaSrc, ...s3Domains],\n },\n },\n },\n });\n\n strapi.config.set('middlewares', configuredMiddlewares);\n }\n};\n"],"names":["strapi","isAiEnabled","ai","admin","isStrapiManagedAiEnabled","s3Domains","defaultImgSrc","CSP_DEFAULTS","defaultMediaSrc","middlewares","config","get","configuredMiddlewares","extendMiddlewareConfiguration","name","contentSecurityPolicy","directives","set"],"mappings":";;AAGA,eAAe,CAAA,OAAO,EAAEA,MAAM,EAA2B,GAAA;AACvD,IAAA,MAAMC,cAAcD,MAAAA,CAAOE,EAAE,CAACC,KAAK,CAACC,wBAAwB,EAAA;AAE5D,IAAA,IAAIH,WAAAA,EAAa;AACf,QAAA,MAAMI,SAAAA,GAAY;AAChB,YAAA,8CAAA;AACA,YAAA;AACD,SAAA;QAED,MAAMC,aAAAA,GAAgBC,YAAY,CAAC,SAAA,CAAU;QAC7C,MAAMC,eAAAA,GAAkBD,YAAY,CAAC,WAAA,CAAY;;AAGjD,QAAA,MAAME,WAAAA,GAAcT,MAAAA,CAAOU,MAAM,CAACC,GAAG,CAAC,aAAA,CAAA;QAKtC,MAAMC,qBAAAA,GAAwBC,8BAA8BJ,WAAAA,EAAa;YACvEK,IAAAA,EAAM,kBAAA;YACNJ,MAAAA,EAAQ;gBACNK,qBAAAA,EAAuB;oBACrBC,UAAAA,EAAY;wBACV,SAAA,EAAW;AAAIV,4BAAAA,GAAAA,aAAAA;AAAkBD,4BAAAA,GAAAA;AAAU,yBAAA;wBAC3C,WAAA,EAAa;AAAIG,4BAAAA,GAAAA,eAAAA;AAAoBH,4BAAAA,GAAAA;AAAU;AACjD;AACF;AACF;AACF,SAAA,CAAA;AAEAL,QAAAA,MAAAA,CAAOU,MAAM,CAACO,GAAG,CAAC,aAAA,EAAeL,qBAAAA,CAAAA;AACnC,IAAA;AACF,CAAA;;;;"}
@@ -2,6 +2,7 @@
2
2
 
3
3
  var z = require('zod/v4');
4
4
  var utils = require('@strapi/utils');
5
+ var common = require('../controllers/validation/common.js');
5
6
 
6
7
  function _interopNamespace(e) {
7
8
  if (e && e.__esModule) return e;
@@ -23,7 +24,6 @@ function _interopNamespace(e) {
23
24
 
24
25
  var z__namespace = /*#__PURE__*/_interopNamespace(z);
25
26
 
26
- const ctUIDRegexp = /^((strapi|admin)::[\w-]+|(api|plugin)::[\w-]+\.[\w-]+)$/;
27
27
  const componentUIDRegexp = /^[\w-]+\.[\w-]+$/;
28
28
  const baseAttributeSchema = z__namespace.object({
29
29
  type: z__namespace.string(),
@@ -40,7 +40,7 @@ const mediaAttributeSchema = baseAttributeSchema.extend({
40
40
  const relationAttributeSchema = baseAttributeSchema.extend({
41
41
  type: z__namespace.literal('relation'),
42
42
  relation: z__namespace.string(),
43
- target: z__namespace.string().regex(ctUIDRegexp),
43
+ target: z__namespace.string().regex(common.CONTENT_TYPE_UID_REGEX),
44
44
  targetAttribute: z__namespace.string().nullable(),
45
45
  autoPopulate: z__namespace.boolean().optional(),
46
46
  mappedBy: z__namespace.string().optional(),
@@ -116,7 +116,7 @@ const contentTypeSchemaBase = z__namespace.object({
116
116
  version: z__namespace.string().optional()
117
117
  });
118
118
  const formattedContentTypeSchema = z__namespace.object({
119
- uid: z__namespace.string().regex(ctUIDRegexp),
119
+ uid: z__namespace.string().regex(common.CONTENT_TYPE_UID_REGEX),
120
120
  plugin: z__namespace.string().optional(),
121
121
  apiID: z__namespace.string(),
122
122
  schema: contentTypeSchemaBase
@@ -160,7 +160,7 @@ const createRoutes = utils.createContentApiRoutesFactory(()=>{
160
160
  handler: 'content-types.getContentType',
161
161
  request: {
162
162
  params: {
163
- uid: z__namespace.string().regex(ctUIDRegexp)
163
+ uid: z__namespace.string().regex(common.CONTENT_TYPE_UID_REGEX)
164
164
  }
165
165
  },
166
166
  response: z__namespace.object({
@@ -1 +1 @@
1
- {"version":3,"file":"content-api.js","sources":["../../../server/src/routes/content-api.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport * as z from 'zod/v4';\n\nimport { createContentApiRoutesFactory } from '@strapi/utils';\n\nconst ctUIDRegexp = /^((strapi|admin)::[\\w-]+|(api|plugin)::[\\w-]+\\.[\\w-]+)$/;\nconst componentUIDRegexp = /^[\\w-]+\\.[\\w-]+$/;\n\nconst baseAttributeSchema = z.object({\n type: z.string(),\n configurable: z.literal(false).optional(),\n private: z.boolean().optional(),\n pluginOptions: z.record(z.string(), z.unknown()).optional(),\n});\n\nconst mediaAttributeSchema = baseAttributeSchema.extend({\n type: z.literal('media'),\n multiple: z.boolean(),\n required: z.boolean().optional(),\n allowedTypes: z.array(z.string()).optional(),\n});\n\nconst relationAttributeSchema = baseAttributeSchema.extend({\n type: z.literal('relation'),\n relation: z.string(),\n target: z.string().regex(ctUIDRegexp),\n targetAttribute: z.string().nullable(),\n autoPopulate: z.boolean().optional(),\n mappedBy: z.string().optional(),\n inversedBy: z.string().optional(),\n});\n\nconst componentAttributeSchema = baseAttributeSchema.extend({\n type: z.literal('component'),\n component: z.string(),\n repeatable: z.boolean(),\n required: z.boolean().optional(),\n min: z.number().optional(),\n max: z.number().optional(),\n});\n\nconst dynamicZoneAttributeSchema = baseAttributeSchema.extend({\n type: z.literal('dynamiczone'),\n components: z.array(z.string().regex(componentUIDRegexp)),\n required: z.boolean().optional(),\n min: z.number().optional(),\n max: z.number().optional(),\n});\n\nconst uidAttributeSchema = baseAttributeSchema.extend({\n type: z.literal('uid'),\n targetField: z.string().optional(),\n});\n\nconst genericAttributeSchema = z.object({\n type: z.string(),\n required: z.boolean().optional(),\n unique: z.boolean().optional(),\n default: z.unknown().optional(),\n min: z.union([z.number(), z.string()]).optional(),\n max: z.union([z.number(), z.string()]).optional(),\n minLength: z.number().optional(),\n maxLength: z.number().optional(),\n enum: z.array(z.string()).optional(),\n regex: z.string().optional(),\n private: z.boolean().optional(),\n configurable: z.boolean().optional(),\n pluginOptions: z.record(z.string(), z.unknown()).optional(),\n});\n\nconst attributeSchema = z.union([\n mediaAttributeSchema,\n relationAttributeSchema,\n componentAttributeSchema,\n dynamicZoneAttributeSchema,\n uidAttributeSchema,\n genericAttributeSchema,\n]);\n\nconst contentTypeSchemaBase = z.object({\n displayName: z.string(),\n singularName: z.string(),\n pluralName: z.string(),\n description: z.string(),\n draftAndPublish: z.boolean(),\n kind: z.enum(['collectionType', 'singleType']),\n collectionName: z.string().optional(),\n attributes: z.record(z.string(), attributeSchema),\n visible: z.boolean(),\n restrictRelationsTo: z.array(z.string()).nullable(),\n pluginOptions: z.record(z.string(), z.unknown()).optional(),\n options: z.record(z.string(), z.unknown()).optional(),\n reviewWorkflows: z.boolean().optional(),\n populateCreatorFields: z.boolean().optional(),\n comment: z.string().optional(),\n version: z.string().optional(),\n});\n\nconst formattedContentTypeSchema = z.object({\n uid: z.string().regex(ctUIDRegexp),\n plugin: z.string().optional(),\n apiID: z.string(),\n schema: contentTypeSchemaBase,\n});\n\nconst componentSchemaBase = z.object({\n displayName: z.string(),\n description: z.string(),\n icon: z.string().optional(),\n connection: z.string().optional(),\n collectionName: z.string().optional(),\n attributes: z.record(z.string(), attributeSchema),\n pluginOptions: z.record(z.string(), z.unknown()).optional(),\n});\n\nconst formattedComponentSchema = z.object({\n uid: z.string().regex(componentUIDRegexp),\n category: z.string(),\n apiId: z.string(),\n schema: componentSchemaBase,\n});\n\nconst createRoutes = createContentApiRoutesFactory((): Core.RouterInput['routes'] => {\n return [\n {\n method: 'GET',\n path: '/content-types',\n handler: 'content-types.getContentTypes',\n request: {\n query: { kind: z.enum(['collectionType', 'singleType']) },\n },\n response: z.object({ data: z.array(formattedContentTypeSchema) }),\n },\n {\n method: 'GET',\n path: '/content-types/:uid',\n handler: 'content-types.getContentType',\n request: {\n params: {\n uid: z.string().regex(ctUIDRegexp),\n },\n },\n response: z.object({ data: formattedContentTypeSchema }),\n },\n {\n method: 'GET',\n path: '/components',\n handler: 'components.getComponents',\n response: z.object({ data: z.array(formattedComponentSchema) }),\n },\n {\n method: 'GET',\n path: '/components/:uid',\n handler: 'components.getComponent',\n request: {\n params: {\n uid: z.string().regex(componentUIDRegexp),\n },\n },\n response: z.object({ data: formattedComponentSchema }),\n },\n ];\n});\n\nexport default createRoutes;\n"],"names":["ctUIDRegexp","componentUIDRegexp","baseAttributeSchema","z","object","type","string","configurable","literal","optional","private","boolean","pluginOptions","record","unknown","mediaAttributeSchema","extend","multiple","required","allowedTypes","array","relationAttributeSchema","relation","target","regex","targetAttribute","nullable","autoPopulate","mappedBy","inversedBy","componentAttributeSchema","component","repeatable","min","number","max","dynamicZoneAttributeSchema","components","uidAttributeSchema","targetField","genericAttributeSchema","unique","default","union","minLength","maxLength","enum","attributeSchema","contentTypeSchemaBase","displayName","singularName","pluralName","description","draftAndPublish","kind","collectionName","attributes","visible","restrictRelationsTo","options","reviewWorkflows","populateCreatorFields","comment","version","formattedContentTypeSchema","uid","plugin","apiID","schema","componentSchemaBase","icon","connection","formattedComponentSchema","category","apiId","createRoutes","createContentApiRoutesFactory","method","path","handler","request","query","response","data","params"],"mappings":"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"}
1
+ {"version":3,"file":"content-api.js","sources":["../../../server/src/routes/content-api.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport * as z from 'zod/v4';\n\nimport { createContentApiRoutesFactory } from '@strapi/utils';\n\nimport { CONTENT_TYPE_UID_REGEX } from '../controllers/validation/common';\n\nconst componentUIDRegexp = /^[\\w-]+\\.[\\w-]+$/;\n\nconst baseAttributeSchema = z.object({\n type: z.string(),\n configurable: z.literal(false).optional(),\n private: z.boolean().optional(),\n pluginOptions: z.record(z.string(), z.unknown()).optional(),\n});\n\nconst mediaAttributeSchema = baseAttributeSchema.extend({\n type: z.literal('media'),\n multiple: z.boolean(),\n required: z.boolean().optional(),\n allowedTypes: z.array(z.string()).optional(),\n});\n\nconst relationAttributeSchema = baseAttributeSchema.extend({\n type: z.literal('relation'),\n relation: z.string(),\n target: z.string().regex(CONTENT_TYPE_UID_REGEX),\n targetAttribute: z.string().nullable(),\n autoPopulate: z.boolean().optional(),\n mappedBy: z.string().optional(),\n inversedBy: z.string().optional(),\n});\n\nconst componentAttributeSchema = baseAttributeSchema.extend({\n type: z.literal('component'),\n component: z.string(),\n repeatable: z.boolean(),\n required: z.boolean().optional(),\n min: z.number().optional(),\n max: z.number().optional(),\n});\n\nconst dynamicZoneAttributeSchema = baseAttributeSchema.extend({\n type: z.literal('dynamiczone'),\n components: z.array(z.string().regex(componentUIDRegexp)),\n required: z.boolean().optional(),\n min: z.number().optional(),\n max: z.number().optional(),\n});\n\nconst uidAttributeSchema = baseAttributeSchema.extend({\n type: z.literal('uid'),\n targetField: z.string().optional(),\n});\n\nconst genericAttributeSchema = z.object({\n type: z.string(),\n required: z.boolean().optional(),\n unique: z.boolean().optional(),\n default: z.unknown().optional(),\n min: z.union([z.number(), z.string()]).optional(),\n max: z.union([z.number(), z.string()]).optional(),\n minLength: z.number().optional(),\n maxLength: z.number().optional(),\n enum: z.array(z.string()).optional(),\n regex: z.string().optional(),\n private: z.boolean().optional(),\n configurable: z.boolean().optional(),\n pluginOptions: z.record(z.string(), z.unknown()).optional(),\n});\n\nconst attributeSchema = z.union([\n mediaAttributeSchema,\n relationAttributeSchema,\n componentAttributeSchema,\n dynamicZoneAttributeSchema,\n uidAttributeSchema,\n genericAttributeSchema,\n]);\n\nconst contentTypeSchemaBase = z.object({\n displayName: z.string(),\n singularName: z.string(),\n pluralName: z.string(),\n description: z.string(),\n draftAndPublish: z.boolean(),\n kind: z.enum(['collectionType', 'singleType']),\n collectionName: z.string().optional(),\n attributes: z.record(z.string(), attributeSchema),\n visible: z.boolean(),\n restrictRelationsTo: z.array(z.string()).nullable(),\n pluginOptions: z.record(z.string(), z.unknown()).optional(),\n options: z.record(z.string(), z.unknown()).optional(),\n reviewWorkflows: z.boolean().optional(),\n populateCreatorFields: z.boolean().optional(),\n comment: z.string().optional(),\n version: z.string().optional(),\n});\n\nconst formattedContentTypeSchema = z.object({\n uid: z.string().regex(CONTENT_TYPE_UID_REGEX),\n plugin: z.string().optional(),\n apiID: z.string(),\n schema: contentTypeSchemaBase,\n});\n\nconst componentSchemaBase = z.object({\n displayName: z.string(),\n description: z.string(),\n icon: z.string().optional(),\n connection: z.string().optional(),\n collectionName: z.string().optional(),\n attributes: z.record(z.string(), attributeSchema),\n pluginOptions: z.record(z.string(), z.unknown()).optional(),\n});\n\nconst formattedComponentSchema = z.object({\n uid: z.string().regex(componentUIDRegexp),\n category: z.string(),\n apiId: z.string(),\n schema: componentSchemaBase,\n});\n\nconst createRoutes = createContentApiRoutesFactory((): Core.RouterInput['routes'] => {\n return [\n {\n method: 'GET',\n path: '/content-types',\n handler: 'content-types.getContentTypes',\n request: {\n query: { kind: z.enum(['collectionType', 'singleType']) },\n },\n response: z.object({ data: z.array(formattedContentTypeSchema) }),\n },\n {\n method: 'GET',\n path: '/content-types/:uid',\n handler: 'content-types.getContentType',\n request: {\n params: {\n uid: z.string().regex(CONTENT_TYPE_UID_REGEX),\n },\n },\n response: z.object({ data: formattedContentTypeSchema }),\n },\n {\n method: 'GET',\n path: '/components',\n handler: 'components.getComponents',\n response: z.object({ data: z.array(formattedComponentSchema) }),\n },\n {\n method: 'GET',\n path: '/components/:uid',\n handler: 'components.getComponent',\n request: {\n params: {\n uid: z.string().regex(componentUIDRegexp),\n },\n },\n response: z.object({ data: formattedComponentSchema }),\n },\n ];\n});\n\nexport default createRoutes;\n"],"names":["componentUIDRegexp","baseAttributeSchema","z","object","type","string","configurable","literal","optional","private","boolean","pluginOptions","record","unknown","mediaAttributeSchema","extend","multiple","required","allowedTypes","array","relationAttributeSchema","relation","target","regex","CONTENT_TYPE_UID_REGEX","targetAttribute","nullable","autoPopulate","mappedBy","inversedBy","componentAttributeSchema","component","repeatable","min","number","max","dynamicZoneAttributeSchema","components","uidAttributeSchema","targetField","genericAttributeSchema","unique","default","union","minLength","maxLength","enum","attributeSchema","contentTypeSchemaBase","displayName","singularName","pluralName","description","draftAndPublish","kind","collectionName","attributes","visible","restrictRelationsTo","options","reviewWorkflows","populateCreatorFields","comment","version","formattedContentTypeSchema","uid","plugin","apiID","schema","componentSchemaBase","icon","connection","formattedComponentSchema","category","apiId","createRoutes","createContentApiRoutesFactory","method","path","handler","request","query","response","data","params"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import * as z from 'zod/v4';
2
2
  import { createContentApiRoutesFactory } from '@strapi/utils';
3
+ import { CONTENT_TYPE_UID_REGEX } from '../controllers/validation/common.mjs';
3
4
 
4
- const ctUIDRegexp = /^((strapi|admin)::[\w-]+|(api|plugin)::[\w-]+\.[\w-]+)$/;
5
5
  const componentUIDRegexp = /^[\w-]+\.[\w-]+$/;
6
6
  const baseAttributeSchema = z.object({
7
7
  type: z.string(),
@@ -18,7 +18,7 @@ const mediaAttributeSchema = baseAttributeSchema.extend({
18
18
  const relationAttributeSchema = baseAttributeSchema.extend({
19
19
  type: z.literal('relation'),
20
20
  relation: z.string(),
21
- target: z.string().regex(ctUIDRegexp),
21
+ target: z.string().regex(CONTENT_TYPE_UID_REGEX),
22
22
  targetAttribute: z.string().nullable(),
23
23
  autoPopulate: z.boolean().optional(),
24
24
  mappedBy: z.string().optional(),
@@ -94,7 +94,7 @@ const contentTypeSchemaBase = z.object({
94
94
  version: z.string().optional()
95
95
  });
96
96
  const formattedContentTypeSchema = z.object({
97
- uid: z.string().regex(ctUIDRegexp),
97
+ uid: z.string().regex(CONTENT_TYPE_UID_REGEX),
98
98
  plugin: z.string().optional(),
99
99
  apiID: z.string(),
100
100
  schema: contentTypeSchemaBase
@@ -138,7 +138,7 @@ const createRoutes = createContentApiRoutesFactory(()=>{
138
138
  handler: 'content-types.getContentType',
139
139
  request: {
140
140
  params: {
141
- uid: z.string().regex(ctUIDRegexp)
141
+ uid: z.string().regex(CONTENT_TYPE_UID_REGEX)
142
142
  }
143
143
  },
144
144
  response: z.object({
@@ -1 +1 @@
1
- {"version":3,"file":"content-api.mjs","sources":["../../../server/src/routes/content-api.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport * as z from 'zod/v4';\n\nimport { createContentApiRoutesFactory } from '@strapi/utils';\n\nconst ctUIDRegexp = /^((strapi|admin)::[\\w-]+|(api|plugin)::[\\w-]+\\.[\\w-]+)$/;\nconst componentUIDRegexp = /^[\\w-]+\\.[\\w-]+$/;\n\nconst baseAttributeSchema = z.object({\n type: z.string(),\n configurable: z.literal(false).optional(),\n private: z.boolean().optional(),\n pluginOptions: z.record(z.string(), z.unknown()).optional(),\n});\n\nconst mediaAttributeSchema = baseAttributeSchema.extend({\n type: z.literal('media'),\n multiple: z.boolean(),\n required: z.boolean().optional(),\n allowedTypes: z.array(z.string()).optional(),\n});\n\nconst relationAttributeSchema = baseAttributeSchema.extend({\n type: z.literal('relation'),\n relation: z.string(),\n target: z.string().regex(ctUIDRegexp),\n targetAttribute: z.string().nullable(),\n autoPopulate: z.boolean().optional(),\n mappedBy: z.string().optional(),\n inversedBy: z.string().optional(),\n});\n\nconst componentAttributeSchema = baseAttributeSchema.extend({\n type: z.literal('component'),\n component: z.string(),\n repeatable: z.boolean(),\n required: z.boolean().optional(),\n min: z.number().optional(),\n max: z.number().optional(),\n});\n\nconst dynamicZoneAttributeSchema = baseAttributeSchema.extend({\n type: z.literal('dynamiczone'),\n components: z.array(z.string().regex(componentUIDRegexp)),\n required: z.boolean().optional(),\n min: z.number().optional(),\n max: z.number().optional(),\n});\n\nconst uidAttributeSchema = baseAttributeSchema.extend({\n type: z.literal('uid'),\n targetField: z.string().optional(),\n});\n\nconst genericAttributeSchema = z.object({\n type: z.string(),\n required: z.boolean().optional(),\n unique: z.boolean().optional(),\n default: z.unknown().optional(),\n min: z.union([z.number(), z.string()]).optional(),\n max: z.union([z.number(), z.string()]).optional(),\n minLength: z.number().optional(),\n maxLength: z.number().optional(),\n enum: z.array(z.string()).optional(),\n regex: z.string().optional(),\n private: z.boolean().optional(),\n configurable: z.boolean().optional(),\n pluginOptions: z.record(z.string(), z.unknown()).optional(),\n});\n\nconst attributeSchema = z.union([\n mediaAttributeSchema,\n relationAttributeSchema,\n componentAttributeSchema,\n dynamicZoneAttributeSchema,\n uidAttributeSchema,\n genericAttributeSchema,\n]);\n\nconst contentTypeSchemaBase = z.object({\n displayName: z.string(),\n singularName: z.string(),\n pluralName: z.string(),\n description: z.string(),\n draftAndPublish: z.boolean(),\n kind: z.enum(['collectionType', 'singleType']),\n collectionName: z.string().optional(),\n attributes: z.record(z.string(), attributeSchema),\n visible: z.boolean(),\n restrictRelationsTo: z.array(z.string()).nullable(),\n pluginOptions: z.record(z.string(), z.unknown()).optional(),\n options: z.record(z.string(), z.unknown()).optional(),\n reviewWorkflows: z.boolean().optional(),\n populateCreatorFields: z.boolean().optional(),\n comment: z.string().optional(),\n version: z.string().optional(),\n});\n\nconst formattedContentTypeSchema = z.object({\n uid: z.string().regex(ctUIDRegexp),\n plugin: z.string().optional(),\n apiID: z.string(),\n schema: contentTypeSchemaBase,\n});\n\nconst componentSchemaBase = z.object({\n displayName: z.string(),\n description: z.string(),\n icon: z.string().optional(),\n connection: z.string().optional(),\n collectionName: z.string().optional(),\n attributes: z.record(z.string(), attributeSchema),\n pluginOptions: z.record(z.string(), z.unknown()).optional(),\n});\n\nconst formattedComponentSchema = z.object({\n uid: z.string().regex(componentUIDRegexp),\n category: z.string(),\n apiId: z.string(),\n schema: componentSchemaBase,\n});\n\nconst createRoutes = createContentApiRoutesFactory((): Core.RouterInput['routes'] => {\n return [\n {\n method: 'GET',\n path: '/content-types',\n handler: 'content-types.getContentTypes',\n request: {\n query: { kind: z.enum(['collectionType', 'singleType']) },\n },\n response: z.object({ data: z.array(formattedContentTypeSchema) }),\n },\n {\n method: 'GET',\n path: '/content-types/:uid',\n handler: 'content-types.getContentType',\n request: {\n params: {\n uid: z.string().regex(ctUIDRegexp),\n },\n },\n response: z.object({ data: formattedContentTypeSchema }),\n },\n {\n method: 'GET',\n path: '/components',\n handler: 'components.getComponents',\n response: z.object({ data: z.array(formattedComponentSchema) }),\n },\n {\n method: 'GET',\n path: '/components/:uid',\n handler: 'components.getComponent',\n request: {\n params: {\n uid: z.string().regex(componentUIDRegexp),\n },\n },\n response: z.object({ data: formattedComponentSchema }),\n },\n ];\n});\n\nexport default createRoutes;\n"],"names":["ctUIDRegexp","componentUIDRegexp","baseAttributeSchema","z","object","type","string","configurable","literal","optional","private","boolean","pluginOptions","record","unknown","mediaAttributeSchema","extend","multiple","required","allowedTypes","array","relationAttributeSchema","relation","target","regex","targetAttribute","nullable","autoPopulate","mappedBy","inversedBy","componentAttributeSchema","component","repeatable","min","number","max","dynamicZoneAttributeSchema","components","uidAttributeSchema","targetField","genericAttributeSchema","unique","default","union","minLength","maxLength","enum","attributeSchema","contentTypeSchemaBase","displayName","singularName","pluralName","description","draftAndPublish","kind","collectionName","attributes","visible","restrictRelationsTo","options","reviewWorkflows","populateCreatorFields","comment","version","formattedContentTypeSchema","uid","plugin","apiID","schema","componentSchemaBase","icon","connection","formattedComponentSchema","category","apiId","createRoutes","createContentApiRoutesFactory","method","path","handler","request","query","response","data","params"],"mappings":";;;AAKA,MAAMA,WAAAA,GAAc,yDAAA;AACpB,MAAMC,kBAAAA,GAAqB,kBAAA;AAE3B,MAAMC,mBAAAA,GAAsBC,CAAAA,CAAEC,MAAM,CAAC;AACnCC,IAAAA,IAAAA,EAAMF,EAAEG,MAAM,EAAA;AACdC,IAAAA,YAAAA,EAAcJ,CAAAA,CAAEK,OAAO,CAAC,KAAA,CAAA,CAAOC,QAAQ,EAAA;IACvCC,OAAAA,EAASP,CAAAA,CAAEQ,OAAO,EAAA,CAAGF,QAAQ,EAAA;IAC7BG,aAAAA,EAAeT,CAAAA,CAAEU,MAAM,CAACV,CAAAA,CAAEG,MAAM,EAAA,EAAIH,CAAAA,CAAEW,OAAO,EAAA,CAAA,CAAIL,QAAQ;AAC3D,CAAA,CAAA;AAEA,MAAMM,oBAAAA,GAAuBb,mBAAAA,CAAoBc,MAAM,CAAC;IACtDX,IAAAA,EAAMF,CAAAA,CAAEK,OAAO,CAAC,OAAA,CAAA;AAChBS,IAAAA,QAAAA,EAAUd,EAAEQ,OAAO,EAAA;IACnBO,QAAAA,EAAUf,CAAAA,CAAEQ,OAAO,EAAA,CAAGF,QAAQ,EAAA;AAC9BU,IAAAA,YAAAA,EAAchB,EAAEiB,KAAK,CAACjB,CAAAA,CAAEG,MAAM,IAAIG,QAAQ;AAC5C,CAAA,CAAA;AAEA,MAAMY,uBAAAA,GAA0BnB,mBAAAA,CAAoBc,MAAM,CAAC;IACzDX,IAAAA,EAAMF,CAAAA,CAAEK,OAAO,CAAC,UAAA,CAAA;AAChBc,IAAAA,QAAAA,EAAUnB,EAAEG,MAAM,EAAA;AAClBiB,IAAAA,MAAAA,EAAQpB,CAAAA,CAAEG,MAAM,EAAA,CAAGkB,KAAK,CAACxB,WAAAA,CAAAA;IACzByB,eAAAA,EAAiBtB,CAAAA,CAAEG,MAAM,EAAA,CAAGoB,QAAQ,EAAA;IACpCC,YAAAA,EAAcxB,CAAAA,CAAEQ,OAAO,EAAA,CAAGF,QAAQ,EAAA;IAClCmB,QAAAA,EAAUzB,CAAAA,CAAEG,MAAM,EAAA,CAAGG,QAAQ,EAAA;IAC7BoB,UAAAA,EAAY1B,CAAAA,CAAEG,MAAM,EAAA,CAAGG,QAAQ;AACjC,CAAA,CAAA;AAEA,MAAMqB,wBAAAA,GAA2B5B,mBAAAA,CAAoBc,MAAM,CAAC;IAC1DX,IAAAA,EAAMF,CAAAA,CAAEK,OAAO,CAAC,WAAA,CAAA;AAChBuB,IAAAA,SAAAA,EAAW5B,EAAEG,MAAM,EAAA;AACnB0B,IAAAA,UAAAA,EAAY7B,EAAEQ,OAAO,EAAA;IACrBO,QAAAA,EAAUf,CAAAA,CAAEQ,OAAO,EAAA,CAAGF,QAAQ,EAAA;IAC9BwB,GAAAA,EAAK9B,CAAAA,CAAE+B,MAAM,EAAA,CAAGzB,QAAQ,EAAA;IACxB0B,GAAAA,EAAKhC,CAAAA,CAAE+B,MAAM,EAAA,CAAGzB,QAAQ;AAC1B,CAAA,CAAA;AAEA,MAAM2B,0BAAAA,GAA6BlC,mBAAAA,CAAoBc,MAAM,CAAC;IAC5DX,IAAAA,EAAMF,CAAAA,CAAEK,OAAO,CAAC,aAAA,CAAA;AAChB6B,IAAAA,UAAAA,EAAYlC,EAAEiB,KAAK,CAACjB,EAAEG,MAAM,EAAA,CAAGkB,KAAK,CAACvB,kBAAAA,CAAAA,CAAAA;IACrCiB,QAAAA,EAAUf,CAAAA,CAAEQ,OAAO,EAAA,CAAGF,QAAQ,EAAA;IAC9BwB,GAAAA,EAAK9B,CAAAA,CAAE+B,MAAM,EAAA,CAAGzB,QAAQ,EAAA;IACxB0B,GAAAA,EAAKhC,CAAAA,CAAE+B,MAAM,EAAA,CAAGzB,QAAQ;AAC1B,CAAA,CAAA;AAEA,MAAM6B,kBAAAA,GAAqBpC,mBAAAA,CAAoBc,MAAM,CAAC;IACpDX,IAAAA,EAAMF,CAAAA,CAAEK,OAAO,CAAC,KAAA,CAAA;IAChB+B,WAAAA,EAAapC,CAAAA,CAAEG,MAAM,EAAA,CAAGG,QAAQ;AAClC,CAAA,CAAA;AAEA,MAAM+B,sBAAAA,GAAyBrC,CAAAA,CAAEC,MAAM,CAAC;AACtCC,IAAAA,IAAAA,EAAMF,EAAEG,MAAM,EAAA;IACdY,QAAAA,EAAUf,CAAAA,CAAEQ,OAAO,EAAA,CAAGF,QAAQ,EAAA;IAC9BgC,MAAAA,EAAQtC,CAAAA,CAAEQ,OAAO,EAAA,CAAGF,QAAQ,EAAA;IAC5BiC,OAAAA,EAASvC,CAAAA,CAAEW,OAAO,EAAA,CAAGL,QAAQ,EAAA;IAC7BwB,GAAAA,EAAK9B,CAAAA,CAAEwC,KAAK,CAAC;AAACxC,QAAAA,CAAAA,CAAE+B,MAAM,EAAA;AAAI/B,QAAAA,CAAAA,CAAEG,MAAM;AAAG,KAAA,CAAA,CAAEG,QAAQ,EAAA;IAC/C0B,GAAAA,EAAKhC,CAAAA,CAAEwC,KAAK,CAAC;AAACxC,QAAAA,CAAAA,CAAE+B,MAAM,EAAA;AAAI/B,QAAAA,CAAAA,CAAEG,MAAM;AAAG,KAAA,CAAA,CAAEG,QAAQ,EAAA;IAC/CmC,SAAAA,EAAWzC,CAAAA,CAAE+B,MAAM,EAAA,CAAGzB,QAAQ,EAAA;IAC9BoC,SAAAA,EAAW1C,CAAAA,CAAE+B,MAAM,EAAA,CAAGzB,QAAQ,EAAA;AAC9BqC,IAAAA,IAAAA,EAAM3C,EAAEiB,KAAK,CAACjB,CAAAA,CAAEG,MAAM,IAAIG,QAAQ,EAAA;IAClCe,KAAAA,EAAOrB,CAAAA,CAAEG,MAAM,EAAA,CAAGG,QAAQ,EAAA;IAC1BC,OAAAA,EAASP,CAAAA,CAAEQ,OAAO,EAAA,CAAGF,QAAQ,EAAA;IAC7BF,YAAAA,EAAcJ,CAAAA,CAAEQ,OAAO,EAAA,CAAGF,QAAQ,EAAA;IAClCG,aAAAA,EAAeT,CAAAA,CAAEU,MAAM,CAACV,CAAAA,CAAEG,MAAM,EAAA,EAAIH,CAAAA,CAAEW,OAAO,EAAA,CAAA,CAAIL,QAAQ;AAC3D,CAAA,CAAA;AAEA,MAAMsC,eAAAA,GAAkB5C,CAAAA,CAAEwC,KAAK,CAAC;AAC9B5B,IAAAA,oBAAAA;AACAM,IAAAA,uBAAAA;AACAS,IAAAA,wBAAAA;AACAM,IAAAA,0BAAAA;AACAE,IAAAA,kBAAAA;AACAE,IAAAA;AACD,CAAA,CAAA;AAED,MAAMQ,qBAAAA,GAAwB7C,CAAAA,CAAEC,MAAM,CAAC;AACrC6C,IAAAA,WAAAA,EAAa9C,EAAEG,MAAM,EAAA;AACrB4C,IAAAA,YAAAA,EAAc/C,EAAEG,MAAM,EAAA;AACtB6C,IAAAA,UAAAA,EAAYhD,EAAEG,MAAM,EAAA;AACpB8C,IAAAA,WAAAA,EAAajD,EAAEG,MAAM,EAAA;AACrB+C,IAAAA,eAAAA,EAAiBlD,EAAEQ,OAAO,EAAA;IAC1B2C,IAAAA,EAAMnD,CAAAA,CAAE2C,IAAI,CAAC;AAAC,QAAA,gBAAA;AAAkB,QAAA;AAAa,KAAA,CAAA;IAC7CS,cAAAA,EAAgBpD,CAAAA,CAAEG,MAAM,EAAA,CAAGG,QAAQ,EAAA;AACnC+C,IAAAA,UAAAA,EAAYrD,CAAAA,CAAEU,MAAM,CAACV,CAAAA,CAAEG,MAAM,EAAA,EAAIyC,eAAAA,CAAAA;AACjCU,IAAAA,OAAAA,EAAStD,EAAEQ,OAAO,EAAA;AAClB+C,IAAAA,mBAAAA,EAAqBvD,EAAEiB,KAAK,CAACjB,CAAAA,CAAEG,MAAM,IAAIoB,QAAQ,EAAA;IACjDd,aAAAA,EAAeT,CAAAA,CAAEU,MAAM,CAACV,CAAAA,CAAEG,MAAM,EAAA,EAAIH,CAAAA,CAAEW,OAAO,EAAA,CAAA,CAAIL,QAAQ,EAAA;IACzDkD,OAAAA,EAASxD,CAAAA,CAAEU,MAAM,CAACV,CAAAA,CAAEG,MAAM,EAAA,EAAIH,CAAAA,CAAEW,OAAO,EAAA,CAAA,CAAIL,QAAQ,EAAA;IACnDmD,eAAAA,EAAiBzD,CAAAA,CAAEQ,OAAO,EAAA,CAAGF,QAAQ,EAAA;IACrCoD,qBAAAA,EAAuB1D,CAAAA,CAAEQ,OAAO,EAAA,CAAGF,QAAQ,EAAA;IAC3CqD,OAAAA,EAAS3D,CAAAA,CAAEG,MAAM,EAAA,CAAGG,QAAQ,EAAA;IAC5BsD,OAAAA,EAAS5D,CAAAA,CAAEG,MAAM,EAAA,CAAGG,QAAQ;AAC9B,CAAA,CAAA;AAEA,MAAMuD,0BAAAA,GAA6B7D,CAAAA,CAAEC,MAAM,CAAC;AAC1C6D,IAAAA,GAAAA,EAAK9D,CAAAA,CAAEG,MAAM,EAAA,CAAGkB,KAAK,CAACxB,WAAAA,CAAAA;IACtBkE,MAAAA,EAAQ/D,CAAAA,CAAEG,MAAM,EAAA,CAAGG,QAAQ,EAAA;AAC3B0D,IAAAA,KAAAA,EAAOhE,EAAEG,MAAM,EAAA;IACf8D,MAAAA,EAAQpB;AACV,CAAA,CAAA;AAEA,MAAMqB,mBAAAA,GAAsBlE,CAAAA,CAAEC,MAAM,CAAC;AACnC6C,IAAAA,WAAAA,EAAa9C,EAAEG,MAAM,EAAA;AACrB8C,IAAAA,WAAAA,EAAajD,EAAEG,MAAM,EAAA;IACrBgE,IAAAA,EAAMnE,CAAAA,CAAEG,MAAM,EAAA,CAAGG,QAAQ,EAAA;IACzB8D,UAAAA,EAAYpE,CAAAA,CAAEG,MAAM,EAAA,CAAGG,QAAQ,EAAA;IAC/B8C,cAAAA,EAAgBpD,CAAAA,CAAEG,MAAM,EAAA,CAAGG,QAAQ,EAAA;AACnC+C,IAAAA,UAAAA,EAAYrD,CAAAA,CAAEU,MAAM,CAACV,CAAAA,CAAEG,MAAM,EAAA,EAAIyC,eAAAA,CAAAA;IACjCnC,aAAAA,EAAeT,CAAAA,CAAEU,MAAM,CAACV,CAAAA,CAAEG,MAAM,EAAA,EAAIH,CAAAA,CAAEW,OAAO,EAAA,CAAA,CAAIL,QAAQ;AAC3D,CAAA,CAAA;AAEA,MAAM+D,wBAAAA,GAA2BrE,CAAAA,CAAEC,MAAM,CAAC;AACxC6D,IAAAA,GAAAA,EAAK9D,CAAAA,CAAEG,MAAM,EAAA,CAAGkB,KAAK,CAACvB,kBAAAA,CAAAA;AACtBwE,IAAAA,QAAAA,EAAUtE,EAAEG,MAAM,EAAA;AAClBoE,IAAAA,KAAAA,EAAOvE,EAAEG,MAAM,EAAA;IACf8D,MAAAA,EAAQC;AACV,CAAA,CAAA;AAEA,MAAMM,eAAeC,6BAAAA,CAA8B,IAAA;IACjD,OAAO;AACL,QAAA;YACEC,MAAAA,EAAQ,KAAA;YACRC,IAAAA,EAAM,gBAAA;YACNC,OAAAA,EAAS,+BAAA;YACTC,OAAAA,EAAS;gBACPC,KAAAA,EAAO;oBAAE3B,IAAAA,EAAMnD,CAAAA,CAAE2C,IAAI,CAAC;AAAC,wBAAA,gBAAA;AAAkB,wBAAA;AAAa,qBAAA;AAAE;AAC1D,aAAA;YACAoC,QAAAA,EAAU/E,CAAAA,CAAEC,MAAM,CAAC;gBAAE+E,IAAAA,EAAMhF,CAAAA,CAAEiB,KAAK,CAAC4C,0BAAAA;AAA4B,aAAA;AACjE,SAAA;AACA,QAAA;YACEa,MAAAA,EAAQ,KAAA;YACRC,IAAAA,EAAM,qBAAA;YACNC,OAAAA,EAAS,8BAAA;YACTC,OAAAA,EAAS;gBACPI,MAAAA,EAAQ;AACNnB,oBAAAA,GAAAA,EAAK9D,CAAAA,CAAEG,MAAM,EAAA,CAAGkB,KAAK,CAACxB,WAAAA;AACxB;AACF,aAAA;YACAkF,QAAAA,EAAU/E,CAAAA,CAAEC,MAAM,CAAC;gBAAE+E,IAAAA,EAAMnB;AAA2B,aAAA;AACxD,SAAA;AACA,QAAA;YACEa,MAAAA,EAAQ,KAAA;YACRC,IAAAA,EAAM,aAAA;YACNC,OAAAA,EAAS,0BAAA;YACTG,QAAAA,EAAU/E,CAAAA,CAAEC,MAAM,CAAC;gBAAE+E,IAAAA,EAAMhF,CAAAA,CAAEiB,KAAK,CAACoD,wBAAAA;AAA0B,aAAA;AAC/D,SAAA;AACA,QAAA;YACEK,MAAAA,EAAQ,KAAA;YACRC,IAAAA,EAAM,kBAAA;YACNC,OAAAA,EAAS,yBAAA;YACTC,OAAAA,EAAS;gBACPI,MAAAA,EAAQ;AACNnB,oBAAAA,GAAAA,EAAK9D,CAAAA,CAAEG,MAAM,EAAA,CAAGkB,KAAK,CAACvB,kBAAAA;AACxB;AACF,aAAA;YACAiF,QAAAA,EAAU/E,CAAAA,CAAEC,MAAM,CAAC;gBAAE+E,IAAAA,EAAMX;AAAyB,aAAA;AACtD;AACD,KAAA;AACH,CAAA;;;;"}
1
+ {"version":3,"file":"content-api.mjs","sources":["../../../server/src/routes/content-api.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport * as z from 'zod/v4';\n\nimport { createContentApiRoutesFactory } from '@strapi/utils';\n\nimport { CONTENT_TYPE_UID_REGEX } from '../controllers/validation/common';\n\nconst componentUIDRegexp = /^[\\w-]+\\.[\\w-]+$/;\n\nconst baseAttributeSchema = z.object({\n type: z.string(),\n configurable: z.literal(false).optional(),\n private: z.boolean().optional(),\n pluginOptions: z.record(z.string(), z.unknown()).optional(),\n});\n\nconst mediaAttributeSchema = baseAttributeSchema.extend({\n type: z.literal('media'),\n multiple: z.boolean(),\n required: z.boolean().optional(),\n allowedTypes: z.array(z.string()).optional(),\n});\n\nconst relationAttributeSchema = baseAttributeSchema.extend({\n type: z.literal('relation'),\n relation: z.string(),\n target: z.string().regex(CONTENT_TYPE_UID_REGEX),\n targetAttribute: z.string().nullable(),\n autoPopulate: z.boolean().optional(),\n mappedBy: z.string().optional(),\n inversedBy: z.string().optional(),\n});\n\nconst componentAttributeSchema = baseAttributeSchema.extend({\n type: z.literal('component'),\n component: z.string(),\n repeatable: z.boolean(),\n required: z.boolean().optional(),\n min: z.number().optional(),\n max: z.number().optional(),\n});\n\nconst dynamicZoneAttributeSchema = baseAttributeSchema.extend({\n type: z.literal('dynamiczone'),\n components: z.array(z.string().regex(componentUIDRegexp)),\n required: z.boolean().optional(),\n min: z.number().optional(),\n max: z.number().optional(),\n});\n\nconst uidAttributeSchema = baseAttributeSchema.extend({\n type: z.literal('uid'),\n targetField: z.string().optional(),\n});\n\nconst genericAttributeSchema = z.object({\n type: z.string(),\n required: z.boolean().optional(),\n unique: z.boolean().optional(),\n default: z.unknown().optional(),\n min: z.union([z.number(), z.string()]).optional(),\n max: z.union([z.number(), z.string()]).optional(),\n minLength: z.number().optional(),\n maxLength: z.number().optional(),\n enum: z.array(z.string()).optional(),\n regex: z.string().optional(),\n private: z.boolean().optional(),\n configurable: z.boolean().optional(),\n pluginOptions: z.record(z.string(), z.unknown()).optional(),\n});\n\nconst attributeSchema = z.union([\n mediaAttributeSchema,\n relationAttributeSchema,\n componentAttributeSchema,\n dynamicZoneAttributeSchema,\n uidAttributeSchema,\n genericAttributeSchema,\n]);\n\nconst contentTypeSchemaBase = z.object({\n displayName: z.string(),\n singularName: z.string(),\n pluralName: z.string(),\n description: z.string(),\n draftAndPublish: z.boolean(),\n kind: z.enum(['collectionType', 'singleType']),\n collectionName: z.string().optional(),\n attributes: z.record(z.string(), attributeSchema),\n visible: z.boolean(),\n restrictRelationsTo: z.array(z.string()).nullable(),\n pluginOptions: z.record(z.string(), z.unknown()).optional(),\n options: z.record(z.string(), z.unknown()).optional(),\n reviewWorkflows: z.boolean().optional(),\n populateCreatorFields: z.boolean().optional(),\n comment: z.string().optional(),\n version: z.string().optional(),\n});\n\nconst formattedContentTypeSchema = z.object({\n uid: z.string().regex(CONTENT_TYPE_UID_REGEX),\n plugin: z.string().optional(),\n apiID: z.string(),\n schema: contentTypeSchemaBase,\n});\n\nconst componentSchemaBase = z.object({\n displayName: z.string(),\n description: z.string(),\n icon: z.string().optional(),\n connection: z.string().optional(),\n collectionName: z.string().optional(),\n attributes: z.record(z.string(), attributeSchema),\n pluginOptions: z.record(z.string(), z.unknown()).optional(),\n});\n\nconst formattedComponentSchema = z.object({\n uid: z.string().regex(componentUIDRegexp),\n category: z.string(),\n apiId: z.string(),\n schema: componentSchemaBase,\n});\n\nconst createRoutes = createContentApiRoutesFactory((): Core.RouterInput['routes'] => {\n return [\n {\n method: 'GET',\n path: '/content-types',\n handler: 'content-types.getContentTypes',\n request: {\n query: { kind: z.enum(['collectionType', 'singleType']) },\n },\n response: z.object({ data: z.array(formattedContentTypeSchema) }),\n },\n {\n method: 'GET',\n path: '/content-types/:uid',\n handler: 'content-types.getContentType',\n request: {\n params: {\n uid: z.string().regex(CONTENT_TYPE_UID_REGEX),\n },\n },\n response: z.object({ data: formattedContentTypeSchema }),\n },\n {\n method: 'GET',\n path: '/components',\n handler: 'components.getComponents',\n response: z.object({ data: z.array(formattedComponentSchema) }),\n },\n {\n method: 'GET',\n path: '/components/:uid',\n handler: 'components.getComponent',\n request: {\n params: {\n uid: z.string().regex(componentUIDRegexp),\n },\n },\n response: z.object({ data: formattedComponentSchema }),\n },\n ];\n});\n\nexport default createRoutes;\n"],"names":["componentUIDRegexp","baseAttributeSchema","z","object","type","string","configurable","literal","optional","private","boolean","pluginOptions","record","unknown","mediaAttributeSchema","extend","multiple","required","allowedTypes","array","relationAttributeSchema","relation","target","regex","CONTENT_TYPE_UID_REGEX","targetAttribute","nullable","autoPopulate","mappedBy","inversedBy","componentAttributeSchema","component","repeatable","min","number","max","dynamicZoneAttributeSchema","components","uidAttributeSchema","targetField","genericAttributeSchema","unique","default","union","minLength","maxLength","enum","attributeSchema","contentTypeSchemaBase","displayName","singularName","pluralName","description","draftAndPublish","kind","collectionName","attributes","visible","restrictRelationsTo","options","reviewWorkflows","populateCreatorFields","comment","version","formattedContentTypeSchema","uid","plugin","apiID","schema","componentSchemaBase","icon","connection","formattedComponentSchema","category","apiId","createRoutes","createContentApiRoutesFactory","method","path","handler","request","query","response","data","params"],"mappings":"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"}
@@ -26,13 +26,22 @@ var fse__namespace = /*#__PURE__*/_interopNamespace(fse);
26
26
 
27
27
  /**
28
28
  * Deletes the API folder of a contentType
29
- */ async function clear(uid) {
29
+ */ async function clear(uid, { preserveBackup = false } = {}) {
30
30
  // TODO double check if this is the correct way to get the apiName
31
31
  const { apiName, modelName } = strapi.contentTypes[uid];
32
32
  // Opt out if the content type is not linked to an API (e.g. plugin content type)
33
33
  if (!apiName) return;
34
34
  const apiFolder = path__namespace.join(strapi.dirs.app.api, apiName);
35
35
  await recursiveRemoveFiles(apiFolder, createDeleteApiFunction(modelName));
36
+ if (!preserveBackup) {
37
+ await deleteBackup(uid);
38
+ }
39
+ }
40
+ /**
41
+ * Deletes an inactive rollback backup after the enclosing schema mutation has committed.
42
+ * A failed cleanup leaves only housekeeping residue; it does not alter committed schema, API,
43
+ * or groups.json artifacts.
44
+ */ async function finalize(uid) {
36
45
  await deleteBackup(uid);
37
46
  }
38
47
  /**
@@ -43,9 +52,26 @@ var fse__namespace = /*#__PURE__*/_interopNamespace(fse);
43
52
  // Opt out if the content type is not linked to an API (e.g. plugin content type)
44
53
  if (!apiName) return;
45
54
  const apiFolder = path__namespace.join(strapi.dirs.app.api, apiName);
46
- const backupFolder = path__namespace.join(strapi.dirs.app.api, '.backup', apiName);
47
- // backup the api folder
48
- await fse__namespace.copy(apiFolder, backupFolder);
55
+ const backupRoot = path__namespace.join(strapi.dirs.app.api, '.backup');
56
+ const backupFolder = path__namespace.join(backupRoot, apiName);
57
+ const stagingFolder = path__namespace.join(backupRoot, `.${apiName}.staging`);
58
+ // Never copy into the canonical backup directly: a retained or failed prior attempt could
59
+ // otherwise merge stale files into the next rollback source.
60
+ await fse__namespace.ensureDir(backupRoot);
61
+ await fse__namespace.remove(stagingFolder);
62
+ try {
63
+ await fse__namespace.copy(apiFolder, stagingFolder);
64
+ } catch (error) {
65
+ await fse__namespace.remove(stagingFolder);
66
+ throw error;
67
+ }
68
+ try {
69
+ await fse__namespace.remove(backupFolder);
70
+ await fse__namespace.move(stagingFolder, backupFolder);
71
+ } catch (error) {
72
+ await fse__namespace.remove(stagingFolder);
73
+ throw error;
74
+ }
49
75
  }
50
76
  /**
51
77
  * Deletes an API backup folder
@@ -78,6 +104,11 @@ var fse__namespace = /*#__PURE__*/_interopNamespace(fse);
78
104
  await fse__namespace.copy(backupFolder, apiFolder);
79
105
  await deleteBackup(uid);
80
106
  }
107
+ /**
108
+ * Removes an API skeleton created for a new content type before its schema mutation commits.
109
+ */ async function clearGenerated(apiName) {
110
+ await fse__namespace.remove(path__namespace.join(strapi.dirs.app.api, apiName));
111
+ }
81
112
  /**
82
113
  * Creates a delete function to clear an api folder
83
114
  */ const createDeleteApiFunction = (baseName)=>{
@@ -114,5 +145,7 @@ var fse__namespace = /*#__PURE__*/_interopNamespace(fse);
114
145
 
115
146
  exports.backup = backup;
116
147
  exports.clear = clear;
148
+ exports.clearGenerated = clearGenerated;
149
+ exports.finalize = finalize;
117
150
  exports.rollback = rollback;
118
151
  //# sourceMappingURL=api-handler.js.map