@strapi/core 0.0.0-next.f0bfcece1007e5aa527570187635aefc86db536e → 0.0.0-next.f0f36e3df4b18f167036dcbca529dcb933bf4e1d

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 (194) hide show
  1. package/dist/Strapi.d.ts +1 -0
  2. package/dist/Strapi.d.ts.map +1 -1
  3. package/dist/Strapi.js +20 -4
  4. package/dist/Strapi.js.map +1 -1
  5. package/dist/Strapi.mjs +20 -4
  6. package/dist/Strapi.mjs.map +1 -1
  7. package/dist/configuration/config-loader.js.map +1 -1
  8. package/dist/configuration/config-loader.mjs.map +1 -1
  9. package/dist/configuration/urls.js.map +1 -1
  10. package/dist/configuration/urls.mjs.map +1 -1
  11. package/dist/constants.d.ts +3 -0
  12. package/dist/constants.d.ts.map +1 -0
  13. package/dist/constants.js +6 -0
  14. package/dist/constants.js.map +1 -0
  15. package/dist/constants.mjs +4 -0
  16. package/dist/constants.mjs.map +1 -0
  17. package/dist/container.js.map +1 -1
  18. package/dist/container.mjs.map +1 -1
  19. package/dist/core-api/routes/index.js.map +1 -1
  20. package/dist/core-api/routes/index.mjs.map +1 -1
  21. package/dist/core-api/routes/validation/attributes.d.ts +2 -2
  22. package/dist/core-api/routes/validation/attributes.d.ts.map +1 -1
  23. package/dist/core-api/routes/validation/attributes.js +2 -2
  24. package/dist/core-api/routes/validation/attributes.js.map +1 -1
  25. package/dist/core-api/routes/validation/attributes.mjs +2 -2
  26. package/dist/core-api/routes/validation/attributes.mjs.map +1 -1
  27. package/dist/core-api/routes/validation/content-type.d.ts +2 -2
  28. package/dist/core-api/routes/validation/content-type.js +4 -1
  29. package/dist/core-api/routes/validation/content-type.js.map +1 -1
  30. package/dist/core-api/routes/validation/content-type.mjs +4 -1
  31. package/dist/core-api/routes/validation/content-type.mjs.map +1 -1
  32. package/dist/core-api/routes/validation/mappers.d.ts.map +1 -1
  33. package/dist/core-api/routes/validation/mappers.js +35 -0
  34. package/dist/core-api/routes/validation/mappers.js.map +1 -1
  35. package/dist/core-api/routes/validation/mappers.mjs +35 -0
  36. package/dist/core-api/routes/validation/mappers.mjs.map +1 -1
  37. package/dist/core-api/routes/validation/utils.js.map +1 -1
  38. package/dist/core-api/routes/validation/utils.mjs.map +1 -1
  39. package/dist/core-api/service/collection-type.js.map +1 -1
  40. package/dist/core-api/service/collection-type.mjs.map +1 -1
  41. package/dist/core-api/service/single-type.js.map +1 -1
  42. package/dist/core-api/service/single-type.mjs.map +1 -1
  43. package/dist/domain/content-type/index.js.map +1 -1
  44. package/dist/domain/content-type/index.mjs.map +1 -1
  45. package/dist/domain/module/index.js.map +1 -1
  46. package/dist/domain/module/index.mjs.map +1 -1
  47. package/dist/ee/index.js.map +1 -1
  48. package/dist/ee/index.mjs.map +1 -1
  49. package/dist/ee/license.js +1 -2
  50. package/dist/ee/license.js.map +1 -1
  51. package/dist/ee/license.mjs +1 -2
  52. package/dist/ee/license.mjs.map +1 -1
  53. package/dist/factories.js.map +1 -1
  54. package/dist/factories.mjs.map +1 -1
  55. package/dist/loaders/apis.js.map +1 -1
  56. package/dist/loaders/apis.mjs.map +1 -1
  57. package/dist/loaders/components.js.map +1 -1
  58. package/dist/loaders/components.mjs.map +1 -1
  59. package/dist/loaders/plugins/get-enabled-plugins.js.map +1 -1
  60. package/dist/loaders/plugins/get-enabled-plugins.mjs.map +1 -1
  61. package/dist/loaders/plugins/index.js +1 -1
  62. package/dist/loaders/plugins/index.js.map +1 -1
  63. package/dist/loaders/plugins/index.mjs +1 -1
  64. package/dist/loaders/plugins/index.mjs.map +1 -1
  65. package/dist/loaders/src-index.js.map +1 -1
  66. package/dist/loaders/src-index.mjs.map +1 -1
  67. package/dist/middlewares/favicon.d.ts.map +1 -1
  68. package/dist/middlewares/favicon.js +8 -9
  69. package/dist/middlewares/favicon.js.map +1 -1
  70. package/dist/middlewares/favicon.mjs +8 -9
  71. package/dist/middlewares/favicon.mjs.map +1 -1
  72. package/dist/middlewares/logger.js.map +1 -1
  73. package/dist/middlewares/logger.mjs.map +1 -1
  74. package/dist/middlewares/response-time.js.map +1 -1
  75. package/dist/middlewares/response-time.mjs.map +1 -1
  76. package/dist/middlewares/security.d.ts.map +1 -1
  77. package/dist/middlewares/security.js +2 -15
  78. package/dist/middlewares/security.js.map +1 -1
  79. package/dist/middlewares/security.mjs +2 -15
  80. package/dist/middlewares/security.mjs.map +1 -1
  81. package/dist/migrations/database/5.0.0-discard-drafts.js +1 -1
  82. package/dist/migrations/database/5.0.0-discard-drafts.js.map +1 -1
  83. package/dist/migrations/database/5.0.0-discard-drafts.mjs +1 -1
  84. package/dist/migrations/database/5.0.0-discard-drafts.mjs.map +1 -1
  85. package/dist/migrations/first-published-at.js.map +1 -1
  86. package/dist/migrations/first-published-at.mjs.map +1 -1
  87. package/dist/package.json.js +15 -14
  88. package/dist/package.json.js.map +1 -1
  89. package/dist/package.json.mjs +15 -14
  90. package/dist/package.json.mjs.map +1 -1
  91. package/dist/providers/index.d.ts.map +1 -1
  92. package/dist/providers/index.js +2 -0
  93. package/dist/providers/index.js.map +1 -1
  94. package/dist/providers/index.mjs +2 -0
  95. package/dist/providers/index.mjs.map +1 -1
  96. package/dist/providers/session-manager.d.ts +3 -0
  97. package/dist/providers/session-manager.d.ts.map +1 -0
  98. package/dist/providers/session-manager.js +23 -0
  99. package/dist/providers/session-manager.js.map +1 -0
  100. package/dist/providers/session-manager.mjs +21 -0
  101. package/dist/providers/session-manager.mjs.map +1 -0
  102. package/dist/registries/apis.js.map +1 -1
  103. package/dist/registries/apis.mjs.map +1 -1
  104. package/dist/registries/custom-fields.js.map +1 -1
  105. package/dist/registries/custom-fields.mjs.map +1 -1
  106. package/dist/registries/namespace.js.map +1 -1
  107. package/dist/registries/namespace.mjs.map +1 -1
  108. package/dist/registries/plugins.js.map +1 -1
  109. package/dist/registries/plugins.mjs.map +1 -1
  110. package/dist/registries/policies.js.map +1 -1
  111. package/dist/registries/policies.mjs.map +1 -1
  112. package/dist/services/config.js.map +1 -1
  113. package/dist/services/config.mjs.map +1 -1
  114. package/dist/services/content-api/index.js.map +1 -1
  115. package/dist/services/content-api/index.mjs.map +1 -1
  116. package/dist/services/content-api/permissions/index.js.map +1 -1
  117. package/dist/services/content-api/permissions/index.mjs.map +1 -1
  118. package/dist/services/core-store.js.map +1 -1
  119. package/dist/services/core-store.mjs.map +1 -1
  120. package/dist/services/document-service/components.d.ts +26 -1
  121. package/dist/services/document-service/components.d.ts.map +1 -1
  122. package/dist/services/document-service/components.js +16 -4
  123. package/dist/services/document-service/components.js.map +1 -1
  124. package/dist/services/document-service/components.mjs +15 -5
  125. package/dist/services/document-service/components.mjs.map +1 -1
  126. package/dist/services/document-service/repository.js +1 -1
  127. package/dist/services/document-service/repository.js.map +1 -1
  128. package/dist/services/document-service/repository.mjs +1 -1
  129. package/dist/services/document-service/repository.mjs.map +1 -1
  130. package/dist/services/document-service/transform/fields.js.map +1 -1
  131. package/dist/services/document-service/transform/fields.mjs.map +1 -1
  132. package/dist/services/document-service/transform/id-map.js.map +1 -1
  133. package/dist/services/document-service/transform/id-map.mjs.map +1 -1
  134. package/dist/services/document-service/utils/clean-component-join-table.d.ts +7 -0
  135. package/dist/services/document-service/utils/clean-component-join-table.d.ts.map +1 -0
  136. package/dist/services/document-service/utils/clean-component-join-table.js +145 -0
  137. package/dist/services/document-service/utils/clean-component-join-table.js.map +1 -0
  138. package/dist/services/document-service/utils/clean-component-join-table.mjs +143 -0
  139. package/dist/services/document-service/utils/clean-component-join-table.mjs.map +1 -0
  140. package/dist/services/entity-service/index.js.map +1 -1
  141. package/dist/services/entity-service/index.mjs.map +1 -1
  142. package/dist/services/entity-validator/blocks-validator.js.map +1 -1
  143. package/dist/services/entity-validator/blocks-validator.mjs.map +1 -1
  144. package/dist/services/entity-validator/index.js.map +1 -1
  145. package/dist/services/entity-validator/index.mjs.map +1 -1
  146. package/dist/services/entity-validator/validators.d.ts +1 -1
  147. package/dist/services/entity-validator/validators.js +1 -1
  148. package/dist/services/entity-validator/validators.js.map +1 -1
  149. package/dist/services/entity-validator/validators.mjs +1 -1
  150. package/dist/services/entity-validator/validators.mjs.map +1 -1
  151. package/dist/services/metrics/index.js +2 -1
  152. package/dist/services/metrics/index.js.map +1 -1
  153. package/dist/services/metrics/index.mjs +2 -1
  154. package/dist/services/metrics/index.mjs.map +1 -1
  155. package/dist/services/metrics/middleware.d.ts +2 -1
  156. package/dist/services/metrics/middleware.d.ts.map +1 -1
  157. package/dist/services/metrics/middleware.js +2 -2
  158. package/dist/services/metrics/middleware.js.map +1 -1
  159. package/dist/services/metrics/middleware.mjs +2 -2
  160. package/dist/services/metrics/middleware.mjs.map +1 -1
  161. package/dist/services/metrics/sender.d.ts.map +1 -1
  162. package/dist/services/metrics/sender.js +2 -1
  163. package/dist/services/metrics/sender.js.map +1 -1
  164. package/dist/services/metrics/sender.mjs +2 -1
  165. package/dist/services/metrics/sender.mjs.map +1 -1
  166. package/dist/services/server/compose-endpoint.js.map +1 -1
  167. package/dist/services/server/compose-endpoint.mjs.map +1 -1
  168. package/dist/services/server/index.js.map +1 -1
  169. package/dist/services/server/index.mjs.map +1 -1
  170. package/dist/services/server/middleware.js.map +1 -1
  171. package/dist/services/server/middleware.mjs.map +1 -1
  172. package/dist/services/server/register-routes.js.map +1 -1
  173. package/dist/services/server/register-routes.mjs.map +1 -1
  174. package/dist/services/server/routing.js.map +1 -1
  175. package/dist/services/server/routing.mjs.map +1 -1
  176. package/dist/services/session-manager.d.ts +167 -0
  177. package/dist/services/session-manager.d.ts.map +1 -0
  178. package/dist/services/session-manager.js +529 -0
  179. package/dist/services/session-manager.js.map +1 -0
  180. package/dist/services/session-manager.mjs +526 -0
  181. package/dist/services/session-manager.mjs.map +1 -0
  182. package/dist/services/webhook-runner.js.map +1 -1
  183. package/dist/services/webhook-runner.mjs.map +1 -1
  184. package/dist/services/worker-queue.js.map +1 -1
  185. package/dist/services/worker-queue.mjs.map +1 -1
  186. package/dist/utils/fetch.js.map +1 -1
  187. package/dist/utils/fetch.mjs.map +1 -1
  188. package/dist/utils/filepath-to-prop-path.js.map +1 -1
  189. package/dist/utils/filepath-to-prop-path.mjs.map +1 -1
  190. package/dist/utils/load-config-file.js.map +1 -1
  191. package/dist/utils/load-config-file.mjs.map +1 -1
  192. package/dist/utils/startup-logger.js.map +1 -1
  193. package/dist/utils/startup-logger.mjs.map +1 -1
  194. package/package.json +15 -14
@@ -1 +1 @@
1
- {"version":3,"file":"attributes.mjs","sources":["../../../../src/core-api/routes/validation/attributes.ts"],"sourcesContent":["/**\n * @file This module provides a set of functions to convert Strapi schema attributes into Zod schemas.\n * It handles various attribute types, including primitive types, components, dynamic zones, media, and relations.\n * The module also provides functions to create input schemas for these attributes, which are used for validation\n * of incoming data.\n */\n\nimport { type Schema, UID } from '@strapi/types';\n\nimport {\n relations,\n maybeRequired,\n maybeReadonly,\n maybeWithDefault,\n maybeWithMinMax,\n augmentSchema,\n} from '@strapi/utils';\nimport { z } from 'zod/v4';\n\nimport { BOOLEAN_LITERAL_VALUES } from './constants';\n\n// eslint-disable-next-line import/no-cycle\nimport { CoreComponentRouteValidator } from './component';\nimport { CoreContentTypeRouteValidator } from './content-type';\n\nimport { safeSchemaCreation } from './utils';\n\n/**\n * Converts a BigInteger attribute to a Zod schema.\n * @param attribute - The BigInteger attribute object from the Strapi schema.\n * @returns A Zod schema representing the BigInteger field.\n */\nexport const bigIntegerToSchema = (attribute: Schema.Attribute.BigInteger): z.Schema => {\n const { writable, required, min, max, default: defaultValue } = attribute;\n\n const schema = augmentSchema(z.string(), [\n (schema) => (min !== undefined ? schema.min(min as unknown as number) : schema),\n (schema) => (max !== undefined ? schema.max(max as unknown as number) : schema),\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n maybeReadonly(writable),\n ]);\n\n return schema.describe('A biginteger field');\n};\n\n/**\n * Converts a blocks attribute to a Zod schema.\n * @returns A Zod schema representing the blocks field.\n */\nexport const blocksToSchema = (): z.Schema => {\n return z.array(z.any()).describe('A blocks field');\n};\n\n/**\n * Converts a boolean attribute to a Zod schema.\n * @param attribute - The Boolean attribute object from the Strapi schema.\n * @returns A Zod schema representing the boolean field.\n */\nexport const booleanToSchema = (attribute: Schema.Attribute.Boolean): z.Schema => {\n const { writable, required, default: defaultValue } = attribute;\n\n const schema = augmentSchema(z.boolean(), [\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n maybeReadonly(writable),\n ]);\n\n return schema.describe('A boolean field');\n};\n\n/**\n * Converts a component attribute to a Zod schema.\n * @param attribute - The Component attribute object from the Strapi schema.\n * @returns A Zod schema representing the component field.\n */\nexport const componentToSchema = (\n attribute: Schema.Attribute.Component<UID.Component, boolean>\n): z.Schema => {\n const { writable, required, min, max, component, repeatable } = attribute;\n\n const componentSchema = safeSchemaCreation(\n component,\n () => new CoreComponentRouteValidator(strapi, component).entry\n ) as z.ZodType;\n\n const baseSchema = repeatable ? z.array(componentSchema) : componentSchema;\n\n const schema = augmentSchema(baseSchema, [\n (schema) => (min !== undefined && schema instanceof z.ZodArray ? schema.min(min) : schema),\n (schema) => (max !== undefined && schema instanceof z.ZodArray ? schema.max(max) : schema),\n maybeRequired(required),\n maybeReadonly(writable),\n ]);\n\n return schema.describe('A component field');\n};\n\n/**\n * Converts a date attribute to a Zod schema.\n * @param attribute - The Date attribute object from the Strapi schema.\n * @returns A Zod schema representing the date field.\n */\nexport const dateToSchema = (attribute: Schema.Attribute.Date): z.Schema => {\n const { writable, required, default: defaultValue } = attribute;\n\n const schema = augmentSchema(z.string(), [\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n maybeReadonly(writable),\n ]);\n\n return schema.describe('A date field');\n};\n\n/**\n * Converts a datetime attribute to a Zod schema.\n * @param attribute - The DateTime attribute object from the Strapi schema.\n * @returns A Zod schema representing the datetime field.\n */\nexport const datetimeToSchema = (attribute: Schema.Attribute.DateTime): z.Schema => {\n const { writable, required, default: defaultValue } = attribute;\n\n const schema = augmentSchema(z.string(), [\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n maybeReadonly(writable),\n ]);\n\n return schema.describe('A datetime field');\n};\n\n/**\n * Converts a decimal attribute to a Zod schema.\n * @param attribute - The Decimal attribute object from the Strapi schema.\n * @returns A Zod schema representing the decimal field.\n */\nexport const decimalToSchema = (attribute: Schema.Attribute.Decimal): z.Schema => {\n const { writable, required, min, max, default: defaultValue } = attribute;\n\n const schema = augmentSchema(z.number(), [\n maybeWithMinMax(min, max),\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n maybeReadonly(writable),\n ]);\n\n return schema.describe('A decimal field');\n};\n\n/**\n * Converts a dynamic zone attribute to a Zod schema.\n * @param attribute - The DynamicZone attribute object from the Strapi schema.\n * @returns A Zod schema representing the dynamic zone field.\n */\nexport const dynamicZoneToSchema = (attribute: Schema.Attribute.DynamicZone): z.Schema => {\n const { writable, required, min, max } = attribute;\n\n const baseSchema = z.array(z.any());\n\n const schema = augmentSchema(baseSchema, [\n maybeWithMinMax(min, max),\n maybeRequired(required),\n maybeReadonly(writable),\n ]);\n\n return schema.describe('A dynamic zone field');\n};\n\n/**\n * Converts an email attribute to a Zod schema.\n * @param attribute - The Email attribute object from the Strapi schema.\n * @returns A Zod schema representing the email field.\n */\nexport const emailToSchema = (attribute: Schema.Attribute.Email): z.Schema => {\n const { writable, required, default: defaultValue, minLength, maxLength } = attribute;\n\n const baseSchema = z.email();\n\n const schema = augmentSchema(baseSchema, [\n maybeWithMinMax(minLength, maxLength),\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n maybeReadonly(writable),\n ]);\n\n return schema.describe('An email field');\n};\n\n/**\n * Converts an enumeration attribute to a Zod schema.\n * @param attribute - The Enumeration attribute object from the Strapi schema.\n * @returns A Zod schema representing the enumeration field.\n */\nexport const enumToSchema = (attribute: Schema.Attribute.Enumeration<string[]>): z.Schema => {\n const { writable, required, default: defaultValue, enum: enumValues } = attribute;\n\n const baseSchema = z.enum(enumValues);\n\n const schema = augmentSchema(baseSchema, [\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n maybeReadonly(writable),\n ]);\n\n return schema.describe('An enum field');\n};\n\n/**\n * Converts a float attribute to a Zod schema.\n * @param attribute - The Float attribute object from the Strapi schema.\n * @returns A Zod schema representing the float field.\n */\nexport const floatToSchema = (attribute: Schema.Attribute.Float): z.Schema => {\n const { writable, required, min, max, default: defaultValue } = attribute;\n\n const schema = augmentSchema(z.number(), [\n maybeWithMinMax(min, max),\n maybeRequired(required),\n maybeReadonly(writable),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe('A float field');\n};\n\n/**\n * Converts an integer attribute to a Zod schema.\n * @param attribute - The Integer attribute object from the Strapi schema.\n * @returns A Zod schema representing the integer field.\n */\nexport const integerToSchema = (attribute: Schema.Attribute.Integer): z.Schema => {\n const { writable, required, min, max, default: defaultValue } = attribute;\n\n const baseSchema = z.number().int();\n\n const schema = augmentSchema(baseSchema, [\n maybeWithMinMax(min, max),\n maybeRequired(required),\n maybeReadonly(writable),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe('An integer field');\n};\n\n/**\n * Converts a JSON attribute to a Zod schema.\n * @param attribute - The JSON attribute object from the Strapi schema.\n * @returns A Zod schema representing the JSON field.\n */\nexport const jsonToSchema = (attribute: Schema.Attribute.JSON): z.Schema => {\n const { writable, required, default: defaultValue } = attribute;\n\n const schema = augmentSchema(z.any(), [\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n maybeReadonly(writable),\n ]);\n\n return schema.describe('A JSON field');\n};\n\n/**\n * Converts a media attribute to a Zod schema.\n * @param attribute - The Media attribute object from the Strapi schema.\n * @returns A Zod schema representing the media field.\n */\nexport const mediaToSchema = (\n attribute: Schema.Attribute.Media<Schema.Attribute.MediaKind | undefined, boolean>\n): z.Schema => {\n const { writable, required, multiple } = attribute;\n\n const uploadPlugin = strapi.plugin('upload');\n\n // @ts-expect-error there is a mismatch between a raw module and a loader module\n const fileSchema = uploadPlugin.contentTypes.file as Struct.ContentTypeSchema;\n\n const mediaSchema = safeSchemaCreation(\n fileSchema.uid,\n () => new CoreContentTypeRouteValidator(strapi, fileSchema.uid).document\n ) as z.ZodType;\n\n const baseSchema = multiple ? z.array(mediaSchema) : mediaSchema;\n\n const schema = augmentSchema(baseSchema, [maybeRequired(required), maybeReadonly(writable)]);\n\n return schema.describe('A media field');\n};\n\n/**\n * Converts a relation attribute to a Zod schema.\n * @param attribute - The Relation attribute object from the Strapi schema.\n * @returns A Zod schema representing the relational field.\n */\nexport const relationToSchema = (attribute: Schema.Attribute.Relation): z.Schema => {\n if (!('target' in attribute)) {\n return z.any();\n }\n\n const { writable, required, target } = attribute as Schema.Attribute.RelationWithTarget;\n\n const targetSchema = safeSchemaCreation(\n target,\n () => new CoreContentTypeRouteValidator(strapi, target).document\n ) as z.ZodType;\n\n const baseSchema = relations.isAnyToMany(attribute) ? z.array(targetSchema) : targetSchema;\n\n const schema = augmentSchema(baseSchema, [maybeRequired(required), maybeReadonly(writable)]);\n\n return schema.describe('A relational field');\n};\n\n/**\n * Converts a string, text, rich text, or password attribute to a Zod schema.\n * @param attribute - The String, Text, RichText, or Password attribute object from the Strapi schema.\n * @returns A Zod schema representing the field.\n */\nexport const stringToSchema = (\n attribute:\n | Schema.Attribute.String\n | Schema.Attribute.Text\n | Schema.Attribute.RichText\n | Schema.Attribute.Password\n): z.Schema => {\n const { writable, required, default: defaultValue, minLength, maxLength } = attribute;\n\n const schema = augmentSchema(z.string(), [\n maybeWithMinMax(minLength, maxLength),\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n maybeReadonly(writable),\n ]);\n\n return schema.describe(`A ${attribute.type} field`);\n};\n\n/**\n * Converts a time attribute to a Zod schema.\n * @param attribute - The Time attribute object from the Strapi schema.\n * @returns A Zod schema representing the time field.\n */\nexport const timeToSchema = (attribute: Schema.Attribute.Time): z.Schema => {\n const { writable, required, default: defaultValue } = attribute;\n\n const schema = augmentSchema(z.string(), [\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n maybeReadonly(writable),\n ]);\n\n return schema.describe('A time field');\n};\n\n/**\n * Converts a timestamp attribute to a Zod schema.\n * @param attribute - The Timestamp attribute object from the Strapi schema.\n * @returns A Zod schema representing the timestamp field.\n */\nexport const timestampToSchema = (attribute: Schema.Attribute.Timestamp): z.Schema => {\n const { writable, required, default: defaultValue } = attribute;\n\n const baseSchema = z.union([z.string(), z.number()]);\n\n const schema = augmentSchema(baseSchema, [\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n maybeReadonly(writable),\n ]);\n\n return schema.describe('A timestamp field');\n};\n\n/**\n * Converts a UID attribute to a Zod schema.\n * @param attribute - The UID attribute object from the Strapi schema.\n * @returns A Zod schema representing the UID field.\n */\nexport const uidToSchema = (attribute: Schema.Attribute.UID): z.Schema => {\n const { writable, required, default: defaultValue, minLength, maxLength } = attribute;\n\n const schema = augmentSchema(z.string(), [\n maybeWithMinMax(minLength, maxLength),\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n maybeReadonly(writable),\n ]);\n\n return schema.describe('A UID field');\n};\n\n/**\n * Converts a BigInteger attribute to a Zod schema for input validation.\n * @param attribute - The BigInteger attribute object from the Strapi schema.\n * @returns A Zod schema for input validation of the BigInteger field.\n */\nexport const bigIntegerToInputSchema = (attribute: Schema.Attribute.BigInteger) => {\n const { required, min, max, default: defaultValue } = attribute;\n\n const schema = augmentSchema(z.string(), [\n (schema) => (min !== undefined ? schema.min(min as unknown as number) : schema),\n (schema) => (max !== undefined ? schema.max(max as unknown as number) : schema),\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe('A biginteger field');\n};\n\n/**\n * Converts a blocks attribute to a Zod schema for input validation.\n * @returns A Zod schema for input validation of the blocks field.\n */\nexport const blocksToInputSchema = () => {\n // TODO: better support blocks data structure\n return z.array(z.any()).describe('A blocks field');\n};\n\n/**\n * Converts a boolean attribute to a Zod schema for input validation.\n * @param attribute - The Boolean attribute object from the Strapi schema.\n * @returns A Zod schema for input validation of the boolean field.\n */\nexport const booleanToInputSchema = (attribute: Schema.Attribute.Boolean) => {\n const { required, default: defaultValue } = attribute;\n\n const baseSchema = z.enum(BOOLEAN_LITERAL_VALUES);\n\n const schema = augmentSchema(baseSchema, [\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe('A boolean field');\n};\n\n/**\n * Converts a component attribute to a Zod schema for input validation.\n * @param attribute - The Component attribute object from the Strapi schema.\n * @returns A Zod schema for input validation of the component field.\n */\nexport const componentToInputSchema = (\n attribute: Schema.Attribute.Component<UID.Component, boolean>\n) => {\n const { required, repeatable, min, max } = attribute;\n\n const baseSchema = repeatable ? z.array(z.any()) : z.any();\n\n const schema = augmentSchema(baseSchema, [\n (schema) => (min !== undefined && schema instanceof z.ZodArray ? schema.min(min) : schema),\n (schema) => (max !== undefined && schema instanceof z.ZodArray ? schema.max(max) : schema),\n maybeRequired(required),\n ]);\n\n return schema.describe('A component field');\n};\n\n/**\n * Converts a date attribute to a Zod schema for input validation.\n * @param attribute - The Date attribute object from the Strapi schema.\n * @returns A Zod schema for input validation of the date field.\n */\nexport const dateToInputSchema = (attribute: Schema.Attribute.Date) => {\n const { required, default: defaultValue } = attribute;\n\n const schema = augmentSchema(z.string(), [\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe('A date field');\n};\n\n/**\n * Converts a datetime attribute to a Zod schema for input validation.\n * @param attribute - The DateTime attribute object from the Strapi schema.\n * @returns A Zod schema for input validation of the datetime field.\n */\nexport const datetimeToInputSchema = (attribute: Schema.Attribute.DateTime) => {\n const { required, default: defaultValue } = attribute;\n\n const schema = augmentSchema(z.string(), [\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe('A datetime field');\n};\n\n/**\n * Converts a decimal attribute to a Zod schema for input validation.\n * @param attribute - The Decimal attribute object from the Strapi schema.\n * @returns A Zod schema for input validation of the decimal field.\n */\nexport const decimalToInputSchema = (attribute: Schema.Attribute.Decimal) => {\n const { required, min, max, default: defaultValue } = attribute;\n\n const schema = augmentSchema(z.number(), [\n maybeWithMinMax(min, max),\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe('A decimal field');\n};\n\n/**\n * Converts a dynamic zone attribute to a Zod schema for input validation.\n * @param attribute - The DynamicZone attribute object from the Strapi schema.\n * @returns A Zod schema for input validation of the dynamic zone field.\n */\nexport const dynamicZoneToInputSchema = (attribute: Schema.Attribute.DynamicZone) => {\n const { required, min, max } = attribute;\n\n const baseSchema = z.array(z.any());\n\n const schema = augmentSchema(baseSchema, [maybeWithMinMax(min, max), maybeRequired(required)]);\n\n return schema.describe('A dynamic zone field');\n};\n\n/**\n * Converts an email attribute to a Zod schema for input validation.\n * @param attribute - The Email attribute object from the Strapi schema.\n * @returns A Zod schema for input validation of the email field.\n */\nexport const emailToInputSchema = (attribute: Schema.Attribute.Email) => {\n const { required, default: defaultValue, minLength, maxLength } = attribute;\n\n const baseSchema = z.email();\n\n const schema = augmentSchema(baseSchema, [\n maybeWithMinMax(minLength, maxLength),\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe('An email field');\n};\n\n/**\n * Converts an enumeration attribute to a Zod schema for input validation.\n * @param attribute - The Enumeration attribute object from the Strapi schema.\n * @returns A Zod schema for input validation of the enumeration field.\n */\nexport const enumerationToInputSchema = (attribute: Schema.Attribute.Enumeration<string[]>) => {\n const { required, default: defaultValue, enum: enumValues } = attribute;\n\n const baseSchema = z.enum(enumValues);\n\n const schema = augmentSchema(baseSchema, [\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe('An enum field');\n};\n\n/**\n * Converts a float attribute to a Zod schema for input validation.\n * @param attribute - The Float attribute object from the Strapi schema.\n * @returns A Zod schema for input validation of the float field.\n */\nexport const floatToInputSchema = (attribute: Schema.Attribute.Float) => {\n const { required, min, max, default: defaultValue } = attribute;\n\n const schema = augmentSchema(z.number(), [\n maybeWithMinMax(min, max),\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe('A float field');\n};\n\n/**\n * Converts an integer attribute to a Zod schema for input validation.\n * @param attribute - The Integer attribute object from the Strapi schema.\n * @returns A Zod schema for input validation of the integer field.\n */\nexport const integerToInputSchema = (attribute: Schema.Attribute.Integer) => {\n const { required, min, max, default: defaultValue } = attribute;\n\n const baseSchema = z.number().int();\n\n const schema = augmentSchema(baseSchema, [\n maybeWithMinMax(min, max),\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe('A float field');\n};\n\n/**\n * Converts a JSON attribute to a Zod schema for input validation.\n * @param attribute - The JSON attribute object from the Strapi schema.\n * @returns A Zod schema for input validation of the JSON field.\n */\nexport const jsonToInputSchema = (attribute: Schema.Attribute.JSON) => {\n const { required, default: defaultValue } = attribute;\n\n const schema = augmentSchema(z.any(), [maybeRequired(required), maybeWithDefault(defaultValue)]);\n\n return schema.describe('A JSON field');\n};\n\n/**\n * Converts a media attribute to a Zod schema for input validation.\n * @param attribute - The Media attribute object from the Strapi schema.\n * @returns A Zod schema for input validation of the media field.\n */\nexport const mediaToInputSchema = (\n attribute: Schema.Attribute.Media<Schema.Attribute.MediaKind | undefined, boolean>\n) => {\n const { required, multiple } = attribute;\n\n const baseSchema = multiple ? z.array(z.any()) : z.any();\n\n const schema = augmentSchema(baseSchema, [maybeRequired(required)]);\n\n return schema.describe('A media field');\n};\n\n/**\n * Converts a relation attribute to a Zod schema for input validation.\n * @param attribute - The Relation attribute object from the Strapi schema.\n * @returns A Zod schema for input validation of the relational field.\n */\nexport const relationToInputSchema = (attribute: Schema.Attribute.Relation) => {\n const { required } = attribute;\n\n const isToMany = relations.isAnyToMany(attribute);\n const uuid = z.string().uuid();\n const baseSchema = isToMany ? z.array(uuid) : uuid;\n\n const schema = augmentSchema(baseSchema, [maybeRequired(required)]);\n\n return schema.describe('A relational field');\n};\n\n/**\n * Converts a string, text, rich text, or password attribute to a Zod schema for input validation.\n * @param attribute - The String, Text, RichText, or Password attribute object from the Strapi schema.\n * @returns A Zod schema for input validation of the field.\n */\nexport const textToInputSchema = (\n attribute:\n | Schema.Attribute.String\n | Schema.Attribute.Text\n | Schema.Attribute.RichText\n | Schema.Attribute.Password\n) => {\n const { required, default: defaultValue, minLength, maxLength } = attribute;\n\n const schema = augmentSchema(z.string(), [\n maybeWithMinMax(minLength, maxLength),\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe(`A ${attribute.type} field`);\n};\n\n/**\n * Converts a time attribute to a Zod schema for input validation.\n * @param attribute - The Time attribute object from the Strapi schema.\n * @returns A Zod schema for input validation of the time field.\n */\nexport const timeToInputSchema = (attribute: Schema.Attribute.Time) => {\n const { required, default: defaultValue } = attribute;\n\n const schema = augmentSchema(z.string(), [\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe('A time field');\n};\n\n/**\n * Converts a timestamp attribute to a Zod schema for input validation.\n * @param attribute - The Timestamp attribute object from the Strapi schema.\n * @returns A Zod schema for input validation of the timestamp field.\n */\nexport const timestampToInputSchema = (attribute: Schema.Attribute.Timestamp) => {\n const { required, default: defaultValue } = attribute;\n\n const baseSchema = z.union([z.string(), z.number()]);\n\n const schema = augmentSchema(baseSchema, [\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe('A timestamp field');\n};\n\n/**\n * Converts a UID attribute to a Zod schema for input validation.\n * @param attribute - The UID attribute object from the Strapi schema.\n * @returns A Zod schema for input validation of the UID field.\n */\nexport const uidToInputSchema = (attribute: Schema.Attribute.UID) => {\n const { required, default: defaultValue, minLength, maxLength } = attribute;\n\n const schema = augmentSchema(z.string(), [\n maybeWithMinMax(minLength, maxLength),\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe('A UID field');\n};\n"],"names":["bigIntegerToSchema","attribute","writable","required","min","max","default","defaultValue","schema","augmentSchema","z","string","undefined","maybeRequired","maybeWithDefault","maybeReadonly","describe","blocksToSchema","array","any","booleanToSchema","boolean","componentToSchema","component","repeatable","componentSchema","safeSchemaCreation","CoreComponentRouteValidator","strapi","entry","baseSchema","ZodArray","dateToSchema","datetimeToSchema","decimalToSchema","number","maybeWithMinMax","dynamicZoneToSchema","emailToSchema","minLength","maxLength","email","enumToSchema","enum","enumValues","floatToSchema","integerToSchema","int","jsonToSchema","mediaToSchema","multiple","uploadPlugin","plugin","fileSchema","contentTypes","file","mediaSchema","uid","CoreContentTypeRouteValidator","document","relationToSchema","target","targetSchema","relations","isAnyToMany","stringToSchema","type","timeToSchema","timestampToSchema","union","uidToSchema","bigIntegerToInputSchema","blocksToInputSchema","booleanToInputSchema","BOOLEAN_LITERAL_VALUES","componentToInputSchema","dateToInputSchema","datetimeToInputSchema","decimalToInputSchema","dynamicZoneToInputSchema","emailToInputSchema","enumerationToInputSchema","floatToInputSchema","integerToInputSchema","jsonToInputSchema","mediaToInputSchema","relationToInputSchema","isToMany","uuid","textToInputSchema","timeToInputSchema","timestampToInputSchema","uidToInputSchema"],"mappings":"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"}
1
+ {"version":3,"file":"attributes.mjs","sources":["../../../../src/core-api/routes/validation/attributes.ts"],"sourcesContent":["/**\n * @file This module provides a set of functions to convert Strapi schema attributes into Zod schemas.\n * It handles various attribute types, including primitive types, components, dynamic zones, media, and relations.\n * The module also provides functions to create input schemas for these attributes, which are used for validation\n * of incoming data.\n */\n\nimport { type Schema, UID } from '@strapi/types';\n\nimport {\n relations,\n maybeRequired,\n maybeReadonly,\n maybeWithDefault,\n maybeWithMinMax,\n augmentSchema,\n} from '@strapi/utils';\nimport { z } from 'zod/v4';\n\nimport { BOOLEAN_LITERAL_VALUES } from './constants';\n\n// eslint-disable-next-line import/no-cycle\nimport { CoreComponentRouteValidator } from './component';\nimport { CoreContentTypeRouteValidator } from './content-type';\n\nimport { safeSchemaCreation } from './utils';\n\n/**\n * Converts a BigInteger attribute to a Zod schema.\n * @param attribute - The BigInteger attribute object from the Strapi schema.\n * @returns A Zod schema representing the BigInteger field.\n */\nexport const bigIntegerToSchema = (attribute: Schema.Attribute.BigInteger): z.Schema => {\n const { writable, required, min, max, default: defaultValue } = attribute;\n\n const schema = augmentSchema(z.string(), [\n (schema) => (min !== undefined ? schema.min(min as unknown as number) : schema),\n (schema) => (max !== undefined ? schema.max(max as unknown as number) : schema),\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n maybeReadonly(writable),\n ]);\n\n return schema.describe('A biginteger field');\n};\n\n/**\n * Converts a blocks attribute to a Zod schema.\n * @returns A Zod schema representing the blocks field.\n */\nexport const blocksToSchema = (): z.Schema => {\n return z.array(z.any()).describe('A blocks field');\n};\n\n/**\n * Converts a boolean attribute to a Zod schema.\n * @param attribute - The Boolean attribute object from the Strapi schema.\n * @returns A Zod schema representing the boolean field.\n */\nexport const booleanToSchema = (attribute: Schema.Attribute.Boolean): z.Schema => {\n const { writable, required, default: defaultValue } = attribute;\n\n const schema = augmentSchema(z.boolean().nullable(), [\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n maybeReadonly(writable),\n ]);\n\n return schema.describe('A boolean field');\n};\n\n/**\n * Converts a component attribute to a Zod schema.\n * @param attribute - The Component attribute object from the Strapi schema.\n * @returns A Zod schema representing the component field.\n */\nexport const componentToSchema = (\n attribute: Schema.Attribute.Component<UID.Component, boolean>\n): z.Schema => {\n const { writable, required, min, max, component, repeatable } = attribute;\n\n const componentSchema = safeSchemaCreation(\n component,\n () => new CoreComponentRouteValidator(strapi, component).entry\n ) as z.ZodType;\n\n const baseSchema = repeatable ? z.array(componentSchema) : componentSchema;\n\n const schema = augmentSchema(baseSchema, [\n (schema) => (min !== undefined && schema instanceof z.ZodArray ? schema.min(min) : schema),\n (schema) => (max !== undefined && schema instanceof z.ZodArray ? schema.max(max) : schema),\n maybeRequired(required),\n maybeReadonly(writable),\n ]);\n\n return schema.describe('A component field');\n};\n\n/**\n * Converts a date attribute to a Zod schema.\n * @param attribute - The Date attribute object from the Strapi schema.\n * @returns A Zod schema representing the date field.\n */\nexport const dateToSchema = (attribute: Schema.Attribute.Date): z.Schema => {\n const { writable, required, default: defaultValue } = attribute;\n\n const schema = augmentSchema(z.string(), [\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n maybeReadonly(writable),\n ]);\n\n return schema.describe('A date field');\n};\n\n/**\n * Converts a datetime attribute to a Zod schema.\n * @param attribute - The DateTime attribute object from the Strapi schema.\n * @returns A Zod schema representing the datetime field.\n */\nexport const datetimeToSchema = (attribute: Schema.Attribute.DateTime): z.Schema => {\n const { writable, required, default: defaultValue } = attribute;\n\n const schema = augmentSchema(z.string(), [\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n maybeReadonly(writable),\n ]);\n\n return schema.describe('A datetime field');\n};\n\n/**\n * Converts a decimal attribute to a Zod schema.\n * @param attribute - The Decimal attribute object from the Strapi schema.\n * @returns A Zod schema representing the decimal field.\n */\nexport const decimalToSchema = (attribute: Schema.Attribute.Decimal): z.Schema => {\n const { writable, required, min, max, default: defaultValue } = attribute;\n\n const schema = augmentSchema(z.number(), [\n maybeWithMinMax(min, max),\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n maybeReadonly(writable),\n ]);\n\n return schema.describe('A decimal field');\n};\n\n/**\n * Converts a dynamic zone attribute to a Zod schema.\n * @param attribute - The DynamicZone attribute object from the Strapi schema.\n * @returns A Zod schema representing the dynamic zone field.\n */\nexport const dynamicZoneToSchema = (attribute: Schema.Attribute.DynamicZone): z.Schema => {\n const { writable, required, min, max } = attribute;\n\n const baseSchema = z.array(z.any());\n\n const schema = augmentSchema(baseSchema, [\n maybeWithMinMax(min, max),\n maybeRequired(required),\n maybeReadonly(writable),\n ]);\n\n return schema.describe('A dynamic zone field');\n};\n\n/**\n * Converts an email attribute to a Zod schema.\n * @param attribute - The Email attribute object from the Strapi schema.\n * @returns A Zod schema representing the email field.\n */\nexport const emailToSchema = (attribute: Schema.Attribute.Email): z.Schema => {\n const { writable, required, default: defaultValue, minLength, maxLength } = attribute;\n\n const baseSchema = z.email();\n\n const schema = augmentSchema(baseSchema, [\n maybeWithMinMax(minLength, maxLength),\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n maybeReadonly(writable),\n ]);\n\n return schema.describe('An email field');\n};\n\n/**\n * Converts an enumeration attribute to a Zod schema.\n * @param attribute - The Enumeration attribute object from the Strapi schema.\n * @returns A Zod schema representing the enumeration field.\n */\nexport const enumToSchema = (attribute: Schema.Attribute.Enumeration<string[]>): z.Schema => {\n const { writable, required, default: defaultValue, enum: enumValues } = attribute;\n\n const baseSchema = z.enum(enumValues);\n\n const schema = augmentSchema(baseSchema, [\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n maybeReadonly(writable),\n ]);\n\n return schema.describe('An enum field');\n};\n\n/**\n * Converts a float attribute to a Zod schema.\n * @param attribute - The Float attribute object from the Strapi schema.\n * @returns A Zod schema representing the float field.\n */\nexport const floatToSchema = (attribute: Schema.Attribute.Float): z.Schema => {\n const { writable, required, min, max, default: defaultValue } = attribute;\n\n const schema = augmentSchema(z.number(), [\n maybeWithMinMax(min, max),\n maybeRequired(required),\n maybeReadonly(writable),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe('A float field');\n};\n\n/**\n * Converts an integer attribute to a Zod schema.\n * @param attribute - The Integer attribute object from the Strapi schema.\n * @returns A Zod schema representing the integer field.\n */\nexport const integerToSchema = (attribute: Schema.Attribute.Integer): z.Schema => {\n const { writable, required, min, max, default: defaultValue } = attribute;\n\n const baseSchema = z.number().int();\n\n const schema = augmentSchema(baseSchema, [\n maybeWithMinMax(min, max),\n maybeRequired(required),\n maybeReadonly(writable),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe('An integer field');\n};\n\n/**\n * Converts a JSON attribute to a Zod schema.\n * @param attribute - The JSON attribute object from the Strapi schema.\n * @returns A Zod schema representing the JSON field.\n */\nexport const jsonToSchema = (attribute: Schema.Attribute.JSON): z.Schema => {\n const { writable, required, default: defaultValue } = attribute;\n\n const schema = augmentSchema(z.any(), [\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n maybeReadonly(writable),\n ]);\n\n return schema.describe('A JSON field');\n};\n\n/**\n * Converts a media attribute to a Zod schema.\n * @param attribute - The Media attribute object from the Strapi schema.\n * @returns A Zod schema representing the media field.\n */\nexport const mediaToSchema = (\n attribute: Schema.Attribute.Media<Schema.Attribute.MediaKind | undefined, boolean>\n): z.Schema => {\n const { writable, required, multiple } = attribute;\n\n const uploadPlugin = strapi.plugin('upload');\n\n // @ts-expect-error there is a mismatch between a raw module and a loader module\n const fileSchema = uploadPlugin.contentTypes.file as Struct.ContentTypeSchema;\n\n const mediaSchema = safeSchemaCreation(\n fileSchema.uid,\n () => new CoreContentTypeRouteValidator(strapi, fileSchema.uid).document\n ) as z.ZodType;\n\n const baseSchema = multiple ? z.array(mediaSchema) : mediaSchema;\n\n const schema = augmentSchema(baseSchema, [maybeRequired(required), maybeReadonly(writable)]);\n\n return schema.describe('A media field');\n};\n\n/**\n * Converts a relation attribute to a Zod schema.\n * @param attribute - The Relation attribute object from the Strapi schema.\n * @returns A Zod schema representing the relational field.\n */\nexport const relationToSchema = (attribute: Schema.Attribute.Relation): z.Schema => {\n if (!('target' in attribute)) {\n return z.any();\n }\n\n const { writable, required, target } = attribute as Schema.Attribute.RelationWithTarget;\n\n const targetSchema = safeSchemaCreation(\n target,\n () => new CoreContentTypeRouteValidator(strapi, target).document\n ) as z.ZodType;\n\n const baseSchema = relations.isAnyToMany(attribute) ? z.array(targetSchema) : targetSchema;\n\n const schema = augmentSchema(baseSchema, [maybeRequired(required), maybeReadonly(writable)]);\n\n return schema.describe('A relational field');\n};\n\n/**\n * Converts a string, text, rich text, or password attribute to a Zod schema.\n * @param attribute - The String, Text, RichText, or Password attribute object from the Strapi schema.\n * @returns A Zod schema representing the field.\n */\nexport const stringToSchema = (\n attribute:\n | Schema.Attribute.String\n | Schema.Attribute.Text\n | Schema.Attribute.RichText\n | Schema.Attribute.Password\n): z.Schema => {\n const { writable, required, default: defaultValue, minLength, maxLength } = attribute;\n\n const schema = augmentSchema(z.string(), [\n maybeWithMinMax(minLength, maxLength),\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n maybeReadonly(writable),\n ]);\n\n return schema.describe(`A ${attribute.type} field`);\n};\n\n/**\n * Converts a time attribute to a Zod schema.\n * @param attribute - The Time attribute object from the Strapi schema.\n * @returns A Zod schema representing the time field.\n */\nexport const timeToSchema = (attribute: Schema.Attribute.Time): z.Schema => {\n const { writable, required, default: defaultValue } = attribute;\n\n const schema = augmentSchema(z.string(), [\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n maybeReadonly(writable),\n ]);\n\n return schema.describe('A time field');\n};\n\n/**\n * Converts a timestamp attribute to a Zod schema.\n * @param attribute - The Timestamp attribute object from the Strapi schema.\n * @returns A Zod schema representing the timestamp field.\n */\nexport const timestampToSchema = (attribute: Schema.Attribute.Timestamp): z.Schema => {\n const { writable, required, default: defaultValue } = attribute;\n\n const baseSchema = z.union([z.string(), z.number()]);\n\n const schema = augmentSchema(baseSchema, [\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n maybeReadonly(writable),\n ]);\n\n return schema.describe('A timestamp field');\n};\n\n/**\n * Converts a UID attribute to a Zod schema.\n * @param attribute - The UID attribute object from the Strapi schema.\n * @returns A Zod schema representing the UID field.\n */\nexport const uidToSchema = (attribute: Schema.Attribute.UID): z.Schema => {\n const { writable, required, default: defaultValue, minLength, maxLength } = attribute;\n\n const schema = augmentSchema(z.string(), [\n maybeWithMinMax(minLength, maxLength),\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n maybeReadonly(writable),\n ]);\n\n return schema.describe('A UID field');\n};\n\n/**\n * Converts a BigInteger attribute to a Zod schema for input validation.\n * @param attribute - The BigInteger attribute object from the Strapi schema.\n * @returns A Zod schema for input validation of the BigInteger field.\n */\nexport const bigIntegerToInputSchema = (attribute: Schema.Attribute.BigInteger) => {\n const { required, min, max, default: defaultValue } = attribute;\n\n const schema = augmentSchema(z.string(), [\n (schema) => (min !== undefined ? schema.min(min as unknown as number) : schema),\n (schema) => (max !== undefined ? schema.max(max as unknown as number) : schema),\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe('A biginteger field');\n};\n\n/**\n * Converts a blocks attribute to a Zod schema for input validation.\n * @returns A Zod schema for input validation of the blocks field.\n */\nexport const blocksToInputSchema = () => {\n // TODO: better support blocks data structure\n return z.array(z.any()).describe('A blocks field');\n};\n\n/**\n * Converts a boolean attribute to a Zod schema for input validation.\n * @param attribute - The Boolean attribute object from the Strapi schema.\n * @returns A Zod schema for input validation of the boolean field.\n */\nexport const booleanToInputSchema = (attribute: Schema.Attribute.Boolean) => {\n const { required, default: defaultValue } = attribute;\n\n const baseSchema = z.enum(BOOLEAN_LITERAL_VALUES).nullable();\n\n const schema = augmentSchema(baseSchema, [\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe('A boolean field');\n};\n\n/**\n * Converts a component attribute to a Zod schema for input validation.\n * @param attribute - The Component attribute object from the Strapi schema.\n * @returns A Zod schema for input validation of the component field.\n */\nexport const componentToInputSchema = (\n attribute: Schema.Attribute.Component<UID.Component, boolean>\n) => {\n const { required, repeatable, min, max } = attribute;\n\n const baseSchema = repeatable ? z.array(z.any()) : z.any();\n\n const schema = augmentSchema(baseSchema, [\n (schema) => (min !== undefined && schema instanceof z.ZodArray ? schema.min(min) : schema),\n (schema) => (max !== undefined && schema instanceof z.ZodArray ? schema.max(max) : schema),\n maybeRequired(required),\n ]);\n\n return schema.describe('A component field');\n};\n\n/**\n * Converts a date attribute to a Zod schema for input validation.\n * @param attribute - The Date attribute object from the Strapi schema.\n * @returns A Zod schema for input validation of the date field.\n */\nexport const dateToInputSchema = (attribute: Schema.Attribute.Date) => {\n const { required, default: defaultValue } = attribute;\n\n const schema = augmentSchema(z.string(), [\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe('A date field');\n};\n\n/**\n * Converts a datetime attribute to a Zod schema for input validation.\n * @param attribute - The DateTime attribute object from the Strapi schema.\n * @returns A Zod schema for input validation of the datetime field.\n */\nexport const datetimeToInputSchema = (attribute: Schema.Attribute.DateTime) => {\n const { required, default: defaultValue } = attribute;\n\n const schema = augmentSchema(z.string(), [\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe('A datetime field');\n};\n\n/**\n * Converts a decimal attribute to a Zod schema for input validation.\n * @param attribute - The Decimal attribute object from the Strapi schema.\n * @returns A Zod schema for input validation of the decimal field.\n */\nexport const decimalToInputSchema = (attribute: Schema.Attribute.Decimal) => {\n const { required, min, max, default: defaultValue } = attribute;\n\n const schema = augmentSchema(z.number(), [\n maybeWithMinMax(min, max),\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe('A decimal field');\n};\n\n/**\n * Converts a dynamic zone attribute to a Zod schema for input validation.\n * @param attribute - The DynamicZone attribute object from the Strapi schema.\n * @returns A Zod schema for input validation of the dynamic zone field.\n */\nexport const dynamicZoneToInputSchema = (attribute: Schema.Attribute.DynamicZone) => {\n const { required, min, max } = attribute;\n\n const baseSchema = z.array(z.any());\n\n const schema = augmentSchema(baseSchema, [maybeWithMinMax(min, max), maybeRequired(required)]);\n\n return schema.describe('A dynamic zone field');\n};\n\n/**\n * Converts an email attribute to a Zod schema for input validation.\n * @param attribute - The Email attribute object from the Strapi schema.\n * @returns A Zod schema for input validation of the email field.\n */\nexport const emailToInputSchema = (attribute: Schema.Attribute.Email) => {\n const { required, default: defaultValue, minLength, maxLength } = attribute;\n\n const baseSchema = z.email();\n\n const schema = augmentSchema(baseSchema, [\n maybeWithMinMax(minLength, maxLength),\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe('An email field');\n};\n\n/**\n * Converts an enumeration attribute to a Zod schema for input validation.\n * @param attribute - The Enumeration attribute object from the Strapi schema.\n * @returns A Zod schema for input validation of the enumeration field.\n */\nexport const enumerationToInputSchema = (attribute: Schema.Attribute.Enumeration<string[]>) => {\n const { required, default: defaultValue, enum: enumValues } = attribute;\n\n const baseSchema = z.enum(enumValues);\n\n const schema = augmentSchema(baseSchema, [\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe('An enum field');\n};\n\n/**\n * Converts a float attribute to a Zod schema for input validation.\n * @param attribute - The Float attribute object from the Strapi schema.\n * @returns A Zod schema for input validation of the float field.\n */\nexport const floatToInputSchema = (attribute: Schema.Attribute.Float) => {\n const { required, min, max, default: defaultValue } = attribute;\n\n const schema = augmentSchema(z.number(), [\n maybeWithMinMax(min, max),\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe('A float field');\n};\n\n/**\n * Converts an integer attribute to a Zod schema for input validation.\n * @param attribute - The Integer attribute object from the Strapi schema.\n * @returns A Zod schema for input validation of the integer field.\n */\nexport const integerToInputSchema = (attribute: Schema.Attribute.Integer) => {\n const { required, min, max, default: defaultValue } = attribute;\n\n const baseSchema = z.number().int();\n\n const schema = augmentSchema(baseSchema, [\n maybeWithMinMax(min, max),\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe('A float field');\n};\n\n/**\n * Converts a JSON attribute to a Zod schema for input validation.\n * @param attribute - The JSON attribute object from the Strapi schema.\n * @returns A Zod schema for input validation of the JSON field.\n */\nexport const jsonToInputSchema = (attribute: Schema.Attribute.JSON) => {\n const { required, default: defaultValue } = attribute;\n\n const schema = augmentSchema(z.any(), [maybeRequired(required), maybeWithDefault(defaultValue)]);\n\n return schema.describe('A JSON field');\n};\n\n/**\n * Converts a media attribute to a Zod schema for input validation.\n * @param attribute - The Media attribute object from the Strapi schema.\n * @returns A Zod schema for input validation of the media field.\n */\nexport const mediaToInputSchema = (\n attribute: Schema.Attribute.Media<Schema.Attribute.MediaKind | undefined, boolean>\n) => {\n const { required, multiple } = attribute;\n\n const baseSchema = multiple ? z.array(z.any()) : z.any();\n\n const schema = augmentSchema(baseSchema, [maybeRequired(required)]);\n\n return schema.describe('A media field');\n};\n\n/**\n * Converts a relation attribute to a Zod schema for input validation.\n * @param attribute - The Relation attribute object from the Strapi schema.\n * @returns A Zod schema for input validation of the relational field.\n */\nexport const relationToInputSchema = (attribute: Schema.Attribute.Relation) => {\n const { required } = attribute;\n\n const isToMany = relations.isAnyToMany(attribute);\n const uuid = z.string().uuid();\n const baseSchema = isToMany ? z.array(uuid) : uuid;\n\n const schema = augmentSchema(baseSchema, [maybeRequired(required)]);\n\n return schema.describe('A relational field');\n};\n\n/**\n * Converts a string, text, rich text, or password attribute to a Zod schema for input validation.\n * @param attribute - The String, Text, RichText, or Password attribute object from the Strapi schema.\n * @returns A Zod schema for input validation of the field.\n */\nexport const textToInputSchema = (\n attribute:\n | Schema.Attribute.String\n | Schema.Attribute.Text\n | Schema.Attribute.RichText\n | Schema.Attribute.Password\n) => {\n const { required, default: defaultValue, minLength, maxLength } = attribute;\n\n const schema = augmentSchema(z.string(), [\n maybeWithMinMax(minLength, maxLength),\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe(`A ${attribute.type} field`);\n};\n\n/**\n * Converts a time attribute to a Zod schema for input validation.\n * @param attribute - The Time attribute object from the Strapi schema.\n * @returns A Zod schema for input validation of the time field.\n */\nexport const timeToInputSchema = (attribute: Schema.Attribute.Time) => {\n const { required, default: defaultValue } = attribute;\n\n const schema = augmentSchema(z.string(), [\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe('A time field');\n};\n\n/**\n * Converts a timestamp attribute to a Zod schema for input validation.\n * @param attribute - The Timestamp attribute object from the Strapi schema.\n * @returns A Zod schema for input validation of the timestamp field.\n */\nexport const timestampToInputSchema = (attribute: Schema.Attribute.Timestamp) => {\n const { required, default: defaultValue } = attribute;\n\n const baseSchema = z.union([z.string(), z.number()]);\n\n const schema = augmentSchema(baseSchema, [\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe('A timestamp field');\n};\n\n/**\n * Converts a UID attribute to a Zod schema for input validation.\n * @param attribute - The UID attribute object from the Strapi schema.\n * @returns A Zod schema for input validation of the UID field.\n */\nexport const uidToInputSchema = (attribute: Schema.Attribute.UID) => {\n const { required, default: defaultValue, minLength, maxLength } = attribute;\n\n const schema = augmentSchema(z.string(), [\n maybeWithMinMax(minLength, maxLength),\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe('A UID field');\n};\n"],"names":["bigIntegerToSchema","attribute","writable","required","min","max","default","defaultValue","schema","augmentSchema","z","string","undefined","maybeRequired","maybeWithDefault","maybeReadonly","describe","blocksToSchema","array","any","booleanToSchema","boolean","nullable","componentToSchema","component","repeatable","componentSchema","safeSchemaCreation","CoreComponentRouteValidator","strapi","entry","baseSchema","ZodArray","dateToSchema","datetimeToSchema","decimalToSchema","number","maybeWithMinMax","dynamicZoneToSchema","emailToSchema","minLength","maxLength","email","enumToSchema","enum","enumValues","floatToSchema","integerToSchema","int","jsonToSchema","mediaToSchema","multiple","uploadPlugin","plugin","fileSchema","contentTypes","file","mediaSchema","uid","CoreContentTypeRouteValidator","document","relationToSchema","target","targetSchema","relations","isAnyToMany","stringToSchema","type","timeToSchema","timestampToSchema","union","uidToSchema","bigIntegerToInputSchema","blocksToInputSchema","booleanToInputSchema","BOOLEAN_LITERAL_VALUES","componentToInputSchema","dateToInputSchema","datetimeToInputSchema","decimalToInputSchema","dynamicZoneToInputSchema","emailToInputSchema","enumerationToInputSchema","floatToInputSchema","integerToInputSchema","jsonToInputSchema","mediaToInputSchema","relationToInputSchema","isToMany","uuid","textToInputSchema","timeToInputSchema","timestampToInputSchema","uidToInputSchema"],"mappings":"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"}
@@ -49,7 +49,7 @@ export declare class CoreContentTypeRouteValidator extends AbstractCoreRouteVali
49
49
  */
50
50
  get document(): z.ZodObject<{
51
51
  documentId: z.ZodUUID;
52
- id: z.ZodNumber;
52
+ id: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
53
53
  }, z.core.$strip>;
54
54
  /**
55
55
  * Generates a validation schema for an array of documents
@@ -64,7 +64,7 @@ export declare class CoreContentTypeRouteValidator extends AbstractCoreRouteVali
64
64
  */
65
65
  get documents(): z.ZodArray<z.ZodObject<{
66
66
  documentId: z.ZodUUID;
67
- id: z.ZodNumber;
67
+ id: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
68
68
  }, z.core.$strip>>;
69
69
  /**
70
70
  * Schema-aware fields validation that restricts to actual model fields
@@ -81,7 +81,10 @@ var z__namespace = /*#__PURE__*/_interopNamespaceDefault(z);
81
81
  const attributesSchema = mappers.createAttributesSchema(sanitizedAttributes);
82
82
  return z__namespace.object({
83
83
  documentId: this.documentID,
84
- id: z__namespace.number()
84
+ id: z__namespace.union([
85
+ z__namespace.string(),
86
+ z__namespace.number()
87
+ ])
85
88
  }).extend(attributesSchema.shape);
86
89
  }
87
90
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"content-type.js","sources":["../../../../src/core-api/routes/validation/content-type.ts"],"sourcesContent":["import type { Schema, UID } from '@strapi/types';\n\nimport { contentTypes } from '@strapi/utils';\nimport * as z from 'zod/v4';\n\n// eslint-disable-next-line import/no-cycle\nimport { createAttributesInputSchema, createAttributesSchema } from './mappers';\nimport { AbstractCoreRouteValidator } from './common';\n\nexport type QueryParam =\n | 'fields'\n | 'populate'\n | 'sort'\n | 'status'\n | 'locale'\n | 'pagination'\n | 'filters'\n | '_q';\n\n/**\n * A validator for core content-type routes.\n *\n * Provides validation schemas and utilities for handling content-type-specific route validation.\n * Extends the base AbstractRouteValidator with schema-aware validation for Strapi content types.\n *\n * @example\n * ```ts\n * const strapi = // ... strapi instance\n * const uid = 'api::article.article'\n * const validator = new CoreContentTypeRouteValidator(strapi, uid);\n *\n * // Get validation schema for document\n * const documentSchema = validator.document;\n *\n * // Validate query parameters with schema awareness\n * const querySchema = validator.queryParams(['fields', 'populate', 'sort']);\n * ```\n */\nexport class CoreContentTypeRouteValidator extends AbstractCoreRouteValidator<UID.ContentType> {\n /**\n * Generates a validation schema for document IDs\n *\n * @returns A schema that validates UUIDs\n *\n * @example\n * ```ts\n * const validator = new CoreContentTypeRouteValidator(strapi, uid);\n * const idSchema = validator.documentID;\n * ```\n */\n get documentID() {\n return z.uuid().describe('The document ID, represented by a UUID');\n }\n\n /**\n * Generates a comprehensive validation schema for a single document.\n *\n * Combines scalar fields and populatable fields into a single schema.\n *\n * @returns A schema for validating complete documents\n *\n * @example\n * ```ts\n * const validator = new CoreContentTypeRouteValidator(strapi, uid);\n * const docSchema = validator.document;\n * ```\n */\n get document() {\n const entries = Object.entries({ ...this._scalarFields, ...this._populatableFields });\n\n const sanitizedAttributes = entries\n // Remove passwords from the attribute list\n .filter(([, attribute]) => !['password'].includes(attribute.type));\n\n // Merge all attributes into a single schema\n const attributesSchema = createAttributesSchema(sanitizedAttributes);\n\n return z\n .object({\n documentId: this.documentID,\n id: z.number(),\n })\n .extend(attributesSchema.shape);\n }\n\n /**\n * Generates a validation schema for an array of documents\n *\n * @returns A schema for validating arrays of documents\n *\n * @example\n * ```ts\n * const validator = new CoreContentTypeRouteValidator(strapi, uid);\n * const docsSchema = validator.documents;\n * ```\n */\n get documents() {\n return z.array(this.document);\n }\n\n /**\n * Schema-aware fields validation that restricts to actual model fields\n */\n protected get schemaAwareQueryFields() {\n return this.scalarFieldsArray\n .readonly()\n .describe(\n `The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones`\n );\n }\n\n /**\n * Schema-aware populate validation that restricts to actual populatable fields\n */\n protected get schemaAwareQueryPopulate() {\n const wildcardPopulate = z\n .literal('*')\n .readonly()\n .describe(\n 'Populate all the first level relations, components, files, and dynamic zones for the entry'\n );\n\n const singleFieldPopulate = this.populatableFieldsEnum\n .readonly()\n .describe('Populate a single relation, component, file, or dynamic zone');\n\n const multiPopulate = this.populatableFieldsArray.describe(\n 'Populate a selection of multiple relations, components, files, or dynamic zones'\n );\n\n return z.union([wildcardPopulate, singleFieldPopulate, multiPopulate]);\n }\n\n /**\n * Schema-aware sort validation that restricts to actual model fields\n */\n protected get schemaAwareQuerySort() {\n const orderDirection = z.enum(['asc', 'desc']);\n\n // TODO: Handle nested sorts but very low priority, very little usage\n return z\n .union([\n this.scalarFieldsEnum, // 'name' | 'title'\n this.scalarFieldsArray, // ['name', 'title']\n this.fieldRecord(orderDirection), // { name: 'desc' } | { title: 'asc' }\n z.array(this.fieldRecord(orderDirection)), // [{ name: 'desc'}, { title: 'asc' }]\n ])\n .describe('Sort the result');\n }\n\n /**\n * Schema-aware filters validation that restricts to actual model fields\n */\n protected get schemaAwareFilters() {\n return z.record(this.scalarFieldsEnum, z.any()).describe('Filters to apply to the query');\n }\n\n get locale() {\n return z.string().describe('Select a locale');\n }\n\n get status() {\n return z\n .enum(['draft', 'published'])\n .describe('Fetch documents based on their status. Default to \"published\" if not specified.');\n }\n\n get data() {\n const isWritableAttribute = ([attributeName]: [string, Schema.Attribute.AnyAttribute]) => {\n return contentTypes.isWritableAttribute(this._schema, attributeName);\n };\n\n const entries = Object.entries({ ...this._scalarFields, ...this._populatableFields });\n\n const sanitizedAttributes = entries\n // Remove non-writable attributes\n .filter(isWritableAttribute);\n\n return createAttributesInputSchema(sanitizedAttributes);\n }\n\n get query() {\n return z.string();\n }\n\n get body() {\n return z.object({ data: this.data });\n }\n\n get partialBody() {\n return z.object({ data: this.data.partial() });\n }\n\n /**\n * Creates validation schemas for query parameters\n *\n * @param params - Array of query parameters to validate ('fields', 'populate', 'sort', ...)\n * @returns Object containing validation schemas for requested parameters\n *\n * @example\n * ```ts\n * const validator = new CoreContentTypeRouteValidator(strapi, uid);\n * const querySchemas = validator.queryParams(['fields', 'populate']);\n * ```\n */\n queryParams(params: QueryParam[]): Partial<Record<QueryParam, z.Schema>> {\n const map: Record<QueryParam, () => z.Schema> = {\n fields: () => this.schemaAwareQueryFields.optional(),\n populate: () => this.schemaAwareQueryPopulate.optional(),\n sort: () => this.schemaAwareQuerySort.optional(),\n filters: () => this.schemaAwareFilters.optional(),\n locale: () => this.locale.optional(),\n pagination: () => this.pagination.optional(),\n status: () => this.status.optional(),\n _q: () => this.query.optional(),\n } as const;\n\n return params.reduce(\n (acc, param) => ({ ...acc, [param]: map[param]() }),\n {} as Partial<Record<QueryParam, z.Schema>>\n );\n }\n}\n"],"names":["CoreContentTypeRouteValidator","AbstractCoreRouteValidator","documentID","z","uuid","describe","document","entries","Object","_scalarFields","_populatableFields","sanitizedAttributes","filter","attribute","includes","type","attributesSchema","createAttributesSchema","object","documentId","id","number","extend","shape","documents","array","schemaAwareQueryFields","scalarFieldsArray","readonly","schemaAwareQueryPopulate","wildcardPopulate","literal","singleFieldPopulate","populatableFieldsEnum","multiPopulate","populatableFieldsArray","union","schemaAwareQuerySort","orderDirection","enum","scalarFieldsEnum","fieldRecord","schemaAwareFilters","record","any","locale","string","status","data","isWritableAttribute","attributeName","contentTypes","_schema","createAttributesInputSchema","query","body","partialBody","partial","queryParams","params","map","fields","optional","populate","sort","filters","pagination","_q","reduce","acc","param"],"mappings":"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"}
1
+ {"version":3,"file":"content-type.js","sources":["../../../../src/core-api/routes/validation/content-type.ts"],"sourcesContent":["import type { Schema, UID } from '@strapi/types';\n\nimport { contentTypes } from '@strapi/utils';\nimport * as z from 'zod/v4';\n\n// eslint-disable-next-line import/no-cycle\nimport { createAttributesInputSchema, createAttributesSchema } from './mappers';\nimport { AbstractCoreRouteValidator } from './common';\n\nexport type QueryParam =\n | 'fields'\n | 'populate'\n | 'sort'\n | 'status'\n | 'locale'\n | 'pagination'\n | 'filters'\n | '_q';\n\n/**\n * A validator for core content-type routes.\n *\n * Provides validation schemas and utilities for handling content-type-specific route validation.\n * Extends the base AbstractRouteValidator with schema-aware validation for Strapi content types.\n *\n * @example\n * ```ts\n * const strapi = // ... strapi instance\n * const uid = 'api::article.article'\n * const validator = new CoreContentTypeRouteValidator(strapi, uid);\n *\n * // Get validation schema for document\n * const documentSchema = validator.document;\n *\n * // Validate query parameters with schema awareness\n * const querySchema = validator.queryParams(['fields', 'populate', 'sort']);\n * ```\n */\nexport class CoreContentTypeRouteValidator extends AbstractCoreRouteValidator<UID.ContentType> {\n /**\n * Generates a validation schema for document IDs\n *\n * @returns A schema that validates UUIDs\n *\n * @example\n * ```ts\n * const validator = new CoreContentTypeRouteValidator(strapi, uid);\n * const idSchema = validator.documentID;\n * ```\n */\n get documentID() {\n return z.uuid().describe('The document ID, represented by a UUID');\n }\n\n /**\n * Generates a comprehensive validation schema for a single document.\n *\n * Combines scalar fields and populatable fields into a single schema.\n *\n * @returns A schema for validating complete documents\n *\n * @example\n * ```ts\n * const validator = new CoreContentTypeRouteValidator(strapi, uid);\n * const docSchema = validator.document;\n * ```\n */\n get document() {\n const entries = Object.entries({ ...this._scalarFields, ...this._populatableFields });\n\n const sanitizedAttributes = entries\n // Remove passwords from the attribute list\n .filter(([, attribute]) => !['password'].includes(attribute.type));\n\n // Merge all attributes into a single schema\n const attributesSchema = createAttributesSchema(sanitizedAttributes);\n\n return z\n .object({\n documentId: this.documentID,\n id: z.union([z.string(), z.number()]),\n })\n .extend(attributesSchema.shape);\n }\n\n /**\n * Generates a validation schema for an array of documents\n *\n * @returns A schema for validating arrays of documents\n *\n * @example\n * ```ts\n * const validator = new CoreContentTypeRouteValidator(strapi, uid);\n * const docsSchema = validator.documents;\n * ```\n */\n get documents() {\n return z.array(this.document);\n }\n\n /**\n * Schema-aware fields validation that restricts to actual model fields\n */\n protected get schemaAwareQueryFields() {\n return this.scalarFieldsArray\n .readonly()\n .describe(\n `The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones`\n );\n }\n\n /**\n * Schema-aware populate validation that restricts to actual populatable fields\n */\n protected get schemaAwareQueryPopulate() {\n const wildcardPopulate = z\n .literal('*')\n .readonly()\n .describe(\n 'Populate all the first level relations, components, files, and dynamic zones for the entry'\n );\n\n const singleFieldPopulate = this.populatableFieldsEnum\n .readonly()\n .describe('Populate a single relation, component, file, or dynamic zone');\n\n const multiPopulate = this.populatableFieldsArray.describe(\n 'Populate a selection of multiple relations, components, files, or dynamic zones'\n );\n\n return z.union([wildcardPopulate, singleFieldPopulate, multiPopulate]);\n }\n\n /**\n * Schema-aware sort validation that restricts to actual model fields\n */\n protected get schemaAwareQuerySort() {\n const orderDirection = z.enum(['asc', 'desc']);\n\n // TODO: Handle nested sorts but very low priority, very little usage\n return z\n .union([\n this.scalarFieldsEnum, // 'name' | 'title'\n this.scalarFieldsArray, // ['name', 'title']\n this.fieldRecord(orderDirection), // { name: 'desc' } | { title: 'asc' }\n z.array(this.fieldRecord(orderDirection)), // [{ name: 'desc'}, { title: 'asc' }]\n ])\n .describe('Sort the result');\n }\n\n /**\n * Schema-aware filters validation that restricts to actual model fields\n */\n protected get schemaAwareFilters() {\n return z.record(this.scalarFieldsEnum, z.any()).describe('Filters to apply to the query');\n }\n\n get locale() {\n return z.string().describe('Select a locale');\n }\n\n get status() {\n return z\n .enum(['draft', 'published'])\n .describe('Fetch documents based on their status. Default to \"published\" if not specified.');\n }\n\n get data() {\n const isWritableAttribute = ([attributeName]: [string, Schema.Attribute.AnyAttribute]) => {\n return contentTypes.isWritableAttribute(this._schema, attributeName);\n };\n\n const entries = Object.entries({ ...this._scalarFields, ...this._populatableFields });\n\n const sanitizedAttributes = entries\n // Remove non-writable attributes\n .filter(isWritableAttribute);\n\n return createAttributesInputSchema(sanitizedAttributes);\n }\n\n get query() {\n return z.string();\n }\n\n get body() {\n return z.object({ data: this.data });\n }\n\n get partialBody() {\n return z.object({ data: this.data.partial() });\n }\n\n /**\n * Creates validation schemas for query parameters\n *\n * @param params - Array of query parameters to validate ('fields', 'populate', 'sort', ...)\n * @returns Object containing validation schemas for requested parameters\n *\n * @example\n * ```ts\n * const validator = new CoreContentTypeRouteValidator(strapi, uid);\n * const querySchemas = validator.queryParams(['fields', 'populate']);\n * ```\n */\n queryParams(params: QueryParam[]): Partial<Record<QueryParam, z.Schema>> {\n const map: Record<QueryParam, () => z.Schema> = {\n fields: () => this.schemaAwareQueryFields.optional(),\n populate: () => this.schemaAwareQueryPopulate.optional(),\n sort: () => this.schemaAwareQuerySort.optional(),\n filters: () => this.schemaAwareFilters.optional(),\n locale: () => this.locale.optional(),\n pagination: () => this.pagination.optional(),\n status: () => this.status.optional(),\n _q: () => this.query.optional(),\n } as const;\n\n return params.reduce(\n (acc, param) => ({ ...acc, [param]: map[param]() }),\n {} as Partial<Record<QueryParam, z.Schema>>\n );\n }\n}\n"],"names":["CoreContentTypeRouteValidator","AbstractCoreRouteValidator","documentID","z","uuid","describe","document","entries","Object","_scalarFields","_populatableFields","sanitizedAttributes","filter","attribute","includes","type","attributesSchema","createAttributesSchema","object","documentId","id","union","string","number","extend","shape","documents","array","schemaAwareQueryFields","scalarFieldsArray","readonly","schemaAwareQueryPopulate","wildcardPopulate","literal","singleFieldPopulate","populatableFieldsEnum","multiPopulate","populatableFieldsArray","schemaAwareQuerySort","orderDirection","enum","scalarFieldsEnum","fieldRecord","schemaAwareFilters","record","any","locale","status","data","isWritableAttribute","attributeName","contentTypes","_schema","createAttributesInputSchema","query","body","partialBody","partial","queryParams","params","map","fields","optional","populate","sort","filters","pagination","_q","reduce","acc","param"],"mappings":"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"}
@@ -60,7 +60,10 @@ import { AbstractCoreRouteValidator } from './common.mjs';
60
60
  const attributesSchema = createAttributesSchema(sanitizedAttributes);
61
61
  return z.object({
62
62
  documentId: this.documentID,
63
- id: z.number()
63
+ id: z.union([
64
+ z.string(),
65
+ z.number()
66
+ ])
64
67
  }).extend(attributesSchema.shape);
65
68
  }
66
69
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"content-type.mjs","sources":["../../../../src/core-api/routes/validation/content-type.ts"],"sourcesContent":["import type { Schema, UID } from '@strapi/types';\n\nimport { contentTypes } from '@strapi/utils';\nimport * as z from 'zod/v4';\n\n// eslint-disable-next-line import/no-cycle\nimport { createAttributesInputSchema, createAttributesSchema } from './mappers';\nimport { AbstractCoreRouteValidator } from './common';\n\nexport type QueryParam =\n | 'fields'\n | 'populate'\n | 'sort'\n | 'status'\n | 'locale'\n | 'pagination'\n | 'filters'\n | '_q';\n\n/**\n * A validator for core content-type routes.\n *\n * Provides validation schemas and utilities for handling content-type-specific route validation.\n * Extends the base AbstractRouteValidator with schema-aware validation for Strapi content types.\n *\n * @example\n * ```ts\n * const strapi = // ... strapi instance\n * const uid = 'api::article.article'\n * const validator = new CoreContentTypeRouteValidator(strapi, uid);\n *\n * // Get validation schema for document\n * const documentSchema = validator.document;\n *\n * // Validate query parameters with schema awareness\n * const querySchema = validator.queryParams(['fields', 'populate', 'sort']);\n * ```\n */\nexport class CoreContentTypeRouteValidator extends AbstractCoreRouteValidator<UID.ContentType> {\n /**\n * Generates a validation schema for document IDs\n *\n * @returns A schema that validates UUIDs\n *\n * @example\n * ```ts\n * const validator = new CoreContentTypeRouteValidator(strapi, uid);\n * const idSchema = validator.documentID;\n * ```\n */\n get documentID() {\n return z.uuid().describe('The document ID, represented by a UUID');\n }\n\n /**\n * Generates a comprehensive validation schema for a single document.\n *\n * Combines scalar fields and populatable fields into a single schema.\n *\n * @returns A schema for validating complete documents\n *\n * @example\n * ```ts\n * const validator = new CoreContentTypeRouteValidator(strapi, uid);\n * const docSchema = validator.document;\n * ```\n */\n get document() {\n const entries = Object.entries({ ...this._scalarFields, ...this._populatableFields });\n\n const sanitizedAttributes = entries\n // Remove passwords from the attribute list\n .filter(([, attribute]) => !['password'].includes(attribute.type));\n\n // Merge all attributes into a single schema\n const attributesSchema = createAttributesSchema(sanitizedAttributes);\n\n return z\n .object({\n documentId: this.documentID,\n id: z.number(),\n })\n .extend(attributesSchema.shape);\n }\n\n /**\n * Generates a validation schema for an array of documents\n *\n * @returns A schema for validating arrays of documents\n *\n * @example\n * ```ts\n * const validator = new CoreContentTypeRouteValidator(strapi, uid);\n * const docsSchema = validator.documents;\n * ```\n */\n get documents() {\n return z.array(this.document);\n }\n\n /**\n * Schema-aware fields validation that restricts to actual model fields\n */\n protected get schemaAwareQueryFields() {\n return this.scalarFieldsArray\n .readonly()\n .describe(\n `The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones`\n );\n }\n\n /**\n * Schema-aware populate validation that restricts to actual populatable fields\n */\n protected get schemaAwareQueryPopulate() {\n const wildcardPopulate = z\n .literal('*')\n .readonly()\n .describe(\n 'Populate all the first level relations, components, files, and dynamic zones for the entry'\n );\n\n const singleFieldPopulate = this.populatableFieldsEnum\n .readonly()\n .describe('Populate a single relation, component, file, or dynamic zone');\n\n const multiPopulate = this.populatableFieldsArray.describe(\n 'Populate a selection of multiple relations, components, files, or dynamic zones'\n );\n\n return z.union([wildcardPopulate, singleFieldPopulate, multiPopulate]);\n }\n\n /**\n * Schema-aware sort validation that restricts to actual model fields\n */\n protected get schemaAwareQuerySort() {\n const orderDirection = z.enum(['asc', 'desc']);\n\n // TODO: Handle nested sorts but very low priority, very little usage\n return z\n .union([\n this.scalarFieldsEnum, // 'name' | 'title'\n this.scalarFieldsArray, // ['name', 'title']\n this.fieldRecord(orderDirection), // { name: 'desc' } | { title: 'asc' }\n z.array(this.fieldRecord(orderDirection)), // [{ name: 'desc'}, { title: 'asc' }]\n ])\n .describe('Sort the result');\n }\n\n /**\n * Schema-aware filters validation that restricts to actual model fields\n */\n protected get schemaAwareFilters() {\n return z.record(this.scalarFieldsEnum, z.any()).describe('Filters to apply to the query');\n }\n\n get locale() {\n return z.string().describe('Select a locale');\n }\n\n get status() {\n return z\n .enum(['draft', 'published'])\n .describe('Fetch documents based on their status. Default to \"published\" if not specified.');\n }\n\n get data() {\n const isWritableAttribute = ([attributeName]: [string, Schema.Attribute.AnyAttribute]) => {\n return contentTypes.isWritableAttribute(this._schema, attributeName);\n };\n\n const entries = Object.entries({ ...this._scalarFields, ...this._populatableFields });\n\n const sanitizedAttributes = entries\n // Remove non-writable attributes\n .filter(isWritableAttribute);\n\n return createAttributesInputSchema(sanitizedAttributes);\n }\n\n get query() {\n return z.string();\n }\n\n get body() {\n return z.object({ data: this.data });\n }\n\n get partialBody() {\n return z.object({ data: this.data.partial() });\n }\n\n /**\n * Creates validation schemas for query parameters\n *\n * @param params - Array of query parameters to validate ('fields', 'populate', 'sort', ...)\n * @returns Object containing validation schemas for requested parameters\n *\n * @example\n * ```ts\n * const validator = new CoreContentTypeRouteValidator(strapi, uid);\n * const querySchemas = validator.queryParams(['fields', 'populate']);\n * ```\n */\n queryParams(params: QueryParam[]): Partial<Record<QueryParam, z.Schema>> {\n const map: Record<QueryParam, () => z.Schema> = {\n fields: () => this.schemaAwareQueryFields.optional(),\n populate: () => this.schemaAwareQueryPopulate.optional(),\n sort: () => this.schemaAwareQuerySort.optional(),\n filters: () => this.schemaAwareFilters.optional(),\n locale: () => this.locale.optional(),\n pagination: () => this.pagination.optional(),\n status: () => this.status.optional(),\n _q: () => this.query.optional(),\n } as const;\n\n return params.reduce(\n (acc, param) => ({ ...acc, [param]: map[param]() }),\n {} as Partial<Record<QueryParam, z.Schema>>\n );\n }\n}\n"],"names":["CoreContentTypeRouteValidator","AbstractCoreRouteValidator","documentID","z","uuid","describe","document","entries","Object","_scalarFields","_populatableFields","sanitizedAttributes","filter","attribute","includes","type","attributesSchema","createAttributesSchema","object","documentId","id","number","extend","shape","documents","array","schemaAwareQueryFields","scalarFieldsArray","readonly","schemaAwareQueryPopulate","wildcardPopulate","literal","singleFieldPopulate","populatableFieldsEnum","multiPopulate","populatableFieldsArray","union","schemaAwareQuerySort","orderDirection","enum","scalarFieldsEnum","fieldRecord","schemaAwareFilters","record","any","locale","string","status","data","isWritableAttribute","attributeName","contentTypes","_schema","createAttributesInputSchema","query","body","partialBody","partial","queryParams","params","map","fields","optional","populate","sort","filters","pagination","_q","reduce","acc","param"],"mappings":"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"}
1
+ {"version":3,"file":"content-type.mjs","sources":["../../../../src/core-api/routes/validation/content-type.ts"],"sourcesContent":["import type { Schema, UID } from '@strapi/types';\n\nimport { contentTypes } from '@strapi/utils';\nimport * as z from 'zod/v4';\n\n// eslint-disable-next-line import/no-cycle\nimport { createAttributesInputSchema, createAttributesSchema } from './mappers';\nimport { AbstractCoreRouteValidator } from './common';\n\nexport type QueryParam =\n | 'fields'\n | 'populate'\n | 'sort'\n | 'status'\n | 'locale'\n | 'pagination'\n | 'filters'\n | '_q';\n\n/**\n * A validator for core content-type routes.\n *\n * Provides validation schemas and utilities for handling content-type-specific route validation.\n * Extends the base AbstractRouteValidator with schema-aware validation for Strapi content types.\n *\n * @example\n * ```ts\n * const strapi = // ... strapi instance\n * const uid = 'api::article.article'\n * const validator = new CoreContentTypeRouteValidator(strapi, uid);\n *\n * // Get validation schema for document\n * const documentSchema = validator.document;\n *\n * // Validate query parameters with schema awareness\n * const querySchema = validator.queryParams(['fields', 'populate', 'sort']);\n * ```\n */\nexport class CoreContentTypeRouteValidator extends AbstractCoreRouteValidator<UID.ContentType> {\n /**\n * Generates a validation schema for document IDs\n *\n * @returns A schema that validates UUIDs\n *\n * @example\n * ```ts\n * const validator = new CoreContentTypeRouteValidator(strapi, uid);\n * const idSchema = validator.documentID;\n * ```\n */\n get documentID() {\n return z.uuid().describe('The document ID, represented by a UUID');\n }\n\n /**\n * Generates a comprehensive validation schema for a single document.\n *\n * Combines scalar fields and populatable fields into a single schema.\n *\n * @returns A schema for validating complete documents\n *\n * @example\n * ```ts\n * const validator = new CoreContentTypeRouteValidator(strapi, uid);\n * const docSchema = validator.document;\n * ```\n */\n get document() {\n const entries = Object.entries({ ...this._scalarFields, ...this._populatableFields });\n\n const sanitizedAttributes = entries\n // Remove passwords from the attribute list\n .filter(([, attribute]) => !['password'].includes(attribute.type));\n\n // Merge all attributes into a single schema\n const attributesSchema = createAttributesSchema(sanitizedAttributes);\n\n return z\n .object({\n documentId: this.documentID,\n id: z.union([z.string(), z.number()]),\n })\n .extend(attributesSchema.shape);\n }\n\n /**\n * Generates a validation schema for an array of documents\n *\n * @returns A schema for validating arrays of documents\n *\n * @example\n * ```ts\n * const validator = new CoreContentTypeRouteValidator(strapi, uid);\n * const docsSchema = validator.documents;\n * ```\n */\n get documents() {\n return z.array(this.document);\n }\n\n /**\n * Schema-aware fields validation that restricts to actual model fields\n */\n protected get schemaAwareQueryFields() {\n return this.scalarFieldsArray\n .readonly()\n .describe(\n `The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones`\n );\n }\n\n /**\n * Schema-aware populate validation that restricts to actual populatable fields\n */\n protected get schemaAwareQueryPopulate() {\n const wildcardPopulate = z\n .literal('*')\n .readonly()\n .describe(\n 'Populate all the first level relations, components, files, and dynamic zones for the entry'\n );\n\n const singleFieldPopulate = this.populatableFieldsEnum\n .readonly()\n .describe('Populate a single relation, component, file, or dynamic zone');\n\n const multiPopulate = this.populatableFieldsArray.describe(\n 'Populate a selection of multiple relations, components, files, or dynamic zones'\n );\n\n return z.union([wildcardPopulate, singleFieldPopulate, multiPopulate]);\n }\n\n /**\n * Schema-aware sort validation that restricts to actual model fields\n */\n protected get schemaAwareQuerySort() {\n const orderDirection = z.enum(['asc', 'desc']);\n\n // TODO: Handle nested sorts but very low priority, very little usage\n return z\n .union([\n this.scalarFieldsEnum, // 'name' | 'title'\n this.scalarFieldsArray, // ['name', 'title']\n this.fieldRecord(orderDirection), // { name: 'desc' } | { title: 'asc' }\n z.array(this.fieldRecord(orderDirection)), // [{ name: 'desc'}, { title: 'asc' }]\n ])\n .describe('Sort the result');\n }\n\n /**\n * Schema-aware filters validation that restricts to actual model fields\n */\n protected get schemaAwareFilters() {\n return z.record(this.scalarFieldsEnum, z.any()).describe('Filters to apply to the query');\n }\n\n get locale() {\n return z.string().describe('Select a locale');\n }\n\n get status() {\n return z\n .enum(['draft', 'published'])\n .describe('Fetch documents based on their status. Default to \"published\" if not specified.');\n }\n\n get data() {\n const isWritableAttribute = ([attributeName]: [string, Schema.Attribute.AnyAttribute]) => {\n return contentTypes.isWritableAttribute(this._schema, attributeName);\n };\n\n const entries = Object.entries({ ...this._scalarFields, ...this._populatableFields });\n\n const sanitizedAttributes = entries\n // Remove non-writable attributes\n .filter(isWritableAttribute);\n\n return createAttributesInputSchema(sanitizedAttributes);\n }\n\n get query() {\n return z.string();\n }\n\n get body() {\n return z.object({ data: this.data });\n }\n\n get partialBody() {\n return z.object({ data: this.data.partial() });\n }\n\n /**\n * Creates validation schemas for query parameters\n *\n * @param params - Array of query parameters to validate ('fields', 'populate', 'sort', ...)\n * @returns Object containing validation schemas for requested parameters\n *\n * @example\n * ```ts\n * const validator = new CoreContentTypeRouteValidator(strapi, uid);\n * const querySchemas = validator.queryParams(['fields', 'populate']);\n * ```\n */\n queryParams(params: QueryParam[]): Partial<Record<QueryParam, z.Schema>> {\n const map: Record<QueryParam, () => z.Schema> = {\n fields: () => this.schemaAwareQueryFields.optional(),\n populate: () => this.schemaAwareQueryPopulate.optional(),\n sort: () => this.schemaAwareQuerySort.optional(),\n filters: () => this.schemaAwareFilters.optional(),\n locale: () => this.locale.optional(),\n pagination: () => this.pagination.optional(),\n status: () => this.status.optional(),\n _q: () => this.query.optional(),\n } as const;\n\n return params.reduce(\n (acc, param) => ({ ...acc, [param]: map[param]() }),\n {} as Partial<Record<QueryParam, z.Schema>>\n );\n }\n}\n"],"names":["CoreContentTypeRouteValidator","AbstractCoreRouteValidator","documentID","z","uuid","describe","document","entries","Object","_scalarFields","_populatableFields","sanitizedAttributes","filter","attribute","includes","type","attributesSchema","createAttributesSchema","object","documentId","id","union","string","number","extend","shape","documents","array","schemaAwareQueryFields","scalarFieldsArray","readonly","schemaAwareQueryPopulate","wildcardPopulate","literal","singleFieldPopulate","populatableFieldsEnum","multiPopulate","populatableFieldsArray","schemaAwareQuerySort","orderDirection","enum","scalarFieldsEnum","fieldRecord","schemaAwareFilters","record","any","locale","status","data","isWritableAttribute","attributeName","contentTypes","_schema","createAttributesInputSchema","query","body","partialBody","partial","queryParams","params","map","fields","optional","populate","sort","filters","pagination","_q","reduce","acc","param"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"mappers.d.ts","sourceRoot":"","sources":["../../../../src/core-api/routes/validation/mappers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAK5B;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,sBAAsB,eACrB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,SAAS,CAAC,YAAY,CAAC,EAAE,mCASvE,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,2BAA2B,eAC1B,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,SAAS,CAAC,YAAY,CAAC,EAAE,mCASvE,CAAC;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,oBAAoB,cAAe,OAAO,SAAS,CAAC,YAAY,KAAG,EAAE,UAiDjF,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,eAAO,MAAM,yBAAyB,cACzB,OAAO,SAAS,CAAC,YAAY,KACvC,EAAE,UAiDJ,CAAC"}
1
+ {"version":3,"file":"mappers.d.ts","sourceRoot":"","sources":["../../../../src/core-api/routes/validation/mappers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAgB5B;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,sBAAsB,eACrB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,SAAS,CAAC,YAAY,CAAC,EAAE,mCASvE,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,2BAA2B,eAC1B,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,SAAS,CAAC,YAAY,CAAC,EAAE,mCASvE,CAAC;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,oBAAoB,cAAe,OAAO,SAAS,CAAC,YAAY,KAAG,EAAE,UAiEjF,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,eAAO,MAAM,yBAAyB,cACzB,OAAO,SAAS,CAAC,YAAY,KACvC,EAAE,UAiEJ,CAAC"}
@@ -22,6 +22,9 @@ function _interopNamespaceDefault(e) {
22
22
 
23
23
  var z__namespace = /*#__PURE__*/_interopNamespaceDefault(z);
24
24
 
25
+ const isCustomFieldAttribute = (attribute)=>{
26
+ return !!attribute && typeof attribute === 'object' && attribute.type === 'customField' && typeof attribute.customField === 'string';
27
+ };
25
28
  /**
26
29
  * Creates a Zod schema for a collection of Strapi attributes.
27
30
  *
@@ -136,6 +139,22 @@ var z__namespace = /*#__PURE__*/_interopNamespaceDefault(z);
136
139
  return attributes.uidToSchema(attribute);
137
140
  default:
138
141
  {
142
+ if (isCustomFieldAttribute(attribute)) {
143
+ const attrCF = attribute;
144
+ const strapiInstance = global.strapi;
145
+ if (!strapiInstance) {
146
+ throw new Error('Strapi instance not available for custom field conversion');
147
+ }
148
+ const customField = strapiInstance.get('custom-fields').get(attrCF.customField);
149
+ if (!customField) {
150
+ throw new Error(`Custom field '${attrCF.customField}' not found`);
151
+ }
152
+ // Re-dispatch with the resolved underlying Strapi kind
153
+ return mapAttributeToSchema({
154
+ ...attrCF,
155
+ type: customField.type
156
+ });
157
+ }
139
158
  const { type } = attribute;
140
159
  throw new Error(`Unsupported attribute type: ${type}`);
141
160
  }
@@ -225,6 +244,22 @@ var z__namespace = /*#__PURE__*/_interopNamespaceDefault(z);
225
244
  return attributes.uidToInputSchema(attribute);
226
245
  default:
227
246
  {
247
+ if (isCustomFieldAttribute(attribute)) {
248
+ const attrCF = attribute;
249
+ const strapiInstance = global.strapi;
250
+ if (!strapiInstance) {
251
+ throw new Error('Strapi instance not available for custom field conversion');
252
+ }
253
+ const customField = strapiInstance.get('custom-fields').get(attrCF.customField);
254
+ if (!customField) {
255
+ throw new Error(`Custom field '${attrCF.customField}' not found`);
256
+ }
257
+ // Re-dispatch with the resolved underlying Strapi kind
258
+ return mapAttributeToInputSchema({
259
+ ...attrCF,
260
+ type: customField.type
261
+ });
262
+ }
228
263
  const { type } = attribute;
229
264
  throw new Error(`Unsupported attribute type: ${type}`);
230
265
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mappers.js","sources":["../../../../src/core-api/routes/validation/mappers.ts"],"sourcesContent":["/**\n * @fileoverview\n * This file contains functions responsible for mapping Strapi attribute definitions to Zod schemas.\n */\n\nimport type { Schema } from '@strapi/types';\nimport * as z from 'zod/v4';\n\n// eslint-disable-next-line import/no-cycle\nimport * as attributes from './attributes';\n\n/**\n * Creates a Zod schema for a collection of Strapi attributes.\n *\n * @param attributes - An array of tuples, where each tuple contains the attribute name and its schema definition.\n * @returns A Zod object schema representing the combined attributes.\n *\n * @example\n * ```typescript\n * const myAttributes = [\n * ['title', { type: 'string', required: true }],\n * ['description', { type: 'text' }],\n * ];\n * const schema = createAttributesSchema(myAttributes);\n * // schema will be a Zod object with 'title' and 'description' fields,\n * // each mapped to their respective Zod schemas based on their Strapi attribute types.\n * ```\n */\nexport const createAttributesSchema = (\n attributes: [name: string, attribute: Schema.Attribute.AnyAttribute][]\n) => {\n return attributes.reduce((acc, [name, attribute]) => {\n return acc.extend({\n get [name]() {\n return mapAttributeToSchema(attribute);\n },\n });\n }, z.object({}));\n};\n\n/**\n * Creates a Zod input schema for a collection of Strapi attributes.\n * This is typically used for validating incoming data (e.g., from API requests).\n *\n * @param attributes - An array of tuples, where each tuple contains the attribute name and its schema definition.\n * @returns A Zod object schema representing the combined input attributes.\n *\n * @example\n * ```typescript\n * const myInputAttributes = [\n * ['email', { type: 'email', required: true }],\n * ['description', { type: 'text', minLength: 8 }],\n * ];\n * const inputSchema = createAttributesInputSchema(myInputAttributes);\n * // inputSchema will be a Zod object with 'email' and 'description' fields,\n * // mapped to Zod schemas suitable for input validation.\n * ```\n */\nexport const createAttributesInputSchema = (\n attributes: [name: string, attribute: Schema.Attribute.AnyAttribute][]\n) => {\n return attributes.reduce((acc, [name, attribute]) => {\n return acc.extend({\n get [name]() {\n return mapAttributeToInputSchema(attribute);\n },\n });\n }, z.object({}));\n};\n\n/**\n * Maps a Strapi attribute definition to a corresponding Zod validation schema.\n *\n * This function handles every Strapi attribute types and converts them into\n * appropriate Zod validation schemas.\n *\n * @param attribute - The Strapi attribute configuration object.\n * @returns A Zod schema that corresponds to the input attribute's type.\n * @throws {Error} Throws an error if an unsupported attribute type is provided.\n *\n * @example\n * ```typescript\n * const stringAttribute = { type: 'string', minLength: 3 };\n * const stringSchema = mapAttributeToSchema(stringAttribute); // Returns a Zod string schema with minLength.\n *\n * const booleanAttribute = { type: 'boolean', default: false };\n * const booleanSchema = mapAttributeToSchema(booleanAttribute); // Returns a Zod boolean schema with a default.\n * ```\n */\nexport const mapAttributeToSchema = (attribute: Schema.Attribute.AnyAttribute): z.ZodTypeAny => {\n switch (attribute.type) {\n case 'biginteger':\n return attributes.bigIntegerToSchema(attribute);\n case 'blocks':\n return attributes.blocksToSchema();\n case 'boolean':\n return attributes.booleanToSchema(attribute);\n case 'component':\n return attributes.componentToSchema(attribute);\n case 'date':\n return attributes.dateToSchema(attribute);\n case 'datetime':\n return attributes.datetimeToSchema(attribute);\n case 'decimal':\n return attributes.decimalToSchema(attribute);\n case 'dynamiczone':\n return attributes.dynamicZoneToSchema(attribute);\n case 'email':\n return attributes.emailToSchema(attribute);\n case 'enumeration':\n return attributes.enumToSchema(attribute);\n case 'float':\n return attributes.floatToSchema(attribute);\n case 'integer':\n return attributes.integerToSchema(attribute);\n case 'json':\n return attributes.jsonToSchema(attribute);\n case 'media':\n return attributes.mediaToSchema(attribute);\n case 'relation':\n return attributes.relationToSchema(attribute);\n case 'password':\n case 'text':\n case 'richtext':\n case 'string':\n return attributes.stringToSchema(attribute);\n case 'time':\n return attributes.timeToSchema(attribute);\n case 'timestamp':\n return attributes.timestampToSchema(attribute);\n case 'uid':\n return attributes.uidToSchema(attribute);\n default: {\n const { type } = attribute as Schema.Attribute.AnyAttribute;\n\n throw new Error(`Unsupported attribute type: ${type}`);\n }\n }\n};\n\n/**\n * Maps a Strapi attribute definition to a corresponding Zod input validation schema.\n *\n * This function handles every Strapi attribute types and converts them into\n * appropriate Zod validation schemas with their respective constraints.\n *\n * @param attribute - The Strapi attribute configuration object. Contains type information\n * and validation rules for the attribute.\n *\n * @returns A Zod schema that corresponds to the input attribute's type and validation rules\n *\n * @example\n * ```typescript\n * // String attribute with constraints\n * const stringAttribute = {\n * type: 'string',\n * minLength: 3,\n * maxLength: 50,\n * required: true\n * };\n * const stringSchema = mapAttributeToInputSchema(stringAttribute);\n *\n * // Enumeration attribute\n * const enumAttribute = {\n * type: 'enumeration',\n * enum: ['draft', 'published', 'archived']\n * };\n * const enumSchema = mapAttributeToInputSchema(enumAttribute);\n *\n * // Media attribute with multiple files\n * const mediaAttribute = {\n * type: 'media',\n * multiple: true\n * };\n * const mediaSchema = mapAttributeToInputSchema(mediaAttribute);\n * ```\n *\n * @throws {Error} Throws an error if an unsupported attribute type is provided\n *\n */\nexport const mapAttributeToInputSchema = (\n attribute: Schema.Attribute.AnyAttribute\n): z.ZodTypeAny => {\n switch (attribute.type) {\n case 'biginteger':\n return attributes.bigIntegerToInputSchema(attribute);\n case 'blocks':\n return attributes.blocksToInputSchema();\n case 'boolean':\n return attributes.booleanToInputSchema(attribute);\n case 'component':\n return attributes.componentToInputSchema(attribute);\n case 'date':\n return attributes.dateToInputSchema(attribute);\n case 'datetime':\n return attributes.datetimeToInputSchema(attribute);\n case 'decimal':\n return attributes.decimalToInputSchema(attribute);\n case 'dynamiczone':\n return attributes.dynamicZoneToInputSchema(attribute);\n case 'email':\n return attributes.emailToInputSchema(attribute);\n case 'enumeration':\n return attributes.enumerationToInputSchema(attribute);\n case 'float':\n return attributes.floatToInputSchema(attribute);\n case 'integer':\n return attributes.integerToInputSchema(attribute);\n case 'json':\n return attributes.jsonToInputSchema(attribute);\n case 'media':\n return attributes.mediaToInputSchema(attribute);\n case 'relation':\n return attributes.relationToInputSchema(attribute);\n case 'password':\n case 'text':\n case 'richtext':\n case 'string':\n return attributes.textToInputSchema(attribute);\n case 'time':\n return attributes.timeToInputSchema(attribute);\n case 'timestamp':\n return attributes.timestampToInputSchema(attribute);\n case 'uid':\n return attributes.uidToInputSchema(attribute);\n default: {\n const { type } = attribute as Schema.Attribute.AnyAttribute;\n\n throw new Error(`Unsupported attribute type: ${type}`);\n }\n }\n};\n"],"names":["createAttributesSchema","attributes","reduce","acc","name","attribute","extend","mapAttributeToSchema","z","object","createAttributesInputSchema","mapAttributeToInputSchema","type","Error"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAWA;;;;;;;;;;;;;;;;IAiBaA,MAAAA,sBAAAA,GAAyB,CACpCC,UAAAA,GAAAA;AAEA,IAAA,OAAOA,WAAWC,MAAM,CAAC,CAACC,GAAK,EAAA,CAACC,MAAMC,SAAU,CAAA,GAAA;QAC9C,OAAOF,GAAAA,CAAIG,MAAM,CAAC;YAChB,KAAKF,MAAQ,GAAA;AACX,gBAAA,OAAOG,oBAAqBF,CAAAA,SAAAA,CAAAA;AAC9B;AACF,SAAA,CAAA;KACCG,EAAAA,YAAAA,CAAEC,MAAM,CAAC,EAAC,CAAA,CAAA;AACf;AAEA;;;;;;;;;;;;;;;;;IAkBaC,MAAAA,2BAAAA,GAA8B,CACzCT,UAAAA,GAAAA;AAEA,IAAA,OAAOA,WAAWC,MAAM,CAAC,CAACC,GAAK,EAAA,CAACC,MAAMC,SAAU,CAAA,GAAA;QAC9C,OAAOF,GAAAA,CAAIG,MAAM,CAAC;YAChB,KAAKF,MAAQ,GAAA;AACX,gBAAA,OAAOO,yBAA0BN,CAAAA,SAAAA,CAAAA;AACnC;AACF,SAAA,CAAA;KACCG,EAAAA,YAAAA,CAAEC,MAAM,CAAC,EAAC,CAAA,CAAA;AACf;AAEA;;;;;;;;;;;;;;;;;;IAmBaF,MAAAA,oBAAAA,GAAuB,CAACF,SAAAA,GAAAA;AACnC,IAAA,OAAQA,UAAUO,IAAI;QACpB,KAAK,YAAA;YACH,OAAOX,6BAA6B,CAACI,SAAAA,CAAAA;QACvC,KAAK,QAAA;AACH,YAAA,OAAOJ,yBAAyB,EAAA;QAClC,KAAK,SAAA;YACH,OAAOA,0BAA0B,CAACI,SAAAA,CAAAA;QACpC,KAAK,WAAA;YACH,OAAOJ,4BAA4B,CAACI,SAAAA,CAAAA;QACtC,KAAK,MAAA;YACH,OAAOJ,uBAAuB,CAACI,SAAAA,CAAAA;QACjC,KAAK,UAAA;YACH,OAAOJ,2BAA2B,CAACI,SAAAA,CAAAA;QACrC,KAAK,SAAA;YACH,OAAOJ,0BAA0B,CAACI,SAAAA,CAAAA;QACpC,KAAK,aAAA;YACH,OAAOJ,8BAA8B,CAACI,SAAAA,CAAAA;QACxC,KAAK,OAAA;YACH,OAAOJ,wBAAwB,CAACI,SAAAA,CAAAA;QAClC,KAAK,aAAA;YACH,OAAOJ,uBAAuB,CAACI,SAAAA,CAAAA;QACjC,KAAK,OAAA;YACH,OAAOJ,wBAAwB,CAACI,SAAAA,CAAAA;QAClC,KAAK,SAAA;YACH,OAAOJ,0BAA0B,CAACI,SAAAA,CAAAA;QACpC,KAAK,MAAA;YACH,OAAOJ,uBAAuB,CAACI,SAAAA,CAAAA;QACjC,KAAK,OAAA;YACH,OAAOJ,wBAAwB,CAACI,SAAAA,CAAAA;QAClC,KAAK,UAAA;YACH,OAAOJ,2BAA2B,CAACI,SAAAA,CAAAA;QACrC,KAAK,UAAA;QACL,KAAK,MAAA;QACL,KAAK,UAAA;QACL,KAAK,QAAA;YACH,OAAOJ,yBAAyB,CAACI,SAAAA,CAAAA;QACnC,KAAK,MAAA;YACH,OAAOJ,uBAAuB,CAACI,SAAAA,CAAAA;QACjC,KAAK,WAAA;YACH,OAAOJ,4BAA4B,CAACI,SAAAA,CAAAA;QACtC,KAAK,KAAA;YACH,OAAOJ,sBAAsB,CAACI,SAAAA,CAAAA;AAChC,QAAA;AAAS,YAAA;gBACP,MAAM,EAAEO,IAAI,EAAE,GAAGP,SAAAA;AAEjB,gBAAA,MAAM,IAAIQ,KAAM,CAAA,CAAC,4BAA4B,EAAED,KAAK,CAAC,CAAA;AACvD;AACF;AACF;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAwCaD,MAAAA,yBAAAA,GAA4B,CACvCN,SAAAA,GAAAA;AAEA,IAAA,OAAQA,UAAUO,IAAI;QACpB,KAAK,YAAA;YACH,OAAOX,kCAAkC,CAACI,SAAAA,CAAAA;QAC5C,KAAK,QAAA;AACH,YAAA,OAAOJ,8BAA8B,EAAA;QACvC,KAAK,SAAA;YACH,OAAOA,+BAA+B,CAACI,SAAAA,CAAAA;QACzC,KAAK,WAAA;YACH,OAAOJ,iCAAiC,CAACI,SAAAA,CAAAA;QAC3C,KAAK,MAAA;YACH,OAAOJ,4BAA4B,CAACI,SAAAA,CAAAA;QACtC,KAAK,UAAA;YACH,OAAOJ,gCAAgC,CAACI,SAAAA,CAAAA;QAC1C,KAAK,SAAA;YACH,OAAOJ,+BAA+B,CAACI,SAAAA,CAAAA;QACzC,KAAK,aAAA;YACH,OAAOJ,mCAAmC,CAACI,SAAAA,CAAAA;QAC7C,KAAK,OAAA;YACH,OAAOJ,6BAA6B,CAACI,SAAAA,CAAAA;QACvC,KAAK,aAAA;YACH,OAAOJ,mCAAmC,CAACI,SAAAA,CAAAA;QAC7C,KAAK,OAAA;YACH,OAAOJ,6BAA6B,CAACI,SAAAA,CAAAA;QACvC,KAAK,SAAA;YACH,OAAOJ,+BAA+B,CAACI,SAAAA,CAAAA;QACzC,KAAK,MAAA;YACH,OAAOJ,4BAA4B,CAACI,SAAAA,CAAAA;QACtC,KAAK,OAAA;YACH,OAAOJ,6BAA6B,CAACI,SAAAA,CAAAA;QACvC,KAAK,UAAA;YACH,OAAOJ,gCAAgC,CAACI,SAAAA,CAAAA;QAC1C,KAAK,UAAA;QACL,KAAK,MAAA;QACL,KAAK,UAAA;QACL,KAAK,QAAA;YACH,OAAOJ,4BAA4B,CAACI,SAAAA,CAAAA;QACtC,KAAK,MAAA;YACH,OAAOJ,4BAA4B,CAACI,SAAAA,CAAAA;QACtC,KAAK,WAAA;YACH,OAAOJ,iCAAiC,CAACI,SAAAA,CAAAA;QAC3C,KAAK,KAAA;YACH,OAAOJ,2BAA2B,CAACI,SAAAA,CAAAA;AACrC,QAAA;AAAS,YAAA;gBACP,MAAM,EAAEO,IAAI,EAAE,GAAGP,SAAAA;AAEjB,gBAAA,MAAM,IAAIQ,KAAM,CAAA,CAAC,4BAA4B,EAAED,KAAK,CAAC,CAAA;AACvD;AACF;AACF;;;;;;;"}
1
+ {"version":3,"file":"mappers.js","sources":["../../../../src/core-api/routes/validation/mappers.ts"],"sourcesContent":["/**\n * @fileoverview\n * This file contains functions responsible for mapping Strapi attribute definitions to Zod schemas.\n */\n\nimport type { Schema } from '@strapi/types';\nimport * as z from 'zod/v4';\n\n// eslint-disable-next-line import/no-cycle\nimport * as attributes from './attributes';\n\nconst isCustomFieldAttribute = (\n attribute: unknown\n): attribute is { type: 'customField'; customField: string } => {\n return (\n !!attribute &&\n typeof attribute === 'object' &&\n (attribute as any).type === 'customField' &&\n typeof (attribute as any).customField === 'string'\n );\n};\n\n/**\n * Creates a Zod schema for a collection of Strapi attributes.\n *\n * @param attributes - An array of tuples, where each tuple contains the attribute name and its schema definition.\n * @returns A Zod object schema representing the combined attributes.\n *\n * @example\n * ```typescript\n * const myAttributes = [\n * ['title', { type: 'string', required: true }],\n * ['description', { type: 'text' }],\n * ];\n * const schema = createAttributesSchema(myAttributes);\n * // schema will be a Zod object with 'title' and 'description' fields,\n * // each mapped to their respective Zod schemas based on their Strapi attribute types.\n * ```\n */\nexport const createAttributesSchema = (\n attributes: [name: string, attribute: Schema.Attribute.AnyAttribute][]\n) => {\n return attributes.reduce((acc, [name, attribute]) => {\n return acc.extend({\n get [name]() {\n return mapAttributeToSchema(attribute);\n },\n });\n }, z.object({}));\n};\n\n/**\n * Creates a Zod input schema for a collection of Strapi attributes.\n * This is typically used for validating incoming data (e.g., from API requests).\n *\n * @param attributes - An array of tuples, where each tuple contains the attribute name and its schema definition.\n * @returns A Zod object schema representing the combined input attributes.\n *\n * @example\n * ```typescript\n * const myInputAttributes = [\n * ['email', { type: 'email', required: true }],\n * ['description', { type: 'text', minLength: 8 }],\n * ];\n * const inputSchema = createAttributesInputSchema(myInputAttributes);\n * // inputSchema will be a Zod object with 'email' and 'description' fields,\n * // mapped to Zod schemas suitable for input validation.\n * ```\n */\nexport const createAttributesInputSchema = (\n attributes: [name: string, attribute: Schema.Attribute.AnyAttribute][]\n) => {\n return attributes.reduce((acc, [name, attribute]) => {\n return acc.extend({\n get [name]() {\n return mapAttributeToInputSchema(attribute);\n },\n });\n }, z.object({}));\n};\n\n/**\n * Maps a Strapi attribute definition to a corresponding Zod validation schema.\n *\n * This function handles every Strapi attribute types and converts them into\n * appropriate Zod validation schemas.\n *\n * @param attribute - The Strapi attribute configuration object.\n * @returns A Zod schema that corresponds to the input attribute's type.\n * @throws {Error} Throws an error if an unsupported attribute type is provided.\n *\n * @example\n * ```typescript\n * const stringAttribute = { type: 'string', minLength: 3 };\n * const stringSchema = mapAttributeToSchema(stringAttribute); // Returns a Zod string schema with minLength.\n *\n * const booleanAttribute = { type: 'boolean', default: false };\n * const booleanSchema = mapAttributeToSchema(booleanAttribute); // Returns a Zod boolean schema with a default.\n * ```\n */\nexport const mapAttributeToSchema = (attribute: Schema.Attribute.AnyAttribute): z.ZodTypeAny => {\n switch (attribute.type) {\n case 'biginteger':\n return attributes.bigIntegerToSchema(attribute);\n case 'blocks':\n return attributes.blocksToSchema();\n case 'boolean':\n return attributes.booleanToSchema(attribute);\n case 'component':\n return attributes.componentToSchema(attribute);\n case 'date':\n return attributes.dateToSchema(attribute);\n case 'datetime':\n return attributes.datetimeToSchema(attribute);\n case 'decimal':\n return attributes.decimalToSchema(attribute);\n case 'dynamiczone':\n return attributes.dynamicZoneToSchema(attribute);\n case 'email':\n return attributes.emailToSchema(attribute);\n case 'enumeration':\n return attributes.enumToSchema(attribute);\n case 'float':\n return attributes.floatToSchema(attribute);\n case 'integer':\n return attributes.integerToSchema(attribute);\n case 'json':\n return attributes.jsonToSchema(attribute);\n case 'media':\n return attributes.mediaToSchema(attribute);\n case 'relation':\n return attributes.relationToSchema(attribute);\n case 'password':\n case 'text':\n case 'richtext':\n case 'string':\n return attributes.stringToSchema(attribute);\n case 'time':\n return attributes.timeToSchema(attribute);\n case 'timestamp':\n return attributes.timestampToSchema(attribute);\n case 'uid':\n return attributes.uidToSchema(attribute);\n default: {\n if (isCustomFieldAttribute(attribute)) {\n const attrCF = attribute as { type: 'customField'; customField: string };\n const strapiInstance = global.strapi;\n if (!strapiInstance) {\n throw new Error('Strapi instance not available for custom field conversion');\n }\n\n const customField = strapiInstance.get('custom-fields').get(attrCF.customField);\n if (!customField) {\n throw new Error(`Custom field '${attrCF.customField}' not found`);\n }\n\n // Re-dispatch with the resolved underlying Strapi kind\n return mapAttributeToSchema({ ...attrCF, type: customField.type });\n }\n\n const { type } = attribute as Schema.Attribute.AnyAttribute;\n\n throw new Error(`Unsupported attribute type: ${type}`);\n }\n }\n};\n\n/**\n * Maps a Strapi attribute definition to a corresponding Zod input validation schema.\n *\n * This function handles every Strapi attribute types and converts them into\n * appropriate Zod validation schemas with their respective constraints.\n *\n * @param attribute - The Strapi attribute configuration object. Contains type information\n * and validation rules for the attribute.\n *\n * @returns A Zod schema that corresponds to the input attribute's type and validation rules\n *\n * @example\n * ```typescript\n * // String attribute with constraints\n * const stringAttribute = {\n * type: 'string',\n * minLength: 3,\n * maxLength: 50,\n * required: true\n * };\n * const stringSchema = mapAttributeToInputSchema(stringAttribute);\n *\n * // Enumeration attribute\n * const enumAttribute = {\n * type: 'enumeration',\n * enum: ['draft', 'published', 'archived']\n * };\n * const enumSchema = mapAttributeToInputSchema(enumAttribute);\n *\n * // Media attribute with multiple files\n * const mediaAttribute = {\n * type: 'media',\n * multiple: true\n * };\n * const mediaSchema = mapAttributeToInputSchema(mediaAttribute);\n * ```\n *\n * @throws {Error} Throws an error if an unsupported attribute type is provided\n *\n */\nexport const mapAttributeToInputSchema = (\n attribute: Schema.Attribute.AnyAttribute\n): z.ZodTypeAny => {\n switch (attribute.type) {\n case 'biginteger':\n return attributes.bigIntegerToInputSchema(attribute);\n case 'blocks':\n return attributes.blocksToInputSchema();\n case 'boolean':\n return attributes.booleanToInputSchema(attribute);\n case 'component':\n return attributes.componentToInputSchema(attribute);\n case 'date':\n return attributes.dateToInputSchema(attribute);\n case 'datetime':\n return attributes.datetimeToInputSchema(attribute);\n case 'decimal':\n return attributes.decimalToInputSchema(attribute);\n case 'dynamiczone':\n return attributes.dynamicZoneToInputSchema(attribute);\n case 'email':\n return attributes.emailToInputSchema(attribute);\n case 'enumeration':\n return attributes.enumerationToInputSchema(attribute);\n case 'float':\n return attributes.floatToInputSchema(attribute);\n case 'integer':\n return attributes.integerToInputSchema(attribute);\n case 'json':\n return attributes.jsonToInputSchema(attribute);\n case 'media':\n return attributes.mediaToInputSchema(attribute);\n case 'relation':\n return attributes.relationToInputSchema(attribute);\n case 'password':\n case 'text':\n case 'richtext':\n case 'string':\n return attributes.textToInputSchema(attribute);\n case 'time':\n return attributes.timeToInputSchema(attribute);\n case 'timestamp':\n return attributes.timestampToInputSchema(attribute);\n case 'uid':\n return attributes.uidToInputSchema(attribute);\n default: {\n if (isCustomFieldAttribute(attribute)) {\n const attrCF = attribute as { type: 'customField'; customField: string };\n const strapiInstance = global.strapi;\n if (!strapiInstance) {\n throw new Error('Strapi instance not available for custom field conversion');\n }\n\n const customField = strapiInstance.get('custom-fields').get(attrCF.customField);\n if (!customField) {\n throw new Error(`Custom field '${attrCF.customField}' not found`);\n }\n\n // Re-dispatch with the resolved underlying Strapi kind\n return mapAttributeToInputSchema({ ...attrCF, type: customField.type });\n }\n\n const { type } = attribute as Schema.Attribute.AnyAttribute;\n\n throw new Error(`Unsupported attribute type: ${type}`);\n }\n }\n};\n"],"names":["isCustomFieldAttribute","attribute","type","customField","createAttributesSchema","attributes","reduce","acc","name","extend","mapAttributeToSchema","z","object","createAttributesInputSchema","mapAttributeToInputSchema","attrCF","strapiInstance","global","strapi","Error","get"],"mappings":"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"}
@@ -1,6 +1,9 @@
1
1
  import * as z from 'zod/v4';
2
2
  import { uidToSchema, timestampToSchema, timeToSchema, stringToSchema, relationToSchema, mediaToSchema, jsonToSchema, integerToSchema, floatToSchema, enumToSchema, emailToSchema, dynamicZoneToSchema, decimalToSchema, datetimeToSchema, dateToSchema, componentToSchema, booleanToSchema, blocksToSchema, bigIntegerToSchema, uidToInputSchema, timestampToInputSchema, timeToInputSchema, textToInputSchema, relationToInputSchema, mediaToInputSchema, jsonToInputSchema, integerToInputSchema, floatToInputSchema, enumerationToInputSchema, emailToInputSchema, dynamicZoneToInputSchema, decimalToInputSchema, datetimeToInputSchema, dateToInputSchema, componentToInputSchema, booleanToInputSchema, blocksToInputSchema, bigIntegerToInputSchema } from './attributes.mjs';
3
3
 
4
+ const isCustomFieldAttribute = (attribute)=>{
5
+ return !!attribute && typeof attribute === 'object' && attribute.type === 'customField' && typeof attribute.customField === 'string';
6
+ };
4
7
  /**
5
8
  * Creates a Zod schema for a collection of Strapi attributes.
6
9
  *
@@ -115,6 +118,22 @@ import { uidToSchema, timestampToSchema, timeToSchema, stringToSchema, relationT
115
118
  return uidToSchema(attribute);
116
119
  default:
117
120
  {
121
+ if (isCustomFieldAttribute(attribute)) {
122
+ const attrCF = attribute;
123
+ const strapiInstance = global.strapi;
124
+ if (!strapiInstance) {
125
+ throw new Error('Strapi instance not available for custom field conversion');
126
+ }
127
+ const customField = strapiInstance.get('custom-fields').get(attrCF.customField);
128
+ if (!customField) {
129
+ throw new Error(`Custom field '${attrCF.customField}' not found`);
130
+ }
131
+ // Re-dispatch with the resolved underlying Strapi kind
132
+ return mapAttributeToSchema({
133
+ ...attrCF,
134
+ type: customField.type
135
+ });
136
+ }
118
137
  const { type } = attribute;
119
138
  throw new Error(`Unsupported attribute type: ${type}`);
120
139
  }
@@ -204,6 +223,22 @@ import { uidToSchema, timestampToSchema, timeToSchema, stringToSchema, relationT
204
223
  return uidToInputSchema(attribute);
205
224
  default:
206
225
  {
226
+ if (isCustomFieldAttribute(attribute)) {
227
+ const attrCF = attribute;
228
+ const strapiInstance = global.strapi;
229
+ if (!strapiInstance) {
230
+ throw new Error('Strapi instance not available for custom field conversion');
231
+ }
232
+ const customField = strapiInstance.get('custom-fields').get(attrCF.customField);
233
+ if (!customField) {
234
+ throw new Error(`Custom field '${attrCF.customField}' not found`);
235
+ }
236
+ // Re-dispatch with the resolved underlying Strapi kind
237
+ return mapAttributeToInputSchema({
238
+ ...attrCF,
239
+ type: customField.type
240
+ });
241
+ }
207
242
  const { type } = attribute;
208
243
  throw new Error(`Unsupported attribute type: ${type}`);
209
244
  }