@strapi/core 0.0.0-experimental.1e4c115f717b021ca11c139584d4519db28ba786 → 0.0.0-experimental.1f56e9319665c8cc385eb5e4178ceb6741c6d490
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.
Potentially problematic release.
This version of @strapi/core might be problematic. Click here for more details.
- package/dist/Strapi.d.ts +1 -0
- package/dist/Strapi.d.ts.map +1 -1
- package/dist/Strapi.js +23 -2
- package/dist/Strapi.js.map +1 -1
- package/dist/Strapi.mjs +23 -2
- package/dist/Strapi.mjs.map +1 -1
- package/dist/constants.d.ts +3 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +6 -0
- package/dist/constants.js.map +1 -0
- package/dist/constants.mjs +4 -0
- package/dist/constants.mjs.map +1 -0
- package/dist/core-api/controller/index.d.ts.map +1 -1
- package/dist/core-api/controller/index.js +2 -1
- package/dist/core-api/controller/index.js.map +1 -1
- package/dist/core-api/controller/index.mjs +2 -1
- package/dist/core-api/controller/index.mjs.map +1 -1
- package/dist/core-api/controller/transform.d.ts +3 -2
- package/dist/core-api/controller/transform.d.ts.map +1 -1
- package/dist/core-api/controller/transform.js +13 -3
- package/dist/core-api/controller/transform.js.map +1 -1
- package/dist/core-api/controller/transform.mjs +13 -3
- package/dist/core-api/controller/transform.mjs.map +1 -1
- package/dist/core-api/routes/index.d.ts.map +1 -1
- package/dist/core-api/routes/index.js +28 -9
- package/dist/core-api/routes/index.js.map +1 -1
- package/dist/core-api/routes/index.mjs +1 -1
- package/dist/core-api/routes/index.mjs.map +1 -1
- package/dist/core-api/routes/validation/attributes.d.ts +243 -90
- package/dist/core-api/routes/validation/attributes.d.ts.map +1 -1
- package/dist/core-api/routes/validation/attributes.js +541 -564
- package/dist/core-api/routes/validation/attributes.js.map +1 -1
- package/dist/core-api/routes/validation/attributes.mjs +505 -564
- package/dist/core-api/routes/validation/attributes.mjs.map +1 -1
- package/dist/core-api/routes/validation/common.d.ts +7 -5
- package/dist/core-api/routes/validation/common.d.ts.map +1 -1
- package/dist/core-api/routes/validation/common.js +29 -8
- package/dist/core-api/routes/validation/common.js.map +1 -1
- package/dist/core-api/routes/validation/common.mjs +6 -4
- package/dist/core-api/routes/validation/common.mjs.map +1 -1
- package/dist/core-api/routes/validation/component.d.ts +2 -10
- package/dist/core-api/routes/validation/component.d.ts.map +1 -1
- package/dist/core-api/routes/validation/component.js +3 -17
- package/dist/core-api/routes/validation/component.js.map +1 -1
- package/dist/core-api/routes/validation/component.mjs +3 -17
- package/dist/core-api/routes/validation/component.mjs.map +1 -1
- package/dist/core-api/routes/validation/constants.d.ts +6 -0
- package/dist/core-api/routes/validation/constants.d.ts.map +1 -1
- package/dist/core-api/routes/validation/constants.js +6 -1
- package/dist/core-api/routes/validation/constants.js.map +1 -1
- package/dist/core-api/routes/validation/constants.mjs +6 -1
- package/dist/core-api/routes/validation/constants.mjs.map +1 -1
- package/dist/core-api/routes/validation/content-type.d.ts +28 -71
- package/dist/core-api/routes/validation/content-type.d.ts.map +1 -1
- package/dist/core-api/routes/validation/content-type.js +67 -112
- package/dist/core-api/routes/validation/content-type.js.map +1 -1
- package/dist/core-api/routes/validation/content-type.mjs +36 -100
- package/dist/core-api/routes/validation/content-type.mjs.map +1 -1
- package/dist/core-api/routes/validation/index.d.ts +1 -1
- package/dist/core-api/routes/validation/index.d.ts.map +1 -1
- package/dist/core-api/routes/validation/mappers.d.ts +105 -0
- package/dist/core-api/routes/validation/mappers.d.ts.map +1 -0
- package/dist/core-api/routes/validation/mappers.js +273 -0
- package/dist/core-api/routes/validation/mappers.js.map +1 -0
- package/dist/core-api/routes/validation/mappers.mjs +249 -0
- package/dist/core-api/routes/validation/mappers.mjs.map +1 -0
- package/dist/core-api/routes/validation/utils.d.ts +47 -0
- package/dist/core-api/routes/validation/utils.d.ts.map +1 -0
- package/dist/core-api/routes/validation/utils.js +128 -0
- package/dist/core-api/routes/validation/utils.js.map +1 -0
- package/dist/core-api/routes/validation/utils.mjs +106 -0
- package/dist/core-api/routes/validation/utils.mjs.map +1 -0
- package/dist/domain/content-type/index.d.ts.map +1 -1
- package/dist/domain/content-type/index.js +17 -1
- package/dist/domain/content-type/index.js.map +1 -1
- package/dist/domain/content-type/index.mjs +17 -1
- package/dist/domain/content-type/index.mjs.map +1 -1
- package/dist/ee/index.d.ts +6 -0
- package/dist/ee/index.d.ts.map +1 -1
- package/dist/ee/index.js +29 -3
- package/dist/ee/index.js.map +1 -1
- package/dist/ee/index.mjs +30 -4
- package/dist/ee/index.mjs.map +1 -1
- package/dist/ee/license.d.ts +3 -1
- package/dist/ee/license.d.ts.map +1 -1
- package/dist/ee/license.js +6 -1
- package/dist/ee/license.js.map +1 -1
- package/dist/ee/license.mjs +6 -2
- package/dist/ee/license.mjs.map +1 -1
- package/dist/factories.js +1 -1
- package/dist/factories.mjs +1 -1
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/dist/loaders/plugins/index.js +1 -1
- package/dist/loaders/plugins/index.js.map +1 -1
- package/dist/loaders/plugins/index.mjs +1 -1
- package/dist/loaders/plugins/index.mjs.map +1 -1
- package/dist/middlewares/cors.d.ts +9 -1
- package/dist/middlewares/cors.d.ts.map +1 -1
- package/dist/middlewares/cors.js +39 -17
- package/dist/middlewares/cors.js.map +1 -1
- package/dist/middlewares/cors.mjs +39 -18
- package/dist/middlewares/cors.mjs.map +1 -1
- package/dist/migrations/first-published-at.d.ts +4 -0
- package/dist/migrations/first-published-at.d.ts.map +1 -0
- package/dist/migrations/first-published-at.js +51 -0
- package/dist/migrations/first-published-at.js.map +1 -0
- package/dist/migrations/first-published-at.mjs +49 -0
- package/dist/migrations/first-published-at.mjs.map +1 -0
- package/dist/migrations/index.d.ts.map +1 -1
- package/dist/migrations/index.js +5 -0
- package/dist/migrations/index.js.map +1 -1
- package/dist/migrations/index.mjs +5 -0
- package/dist/migrations/index.mjs.map +1 -1
- package/dist/package.json.js +17 -13
- package/dist/package.json.js.map +1 -1
- package/dist/package.json.mjs +17 -13
- package/dist/package.json.mjs.map +1 -1
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +2 -0
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/index.mjs +2 -0
- package/dist/providers/index.mjs.map +1 -1
- package/dist/providers/session-manager.d.ts +3 -0
- package/dist/providers/session-manager.d.ts.map +1 -0
- package/dist/providers/session-manager.js +23 -0
- package/dist/providers/session-manager.js.map +1 -0
- package/dist/providers/session-manager.mjs +21 -0
- package/dist/providers/session-manager.mjs.map +1 -0
- package/dist/services/content-api/index.d.ts +1 -1
- package/dist/services/content-api/index.d.ts.map +1 -1
- package/dist/services/content-api/index.js +1 -1
- package/dist/services/content-api/index.js.map +1 -1
- package/dist/services/content-api/index.mjs +2 -2
- package/dist/services/content-api/index.mjs.map +1 -1
- package/dist/services/content-source-maps.d.ts +13 -0
- package/dist/services/content-source-maps.d.ts.map +1 -0
- package/dist/services/content-source-maps.js +108 -0
- package/dist/services/content-source-maps.js.map +1 -0
- package/dist/services/content-source-maps.mjs +106 -0
- package/dist/services/content-source-maps.mjs.map +1 -0
- package/dist/services/core-store.d.ts +2 -2
- package/dist/services/core-store.d.ts.map +1 -1
- package/dist/services/core-store.js.map +1 -1
- package/dist/services/core-store.mjs.map +1 -1
- package/dist/services/document-service/components.d.ts +31 -1
- package/dist/services/document-service/components.d.ts.map +1 -1
- package/dist/services/document-service/components.js +109 -0
- package/dist/services/document-service/components.js.map +1 -1
- package/dist/services/document-service/components.mjs +107 -1
- package/dist/services/document-service/components.mjs.map +1 -1
- package/dist/services/document-service/entries.d.ts.map +1 -1
- package/dist/services/document-service/entries.js +42 -0
- package/dist/services/document-service/entries.js.map +1 -1
- package/dist/services/document-service/entries.mjs +43 -1
- package/dist/services/document-service/entries.mjs.map +1 -1
- package/dist/services/document-service/first-published-at.d.ts +7 -0
- package/dist/services/document-service/first-published-at.d.ts.map +1 -0
- package/dist/services/document-service/first-published-at.js +31 -0
- package/dist/services/document-service/first-published-at.js.map +1 -0
- package/dist/services/document-service/first-published-at.mjs +28 -0
- package/dist/services/document-service/first-published-at.mjs.map +1 -0
- package/dist/services/document-service/internationalization.d.ts +6 -1
- package/dist/services/document-service/internationalization.d.ts.map +1 -1
- package/dist/services/document-service/internationalization.js +32 -0
- package/dist/services/document-service/internationalization.js.map +1 -1
- package/dist/services/document-service/internationalization.mjs +32 -1
- package/dist/services/document-service/internationalization.mjs.map +1 -1
- package/dist/services/document-service/repository.d.ts.map +1 -1
- package/dist/services/document-service/repository.js +16 -8
- package/dist/services/document-service/repository.js.map +1 -1
- package/dist/services/document-service/repository.mjs +18 -10
- package/dist/services/document-service/repository.mjs.map +1 -1
- package/dist/services/document-service/utils/clean-component-join-table.d.ts +7 -0
- package/dist/services/document-service/utils/clean-component-join-table.d.ts.map +1 -0
- package/dist/services/document-service/utils/unidirectional-relations.d.ts +19 -2
- package/dist/services/document-service/utils/unidirectional-relations.d.ts.map +1 -1
- package/dist/services/document-service/utils/unidirectional-relations.js +21 -6
- package/dist/services/document-service/utils/unidirectional-relations.js.map +1 -1
- package/dist/services/document-service/utils/unidirectional-relations.mjs +21 -6
- package/dist/services/document-service/utils/unidirectional-relations.mjs.map +1 -1
- package/dist/services/entity-validator/index.d.ts.map +1 -1
- package/dist/services/entity-validator/index.js +9 -0
- package/dist/services/entity-validator/index.js.map +1 -1
- package/dist/services/entity-validator/index.mjs +9 -0
- package/dist/services/entity-validator/index.mjs.map +1 -1
- package/dist/services/entity-validator/validators.d.ts +1 -0
- package/dist/services/entity-validator/validators.d.ts.map +1 -1
- package/dist/services/entity-validator/validators.js +3 -0
- package/dist/services/entity-validator/validators.js.map +1 -1
- package/dist/services/entity-validator/validators.mjs +3 -0
- package/dist/services/entity-validator/validators.mjs.map +1 -1
- package/dist/services/metrics/index.d.ts +1 -1
- package/dist/services/metrics/index.d.ts.map +1 -1
- package/dist/services/metrics/index.js +11 -9
- package/dist/services/metrics/index.js.map +1 -1
- package/dist/services/metrics/index.mjs +11 -9
- package/dist/services/metrics/index.mjs.map +1 -1
- package/dist/services/metrics/middleware.d.ts +2 -1
- package/dist/services/metrics/middleware.d.ts.map +1 -1
- package/dist/services/metrics/middleware.js +2 -2
- package/dist/services/metrics/middleware.js.map +1 -1
- package/dist/services/metrics/middleware.mjs +2 -2
- package/dist/services/metrics/middleware.mjs.map +1 -1
- package/dist/services/metrics/sender.d.ts.map +1 -1
- package/dist/services/metrics/sender.js +4 -3
- package/dist/services/metrics/sender.js.map +1 -1
- package/dist/services/metrics/sender.mjs +4 -3
- package/dist/services/metrics/sender.mjs.map +1 -1
- package/dist/services/session-manager.d.ts +167 -0
- package/dist/services/session-manager.d.ts.map +1 -0
- package/dist/services/session-manager.js +529 -0
- package/dist/services/session-manager.js.map +1 -0
- package/dist/services/session-manager.mjs +526 -0
- package/dist/services/session-manager.mjs.map +1 -0
- package/dist/services/utils/conditional-fields.d.ts +3 -0
- package/dist/services/utils/conditional-fields.d.ts.map +1 -0
- package/dist/services/utils/conditional-fields.js +22 -0
- package/dist/services/utils/conditional-fields.js.map +1 -0
- package/dist/services/utils/conditional-fields.mjs +20 -0
- package/dist/services/utils/conditional-fields.mjs.map +1 -0
- package/dist/utils/fetch.d.ts +5 -1
- package/dist/utils/fetch.d.ts.map +1 -1
- package/dist/utils/fetch.js +8 -4
- package/dist/utils/fetch.js.map +1 -1
- package/dist/utils/fetch.mjs +8 -4
- package/dist/utils/fetch.mjs.map +1 -1
- package/dist/utils/transform-content-types-to-models.d.ts +197 -0
- package/dist/utils/transform-content-types-to-models.d.ts.map +1 -1
- package/package.json +17 -13
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attributes.mjs","sources":["../../../../src/core-api/routes/validation/attributes.ts"],"sourcesContent":["import type { Schema } from '@strapi/types';\n\nimport { relations } from '@strapi/utils';\nimport { z } from 'zod';\n\nimport { BOOLEAN_LITERAL_VALUES } from './constants';\nimport { CoreComponentRouteValidator } from './component';\nimport { CoreContentTypeRouteValidator } from './content-type';\n\n/**\n * Maps a Strapi attribute definition to a corresponding Zod validation schema.\n * This function handles various 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 = mapAttributeToSchema(stringAttribute);\n *\n * // Enumeration attribute\n * const enumAttribute = {\n * type: 'enumeration',\n * enum: ['draft', 'published', 'archived']\n * };\n * const enumSchema = mapAttributeToSchema(enumAttribute);\n *\n * // Media attribute with multiple files\n * const mediaAttribute = {\n * type: 'media',\n * multiple: true\n * };\n * const mediaSchema = mapAttributeToSchema(mediaAttribute);\n * ```\n *\n * @throws {Error} Throws an error if an unsupported attribute type is provided\n *\n * @remarks\n * - Complex types (component, relation, dynamic zone) use placeholder schemas\n *\n * @todo: Move to @strapi/utils if needed for other validation\n */\nexport const mapAttributeToSchema = (attribute: Schema.Attribute.AnyAttribute): z.Schema => {\n switch (attribute.type) {\n case 'biginteger': {\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 case 'blocks': {\n // TODO: better support blocks data structure\n return z.array(z.any()).describe('A blocks field');\n }\n case 'boolean': {\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 case 'component': {\n const { _idmap } = z.globalRegistry;\n\n const set = (id: string, schema: z.ZodType) => {\n if (_idmap.has(id)) {\n _idmap.delete(id);\n }\n\n z.globalRegistry.add(schema, { id });\n };\n\n const { writable, required, min, max, component, repeatable } = attribute;\n\n const existsInGlobalRegistry = _idmap.has(component);\n\n let componentSchema: z.ZodType;\n\n if (existsInGlobalRegistry) {\n componentSchema = _idmap.get(component) as z.ZodType;\n } else {\n set(component, z.any());\n\n const validator = new CoreComponentRouteValidator(strapi, component);\n const schema = validator.entry;\n\n set(component, schema);\n\n componentSchema = schema;\n }\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 case 'date': {\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 case 'datetime': {\n const { writable, required, default: defaultValue } = attribute;\n\n const baseSchema = z.string();\n\n const schema = augmentSchema(baseSchema, [\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n maybeReadonly(writable),\n ]);\n\n return schema.describe('A datetime field');\n }\n case 'decimal': {\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 // TODO(zodV4): use the components' reference type instead of z.any\n // TODO(zodV4): use discriminated unions to handle the different types of components\n case 'dynamiczone': {\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 case 'email': {\n const { writable, required, default: defaultValue, minLength, maxLength } = attribute;\n\n const baseSchema = z.string().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 case 'enumeration': {\n const { writable, required, default: defaultValue, enum: enumValues } = attribute;\n\n const baseSchema = z.enum(enumValues as [string]);\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 case 'float': {\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 case 'integer': {\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('A float field');\n }\n // TODO(zodV4): use reference to create fake cyclical JSON values\n // see https://zod.dev/?id=json-type for more info\n case 'json': {\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 case 'media': {\n const { writable, required, multiple } = attribute;\n\n const baseSchema = multiple ? z.array(z.any()) : z.any();\n\n const schema = augmentSchema(baseSchema, [maybeRequired(required), maybeReadonly(writable)]);\n\n return schema.describe('A media field');\n }\n // TODO(zodV4): handle polymorphic relations using discriminated unions\n case 'relation': {\n // Extract writable and required flags from the attribute\n if (!('target' in attribute)) {\n return z.any();\n }\n\n const { _idmap } = z.globalRegistry;\n\n const set = (id: string, schema: z.ZodType) => {\n if (_idmap.has(id)) {\n _idmap.delete(id);\n }\n\n z.globalRegistry.add(schema, { id });\n };\n\n const { writable, required, target } = attribute as Schema.Attribute.RelationWithTarget;\n\n const existsInGlobalRegistry = _idmap.has(target);\n\n let targetSchema: z.ZodType;\n\n if (existsInGlobalRegistry) {\n targetSchema = _idmap.get(target) as z.ZodType;\n } else {\n set(target, z.any());\n\n const validator = new CoreContentTypeRouteValidator(strapi, target);\n const schema = validator.document;\n\n set(target, schema);\n\n targetSchema = schema;\n }\n\n const baseSchema = relations.isAnyToMany(attribute) ? z.array(targetSchema) : targetSchema;\n\n // Add required and readonly constraints based on attribute flags\n const schema = augmentSchema(baseSchema, [maybeRequired(required), maybeReadonly(writable)]);\n\n return schema.describe('A relational field');\n }\n case 'password':\n case 'text':\n case 'richtext':\n case 'string': {\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 case 'time': {\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 case 'timestamp': {\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 case 'uid': {\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 default:\n throw new Error(`Unsupported attribute type: ${(attribute as any).type}`);\n }\n};\n\n/**\n * Maps a Strapi attribute definition to a corresponding Zod validation schema.\n * This function handles various 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 * @remarks\n * - Complex types (component, relation, dynamic zone) use placeholder schemas\n *\n * @todo: Move to @strapi/utils if needed for other validation\n */\nexport const mapAttributeToInputSchema = (attribute: Schema.Attribute.AnyAttribute): z.Schema => {\n switch (attribute.type) {\n case '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 case 'blocks': {\n // TODO: better support blocks data structure\n return z.array(z.any()).describe('A blocks field');\n }\n case '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 // TODO(zodV4): use the component reference type instead of z.any\n case 'component': {\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 case '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 case '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 case '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 // TODO(zodV4): use the components' reference type instead of z.any\n // TODO(zodV4): use discriminated unions to handle the different types of components\n case 'dynamiczone': {\n const { 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 ]);\n\n return schema.describe('A dynamic zone field');\n }\n case 'email': {\n const { required, default: defaultValue, minLength, maxLength } = attribute;\n\n const baseSchema = z.string().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 case 'enumeration': {\n const { required, default: defaultValue, enum: enumValues } = attribute;\n\n const baseSchema = z.enum(enumValues as [string]);\n\n const schema = augmentSchema(baseSchema, [\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe('An enum field');\n }\n case '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 case '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 // TODO(zodV4): use reference to create fake cyclical JSON values\n // see https://zod.dev/?id=json-type for more info\n case 'json': {\n const { required, default: defaultValue } = attribute;\n\n const schema = augmentSchema(z.any(), [\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe('A JSON field');\n }\n case 'media': {\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 // TODO(zodV4): use reference for relations types\n // TODO(zodV4): handle polymorphic relations using discriminated unions\n // TODO(zodv4): add the relation ordering API https://docs.strapi.io/cms/api/rest/relations\n case '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 case 'password':\n case 'text':\n case 'richtext':\n case 'string': {\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 case '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 case '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 case '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 default:\n throw new Error(`Unsupported attribute type: ${(attribute as any).type}`);\n }\n};\n\nconst maybeRequired = (required?: boolean) => {\n return <T extends z.Schema>(schema: T) => (required !== true ? schema.optional() : schema);\n};\n\nconst maybeReadonly = (writable?: boolean) => {\n return <T extends z.Schema>(schema: T) => (writable !== false ? schema : schema.readonly());\n};\n\nconst maybeWithDefault = (defaultValue?: unknown) => {\n return <T extends z.Schema>(schema: T) => {\n return defaultValue !== undefined\n ? schema.default(typeof defaultValue === 'function' ? defaultValue() : defaultValue)\n : schema;\n };\n};\n\nconst maybeWithMinMax = (min?: number, max?: number) => {\n return <R extends z.ZodString | z.ZodNumber | z.ZodArray<z.ZodAny>>(schema: R) => {\n return min !== undefined && max !== undefined ? schema.min(min).max(max) : schema;\n };\n};\n\nconst augmentSchema = <T extends z.Schema>(schema: T, modifiers: ((schema: T) => z.Schema)[]) => {\n return modifiers.reduce((acc, modifier) => modifier(acc) as T, schema);\n};\n"],"names":["mapAttributeToSchema","attribute","type","writable","required","min","max","default","defaultValue","schema","augmentSchema","z","string","undefined","maybeRequired","maybeWithDefault","maybeReadonly","describe","array","any","boolean","_idmap","globalRegistry","set","id","has","delete","add","component","repeatable","existsInGlobalRegistry","componentSchema","get","validator","CoreComponentRouteValidator","strapi","entry","baseSchema","ZodArray","number","maybeWithMinMax","minLength","maxLength","email","enum","enumValues","int","multiple","target","targetSchema","CoreContentTypeRouteValidator","document","relations","isAnyToMany","union","Error","mapAttributeToInputSchema","BOOLEAN_LITERAL_VALUES","isToMany","uuid","optional","readonly","modifiers","reduce","acc","modifier"],"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(), [\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,15 +1,17 @@
|
|
|
1
1
|
import type { Core, UID } from '@strapi/types';
|
|
2
|
-
import {
|
|
2
|
+
import { AbstractRouteValidator } from '@strapi/utils';
|
|
3
|
+
import * as z from 'zod/v4';
|
|
3
4
|
/**
|
|
4
5
|
* AbstractCoreRouteValidator provides the foundation for validating and managing core routes within a Strapi context for a specific model.
|
|
5
6
|
*
|
|
6
|
-
* This abstract class
|
|
7
|
+
* This abstract class extends the base AbstractRouteValidator from utils to add schema-aware validation
|
|
8
|
+
* logic for scalar and populatable fields defined in a model schema.
|
|
7
9
|
*
|
|
8
10
|
* It uses runtime information about Strapi models to derive and expose schema validations.
|
|
9
11
|
*
|
|
10
12
|
* @template {UID.Schema} T Representing the schema identifier to be validated.
|
|
11
13
|
*/
|
|
12
|
-
export declare abstract class AbstractCoreRouteValidator<T extends UID.Schema> {
|
|
14
|
+
export declare abstract class AbstractCoreRouteValidator<T extends UID.Schema> extends AbstractRouteValidator {
|
|
13
15
|
/**
|
|
14
16
|
* The `_strapi` variable serves as a reference to the core Strapi instance.
|
|
15
17
|
* It is used for interacting with the loaded model.
|
|
@@ -28,7 +30,7 @@ export declare abstract class AbstractCoreRouteValidator<T extends UID.Schema> {
|
|
|
28
30
|
* @param strapi The Strapi instance to be used.
|
|
29
31
|
* @param uid The unique identifier for the instance.
|
|
30
32
|
*/
|
|
31
|
-
|
|
33
|
+
constructor(strapi: Core.Strapi, uid: T);
|
|
32
34
|
/**
|
|
33
35
|
* Retrieves an enum schema constructed from the keys of the scalar fields.
|
|
34
36
|
*
|
|
@@ -98,6 +100,6 @@ export declare abstract class AbstractCoreRouteValidator<T extends UID.Schema> {
|
|
|
98
100
|
*/
|
|
99
101
|
fieldRecord(type: z.ZodTypeAny): z.ZodRecord<z.ZodEnum<{
|
|
100
102
|
[x: string]: string;
|
|
101
|
-
}>, z.ZodType<unknown, unknown
|
|
103
|
+
}>, z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>;
|
|
102
104
|
}
|
|
103
105
|
//# sourceMappingURL=common.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../src/core-api/routes/validation/common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../src/core-api/routes/validation/common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAgB,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAE5B;;;;;;;;;GASG;AACH,8BAAsB,0BAA0B,CAC9C,CAAC,SAAS,GAAG,CAAC,MAAM,CACpB,SAAQ,sBAAsB;IAC9B;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;IAExC;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAE3B;;;;;OAKG;gBACgB,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC;IAM9C;;;;OAIG;IACH,IAAW,gBAAgB;;OAE1B;IAED;;;;OAIG;IACH,IAAW,qBAAqB;;OAE/B;IAED;;;;OAIG;IACH,IAAW,iBAAiB;;QAE3B;IAED;;;;OAIG;IACH,IAAW,sBAAsB;;QAEhC;IAED;;;;;;;OAOG;IACH,SAAS,KAAK,OAAO,gLAEpB;IAED;;;;;;OAMG;IACH,SAAS,KAAK,aAAa;;MAQ1B;IAED;;;;;;OAMG;IACH,SAAS,KAAK,kBAAkB;;MAQ/B;IAED;;;;;OAKG;IACI,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,UAAU;;;CAGtC"}
|
|
@@ -1,44 +1,64 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var strapiUtils = require('@strapi/utils');
|
|
4
|
-
var
|
|
4
|
+
var z = require('zod/v4');
|
|
5
|
+
|
|
6
|
+
function _interopNamespaceDefault(e) {
|
|
7
|
+
var n = Object.create(null);
|
|
8
|
+
if (e) {
|
|
9
|
+
Object.keys(e).forEach(function (k) {
|
|
10
|
+
if (k !== 'default') {
|
|
11
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
12
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () { return e[k]; }
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
n.default = e;
|
|
20
|
+
return Object.freeze(n);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
var z__namespace = /*#__PURE__*/_interopNamespaceDefault(z);
|
|
5
24
|
|
|
6
25
|
/**
|
|
7
26
|
* AbstractCoreRouteValidator provides the foundation for validating and managing core routes within a Strapi context for a specific model.
|
|
8
27
|
*
|
|
9
|
-
* This abstract class
|
|
28
|
+
* This abstract class extends the base AbstractRouteValidator from utils to add schema-aware validation
|
|
29
|
+
* logic for scalar and populatable fields defined in a model schema.
|
|
10
30
|
*
|
|
11
31
|
* It uses runtime information about Strapi models to derive and expose schema validations.
|
|
12
32
|
*
|
|
13
33
|
* @template {UID.Schema} T Representing the schema identifier to be validated.
|
|
14
|
-
*/ class AbstractCoreRouteValidator {
|
|
34
|
+
*/ class AbstractCoreRouteValidator extends strapiUtils.AbstractRouteValidator {
|
|
15
35
|
/**
|
|
16
36
|
* Retrieves an enum schema constructed from the keys of the scalar fields.
|
|
17
37
|
*
|
|
18
38
|
* @return A Zod enum containing the keys from the scalar fields.
|
|
19
39
|
*/ get scalarFieldsEnum() {
|
|
20
|
-
return
|
|
40
|
+
return z__namespace.enum(Object.keys(this._scalarFields));
|
|
21
41
|
}
|
|
22
42
|
/**
|
|
23
43
|
* Retrieves an enum schema constructed from the keys of fields that can be populated (relations, components, files, etc.)
|
|
24
44
|
*
|
|
25
45
|
* @return A ZodEnum object containing the list of populatable field keys.
|
|
26
46
|
*/ get populatableFieldsEnum() {
|
|
27
|
-
return
|
|
47
|
+
return z__namespace.enum(Object.keys(this._populatableFields));
|
|
28
48
|
}
|
|
29
49
|
/**
|
|
30
50
|
* Retrieves an array representation of the scalar fields.
|
|
31
51
|
*
|
|
32
52
|
* @return An array containing the scalar fields as defined by {@link scalarFieldsEnum}.
|
|
33
53
|
*/ get scalarFieldsArray() {
|
|
34
|
-
return
|
|
54
|
+
return z__namespace.array(this.scalarFieldsEnum);
|
|
35
55
|
}
|
|
36
56
|
/**
|
|
37
57
|
* Retrieves an array of populatable fields.
|
|
38
58
|
*
|
|
39
59
|
* @return A Zod array schema representing the available populatable fields as defined by {@link populatableFieldsEnum}.
|
|
40
60
|
*/ get populatableFieldsArray() {
|
|
41
|
-
return
|
|
61
|
+
return z__namespace.array(this.populatableFieldsEnum);
|
|
42
62
|
}
|
|
43
63
|
/**
|
|
44
64
|
* Retrieves the schema associated with the current model.
|
|
@@ -78,7 +98,7 @@ var zod = require('zod');
|
|
|
78
98
|
* @param type - The Zod type to use for the record's values.
|
|
79
99
|
* @return A Zod record schema with scalar fields as keys and the specified type as values.
|
|
80
100
|
*/ fieldRecord(type) {
|
|
81
|
-
return
|
|
101
|
+
return z__namespace.record(this.scalarFieldsEnum, type);
|
|
82
102
|
}
|
|
83
103
|
/**
|
|
84
104
|
* Protected constructor for initializing the class with the provided Strapi instance and unique identifier (UID).
|
|
@@ -86,6 +106,7 @@ var zod = require('zod');
|
|
|
86
106
|
* @param strapi The Strapi instance to be used.
|
|
87
107
|
* @param uid The unique identifier for the instance.
|
|
88
108
|
*/ constructor(strapi, uid){
|
|
109
|
+
super();
|
|
89
110
|
this._strapi = strapi;
|
|
90
111
|
this._uid = uid;
|
|
91
112
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sources":["../../../../src/core-api/routes/validation/common.ts"],"sourcesContent":["import type { Core, UID } from '@strapi/types';\n\nimport { contentTypes } from '@strapi/utils';\nimport
|
|
1
|
+
{"version":3,"file":"common.js","sources":["../../../../src/core-api/routes/validation/common.ts"],"sourcesContent":["import type { Core, UID } from '@strapi/types';\n\nimport { contentTypes, AbstractRouteValidator } from '@strapi/utils';\nimport * as z from 'zod/v4';\n\n/**\n * AbstractCoreRouteValidator provides the foundation for validating and managing core routes within a Strapi context for a specific model.\n *\n * This abstract class extends the base AbstractRouteValidator from utils to add schema-aware validation\n * logic for scalar and populatable fields defined in a model schema.\n *\n * It uses runtime information about Strapi models to derive and expose schema validations.\n *\n * @template {UID.Schema} T Representing the schema identifier to be validated.\n */\nexport abstract class AbstractCoreRouteValidator<\n T extends UID.Schema,\n> extends AbstractRouteValidator {\n /**\n * The `_strapi` variable serves as a reference to the core Strapi instance.\n * It is used for interacting with the loaded model.\n */\n protected readonly _strapi: Core.Strapi;\n\n /**\n * A unique identifier used to represent a model within Strapi.\n *\n * The type of the identifier is generic to allow flexibility and ensure type safety\n * when working with either content-types or components.\n */\n protected readonly _uid: T;\n\n /**\n * Protected constructor for initializing the class with the provided Strapi instance and unique identifier (UID).\n *\n * @param strapi The Strapi instance to be used.\n * @param uid The unique identifier for the instance.\n */\n public constructor(strapi: Core.Strapi, uid: T) {\n super();\n this._strapi = strapi;\n this._uid = uid;\n }\n\n /**\n * Retrieves an enum schema constructed from the keys of the scalar fields.\n *\n * @return A Zod enum containing the keys from the scalar fields.\n */\n public get scalarFieldsEnum() {\n return z.enum(Object.keys(this._scalarFields) as [string]);\n }\n\n /**\n * Retrieves an enum schema constructed from the keys of fields that can be populated (relations, components, files, etc.)\n *\n * @return A ZodEnum object containing the list of populatable field keys.\n */\n public get populatableFieldsEnum() {\n return z.enum(Object.keys(this._populatableFields) as [string]);\n }\n\n /**\n * Retrieves an array representation of the scalar fields.\n *\n * @return An array containing the scalar fields as defined by {@link scalarFieldsEnum}.\n */\n public get scalarFieldsArray() {\n return z.array(this.scalarFieldsEnum);\n }\n\n /**\n * Retrieves an array of populatable fields.\n *\n * @return A Zod array schema representing the available populatable fields as defined by {@link populatableFieldsEnum}.\n */\n public get populatableFieldsArray() {\n return z.array(this.populatableFieldsEnum);\n }\n\n /**\n * Retrieves the schema associated with the current model.\n *\n * The schema represents the structural definition of the model,\n * as retrieved from the Strapi model associated with the given UID.\n *\n * @return The schema of the model retrieved from Strapi.\n */\n protected get _schema() {\n return this._strapi.getModel(this._uid);\n }\n\n /**\n * Retrieves scalar fields from the object's schema attributes.\n *\n * Filters the schema attributes to include only those that are scalar and not private.\n *\n * @return An object composed of scalar fields from the schema attributes.\n */\n protected get _scalarFields() {\n const attributes = Object.entries(this._schema.attributes);\n\n const scalarEntries = attributes\n .filter(([, attribute]) => contentTypes.isScalarAttribute(attribute))\n .filter(([attributeName]) => !contentTypes.isPrivateAttribute(this._schema, attributeName));\n\n return Object.fromEntries(scalarEntries);\n }\n\n /**\n * Retrieves the populatable fields from the schema attributes.\n *\n * Filters the schema attributes to include only those that are populatable and not private.\n *\n * @return An object containing the populatable fields derived from the schema attributes.\n */\n protected get _populatableFields() {\n const attributes = Object.entries(this._schema.attributes);\n\n const populatableEntries = attributes\n .filter(([, attribute]) => !contentTypes.isScalarAttribute(attribute))\n .filter(([attributeName]) => !contentTypes.isPrivateAttribute(this._schema, attributeName));\n\n return Object.fromEntries(populatableEntries);\n }\n\n /**\n * Creates a Zod schema as a record with scalar fields as keys and the specified type as values.\n *\n * @param type - The Zod type to use for the record's values.\n * @return A Zod record schema with scalar fields as keys and the specified type as values.\n */\n public fieldRecord(type: z.ZodTypeAny) {\n return z.record(this.scalarFieldsEnum, type);\n }\n}\n"],"names":["AbstractCoreRouteValidator","AbstractRouteValidator","scalarFieldsEnum","z","enum","Object","keys","_scalarFields","populatableFieldsEnum","_populatableFields","scalarFieldsArray","array","populatableFieldsArray","_schema","_strapi","getModel","_uid","attributes","entries","scalarEntries","filter","attribute","contentTypes","isScalarAttribute","attributeName","isPrivateAttribute","fromEntries","populatableEntries","fieldRecord","type","record","strapi","uid"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAKA;;;;;;;;;IAUO,MAAeA,0BAEZC,SAAAA,kCAAAA,CAAAA;AA2BR;;;;AAIC,MACD,IAAWC,gBAAmB,GAAA;QAC5B,OAAOC,YAAAA,CAAEC,IAAI,CAACC,MAAAA,CAAOC,IAAI,CAAC,IAAI,CAACC,aAAa,CAAA,CAAA;AAC9C;AAEA;;;;AAIC,MACD,IAAWC,qBAAwB,GAAA;QACjC,OAAOL,YAAAA,CAAEC,IAAI,CAACC,MAAAA,CAAOC,IAAI,CAAC,IAAI,CAACG,kBAAkB,CAAA,CAAA;AACnD;AAEA;;;;AAIC,MACD,IAAWC,iBAAoB,GAAA;AAC7B,QAAA,OAAOP,YAAEQ,CAAAA,KAAK,CAAC,IAAI,CAACT,gBAAgB,CAAA;AACtC;AAEA;;;;AAIC,MACD,IAAWU,sBAAyB,GAAA;AAClC,QAAA,OAAOT,YAAEQ,CAAAA,KAAK,CAAC,IAAI,CAACH,qBAAqB,CAAA;AAC3C;AAEA;;;;;;;AAOC,MACD,IAAcK,OAAU,GAAA;QACtB,OAAO,IAAI,CAACC,OAAO,CAACC,QAAQ,CAAC,IAAI,CAACC,IAAI,CAAA;AACxC;AAEA;;;;;;AAMC,MACD,IAAcT,aAAgB,GAAA;QAC5B,MAAMU,UAAAA,GAAaZ,OAAOa,OAAO,CAAC,IAAI,CAACL,OAAO,CAACI,UAAU,CAAA;QAEzD,MAAME,aAAAA,GAAgBF,UACnBG,CAAAA,MAAM,CAAC,CAAC,GAAGC,SAAU,CAAA,GAAKC,wBAAaC,CAAAA,iBAAiB,CAACF,SAAAA,CAAAA,CAAAA,CACzDD,MAAM,CAAC,CAAC,CAACI,aAAAA,CAAc,GAAK,CAACF,wBAAaG,CAAAA,kBAAkB,CAAC,IAAI,CAACZ,OAAO,EAAEW,aAAAA,CAAAA,CAAAA;QAE9E,OAAOnB,MAAAA,CAAOqB,WAAW,CAACP,aAAAA,CAAAA;AAC5B;AAEA;;;;;;AAMC,MACD,IAAcV,kBAAqB,GAAA;QACjC,MAAMQ,UAAAA,GAAaZ,OAAOa,OAAO,CAAC,IAAI,CAACL,OAAO,CAACI,UAAU,CAAA;QAEzD,MAAMU,kBAAAA,GAAqBV,UACxBG,CAAAA,MAAM,CAAC,CAAC,GAAGC,SAAAA,CAAU,GAAK,CAACC,wBAAaC,CAAAA,iBAAiB,CAACF,SAAAA,CAAAA,CAAAA,CAC1DD,MAAM,CAAC,CAAC,CAACI,aAAAA,CAAc,GAAK,CAACF,wBAAaG,CAAAA,kBAAkB,CAAC,IAAI,CAACZ,OAAO,EAAEW,aAAAA,CAAAA,CAAAA;QAE9E,OAAOnB,MAAAA,CAAOqB,WAAW,CAACC,kBAAAA,CAAAA;AAC5B;AAEA;;;;;MAMOC,WAAYC,CAAAA,IAAkB,EAAE;AACrC,QAAA,OAAO1B,aAAE2B,MAAM,CAAC,IAAI,CAAC5B,gBAAgB,EAAE2B,IAAAA,CAAAA;AACzC;AAtGA;;;;;AAKC,MACD,WAAmBE,CAAAA,MAAmB,EAAEC,GAAM,CAAE;QAC9C,KAAK,EAAA;QACL,IAAI,CAAClB,OAAO,GAAGiB,MAAAA;QACf,IAAI,CAACf,IAAI,GAAGgB,GAAAA;AACd;AA6FF;;;;"}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
import { contentTypes } from '@strapi/utils';
|
|
2
|
-
import
|
|
1
|
+
import { AbstractRouteValidator, contentTypes } from '@strapi/utils';
|
|
2
|
+
import * as z from 'zod/v4';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* AbstractCoreRouteValidator provides the foundation for validating and managing core routes within a Strapi context for a specific model.
|
|
6
6
|
*
|
|
7
|
-
* This abstract class
|
|
7
|
+
* This abstract class extends the base AbstractRouteValidator from utils to add schema-aware validation
|
|
8
|
+
* logic for scalar and populatable fields defined in a model schema.
|
|
8
9
|
*
|
|
9
10
|
* It uses runtime information about Strapi models to derive and expose schema validations.
|
|
10
11
|
*
|
|
11
12
|
* @template {UID.Schema} T Representing the schema identifier to be validated.
|
|
12
|
-
*/ class AbstractCoreRouteValidator {
|
|
13
|
+
*/ class AbstractCoreRouteValidator extends AbstractRouteValidator {
|
|
13
14
|
/**
|
|
14
15
|
* Retrieves an enum schema constructed from the keys of the scalar fields.
|
|
15
16
|
*
|
|
@@ -84,6 +85,7 @@ import { z } from 'zod';
|
|
|
84
85
|
* @param strapi The Strapi instance to be used.
|
|
85
86
|
* @param uid The unique identifier for the instance.
|
|
86
87
|
*/ constructor(strapi, uid){
|
|
88
|
+
super();
|
|
87
89
|
this._strapi = strapi;
|
|
88
90
|
this._uid = uid;
|
|
89
91
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.mjs","sources":["../../../../src/core-api/routes/validation/common.ts"],"sourcesContent":["import type { Core, UID } from '@strapi/types';\n\nimport { contentTypes } from '@strapi/utils';\nimport
|
|
1
|
+
{"version":3,"file":"common.mjs","sources":["../../../../src/core-api/routes/validation/common.ts"],"sourcesContent":["import type { Core, UID } from '@strapi/types';\n\nimport { contentTypes, AbstractRouteValidator } from '@strapi/utils';\nimport * as z from 'zod/v4';\n\n/**\n * AbstractCoreRouteValidator provides the foundation for validating and managing core routes within a Strapi context for a specific model.\n *\n * This abstract class extends the base AbstractRouteValidator from utils to add schema-aware validation\n * logic for scalar and populatable fields defined in a model schema.\n *\n * It uses runtime information about Strapi models to derive and expose schema validations.\n *\n * @template {UID.Schema} T Representing the schema identifier to be validated.\n */\nexport abstract class AbstractCoreRouteValidator<\n T extends UID.Schema,\n> extends AbstractRouteValidator {\n /**\n * The `_strapi` variable serves as a reference to the core Strapi instance.\n * It is used for interacting with the loaded model.\n */\n protected readonly _strapi: Core.Strapi;\n\n /**\n * A unique identifier used to represent a model within Strapi.\n *\n * The type of the identifier is generic to allow flexibility and ensure type safety\n * when working with either content-types or components.\n */\n protected readonly _uid: T;\n\n /**\n * Protected constructor for initializing the class with the provided Strapi instance and unique identifier (UID).\n *\n * @param strapi The Strapi instance to be used.\n * @param uid The unique identifier for the instance.\n */\n public constructor(strapi: Core.Strapi, uid: T) {\n super();\n this._strapi = strapi;\n this._uid = uid;\n }\n\n /**\n * Retrieves an enum schema constructed from the keys of the scalar fields.\n *\n * @return A Zod enum containing the keys from the scalar fields.\n */\n public get scalarFieldsEnum() {\n return z.enum(Object.keys(this._scalarFields) as [string]);\n }\n\n /**\n * Retrieves an enum schema constructed from the keys of fields that can be populated (relations, components, files, etc.)\n *\n * @return A ZodEnum object containing the list of populatable field keys.\n */\n public get populatableFieldsEnum() {\n return z.enum(Object.keys(this._populatableFields) as [string]);\n }\n\n /**\n * Retrieves an array representation of the scalar fields.\n *\n * @return An array containing the scalar fields as defined by {@link scalarFieldsEnum}.\n */\n public get scalarFieldsArray() {\n return z.array(this.scalarFieldsEnum);\n }\n\n /**\n * Retrieves an array of populatable fields.\n *\n * @return A Zod array schema representing the available populatable fields as defined by {@link populatableFieldsEnum}.\n */\n public get populatableFieldsArray() {\n return z.array(this.populatableFieldsEnum);\n }\n\n /**\n * Retrieves the schema associated with the current model.\n *\n * The schema represents the structural definition of the model,\n * as retrieved from the Strapi model associated with the given UID.\n *\n * @return The schema of the model retrieved from Strapi.\n */\n protected get _schema() {\n return this._strapi.getModel(this._uid);\n }\n\n /**\n * Retrieves scalar fields from the object's schema attributes.\n *\n * Filters the schema attributes to include only those that are scalar and not private.\n *\n * @return An object composed of scalar fields from the schema attributes.\n */\n protected get _scalarFields() {\n const attributes = Object.entries(this._schema.attributes);\n\n const scalarEntries = attributes\n .filter(([, attribute]) => contentTypes.isScalarAttribute(attribute))\n .filter(([attributeName]) => !contentTypes.isPrivateAttribute(this._schema, attributeName));\n\n return Object.fromEntries(scalarEntries);\n }\n\n /**\n * Retrieves the populatable fields from the schema attributes.\n *\n * Filters the schema attributes to include only those that are populatable and not private.\n *\n * @return An object containing the populatable fields derived from the schema attributes.\n */\n protected get _populatableFields() {\n const attributes = Object.entries(this._schema.attributes);\n\n const populatableEntries = attributes\n .filter(([, attribute]) => !contentTypes.isScalarAttribute(attribute))\n .filter(([attributeName]) => !contentTypes.isPrivateAttribute(this._schema, attributeName));\n\n return Object.fromEntries(populatableEntries);\n }\n\n /**\n * Creates a Zod schema as a record with scalar fields as keys and the specified type as values.\n *\n * @param type - The Zod type to use for the record's values.\n * @return A Zod record schema with scalar fields as keys and the specified type as values.\n */\n public fieldRecord(type: z.ZodTypeAny) {\n return z.record(this.scalarFieldsEnum, type);\n }\n}\n"],"names":["AbstractCoreRouteValidator","AbstractRouteValidator","scalarFieldsEnum","z","enum","Object","keys","_scalarFields","populatableFieldsEnum","_populatableFields","scalarFieldsArray","array","populatableFieldsArray","_schema","_strapi","getModel","_uid","attributes","entries","scalarEntries","filter","attribute","contentTypes","isScalarAttribute","attributeName","isPrivateAttribute","fromEntries","populatableEntries","fieldRecord","type","record","strapi","uid"],"mappings":";;;AAKA;;;;;;;;;IAUO,MAAeA,0BAEZC,SAAAA,sBAAAA,CAAAA;AA2BR;;;;AAIC,MACD,IAAWC,gBAAmB,GAAA;QAC5B,OAAOC,CAAAA,CAAEC,IAAI,CAACC,MAAAA,CAAOC,IAAI,CAAC,IAAI,CAACC,aAAa,CAAA,CAAA;AAC9C;AAEA;;;;AAIC,MACD,IAAWC,qBAAwB,GAAA;QACjC,OAAOL,CAAAA,CAAEC,IAAI,CAACC,MAAAA,CAAOC,IAAI,CAAC,IAAI,CAACG,kBAAkB,CAAA,CAAA;AACnD;AAEA;;;;AAIC,MACD,IAAWC,iBAAoB,GAAA;AAC7B,QAAA,OAAOP,CAAEQ,CAAAA,KAAK,CAAC,IAAI,CAACT,gBAAgB,CAAA;AACtC;AAEA;;;;AAIC,MACD,IAAWU,sBAAyB,GAAA;AAClC,QAAA,OAAOT,CAAEQ,CAAAA,KAAK,CAAC,IAAI,CAACH,qBAAqB,CAAA;AAC3C;AAEA;;;;;;;AAOC,MACD,IAAcK,OAAU,GAAA;QACtB,OAAO,IAAI,CAACC,OAAO,CAACC,QAAQ,CAAC,IAAI,CAACC,IAAI,CAAA;AACxC;AAEA;;;;;;AAMC,MACD,IAAcT,aAAgB,GAAA;QAC5B,MAAMU,UAAAA,GAAaZ,OAAOa,OAAO,CAAC,IAAI,CAACL,OAAO,CAACI,UAAU,CAAA;QAEzD,MAAME,aAAAA,GAAgBF,UACnBG,CAAAA,MAAM,CAAC,CAAC,GAAGC,SAAU,CAAA,GAAKC,YAAaC,CAAAA,iBAAiB,CAACF,SAAAA,CAAAA,CAAAA,CACzDD,MAAM,CAAC,CAAC,CAACI,aAAAA,CAAc,GAAK,CAACF,YAAaG,CAAAA,kBAAkB,CAAC,IAAI,CAACZ,OAAO,EAAEW,aAAAA,CAAAA,CAAAA;QAE9E,OAAOnB,MAAAA,CAAOqB,WAAW,CAACP,aAAAA,CAAAA;AAC5B;AAEA;;;;;;AAMC,MACD,IAAcV,kBAAqB,GAAA;QACjC,MAAMQ,UAAAA,GAAaZ,OAAOa,OAAO,CAAC,IAAI,CAACL,OAAO,CAACI,UAAU,CAAA;QAEzD,MAAMU,kBAAAA,GAAqBV,UACxBG,CAAAA,MAAM,CAAC,CAAC,GAAGC,SAAAA,CAAU,GAAK,CAACC,YAAaC,CAAAA,iBAAiB,CAACF,SAAAA,CAAAA,CAAAA,CAC1DD,MAAM,CAAC,CAAC,CAACI,aAAAA,CAAc,GAAK,CAACF,YAAaG,CAAAA,kBAAkB,CAAC,IAAI,CAACZ,OAAO,EAAEW,aAAAA,CAAAA,CAAAA;QAE9E,OAAOnB,MAAAA,CAAOqB,WAAW,CAACC,kBAAAA,CAAAA;AAC5B;AAEA;;;;;MAMOC,WAAYC,CAAAA,IAAkB,EAAE;AACrC,QAAA,OAAO1B,EAAE2B,MAAM,CAAC,IAAI,CAAC5B,gBAAgB,EAAE2B,IAAAA,CAAAA;AACzC;AAtGA;;;;;AAKC,MACD,WAAmBE,CAAAA,MAAmB,EAAEC,GAAM,CAAE;QAC9C,KAAK,EAAA;QACL,IAAI,CAAClB,OAAO,GAAGiB,MAAAA;QACf,IAAI,CAACf,IAAI,GAAGgB,GAAAA;AACd;AA6FF;;;;"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import { z } from 'zod';
|
|
1
|
+
import type { UID } from '@strapi/types';
|
|
3
2
|
import { AbstractCoreRouteValidator } from './common';
|
|
4
3
|
/**
|
|
5
4
|
* A component validator for core content-type routes.
|
|
@@ -17,13 +16,6 @@ import { AbstractCoreRouteValidator } from './common';
|
|
|
17
16
|
* ```
|
|
18
17
|
*/
|
|
19
18
|
export declare class CoreComponentRouteValidator extends AbstractCoreRouteValidator<UID.Component> {
|
|
20
|
-
/**
|
|
21
|
-
* Creates a new instance of CoreComponentRouteValidator
|
|
22
|
-
*
|
|
23
|
-
* @param strapi - The Strapi instance
|
|
24
|
-
* @param uid - The component's unique identifier
|
|
25
|
-
*/
|
|
26
|
-
constructor(strapi: Core.Strapi, uid: UID.Component);
|
|
27
19
|
/**
|
|
28
20
|
* Generates a comprehensive validation schema for a single component entry.
|
|
29
21
|
*
|
|
@@ -37,6 +29,6 @@ export declare class CoreComponentRouteValidator extends AbstractCoreRouteValida
|
|
|
37
29
|
* const entrySchema = validator.entry;
|
|
38
30
|
* ```
|
|
39
31
|
*/
|
|
40
|
-
get entry():
|
|
32
|
+
get entry(): import("zod/v4").ZodObject<{}, import("zod/v4/core").$strip>;
|
|
41
33
|
}
|
|
42
34
|
//# sourceMappingURL=component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../../src/core-api/routes/validation/component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../../src/core-api/routes/validation/component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAIzC,OAAO,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;AAEtD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,2BAA4B,SAAQ,0BAA0B,CAAC,GAAG,CAAC,SAAS,CAAC;IACxF;;;;;;;;;;;;OAYG;IACH,IAAI,KAAK,iEAMR;CACF"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var attributes = require('./attributes.js');
|
|
3
|
+
var mappers = require('./mappers.js');
|
|
5
4
|
var common = require('./common.js');
|
|
6
5
|
|
|
6
|
+
// eslint-disable-next-line import/no-cycle
|
|
7
7
|
/**
|
|
8
8
|
* A component validator for core content-type routes.
|
|
9
9
|
*
|
|
@@ -37,21 +37,7 @@ var common = require('./common.js');
|
|
|
37
37
|
..._scalarFields,
|
|
38
38
|
..._populatableFields
|
|
39
39
|
});
|
|
40
|
-
return
|
|
41
|
-
return acc.extend({
|
|
42
|
-
get [attributeName] () {
|
|
43
|
-
return attributes.mapAttributeToSchema(attribute);
|
|
44
|
-
}
|
|
45
|
-
});
|
|
46
|
-
}, zod.z.object());
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Creates a new instance of CoreComponentRouteValidator
|
|
50
|
-
*
|
|
51
|
-
* @param strapi - The Strapi instance
|
|
52
|
-
* @param uid - The component's unique identifier
|
|
53
|
-
*/ constructor(strapi, uid){
|
|
54
|
-
super(strapi, uid);
|
|
40
|
+
return mappers.createAttributesSchema(entries);
|
|
55
41
|
}
|
|
56
42
|
}
|
|
57
43
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.js","sources":["../../../../src/core-api/routes/validation/component.ts"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"file":"component.js","sources":["../../../../src/core-api/routes/validation/component.ts"],"sourcesContent":["import type { UID } from '@strapi/types';\n\n// eslint-disable-next-line import/no-cycle\nimport { createAttributesSchema } from './mappers';\nimport { AbstractCoreRouteValidator } from './common';\n\n/**\n * A component validator for core content-type routes.\n *\n * Provides validation schemas and utilities for handling component-specific validation in content-type routes.\n *\n * @example\n * ```ts\n * const strapi = // ... strapi instance\n * const uid = 'api::article.article'\n * const validator = new CoreComponentRouteValidator(strapi, uid);\n *\n * // Get validation schema for a component entry\n * const componentSchema = validator.component;\n * ```\n */\nexport class CoreComponentRouteValidator extends AbstractCoreRouteValidator<UID.Component> {\n /**\n * Generates a comprehensive validation schema for a single component entry.\n *\n * Combines scalar fields and populatable fields into a single schema.\n *\n * @returns A schema for validating complete entries\n *\n * @example\n * ```ts\n * const validator = new CoreComponentRouteValidator(strapi, uid);\n * const entrySchema = validator.entry;\n * ```\n */\n get entry() {\n const { _scalarFields, _populatableFields } = this;\n\n const entries = Object.entries({ ..._scalarFields, ..._populatableFields });\n\n return createAttributesSchema(entries);\n }\n}\n"],"names":["CoreComponentRouteValidator","AbstractCoreRouteValidator","entry","_scalarFields","_populatableFields","entries","Object","createAttributesSchema"],"mappings":";;;;;AAEA;AAIA;;;;;;;;;;;;;;IAeO,MAAMA,2BAAoCC,SAAAA,iCAAAA,CAAAA;AAC/C;;;;;;;;;;;;AAYC,MACD,IAAIC,KAAQ,GAAA;AACV,QAAA,MAAM,EAAEC,aAAa,EAAEC,kBAAkB,EAAE,GAAG,IAAI;QAElD,MAAMC,OAAAA,GAAUC,MAAOD,CAAAA,OAAO,CAAC;AAAE,YAAA,GAAGF,aAAa;AAAE,YAAA,GAAGC;AAAmB,SAAA,CAAA;AAEzE,QAAA,OAAOG,8BAAuBF,CAAAA,OAAAA,CAAAA;AAChC;AACF;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { mapAttributeToSchema } from './attributes.mjs';
|
|
1
|
+
import { createAttributesSchema } from './mappers.mjs';
|
|
3
2
|
import { AbstractCoreRouteValidator } from './common.mjs';
|
|
4
3
|
|
|
4
|
+
// eslint-disable-next-line import/no-cycle
|
|
5
5
|
/**
|
|
6
6
|
* A component validator for core content-type routes.
|
|
7
7
|
*
|
|
@@ -35,21 +35,7 @@ import { AbstractCoreRouteValidator } from './common.mjs';
|
|
|
35
35
|
..._scalarFields,
|
|
36
36
|
..._populatableFields
|
|
37
37
|
});
|
|
38
|
-
return entries
|
|
39
|
-
return acc.extend({
|
|
40
|
-
get [attributeName] () {
|
|
41
|
-
return mapAttributeToSchema(attribute);
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
}, z.object());
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Creates a new instance of CoreComponentRouteValidator
|
|
48
|
-
*
|
|
49
|
-
* @param strapi - The Strapi instance
|
|
50
|
-
* @param uid - The component's unique identifier
|
|
51
|
-
*/ constructor(strapi, uid){
|
|
52
|
-
super(strapi, uid);
|
|
38
|
+
return createAttributesSchema(entries);
|
|
53
39
|
}
|
|
54
40
|
}
|
|
55
41
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.mjs","sources":["../../../../src/core-api/routes/validation/component.ts"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"file":"component.mjs","sources":["../../../../src/core-api/routes/validation/component.ts"],"sourcesContent":["import type { UID } from '@strapi/types';\n\n// eslint-disable-next-line import/no-cycle\nimport { createAttributesSchema } from './mappers';\nimport { AbstractCoreRouteValidator } from './common';\n\n/**\n * A component validator for core content-type routes.\n *\n * Provides validation schemas and utilities for handling component-specific validation in content-type routes.\n *\n * @example\n * ```ts\n * const strapi = // ... strapi instance\n * const uid = 'api::article.article'\n * const validator = new CoreComponentRouteValidator(strapi, uid);\n *\n * // Get validation schema for a component entry\n * const componentSchema = validator.component;\n * ```\n */\nexport class CoreComponentRouteValidator extends AbstractCoreRouteValidator<UID.Component> {\n /**\n * Generates a comprehensive validation schema for a single component entry.\n *\n * Combines scalar fields and populatable fields into a single schema.\n *\n * @returns A schema for validating complete entries\n *\n * @example\n * ```ts\n * const validator = new CoreComponentRouteValidator(strapi, uid);\n * const entrySchema = validator.entry;\n * ```\n */\n get entry() {\n const { _scalarFields, _populatableFields } = this;\n\n const entries = Object.entries({ ..._scalarFields, ..._populatableFields });\n\n return createAttributesSchema(entries);\n }\n}\n"],"names":["CoreComponentRouteValidator","AbstractCoreRouteValidator","entry","_scalarFields","_populatableFields","entries","Object","createAttributesSchema"],"mappings":";;;AAEA;AAIA;;;;;;;;;;;;;;IAeO,MAAMA,2BAAoCC,SAAAA,0BAAAA,CAAAA;AAC/C;;;;;;;;;;;;AAYC,MACD,IAAIC,KAAQ,GAAA;AACV,QAAA,MAAM,EAAEC,aAAa,EAAEC,kBAAkB,EAAE,GAAG,IAAI;QAElD,MAAMC,OAAAA,GAAUC,MAAOD,CAAAA,OAAO,CAAC;AAAE,YAAA,GAAGF,aAAa;AAAE,YAAA,GAAGC;AAAmB,SAAA,CAAA;AAEzE,QAAA,OAAOG,sBAAuBF,CAAAA,OAAAA,CAAAA;AAChC;AACF;;;;"}
|
|
@@ -1,2 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Defines the constant literal values for boolean representations.
|
|
3
|
+
*
|
|
4
|
+
* These values can be used to convert string representations of booleans (for example, 'true', 'false', '1', '0')
|
|
5
|
+
* into actual boolean types.
|
|
6
|
+
*/
|
|
1
7
|
export declare const BOOLEAN_LITERAL_VALUES: readonly ["t", "1", "true", "f", "0", "false"];
|
|
2
8
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/core-api/routes/validation/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,gDAAiD,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/core-api/routes/validation/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,sBAAsB,gDAAiD,CAAC"}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
/**
|
|
4
|
+
* Defines the constant literal values for boolean representations.
|
|
5
|
+
*
|
|
6
|
+
* These values can be used to convert string representations of booleans (for example, 'true', 'false', '1', '0')
|
|
7
|
+
* into actual boolean types.
|
|
8
|
+
*/ const BOOLEAN_LITERAL_VALUES = [
|
|
4
9
|
't',
|
|
5
10
|
'1',
|
|
6
11
|
'true',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sources":["../../../../src/core-api/routes/validation/constants.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../../../../src/core-api/routes/validation/constants.ts"],"sourcesContent":["/**\n * Defines the constant literal values for boolean representations.\n *\n * These values can be used to convert string representations of booleans (for example, 'true', 'false', '1', '0')\n * into actual boolean types.\n */\n\nexport const BOOLEAN_LITERAL_VALUES = ['t', '1', 'true', 'f', '0', 'false'] as const;\n"],"names":["BOOLEAN_LITERAL_VALUES"],"mappings":";;AAAA;;;;;UAOaA,sBAAyB,GAAA;AAAC,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,MAAA;AAAQ,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA;;;;;"}
|