@kubb/plugin-zod 4.19.1 → 4.19.2

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.
@@ -552,7 +552,8 @@ const parse = createParser({
552
552
  return ${objectValue}
553
553
  }`;
554
554
  }
555
- if (isNullish) return `"${propertyName}": ${objectValue}${zodKeywordMapper.nullish()}`;
555
+ if (isNullish && options.mini) return `"${propertyName}": ${zodKeywordMapper.nullish(objectValue)}`;
556
+ if (isNullish && !options.mini) return `"${propertyName}": ${objectValue}${zodKeywordMapper.nullish()}`;
556
557
  if (isOptional) return `"${propertyName}": ${zodKeywordMapper.optional(objectValue)}`;
557
558
  if (isNullable) return `"${propertyName}": ${zodKeywordMapper.nullable(objectValue)}`;
558
559
  return `"${propertyName}": ${objectValue}`;
@@ -737,4 +738,4 @@ function Zod({ name, typeName, tree, schema, inferTypeName, mapper, coercion, ke
737
738
 
738
739
  //#endregion
739
740
  export { Operations as n, Zod as t };
740
- //# sourceMappingURL=components-BdH8vk4k.js.map
741
+ //# sourceMappingURL=components-BgtqtaQt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"components-BdH8vk4k.js","names":["schema","parserZod.sort","parserZod.filterMiniModifiers","parserZod.parse","parserZod.wrapWithMiniModifiers","parserZod.extractMiniModifiers"],"sources":["../src/components/Operations.tsx","../src/parser.ts","../src/components/Zod.tsx"],"sourcesContent":["import transformers from '@kubb/core/transformers'\nimport type { HttpMethod, Operation } from '@kubb/oas'\nimport type { SchemaNames } from '@kubb/plugin-oas/hooks'\nimport { Const, File, Type } from '@kubb/react-fabric'\nimport type { KubbNode } from '@kubb/react-fabric/types'\n\ntype Props = {\n name: string\n operations: Array<{ operation: Operation; data: SchemaNames }>\n}\n\nexport function Operations({ name, operations }: Props): KubbNode {\n const operationsJSON = operations.reduce(\n (prev, acc) => {\n prev[`\"${acc.operation.getOperationId()}\"`] = acc.data\n\n return prev\n },\n {} as Record<string, unknown>,\n )\n\n const pathsJSON = operations.reduce(\n (prev, acc) => {\n prev[`\"${acc.operation.path}\"`] = {\n ...(prev[`\"${acc.operation.path}\"`] || ({} as Record<HttpMethod, string>)),\n [acc.operation.method]: `operations[\"${acc.operation.getOperationId()}\"]`,\n }\n\n return prev\n },\n {} as Record<string, Record<HttpMethod, string>>,\n )\n\n return (\n <>\n <File.Source name=\"OperationSchema\" isExportable isIndexable>\n <Type name=\"OperationSchema\" export>{`{\n readonly request: z.ZodTypeAny | undefined;\n readonly parameters: {\n readonly path: z.ZodTypeAny | undefined;\n readonly query: z.ZodTypeAny | undefined;\n readonly header: z.ZodTypeAny | undefined;\n };\n readonly responses: {\n readonly [status: number]: z.ZodTypeAny;\n readonly default: z.ZodTypeAny;\n };\n readonly errors: {\n readonly [status: number]: z.ZodTypeAny;\n };\n}`}</Type>\n </File.Source>\n <File.Source name=\"OperationsMap\" isExportable isIndexable>\n <Type name=\"OperationsMap\" export>\n {'Record<string, OperationSchema>'}\n </Type>\n </File.Source>\n <File.Source name={name} isExportable isIndexable>\n <Const export name={name} asConst>\n {`{${transformers.stringifyObject(operationsJSON)}}`}\n </Const>\n </File.Source>\n <File.Source name={'paths'} isExportable isIndexable>\n <Const export name={'paths'} asConst>\n {`{${transformers.stringifyObject(pathsJSON)}}`}\n </Const>\n </File.Source>\n </>\n )\n}\n","import transformers from '@kubb/core/transformers'\n\nimport type { Schema, SchemaMapper } from '@kubb/plugin-oas'\nimport { createParser, findSchemaKeyword, isKeyword, SchemaGenerator, type SchemaKeywordMapper, schemaKeywords } from '@kubb/plugin-oas'\n\n//TODO add zodKeywordMapper as function that returns 3 versions: v3, v4 and v4 mini, this can also be used to have the custom mapping(see object type)\n// also include shouldCoerce\n\n/**\n * Helper to build string/array length constraint checks for Zod Mini mode\n */\nfunction buildLengthChecks(min?: number, max?: number): string[] {\n const checks: string[] = []\n if (min !== undefined) checks.push(`z.minLength(${min})`)\n if (max !== undefined) checks.push(`z.maxLength(${max})`)\n return checks\n}\n\nconst zodKeywordMapper = {\n any: () => 'z.any()',\n unknown: () => 'z.unknown()',\n void: () => 'z.void()',\n number: (coercion?: boolean, min?: number, max?: number, exclusiveMinimum?: number, exclusiveMaximum?: number, mini?: boolean) => {\n if (mini) {\n const checks: string[] = []\n if (min !== undefined) checks.push(`z.minimum(${min})`)\n if (max !== undefined) checks.push(`z.maximum(${max})`)\n if (exclusiveMinimum !== undefined) checks.push(`z.minimum(${exclusiveMinimum}, { exclusive: true })`)\n if (exclusiveMaximum !== undefined) checks.push(`z.maximum(${exclusiveMaximum}, { exclusive: true })`)\n if (checks.length > 0) {\n return `z.number().check(${checks.join(', ')})`\n }\n return 'z.number()'\n }\n return [\n coercion ? 'z.coerce.number()' : 'z.number()',\n min !== undefined ? `.min(${min})` : undefined,\n max !== undefined ? `.max(${max})` : undefined,\n exclusiveMinimum !== undefined ? `.gt(${exclusiveMinimum})` : undefined,\n exclusiveMaximum !== undefined ? `.lt(${exclusiveMaximum})` : undefined,\n ]\n .filter(Boolean)\n .join('')\n },\n integer: (coercion?: boolean, min?: number, max?: number, version: '3' | '4' = '3', exclusiveMinimum?: number, exclusiveMaximum?: number, mini?: boolean) => {\n if (mini) {\n const checks: string[] = []\n if (min !== undefined) checks.push(`z.minimum(${min})`)\n if (max !== undefined) checks.push(`z.maximum(${max})`)\n if (exclusiveMinimum !== undefined) checks.push(`z.minimum(${exclusiveMinimum}, { exclusive: true })`)\n if (exclusiveMaximum !== undefined) checks.push(`z.maximum(${exclusiveMaximum}, { exclusive: true })`)\n if (checks.length > 0) {\n return `z.int().check(${checks.join(', ')})`\n }\n return 'z.int()'\n }\n return [\n coercion ? 'z.coerce.number().int()' : version === '4' ? 'z.int()' : 'z.number().int()',\n min !== undefined ? `.min(${min})` : undefined,\n max !== undefined ? `.max(${max})` : undefined,\n exclusiveMinimum !== undefined ? `.gt(${exclusiveMinimum})` : undefined,\n exclusiveMaximum !== undefined ? `.lt(${exclusiveMaximum})` : undefined,\n ]\n .filter(Boolean)\n .join('')\n },\n interface: (value?: string, strict?: boolean) => {\n if (strict) {\n return `z.strictInterface({\n ${value}\n })`\n }\n return `z.interface({\n ${value}\n })`\n },\n object: (value?: string, strict?: boolean, version: '3' | '4' = '3') => {\n if (version === '4' && strict) {\n return `z.strictObject({\n ${value}\n })`\n }\n\n if (strict) {\n return `z.object({\n ${value}\n }).strict()`\n }\n\n return `z.object({\n ${value}\n })`\n },\n string: (coercion?: boolean, min?: number, max?: number, mini?: boolean) => {\n if (mini) {\n const checks = buildLengthChecks(min, max)\n if (checks.length > 0) {\n return `z.string().check(${checks.join(', ')})`\n }\n return 'z.string()'\n }\n return [coercion ? 'z.coerce.string()' : 'z.string()', min !== undefined ? `.min(${min})` : undefined, max !== undefined ? `.max(${max})` : undefined]\n .filter(Boolean)\n .join('')\n },\n //support for discriminatedUnion\n boolean: () => 'z.boolean()',\n undefined: () => 'z.undefined()',\n nullable: (value?: string) => {\n if (value) {\n return `z.nullable(${value})`\n }\n return '.nullable()'\n },\n null: () => 'z.null()',\n nullish: (value?: string) => {\n if (value) {\n return `z.nullish(${value})`\n }\n return '.nullish()'\n },\n array: (items: string[] = [], min?: number, max?: number, unique?: boolean, mini?: boolean) => {\n if (mini) {\n const checks = buildLengthChecks(min, max)\n if (unique) checks.push(`z.refine(items => new Set(items).size === items.length, { message: \"Array entries must be unique\" })`)\n if (checks.length > 0) {\n return `z.array(${items?.join('')}).check(${checks.join(', ')})`\n }\n return `z.array(${items?.join('')})`\n }\n return [\n `z.array(${items?.join('')})`,\n min !== undefined ? `.min(${min})` : undefined,\n max !== undefined ? `.max(${max})` : undefined,\n unique ? `.refine(items => new Set(items).size === items.length, { message: \"Array entries must be unique\" })` : undefined,\n ]\n .filter(Boolean)\n .join('')\n },\n tuple: (items: string[] = []) => `z.tuple([${items?.join(', ')}])`,\n enum: (items: string[] = []) => `z.enum([${items?.join(', ')}])`,\n union: (items: string[] = []) => `z.union([${items?.join(', ')}])`,\n const: (value?: string | number | boolean) => `z.literal(${value ?? ''})`,\n /**\n * ISO 8601\n */\n datetime: (offset = false, local = false, version: '3' | '4' = '3', mini?: boolean) => {\n // Zod Mini doesn't support .datetime() method, use plain string\n if (mini) {\n return 'z.string()'\n }\n\n if (offset) {\n return version === '4' ? `z.iso.datetime({ offset: ${offset} })` : `z.string().datetime({ offset: ${offset} })`\n }\n\n if (local) {\n return version === '4' ? `z.iso.datetime({ local: ${local} })` : `z.string().datetime({ local: ${local} })`\n }\n\n return version === '4' ? 'z.iso.datetime()' : 'z.string().datetime()'\n },\n /**\n * Type `'date'` Date\n * Type `'string'` ISO date format (YYYY-MM-DD)\n * @default ISO date format (YYYY-MM-DD)\n */\n date: (type: 'date' | 'string' = 'string', coercion?: boolean, version: '3' | '4' = '3') => {\n if (type === 'string') {\n return version === '4' ? 'z.iso.date()' : 'z.string().date()'\n }\n\n if (coercion) {\n return 'z.coerce.date()'\n }\n\n return 'z.date()'\n },\n /**\n * Type `'date'` Date\n * Type `'string'` ISO time format (HH:mm:ss[.SSSSSS])\n * @default ISO time format (HH:mm:ss[.SSSSSS])\n */\n time: (type: 'date' | 'string' = 'string', coercion?: boolean, version: '3' | '4' = '3') => {\n if (type === 'string') {\n return version === '4' ? 'z.iso.time()' : 'z.string().time()'\n }\n\n if (coercion) {\n return 'z.coerce.date()'\n }\n\n return 'z.date()'\n },\n uuid: (coercion?: boolean, version: '3' | '4' = '3', min?: number, max?: number, mini?: boolean) => {\n if (mini) {\n const checks = buildLengthChecks(min, max)\n if (checks.length > 0) {\n return `z.uuid().check(${checks.join(', ')})`\n }\n return 'z.uuid()'\n }\n return [\n coercion ? (version === '4' ? 'z.uuid()' : 'z.coerce.string().uuid()') : version === '4' ? 'z.uuid()' : 'z.string().uuid()',\n min !== undefined ? `.min(${min})` : undefined,\n max !== undefined ? `.max(${max})` : undefined,\n ]\n .filter(Boolean)\n .join('')\n },\n url: (coercion?: boolean, version: '3' | '4' = '3', min?: number, max?: number, mini?: boolean) => {\n if (mini) {\n const checks = buildLengthChecks(min, max)\n if (checks.length > 0) {\n return `z.url().check(${checks.join(', ')})`\n }\n return 'z.url()'\n }\n return [\n coercion ? (version === '4' ? 'z.url()' : 'z.coerce.string().url()') : version === '4' ? 'z.url()' : 'z.string().url()',\n min !== undefined ? `.min(${min})` : undefined,\n max !== undefined ? `.max(${max})` : undefined,\n ]\n .filter(Boolean)\n .join('')\n },\n default: (value?: string | number | boolean | object, innerSchema?: string, mini?: boolean) => {\n if (mini && innerSchema) {\n const defaultValue = typeof value === 'object' ? '{}' : (value ?? '')\n return `z._default(${innerSchema}, ${defaultValue})`\n }\n\n if (typeof value === 'object') {\n return '.default({})'\n }\n\n if (value === undefined) {\n return '.default()'\n }\n\n if (typeof value === 'string' && !value) {\n return `.default('')`\n }\n\n return `.default(${value ?? ''})`\n },\n and: (items: string[] = [], mini?: boolean) => {\n // zod/mini doesn't support .and() method, so we can't use intersection types\n // In mini mode, we try to extract and append .check() calls instead\n if (mini && items.length > 0) {\n // Try to extract check calls from additional items\n const checks: string[] = []\n for (const item of items) {\n // Extract .check(...) from patterns like \"z.string().check(...)\"\n // Need to handle nested parentheses properly\n const checkStart = item.indexOf('.check(')\n if (checkStart !== -1) {\n // Find the matching closing parenthesis\n let depth = 0\n let i = checkStart + 7 // length of '.check('\n let checkContent = ''\n while (i < item.length) {\n const char = item[i]\n if (char === '(') depth++\n else if (char === ')') {\n if (depth === 0) break\n depth--\n }\n checkContent += char\n i++\n }\n if (checkContent) {\n checks.push(checkContent)\n }\n }\n }\n\n if (checks.length > 0) {\n // Append checks to the base schema\n return `.check(${checks.join(', ')})`\n }\n\n // If we can't extract checks, just use the first schema (limitation)\n return ''\n }\n return items?.map((item) => `.and(${item})`).join('')\n },\n describe: (value = '', innerSchema?: string, mini?: boolean) => {\n if (mini) {\n return undefined\n }\n\n if (innerSchema) {\n return `z.describe(${innerSchema}, ${value})`\n }\n return `.describe(${value})`\n },\n max: undefined,\n min: undefined,\n optional: (value?: string) => {\n if (value) {\n return `z.optional(${value})`\n }\n return '.optional()'\n },\n matches: (value = '', coercion?: boolean, mini?: boolean, min?: number, max?: number) => {\n if (mini) {\n const checks = buildLengthChecks(min, max)\n checks.push(`z.regex(${value})`)\n return `z.string().check(${checks.join(', ')})`\n }\n return [\n coercion ? 'z.coerce.string()' : 'z.string()',\n min !== undefined ? `.min(${min})` : undefined,\n max !== undefined ? `.max(${max})` : undefined,\n `.regex(${value})`,\n ]\n .filter(Boolean)\n .join('')\n },\n email: (coercion?: boolean, version: '3' | '4' = '3', min?: number, max?: number, mini?: boolean) => {\n if (mini) {\n const checks = buildLengthChecks(min, max)\n if (checks.length > 0) {\n return `z.email().check(${checks.join(', ')})`\n }\n return 'z.email()'\n }\n return [\n coercion ? (version === '4' ? 'z.email()' : 'z.coerce.string().email()') : version === '4' ? 'z.email()' : 'z.string().email()',\n min !== undefined ? `.min(${min})` : undefined,\n max !== undefined ? `.max(${max})` : undefined,\n ]\n .filter(Boolean)\n .join('')\n },\n firstName: undefined,\n lastName: undefined,\n password: undefined,\n phone: undefined,\n readOnly: undefined,\n writeOnly: undefined,\n ref: (value?: string) => {\n if (!value) {\n return undefined\n }\n\n return `z.lazy(() => ${value})`\n },\n blob: () => 'z.instanceof(File)',\n deprecated: undefined,\n example: undefined,\n schema: undefined,\n catchall: (value?: string, mini?: boolean) => {\n // Zod Mini doesn't support .catchall() method\n if (mini) {\n return undefined\n }\n return value ? `.catchall(${value})` : undefined\n },\n name: undefined,\n exclusiveMinimum: undefined,\n exclusiveMaximum: undefined,\n} satisfies SchemaMapper<string | null | undefined>\n\n/**\n * @link based on https://github.com/cellular/oazapfts/blob/7ba226ebb15374e8483cc53e7532f1663179a22c/src/codegen/generate.ts#L398\n */\n\nexport function sort(items?: Schema[]): Schema[] {\n const order: string[] = [\n schemaKeywords.string,\n schemaKeywords.datetime,\n schemaKeywords.date,\n schemaKeywords.time,\n schemaKeywords.tuple,\n schemaKeywords.number,\n schemaKeywords.object,\n schemaKeywords.enum,\n schemaKeywords.url,\n schemaKeywords.email,\n schemaKeywords.firstName,\n schemaKeywords.lastName,\n schemaKeywords.password,\n schemaKeywords.matches,\n schemaKeywords.uuid,\n schemaKeywords.null,\n schemaKeywords.min,\n schemaKeywords.max,\n schemaKeywords.default,\n schemaKeywords.describe,\n schemaKeywords.optional,\n schemaKeywords.nullable,\n schemaKeywords.nullish,\n ]\n\n if (!items) {\n return []\n }\n\n return transformers.orderBy(items, [(v) => order.indexOf(v.keyword)], ['asc'])\n}\n\ntype MiniModifiers = {\n hasOptional?: boolean\n hasNullable?: boolean\n hasNullish?: boolean\n defaultValue?: string | number | true | object\n}\n\n/**\n * Keywords that represent modifiers for mini mode\n * These are separated from the base schema and wrapped around it\n * Note: describe is included to filter it out, but won't be wrapped (Zod Mini doesn't support describe)\n */\nexport const miniModifierKeywords = [schemaKeywords.optional, schemaKeywords.nullable, schemaKeywords.nullish, schemaKeywords.default, schemaKeywords.describe]\n\n/**\n * Extracts mini mode modifiers from a schemas array\n * This can be reused by other parsers (e.g., valibot) that need similar functionality\n * Note: describe is not included as Zod Mini doesn't support it\n */\nexport function extractMiniModifiers(schemas: Schema[]): MiniModifiers {\n const defaultSchema = schemas.find((item) => isKeyword(item, schemaKeywords.default)) as { keyword: string; args: unknown } | undefined\n\n return {\n hasOptional: schemas.some((item) => isKeyword(item, schemaKeywords.optional)),\n hasNullable: schemas.some((item) => isKeyword(item, schemaKeywords.nullable)),\n hasNullish: schemas.some((item) => isKeyword(item, schemaKeywords.nullish)),\n defaultValue: defaultSchema?.args as string | number | true | object | undefined,\n }\n}\n\n/**\n * Filters out modifier keywords from schemas for mini mode base schema parsing\n * This can be reused by other parsers (e.g., valibot) that need similar functionality\n */\nexport function filterMiniModifiers(schemas: Schema[]): Schema[] {\n return schemas.filter((item) => !miniModifierKeywords.some((keyword) => isKeyword(item, keyword)))\n}\n\n/**\n * Wraps an output string with Zod Mini functional modifiers\n * Order: default (innermost) -> nullable -> optional (outermost)\n * OR: default -> nullish\n * Note: describe is not supported in Zod Mini and is skipped\n */\nexport function wrapWithMiniModifiers(output: string, modifiers: MiniModifiers): string {\n let result = output\n\n // Apply default first (innermost wrapper)\n if (modifiers.defaultValue !== undefined) {\n result = zodKeywordMapper.default(modifiers.defaultValue, result, true)!\n }\n\n // Apply nullish, nullable, or optional (outer wrappers for optionality)\n if (modifiers.hasNullish) {\n result = zodKeywordMapper.nullish(result)!\n } else {\n if (modifiers.hasNullable) {\n result = zodKeywordMapper.nullable(result)!\n }\n if (modifiers.hasOptional) {\n result = zodKeywordMapper.optional(result)!\n }\n }\n\n return result\n}\n\nconst shouldCoerce = (coercion: ParserOptions['coercion'] | undefined, type: 'dates' | 'strings' | 'numbers'): boolean => {\n if (coercion === undefined) {\n return false\n }\n if (typeof coercion === 'boolean') {\n return coercion\n }\n\n return !!coercion[type]\n}\n\ntype ParserOptions = {\n mapper?: Record<string, string>\n coercion?: boolean | { dates?: boolean; strings?: boolean; numbers?: boolean }\n wrapOutput?: (opts: { output: string; schema: any }) => string | undefined\n version: '3' | '4'\n skipLazyForRefs?: boolean\n mini?: boolean\n}\n\n// Create the parser using createParser\nexport const parse = createParser<string, ParserOptions>({\n mapper: zodKeywordMapper,\n handlers: {\n union(tree, options) {\n const { current, schema, parent, name, siblings } = tree\n\n // zod union type needs at least 2 items\n if (Array.isArray(current.args) && current.args.length === 1) {\n return this.parse({ schema, parent, name, current: current.args[0] as Schema, siblings }, options)\n }\n if (Array.isArray(current.args) && !current.args.length) {\n return ''\n }\n\n return zodKeywordMapper.union(\n sort(current.args)\n .map((it, _index, siblings) => this.parse({ schema, parent: current, name, current: it, siblings }, options))\n .filter(Boolean),\n )\n },\n and(tree, options) {\n const { current, schema, name } = tree\n\n const items = sort(current.args)\n .filter((schema: Schema) => {\n return ![schemaKeywords.optional, schemaKeywords.describe].includes(schema.keyword as typeof schemaKeywords.describe)\n })\n .map((it: Schema, _index, siblings) => this.parse({ schema, parent: current, name, current: it, siblings }, options))\n .filter(Boolean)\n\n return `${items.slice(0, 1)}${zodKeywordMapper.and(items.slice(1), options.mini)}`\n },\n array(tree, options) {\n const { current, schema, name } = tree\n\n return zodKeywordMapper.array(\n sort(current.args.items)\n .map((it, _index, siblings) => {\n return this.parse({ schema, parent: current, name, current: it, siblings }, options)\n })\n .filter(Boolean),\n current.args.min,\n current.args.max,\n current.args.unique,\n options.mini,\n )\n },\n enum(tree, options) {\n const { current, schema, name } = tree\n\n if (current.args.asConst) {\n if (current.args.items.length === 1) {\n const child = {\n keyword: schemaKeywords.const,\n args: current.args.items[0],\n }\n return this.parse({ schema, parent: current, name, current: child, siblings: [child] }, options)\n }\n\n return zodKeywordMapper.union(\n current.args.items\n .map((schema) => ({\n keyword: schemaKeywords.const,\n args: schema,\n }))\n .map((it, _index, siblings) => {\n return this.parse({ schema, parent: current, name, current: it, siblings }, options)\n })\n .filter(Boolean),\n )\n }\n\n return zodKeywordMapper.enum(\n current.args.items.map((schema) => {\n if (schema.format === 'boolean') {\n return transformers.stringify(schema.value)\n }\n\n if (schema.format === 'number') {\n return transformers.stringify(schema.value)\n }\n return transformers.stringify(schema.value)\n }),\n )\n },\n ref(tree, options) {\n const { current } = tree\n\n // Skip z.lazy wrapper if skipLazyForRefs is true (e.g., inside v4 getters)\n if (options.skipLazyForRefs) {\n return current.args?.name\n }\n return zodKeywordMapper.ref(current.args?.name)\n },\n object(tree, options) {\n const { current, schema, name } = tree\n\n const propertyEntries = Object.entries(current.args?.properties || {}).filter((item) => {\n const schema = item[1]\n return schema && typeof schema.map === 'function'\n })\n\n const properties = propertyEntries\n .map(([propertyName, schemas]) => {\n const nameSchema = schemas.find((it) => it.keyword === schemaKeywords.name) as SchemaKeywordMapper['name']\n const isNullable = schemas.some((it) => isKeyword(it, schemaKeywords.nullable))\n const isNullish = schemas.some((it) => isKeyword(it, schemaKeywords.nullish))\n const isOptional = schemas.some((it) => isKeyword(it, schemaKeywords.optional))\n const hasRef = !!SchemaGenerator.find(schemas, schemaKeywords.ref)\n\n const mappedName = nameSchema?.args || propertyName\n\n // custom mapper(pluginOptions)\n // Use Object.hasOwn to avoid matching inherited properties like 'toString', 'valueOf', etc.\n if (options.mapper && Object.hasOwn(options.mapper, mappedName)) {\n return `\"${propertyName}\": ${options.mapper?.[mappedName]}`\n }\n\n const baseSchemaOutput = sort(schemas)\n .filter((schema) => {\n return !isKeyword(schema, schemaKeywords.optional) && !isKeyword(schema, schemaKeywords.nullable) && !isKeyword(schema, schemaKeywords.nullish)\n })\n .map((it) => {\n // For v4 with refs, skip z.lazy wrapper since the getter provides lazy evaluation\n const skipLazyForRefs = options.version === '4' && hasRef\n return this.parse({ schema, parent: current, name, current: it, siblings: schemas }, { ...options, skipLazyForRefs })\n })\n .filter(Boolean)\n .join('')\n\n const objectValue = options.wrapOutput\n ? options.wrapOutput({ output: baseSchemaOutput, schema: schema?.properties?.[propertyName] }) || baseSchemaOutput\n : baseSchemaOutput\n\n if (options.version === '4' && hasRef) {\n // In mini mode, use functional wrappers instead of chainable methods\n if (options.mini) {\n // both optional and nullable\n if (isNullish) {\n return `get \"${propertyName}\"(){\n return ${zodKeywordMapper.nullish(objectValue)}\n }`\n }\n\n // undefined\n if (isOptional) {\n return `get \"${propertyName}\"(){\n return ${zodKeywordMapper.optional(objectValue)}\n }`\n }\n\n // null\n if (isNullable) {\n return `get \"${propertyName}\"(){\n return ${zodKeywordMapper.nullable(objectValue)}\n }`\n }\n\n return `get \"${propertyName}\"(){\n return ${objectValue}\n }`\n }\n\n // Non-mini mode uses chainable methods\n // both optional and nullable\n if (isNullish) {\n return `get \"${propertyName}\"(){\n return ${objectValue}${zodKeywordMapper.nullish()}\n }`\n }\n\n // undefined\n if (isOptional) {\n return `get \"${propertyName}\"(){\n return ${objectValue}${zodKeywordMapper.optional()}\n }`\n }\n\n // null\n if (isNullable) {\n return `get \"${propertyName}\"(){\n return ${objectValue}${zodKeywordMapper.nullable()}\n }`\n }\n\n return `get \"${propertyName}\"(){\n return ${objectValue}\n }`\n }\n\n // both optional and nullable\n if (isNullish) {\n return `\"${propertyName}\": ${objectValue}${zodKeywordMapper.nullish()}`\n }\n\n // undefined\n if (isOptional) {\n return `\"${propertyName}\": ${zodKeywordMapper.optional(objectValue)}`\n }\n\n // null\n if (isNullable) {\n return `\"${propertyName}\": ${zodKeywordMapper.nullable(objectValue)}`\n }\n\n return `\"${propertyName}\": ${objectValue}`\n })\n .join(',\\n')\n\n const additionalProperties = current.args?.additionalProperties?.length\n ? current.args.additionalProperties\n .map((it, _index, siblings) => this.parse({ schema, parent: current, name, current: it, siblings }, options))\n .filter(Boolean)\n .join('')\n : undefined\n\n const text = [\n zodKeywordMapper.object(properties, current.args?.strict, options.version),\n additionalProperties ? zodKeywordMapper.catchall(additionalProperties, options.mini) : undefined,\n ].filter(Boolean)\n\n return text.join('')\n },\n tuple(tree, options) {\n const { current, schema, name } = tree\n\n return zodKeywordMapper.tuple(\n current.args.items.map((it, _index, siblings) => this.parse({ schema, parent: current, name, current: it, siblings }, options)).filter(Boolean),\n )\n },\n const(tree, _options) {\n const { current } = tree\n\n if (current.args.format === 'number' && current.args.value !== undefined) {\n return zodKeywordMapper.const(Number(current.args.value))\n }\n\n if (current.args.format === 'boolean' && current.args.value !== undefined) {\n return zodKeywordMapper.const(typeof current.args.value === 'boolean' ? current.args.value : undefined)\n }\n return zodKeywordMapper.const(transformers.stringify(current.args.value))\n },\n matches(tree, options) {\n const { current, siblings } = tree\n\n // Early exit: if siblings contain both matches and ref → skip matches entirely\n const hasRef = siblings.some((it) => isKeyword(it, schemaKeywords.ref))\n if (hasRef) {\n return undefined // strip matches\n }\n\n const minSchema = findSchemaKeyword(siblings, 'min')\n const maxSchema = findSchemaKeyword(siblings, 'max')\n\n if (current.args) {\n return zodKeywordMapper.matches(\n transformers.toRegExpString(current.args, null),\n shouldCoerce(options.coercion, 'strings'),\n options.mini,\n minSchema?.args,\n maxSchema?.args,\n )\n }\n return undefined\n },\n default(tree, options) {\n const { current } = tree\n\n // In mini mode, default is handled by wrapWithMiniModifiers\n if (options.mini) {\n return undefined\n }\n if (current.args !== undefined) {\n return zodKeywordMapper.default(current.args)\n }\n // When args is undefined, call the mapper without arguments\n return zodKeywordMapper.default()\n },\n describe(tree, options) {\n const { current } = tree\n\n if (current.args) {\n return zodKeywordMapper.describe(transformers.stringify(current.args.toString()), undefined, options.mini)\n }\n return undefined\n },\n string(tree, options) {\n const { siblings } = tree\n\n const minSchema = findSchemaKeyword(siblings, 'min')\n const maxSchema = findSchemaKeyword(siblings, 'max')\n\n return zodKeywordMapper.string(shouldCoerce(options.coercion, 'strings'), minSchema?.args, maxSchema?.args, options.mini)\n },\n uuid(tree, options) {\n const { siblings } = tree\n\n const minSchema = findSchemaKeyword(siblings, 'min')\n const maxSchema = findSchemaKeyword(siblings, 'max')\n\n return zodKeywordMapper.uuid(shouldCoerce(options.coercion, 'strings'), options.version, minSchema?.args, maxSchema?.args, options.mini)\n },\n email(tree, options) {\n const { siblings } = tree\n\n const minSchema = findSchemaKeyword(siblings, 'min')\n const maxSchema = findSchemaKeyword(siblings, 'max')\n\n return zodKeywordMapper.email(shouldCoerce(options.coercion, 'strings'), options.version, minSchema?.args, maxSchema?.args, options.mini)\n },\n url(tree, options) {\n const { siblings } = tree\n\n const minSchema = findSchemaKeyword(siblings, 'min')\n const maxSchema = findSchemaKeyword(siblings, 'max')\n\n return zodKeywordMapper.url(shouldCoerce(options.coercion, 'strings'), options.version, minSchema?.args, maxSchema?.args, options.mini)\n },\n number(tree, options) {\n const { siblings } = tree\n\n const minSchema = findSchemaKeyword(siblings, 'min')\n const maxSchema = findSchemaKeyword(siblings, 'max')\n const exclusiveMinimumSchema = findSchemaKeyword(siblings, 'exclusiveMinimum')\n const exclusiveMaximumSchema = findSchemaKeyword(siblings, 'exclusiveMaximum')\n\n return zodKeywordMapper.number(\n shouldCoerce(options.coercion, 'numbers'),\n minSchema?.args,\n maxSchema?.args,\n exclusiveMinimumSchema?.args,\n exclusiveMaximumSchema?.args,\n options.mini,\n )\n },\n integer(tree, options) {\n const { siblings } = tree\n\n const minSchema = findSchemaKeyword(siblings, 'min')\n const maxSchema = findSchemaKeyword(siblings, 'max')\n const exclusiveMinimumSchema = findSchemaKeyword(siblings, 'exclusiveMinimum')\n const exclusiveMaximumSchema = findSchemaKeyword(siblings, 'exclusiveMaximum')\n\n return zodKeywordMapper.integer(\n shouldCoerce(options.coercion, 'numbers'),\n minSchema?.args,\n maxSchema?.args,\n options.version,\n exclusiveMinimumSchema?.args,\n exclusiveMaximumSchema?.args,\n options.mini,\n )\n },\n datetime(tree, options) {\n const { current } = tree\n\n return zodKeywordMapper.datetime(current.args.offset, current.args.local, options.version, options.mini)\n },\n date(tree, options) {\n const { current } = tree\n\n return zodKeywordMapper.date(current.args.type, shouldCoerce(options.coercion, 'dates'), options.version)\n },\n time(tree, options) {\n const { current } = tree\n\n return zodKeywordMapper.time(current.args.type, shouldCoerce(options.coercion, 'dates'), options.version)\n },\n },\n})\n","import transformers from '@kubb/core/transformers'\nimport type { SchemaObject } from '@kubb/oas'\nimport { isKeyword, type Schema, SchemaGenerator, schemaKeywords } from '@kubb/plugin-oas'\nimport { Const, File, Type } from '@kubb/react-fabric'\nimport type { KubbNode } from '@kubb/react-fabric/types'\nimport * as parserZod from '../parser.ts'\nimport type { PluginZod } from '../types.ts'\n\ntype Props = {\n name: string\n typeName?: string\n inferTypeName?: string\n tree: Array<Schema>\n schema: SchemaObject\n description?: string\n coercion: PluginZod['resolvedOptions']['coercion']\n mapper: PluginZod['resolvedOptions']['mapper']\n keysToOmit?: string[]\n wrapOutput?: PluginZod['resolvedOptions']['wrapOutput']\n version: '3' | '4'\n emptySchemaType: PluginZod['resolvedOptions']['emptySchemaType']\n mini?: boolean\n}\n\nexport function Zod({\n name,\n typeName,\n tree,\n schema,\n inferTypeName,\n mapper,\n coercion,\n keysToOmit,\n description,\n wrapOutput,\n version,\n emptySchemaType,\n mini = false,\n}: Props): KubbNode {\n const hasTuple = !!SchemaGenerator.find(tree, schemaKeywords.tuple)\n\n const schemas = parserZod.sort(tree).filter((item) => {\n if (hasTuple && (isKeyword(item, schemaKeywords.min) || isKeyword(item, schemaKeywords.max))) {\n return false\n }\n\n return true\n })\n\n // In mini mode, filter out modifiers from the main schema parsing\n const baseSchemas = mini ? parserZod.filterMiniModifiers(schemas) : schemas\n\n const output = baseSchemas\n .map((schemaKeyword, index) => {\n const siblings = baseSchemas.filter((_, i) => i !== index)\n\n return parserZod.parse({ schema, parent: undefined, current: schemaKeyword, siblings, name }, { mapper, coercion, wrapOutput, version, mini })\n })\n .filter(Boolean)\n .join('')\n\n let suffix = ''\n const firstSchema = schemas.at(0)\n const lastSchema = schemas.at(-1)\n\n if (!mini && lastSchema && isKeyword(lastSchema, schemaKeywords.nullable)) {\n if (firstSchema && isKeyword(firstSchema, schemaKeywords.ref)) {\n if (version === '3') {\n suffix = '.unwrap().schema.unwrap()'\n } else {\n suffix = '.unwrap().unwrap()'\n }\n } else {\n suffix = '.unwrap()'\n }\n } else if (!mini) {\n if (firstSchema && isKeyword(firstSchema, schemaKeywords.ref)) {\n if (version === '3') {\n suffix = '.schema'\n } else {\n suffix = '.unwrap()'\n }\n }\n }\n\n const emptyValue = parserZod.parse(\n {\n schema,\n parent: undefined,\n current: {\n keyword: schemaKeywords[emptySchemaType],\n },\n siblings: [],\n },\n { mapper, coercion, wrapOutput, version, mini },\n )\n\n let baseSchemaOutput =\n [output, keysToOmit?.length ? `${suffix}.omit({ ${keysToOmit.map((key) => `'${key}': true`).join(',')} })` : undefined].filter(Boolean).join('') ||\n emptyValue ||\n ''\n\n // For mini mode, wrap the output with modifiers using the parser function\n if (mini) {\n baseSchemaOutput = parserZod.wrapWithMiniModifiers(baseSchemaOutput, parserZod.extractMiniModifiers(schemas))\n }\n\n const wrappedSchemaOutput = wrapOutput ? wrapOutput({ output: baseSchemaOutput, schema }) || baseSchemaOutput : baseSchemaOutput\n const finalOutput = typeName ? `${wrappedSchemaOutput} as unknown as ${version === '4' ? 'z.ZodType' : 'ToZod'}<${typeName}>` : wrappedSchemaOutput\n\n return (\n <>\n <File.Source name={name} isExportable isIndexable>\n <Const\n export\n name={name}\n JSDoc={{\n comments: [description ? `@description ${transformers.jsStringEscape(description)}` : undefined].filter(Boolean),\n }}\n >\n {finalOutput}\n </Const>\n </File.Source>\n {inferTypeName && (\n <File.Source name={inferTypeName} isExportable isIndexable isTypeOnly>\n {typeName && (\n <Type export name={inferTypeName}>\n {typeName}\n </Type>\n )}\n {!typeName && (\n <Type export name={inferTypeName}>\n {`z.infer<typeof ${name}>`}\n </Type>\n )}\n </File.Source>\n )}\n </>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"components-BgtqtaQt.js","names":["schema","parserZod.sort","parserZod.filterMiniModifiers","parserZod.parse","parserZod.wrapWithMiniModifiers","parserZod.extractMiniModifiers"],"sources":["../src/components/Operations.tsx","../src/parser.ts","../src/components/Zod.tsx"],"sourcesContent":["import transformers from '@kubb/core/transformers'\nimport type { HttpMethod, Operation } from '@kubb/oas'\nimport type { SchemaNames } from '@kubb/plugin-oas/hooks'\nimport { Const, File, Type } from '@kubb/react-fabric'\nimport type { KubbNode } from '@kubb/react-fabric/types'\n\ntype Props = {\n name: string\n operations: Array<{ operation: Operation; data: SchemaNames }>\n}\n\nexport function Operations({ name, operations }: Props): KubbNode {\n const operationsJSON = operations.reduce(\n (prev, acc) => {\n prev[`\"${acc.operation.getOperationId()}\"`] = acc.data\n\n return prev\n },\n {} as Record<string, unknown>,\n )\n\n const pathsJSON = operations.reduce(\n (prev, acc) => {\n prev[`\"${acc.operation.path}\"`] = {\n ...(prev[`\"${acc.operation.path}\"`] || ({} as Record<HttpMethod, string>)),\n [acc.operation.method]: `operations[\"${acc.operation.getOperationId()}\"]`,\n }\n\n return prev\n },\n {} as Record<string, Record<HttpMethod, string>>,\n )\n\n return (\n <>\n <File.Source name=\"OperationSchema\" isExportable isIndexable>\n <Type name=\"OperationSchema\" export>{`{\n readonly request: z.ZodTypeAny | undefined;\n readonly parameters: {\n readonly path: z.ZodTypeAny | undefined;\n readonly query: z.ZodTypeAny | undefined;\n readonly header: z.ZodTypeAny | undefined;\n };\n readonly responses: {\n readonly [status: number]: z.ZodTypeAny;\n readonly default: z.ZodTypeAny;\n };\n readonly errors: {\n readonly [status: number]: z.ZodTypeAny;\n };\n}`}</Type>\n </File.Source>\n <File.Source name=\"OperationsMap\" isExportable isIndexable>\n <Type name=\"OperationsMap\" export>\n {'Record<string, OperationSchema>'}\n </Type>\n </File.Source>\n <File.Source name={name} isExportable isIndexable>\n <Const export name={name} asConst>\n {`{${transformers.stringifyObject(operationsJSON)}}`}\n </Const>\n </File.Source>\n <File.Source name={'paths'} isExportable isIndexable>\n <Const export name={'paths'} asConst>\n {`{${transformers.stringifyObject(pathsJSON)}}`}\n </Const>\n </File.Source>\n </>\n )\n}\n","import transformers from '@kubb/core/transformers'\n\nimport type { Schema, SchemaMapper } from '@kubb/plugin-oas'\nimport { createParser, findSchemaKeyword, isKeyword, SchemaGenerator, type SchemaKeywordMapper, schemaKeywords } from '@kubb/plugin-oas'\n\n//TODO add zodKeywordMapper as function that returns 3 versions: v3, v4 and v4 mini, this can also be used to have the custom mapping(see object type)\n// also include shouldCoerce\n\n/**\n * Helper to build string/array length constraint checks for Zod Mini mode\n */\nfunction buildLengthChecks(min?: number, max?: number): string[] {\n const checks: string[] = []\n if (min !== undefined) checks.push(`z.minLength(${min})`)\n if (max !== undefined) checks.push(`z.maxLength(${max})`)\n return checks\n}\n\nconst zodKeywordMapper = {\n any: () => 'z.any()',\n unknown: () => 'z.unknown()',\n void: () => 'z.void()',\n number: (coercion?: boolean, min?: number, max?: number, exclusiveMinimum?: number, exclusiveMaximum?: number, mini?: boolean) => {\n if (mini) {\n const checks: string[] = []\n if (min !== undefined) checks.push(`z.minimum(${min})`)\n if (max !== undefined) checks.push(`z.maximum(${max})`)\n if (exclusiveMinimum !== undefined) checks.push(`z.minimum(${exclusiveMinimum}, { exclusive: true })`)\n if (exclusiveMaximum !== undefined) checks.push(`z.maximum(${exclusiveMaximum}, { exclusive: true })`)\n if (checks.length > 0) {\n return `z.number().check(${checks.join(', ')})`\n }\n return 'z.number()'\n }\n return [\n coercion ? 'z.coerce.number()' : 'z.number()',\n min !== undefined ? `.min(${min})` : undefined,\n max !== undefined ? `.max(${max})` : undefined,\n exclusiveMinimum !== undefined ? `.gt(${exclusiveMinimum})` : undefined,\n exclusiveMaximum !== undefined ? `.lt(${exclusiveMaximum})` : undefined,\n ]\n .filter(Boolean)\n .join('')\n },\n integer: (coercion?: boolean, min?: number, max?: number, version: '3' | '4' = '3', exclusiveMinimum?: number, exclusiveMaximum?: number, mini?: boolean) => {\n if (mini) {\n const checks: string[] = []\n if (min !== undefined) checks.push(`z.minimum(${min})`)\n if (max !== undefined) checks.push(`z.maximum(${max})`)\n if (exclusiveMinimum !== undefined) checks.push(`z.minimum(${exclusiveMinimum}, { exclusive: true })`)\n if (exclusiveMaximum !== undefined) checks.push(`z.maximum(${exclusiveMaximum}, { exclusive: true })`)\n if (checks.length > 0) {\n return `z.int().check(${checks.join(', ')})`\n }\n return 'z.int()'\n }\n return [\n coercion ? 'z.coerce.number().int()' : version === '4' ? 'z.int()' : 'z.number().int()',\n min !== undefined ? `.min(${min})` : undefined,\n max !== undefined ? `.max(${max})` : undefined,\n exclusiveMinimum !== undefined ? `.gt(${exclusiveMinimum})` : undefined,\n exclusiveMaximum !== undefined ? `.lt(${exclusiveMaximum})` : undefined,\n ]\n .filter(Boolean)\n .join('')\n },\n interface: (value?: string, strict?: boolean) => {\n if (strict) {\n return `z.strictInterface({\n ${value}\n })`\n }\n return `z.interface({\n ${value}\n })`\n },\n object: (value?: string, strict?: boolean, version: '3' | '4' = '3') => {\n if (version === '4' && strict) {\n return `z.strictObject({\n ${value}\n })`\n }\n\n if (strict) {\n return `z.object({\n ${value}\n }).strict()`\n }\n\n return `z.object({\n ${value}\n })`\n },\n string: (coercion?: boolean, min?: number, max?: number, mini?: boolean) => {\n if (mini) {\n const checks = buildLengthChecks(min, max)\n if (checks.length > 0) {\n return `z.string().check(${checks.join(', ')})`\n }\n return 'z.string()'\n }\n return [coercion ? 'z.coerce.string()' : 'z.string()', min !== undefined ? `.min(${min})` : undefined, max !== undefined ? `.max(${max})` : undefined]\n .filter(Boolean)\n .join('')\n },\n //support for discriminatedUnion\n boolean: () => 'z.boolean()',\n undefined: () => 'z.undefined()',\n nullable: (value?: string) => {\n if (value) {\n return `z.nullable(${value})`\n }\n return '.nullable()'\n },\n null: () => 'z.null()',\n nullish: (value?: string) => {\n if (value) {\n return `z.nullish(${value})`\n }\n return '.nullish()'\n },\n array: (items: string[] = [], min?: number, max?: number, unique?: boolean, mini?: boolean) => {\n if (mini) {\n const checks = buildLengthChecks(min, max)\n if (unique) checks.push(`z.refine(items => new Set(items).size === items.length, { message: \"Array entries must be unique\" })`)\n if (checks.length > 0) {\n return `z.array(${items?.join('')}).check(${checks.join(', ')})`\n }\n return `z.array(${items?.join('')})`\n }\n return [\n `z.array(${items?.join('')})`,\n min !== undefined ? `.min(${min})` : undefined,\n max !== undefined ? `.max(${max})` : undefined,\n unique ? `.refine(items => new Set(items).size === items.length, { message: \"Array entries must be unique\" })` : undefined,\n ]\n .filter(Boolean)\n .join('')\n },\n tuple: (items: string[] = []) => `z.tuple([${items?.join(', ')}])`,\n enum: (items: string[] = []) => `z.enum([${items?.join(', ')}])`,\n union: (items: string[] = []) => `z.union([${items?.join(', ')}])`,\n const: (value?: string | number | boolean) => `z.literal(${value ?? ''})`,\n /**\n * ISO 8601\n */\n datetime: (offset = false, local = false, version: '3' | '4' = '3', mini?: boolean) => {\n // Zod Mini doesn't support .datetime() method, use plain string\n if (mini) {\n return 'z.string()'\n }\n\n if (offset) {\n return version === '4' ? `z.iso.datetime({ offset: ${offset} })` : `z.string().datetime({ offset: ${offset} })`\n }\n\n if (local) {\n return version === '4' ? `z.iso.datetime({ local: ${local} })` : `z.string().datetime({ local: ${local} })`\n }\n\n return version === '4' ? 'z.iso.datetime()' : 'z.string().datetime()'\n },\n /**\n * Type `'date'` Date\n * Type `'string'` ISO date format (YYYY-MM-DD)\n * @default ISO date format (YYYY-MM-DD)\n */\n date: (type: 'date' | 'string' = 'string', coercion?: boolean, version: '3' | '4' = '3') => {\n if (type === 'string') {\n return version === '4' ? 'z.iso.date()' : 'z.string().date()'\n }\n\n if (coercion) {\n return 'z.coerce.date()'\n }\n\n return 'z.date()'\n },\n /**\n * Type `'date'` Date\n * Type `'string'` ISO time format (HH:mm:ss[.SSSSSS])\n * @default ISO time format (HH:mm:ss[.SSSSSS])\n */\n time: (type: 'date' | 'string' = 'string', coercion?: boolean, version: '3' | '4' = '3') => {\n if (type === 'string') {\n return version === '4' ? 'z.iso.time()' : 'z.string().time()'\n }\n\n if (coercion) {\n return 'z.coerce.date()'\n }\n\n return 'z.date()'\n },\n uuid: (coercion?: boolean, version: '3' | '4' = '3', min?: number, max?: number, mini?: boolean) => {\n if (mini) {\n const checks = buildLengthChecks(min, max)\n if (checks.length > 0) {\n return `z.uuid().check(${checks.join(', ')})`\n }\n return 'z.uuid()'\n }\n return [\n coercion ? (version === '4' ? 'z.uuid()' : 'z.coerce.string().uuid()') : version === '4' ? 'z.uuid()' : 'z.string().uuid()',\n min !== undefined ? `.min(${min})` : undefined,\n max !== undefined ? `.max(${max})` : undefined,\n ]\n .filter(Boolean)\n .join('')\n },\n url: (coercion?: boolean, version: '3' | '4' = '3', min?: number, max?: number, mini?: boolean) => {\n if (mini) {\n const checks = buildLengthChecks(min, max)\n if (checks.length > 0) {\n return `z.url().check(${checks.join(', ')})`\n }\n return 'z.url()'\n }\n return [\n coercion ? (version === '4' ? 'z.url()' : 'z.coerce.string().url()') : version === '4' ? 'z.url()' : 'z.string().url()',\n min !== undefined ? `.min(${min})` : undefined,\n max !== undefined ? `.max(${max})` : undefined,\n ]\n .filter(Boolean)\n .join('')\n },\n default: (value?: string | number | boolean | object, innerSchema?: string, mini?: boolean) => {\n if (mini && innerSchema) {\n const defaultValue = typeof value === 'object' ? '{}' : (value ?? '')\n return `z._default(${innerSchema}, ${defaultValue})`\n }\n\n if (typeof value === 'object') {\n return '.default({})'\n }\n\n if (value === undefined) {\n return '.default()'\n }\n\n if (typeof value === 'string' && !value) {\n return `.default('')`\n }\n\n return `.default(${value ?? ''})`\n },\n and: (items: string[] = [], mini?: boolean) => {\n // zod/mini doesn't support .and() method, so we can't use intersection types\n // In mini mode, we try to extract and append .check() calls instead\n if (mini && items.length > 0) {\n // Try to extract check calls from additional items\n const checks: string[] = []\n for (const item of items) {\n // Extract .check(...) from patterns like \"z.string().check(...)\"\n // Need to handle nested parentheses properly\n const checkStart = item.indexOf('.check(')\n if (checkStart !== -1) {\n // Find the matching closing parenthesis\n let depth = 0\n let i = checkStart + 7 // length of '.check('\n let checkContent = ''\n while (i < item.length) {\n const char = item[i]\n if (char === '(') depth++\n else if (char === ')') {\n if (depth === 0) break\n depth--\n }\n checkContent += char\n i++\n }\n if (checkContent) {\n checks.push(checkContent)\n }\n }\n }\n\n if (checks.length > 0) {\n // Append checks to the base schema\n return `.check(${checks.join(', ')})`\n }\n\n // If we can't extract checks, just use the first schema (limitation)\n return ''\n }\n return items?.map((item) => `.and(${item})`).join('')\n },\n describe: (value = '', innerSchema?: string, mini?: boolean) => {\n if (mini) {\n return undefined\n }\n\n if (innerSchema) {\n return `z.describe(${innerSchema}, ${value})`\n }\n return `.describe(${value})`\n },\n max: undefined,\n min: undefined,\n optional: (value?: string) => {\n if (value) {\n return `z.optional(${value})`\n }\n return '.optional()'\n },\n matches: (value = '', coercion?: boolean, mini?: boolean, min?: number, max?: number) => {\n if (mini) {\n const checks = buildLengthChecks(min, max)\n checks.push(`z.regex(${value})`)\n return `z.string().check(${checks.join(', ')})`\n }\n return [\n coercion ? 'z.coerce.string()' : 'z.string()',\n min !== undefined ? `.min(${min})` : undefined,\n max !== undefined ? `.max(${max})` : undefined,\n `.regex(${value})`,\n ]\n .filter(Boolean)\n .join('')\n },\n email: (coercion?: boolean, version: '3' | '4' = '3', min?: number, max?: number, mini?: boolean) => {\n if (mini) {\n const checks = buildLengthChecks(min, max)\n if (checks.length > 0) {\n return `z.email().check(${checks.join(', ')})`\n }\n return 'z.email()'\n }\n return [\n coercion ? (version === '4' ? 'z.email()' : 'z.coerce.string().email()') : version === '4' ? 'z.email()' : 'z.string().email()',\n min !== undefined ? `.min(${min})` : undefined,\n max !== undefined ? `.max(${max})` : undefined,\n ]\n .filter(Boolean)\n .join('')\n },\n firstName: undefined,\n lastName: undefined,\n password: undefined,\n phone: undefined,\n readOnly: undefined,\n writeOnly: undefined,\n ref: (value?: string) => {\n if (!value) {\n return undefined\n }\n\n return `z.lazy(() => ${value})`\n },\n blob: () => 'z.instanceof(File)',\n deprecated: undefined,\n example: undefined,\n schema: undefined,\n catchall: (value?: string, mini?: boolean) => {\n // Zod Mini doesn't support .catchall() method\n if (mini) {\n return undefined\n }\n return value ? `.catchall(${value})` : undefined\n },\n name: undefined,\n exclusiveMinimum: undefined,\n exclusiveMaximum: undefined,\n} satisfies SchemaMapper<string | null | undefined>\n\n/**\n * @link based on https://github.com/cellular/oazapfts/blob/7ba226ebb15374e8483cc53e7532f1663179a22c/src/codegen/generate.ts#L398\n */\n\nexport function sort(items?: Schema[]): Schema[] {\n const order: string[] = [\n schemaKeywords.string,\n schemaKeywords.datetime,\n schemaKeywords.date,\n schemaKeywords.time,\n schemaKeywords.tuple,\n schemaKeywords.number,\n schemaKeywords.object,\n schemaKeywords.enum,\n schemaKeywords.url,\n schemaKeywords.email,\n schemaKeywords.firstName,\n schemaKeywords.lastName,\n schemaKeywords.password,\n schemaKeywords.matches,\n schemaKeywords.uuid,\n schemaKeywords.null,\n schemaKeywords.min,\n schemaKeywords.max,\n schemaKeywords.default,\n schemaKeywords.describe,\n schemaKeywords.optional,\n schemaKeywords.nullable,\n schemaKeywords.nullish,\n ]\n\n if (!items) {\n return []\n }\n\n return transformers.orderBy(items, [(v) => order.indexOf(v.keyword)], ['asc'])\n}\n\ntype MiniModifiers = {\n hasOptional?: boolean\n hasNullable?: boolean\n hasNullish?: boolean\n defaultValue?: string | number | true | object\n}\n\n/**\n * Keywords that represent modifiers for mini mode\n * These are separated from the base schema and wrapped around it\n * Note: describe is included to filter it out, but won't be wrapped (Zod Mini doesn't support describe)\n */\nexport const miniModifierKeywords = [schemaKeywords.optional, schemaKeywords.nullable, schemaKeywords.nullish, schemaKeywords.default, schemaKeywords.describe]\n\n/**\n * Extracts mini mode modifiers from a schemas array\n * This can be reused by other parsers (e.g., valibot) that need similar functionality\n * Note: describe is not included as Zod Mini doesn't support it\n */\nexport function extractMiniModifiers(schemas: Schema[]): MiniModifiers {\n const defaultSchema = schemas.find((item) => isKeyword(item, schemaKeywords.default)) as { keyword: string; args: unknown } | undefined\n\n return {\n hasOptional: schemas.some((item) => isKeyword(item, schemaKeywords.optional)),\n hasNullable: schemas.some((item) => isKeyword(item, schemaKeywords.nullable)),\n hasNullish: schemas.some((item) => isKeyword(item, schemaKeywords.nullish)),\n defaultValue: defaultSchema?.args as string | number | true | object | undefined,\n }\n}\n\n/**\n * Filters out modifier keywords from schemas for mini mode base schema parsing\n * This can be reused by other parsers (e.g., valibot) that need similar functionality\n */\nexport function filterMiniModifiers(schemas: Schema[]): Schema[] {\n return schemas.filter((item) => !miniModifierKeywords.some((keyword) => isKeyword(item, keyword)))\n}\n\n/**\n * Wraps an output string with Zod Mini functional modifiers\n * Order: default (innermost) -> nullable -> optional (outermost)\n * OR: default -> nullish\n * Note: describe is not supported in Zod Mini and is skipped\n */\nexport function wrapWithMiniModifiers(output: string, modifiers: MiniModifiers): string {\n let result = output\n\n // Apply default first (innermost wrapper)\n if (modifiers.defaultValue !== undefined) {\n result = zodKeywordMapper.default(modifiers.defaultValue, result, true)!\n }\n\n // Apply nullish, nullable, or optional (outer wrappers for optionality)\n if (modifiers.hasNullish) {\n result = zodKeywordMapper.nullish(result)!\n } else {\n if (modifiers.hasNullable) {\n result = zodKeywordMapper.nullable(result)!\n }\n if (modifiers.hasOptional) {\n result = zodKeywordMapper.optional(result)!\n }\n }\n\n return result\n}\n\nconst shouldCoerce = (coercion: ParserOptions['coercion'] | undefined, type: 'dates' | 'strings' | 'numbers'): boolean => {\n if (coercion === undefined) {\n return false\n }\n if (typeof coercion === 'boolean') {\n return coercion\n }\n\n return !!coercion[type]\n}\n\ntype ParserOptions = {\n mapper?: Record<string, string>\n coercion?: boolean | { dates?: boolean; strings?: boolean; numbers?: boolean }\n wrapOutput?: (opts: { output: string; schema: any }) => string | undefined\n version: '3' | '4'\n skipLazyForRefs?: boolean\n mini?: boolean\n}\n\n// Create the parser using createParser\nexport const parse = createParser<string, ParserOptions>({\n mapper: zodKeywordMapper,\n handlers: {\n union(tree, options) {\n const { current, schema, parent, name, siblings } = tree\n\n // zod union type needs at least 2 items\n if (Array.isArray(current.args) && current.args.length === 1) {\n return this.parse({ schema, parent, name, current: current.args[0] as Schema, siblings }, options)\n }\n if (Array.isArray(current.args) && !current.args.length) {\n return ''\n }\n\n return zodKeywordMapper.union(\n sort(current.args)\n .map((it, _index, siblings) => this.parse({ schema, parent: current, name, current: it, siblings }, options))\n .filter(Boolean),\n )\n },\n and(tree, options) {\n const { current, schema, name } = tree\n\n const items = sort(current.args)\n .filter((schema: Schema) => {\n return ![schemaKeywords.optional, schemaKeywords.describe].includes(schema.keyword as typeof schemaKeywords.describe)\n })\n .map((it: Schema, _index, siblings) => this.parse({ schema, parent: current, name, current: it, siblings }, options))\n .filter(Boolean)\n\n return `${items.slice(0, 1)}${zodKeywordMapper.and(items.slice(1), options.mini)}`\n },\n array(tree, options) {\n const { current, schema, name } = tree\n\n return zodKeywordMapper.array(\n sort(current.args.items)\n .map((it, _index, siblings) => {\n return this.parse({ schema, parent: current, name, current: it, siblings }, options)\n })\n .filter(Boolean),\n current.args.min,\n current.args.max,\n current.args.unique,\n options.mini,\n )\n },\n enum(tree, options) {\n const { current, schema, name } = tree\n\n if (current.args.asConst) {\n if (current.args.items.length === 1) {\n const child = {\n keyword: schemaKeywords.const,\n args: current.args.items[0],\n }\n return this.parse({ schema, parent: current, name, current: child, siblings: [child] }, options)\n }\n\n return zodKeywordMapper.union(\n current.args.items\n .map((schema) => ({\n keyword: schemaKeywords.const,\n args: schema,\n }))\n .map((it, _index, siblings) => {\n return this.parse({ schema, parent: current, name, current: it, siblings }, options)\n })\n .filter(Boolean),\n )\n }\n\n return zodKeywordMapper.enum(\n current.args.items.map((schema) => {\n if (schema.format === 'boolean') {\n return transformers.stringify(schema.value)\n }\n\n if (schema.format === 'number') {\n return transformers.stringify(schema.value)\n }\n return transformers.stringify(schema.value)\n }),\n )\n },\n ref(tree, options) {\n const { current } = tree\n\n // Skip z.lazy wrapper if skipLazyForRefs is true (e.g., inside v4 getters)\n if (options.skipLazyForRefs) {\n return current.args?.name\n }\n return zodKeywordMapper.ref(current.args?.name)\n },\n object(tree, options) {\n const { current, schema, name } = tree\n\n const propertyEntries = Object.entries(current.args?.properties || {}).filter((item) => {\n const schema = item[1]\n return schema && typeof schema.map === 'function'\n })\n\n const properties = propertyEntries\n .map(([propertyName, schemas]) => {\n const nameSchema = schemas.find((it) => it.keyword === schemaKeywords.name) as SchemaKeywordMapper['name']\n const isNullable = schemas.some((it) => isKeyword(it, schemaKeywords.nullable))\n const isNullish = schemas.some((it) => isKeyword(it, schemaKeywords.nullish))\n const isOptional = schemas.some((it) => isKeyword(it, schemaKeywords.optional))\n const hasRef = !!SchemaGenerator.find(schemas, schemaKeywords.ref)\n\n const mappedName = nameSchema?.args || propertyName\n\n // custom mapper(pluginOptions)\n // Use Object.hasOwn to avoid matching inherited properties like 'toString', 'valueOf', etc.\n if (options.mapper && Object.hasOwn(options.mapper, mappedName)) {\n return `\"${propertyName}\": ${options.mapper?.[mappedName]}`\n }\n\n const baseSchemaOutput = sort(schemas)\n .filter((schema) => {\n return !isKeyword(schema, schemaKeywords.optional) && !isKeyword(schema, schemaKeywords.nullable) && !isKeyword(schema, schemaKeywords.nullish)\n })\n .map((it) => {\n // For v4 with refs, skip z.lazy wrapper since the getter provides lazy evaluation\n const skipLazyForRefs = options.version === '4' && hasRef\n return this.parse({ schema, parent: current, name, current: it, siblings: schemas }, { ...options, skipLazyForRefs })\n })\n .filter(Boolean)\n .join('')\n\n const objectValue = options.wrapOutput\n ? options.wrapOutput({ output: baseSchemaOutput, schema: schema?.properties?.[propertyName] }) || baseSchemaOutput\n : baseSchemaOutput\n\n if (options.version === '4' && hasRef) {\n // In mini mode, use functional wrappers instead of chainable methods\n if (options.mini) {\n // both optional and nullable\n if (isNullish) {\n return `get \"${propertyName}\"(){\n return ${zodKeywordMapper.nullish(objectValue)}\n }`\n }\n\n // undefined\n if (isOptional) {\n return `get \"${propertyName}\"(){\n return ${zodKeywordMapper.optional(objectValue)}\n }`\n }\n\n // null\n if (isNullable) {\n return `get \"${propertyName}\"(){\n return ${zodKeywordMapper.nullable(objectValue)}\n }`\n }\n\n return `get \"${propertyName}\"(){\n return ${objectValue}\n }`\n }\n\n // Non-mini mode uses chainable methods\n // both optional and nullable\n if (isNullish) {\n return `get \"${propertyName}\"(){\n return ${objectValue}${zodKeywordMapper.nullish()}\n }`\n }\n\n // undefined\n if (isOptional) {\n return `get \"${propertyName}\"(){\n return ${objectValue}${zodKeywordMapper.optional()}\n }`\n }\n\n // null\n if (isNullable) {\n return `get \"${propertyName}\"(){\n return ${objectValue}${zodKeywordMapper.nullable()}\n }`\n }\n\n return `get \"${propertyName}\"(){\n return ${objectValue}\n }`\n }\n\n // both optional and nullable\n if (isNullish && options.mini) {\n return `\"${propertyName}\": ${zodKeywordMapper.nullish(objectValue)}`\n }\n\n if (isNullish && !options.mini) {\n return `\"${propertyName}\": ${objectValue}${zodKeywordMapper.nullish()}`\n }\n\n // undefined\n if (isOptional) {\n return `\"${propertyName}\": ${zodKeywordMapper.optional(objectValue)}`\n }\n\n // null\n if (isNullable) {\n return `\"${propertyName}\": ${zodKeywordMapper.nullable(objectValue)}`\n }\n\n return `\"${propertyName}\": ${objectValue}`\n })\n .join(',\\n')\n\n const additionalProperties = current.args?.additionalProperties?.length\n ? current.args.additionalProperties\n .map((it, _index, siblings) => this.parse({ schema, parent: current, name, current: it, siblings }, options))\n .filter(Boolean)\n .join('')\n : undefined\n\n const text = [\n zodKeywordMapper.object(properties, current.args?.strict, options.version),\n additionalProperties ? zodKeywordMapper.catchall(additionalProperties, options.mini) : undefined,\n ].filter(Boolean)\n\n return text.join('')\n },\n tuple(tree, options) {\n const { current, schema, name } = tree\n\n return zodKeywordMapper.tuple(\n current.args.items.map((it, _index, siblings) => this.parse({ schema, parent: current, name, current: it, siblings }, options)).filter(Boolean),\n )\n },\n const(tree, _options) {\n const { current } = tree\n\n if (current.args.format === 'number' && current.args.value !== undefined) {\n return zodKeywordMapper.const(Number(current.args.value))\n }\n\n if (current.args.format === 'boolean' && current.args.value !== undefined) {\n return zodKeywordMapper.const(typeof current.args.value === 'boolean' ? current.args.value : undefined)\n }\n return zodKeywordMapper.const(transformers.stringify(current.args.value))\n },\n matches(tree, options) {\n const { current, siblings } = tree\n\n // Early exit: if siblings contain both matches and ref → skip matches entirely\n const hasRef = siblings.some((it) => isKeyword(it, schemaKeywords.ref))\n if (hasRef) {\n return undefined // strip matches\n }\n\n const minSchema = findSchemaKeyword(siblings, 'min')\n const maxSchema = findSchemaKeyword(siblings, 'max')\n\n if (current.args) {\n return zodKeywordMapper.matches(\n transformers.toRegExpString(current.args, null),\n shouldCoerce(options.coercion, 'strings'),\n options.mini,\n minSchema?.args,\n maxSchema?.args,\n )\n }\n return undefined\n },\n default(tree, options) {\n const { current } = tree\n\n // In mini mode, default is handled by wrapWithMiniModifiers\n if (options.mini) {\n return undefined\n }\n if (current.args !== undefined) {\n return zodKeywordMapper.default(current.args)\n }\n // When args is undefined, call the mapper without arguments\n return zodKeywordMapper.default()\n },\n describe(tree, options) {\n const { current } = tree\n\n if (current.args) {\n return zodKeywordMapper.describe(transformers.stringify(current.args.toString()), undefined, options.mini)\n }\n return undefined\n },\n string(tree, options) {\n const { siblings } = tree\n\n const minSchema = findSchemaKeyword(siblings, 'min')\n const maxSchema = findSchemaKeyword(siblings, 'max')\n\n return zodKeywordMapper.string(shouldCoerce(options.coercion, 'strings'), minSchema?.args, maxSchema?.args, options.mini)\n },\n uuid(tree, options) {\n const { siblings } = tree\n\n const minSchema = findSchemaKeyword(siblings, 'min')\n const maxSchema = findSchemaKeyword(siblings, 'max')\n\n return zodKeywordMapper.uuid(shouldCoerce(options.coercion, 'strings'), options.version, minSchema?.args, maxSchema?.args, options.mini)\n },\n email(tree, options) {\n const { siblings } = tree\n\n const minSchema = findSchemaKeyword(siblings, 'min')\n const maxSchema = findSchemaKeyword(siblings, 'max')\n\n return zodKeywordMapper.email(shouldCoerce(options.coercion, 'strings'), options.version, minSchema?.args, maxSchema?.args, options.mini)\n },\n url(tree, options) {\n const { siblings } = tree\n\n const minSchema = findSchemaKeyword(siblings, 'min')\n const maxSchema = findSchemaKeyword(siblings, 'max')\n\n return zodKeywordMapper.url(shouldCoerce(options.coercion, 'strings'), options.version, minSchema?.args, maxSchema?.args, options.mini)\n },\n number(tree, options) {\n const { siblings } = tree\n\n const minSchema = findSchemaKeyword(siblings, 'min')\n const maxSchema = findSchemaKeyword(siblings, 'max')\n const exclusiveMinimumSchema = findSchemaKeyword(siblings, 'exclusiveMinimum')\n const exclusiveMaximumSchema = findSchemaKeyword(siblings, 'exclusiveMaximum')\n\n return zodKeywordMapper.number(\n shouldCoerce(options.coercion, 'numbers'),\n minSchema?.args,\n maxSchema?.args,\n exclusiveMinimumSchema?.args,\n exclusiveMaximumSchema?.args,\n options.mini,\n )\n },\n integer(tree, options) {\n const { siblings } = tree\n\n const minSchema = findSchemaKeyword(siblings, 'min')\n const maxSchema = findSchemaKeyword(siblings, 'max')\n const exclusiveMinimumSchema = findSchemaKeyword(siblings, 'exclusiveMinimum')\n const exclusiveMaximumSchema = findSchemaKeyword(siblings, 'exclusiveMaximum')\n\n return zodKeywordMapper.integer(\n shouldCoerce(options.coercion, 'numbers'),\n minSchema?.args,\n maxSchema?.args,\n options.version,\n exclusiveMinimumSchema?.args,\n exclusiveMaximumSchema?.args,\n options.mini,\n )\n },\n datetime(tree, options) {\n const { current } = tree\n\n return zodKeywordMapper.datetime(current.args.offset, current.args.local, options.version, options.mini)\n },\n date(tree, options) {\n const { current } = tree\n\n return zodKeywordMapper.date(current.args.type, shouldCoerce(options.coercion, 'dates'), options.version)\n },\n time(tree, options) {\n const { current } = tree\n\n return zodKeywordMapper.time(current.args.type, shouldCoerce(options.coercion, 'dates'), options.version)\n },\n },\n})\n","import transformers from '@kubb/core/transformers'\nimport type { SchemaObject } from '@kubb/oas'\nimport { isKeyword, type Schema, SchemaGenerator, schemaKeywords } from '@kubb/plugin-oas'\nimport { Const, File, Type } from '@kubb/react-fabric'\nimport type { KubbNode } from '@kubb/react-fabric/types'\nimport * as parserZod from '../parser.ts'\nimport type { PluginZod } from '../types.ts'\n\ntype Props = {\n name: string\n typeName?: string\n inferTypeName?: string\n tree: Array<Schema>\n schema: SchemaObject\n description?: string\n coercion: PluginZod['resolvedOptions']['coercion']\n mapper: PluginZod['resolvedOptions']['mapper']\n keysToOmit?: string[]\n wrapOutput?: PluginZod['resolvedOptions']['wrapOutput']\n version: '3' | '4'\n emptySchemaType: PluginZod['resolvedOptions']['emptySchemaType']\n mini?: boolean\n}\n\nexport function Zod({\n name,\n typeName,\n tree,\n schema,\n inferTypeName,\n mapper,\n coercion,\n keysToOmit,\n description,\n wrapOutput,\n version,\n emptySchemaType,\n mini = false,\n}: Props): KubbNode {\n const hasTuple = !!SchemaGenerator.find(tree, schemaKeywords.tuple)\n\n const schemas = parserZod.sort(tree).filter((item) => {\n if (hasTuple && (isKeyword(item, schemaKeywords.min) || isKeyword(item, schemaKeywords.max))) {\n return false\n }\n\n return true\n })\n\n // In mini mode, filter out modifiers from the main schema parsing\n const baseSchemas = mini ? parserZod.filterMiniModifiers(schemas) : schemas\n\n const output = baseSchemas\n .map((schemaKeyword, index) => {\n const siblings = baseSchemas.filter((_, i) => i !== index)\n\n return parserZod.parse({ schema, parent: undefined, current: schemaKeyword, siblings, name }, { mapper, coercion, wrapOutput, version, mini })\n })\n .filter(Boolean)\n .join('')\n\n let suffix = ''\n const firstSchema = schemas.at(0)\n const lastSchema = schemas.at(-1)\n\n if (!mini && lastSchema && isKeyword(lastSchema, schemaKeywords.nullable)) {\n if (firstSchema && isKeyword(firstSchema, schemaKeywords.ref)) {\n if (version === '3') {\n suffix = '.unwrap().schema.unwrap()'\n } else {\n suffix = '.unwrap().unwrap()'\n }\n } else {\n suffix = '.unwrap()'\n }\n } else if (!mini) {\n if (firstSchema && isKeyword(firstSchema, schemaKeywords.ref)) {\n if (version === '3') {\n suffix = '.schema'\n } else {\n suffix = '.unwrap()'\n }\n }\n }\n\n const emptyValue = parserZod.parse(\n {\n schema,\n parent: undefined,\n current: {\n keyword: schemaKeywords[emptySchemaType],\n },\n siblings: [],\n },\n { mapper, coercion, wrapOutput, version, mini },\n )\n\n let baseSchemaOutput =\n [output, keysToOmit?.length ? `${suffix}.omit({ ${keysToOmit.map((key) => `'${key}': true`).join(',')} })` : undefined].filter(Boolean).join('') ||\n emptyValue ||\n ''\n\n // For mini mode, wrap the output with modifiers using the parser function\n if (mini) {\n baseSchemaOutput = parserZod.wrapWithMiniModifiers(baseSchemaOutput, parserZod.extractMiniModifiers(schemas))\n }\n\n const wrappedSchemaOutput = wrapOutput ? wrapOutput({ output: baseSchemaOutput, schema }) || baseSchemaOutput : baseSchemaOutput\n const finalOutput = typeName ? `${wrappedSchemaOutput} as unknown as ${version === '4' ? 'z.ZodType' : 'ToZod'}<${typeName}>` : wrappedSchemaOutput\n\n return (\n <>\n <File.Source name={name} isExportable isIndexable>\n <Const\n export\n name={name}\n JSDoc={{\n comments: [description ? `@description ${transformers.jsStringEscape(description)}` : undefined].filter(Boolean),\n }}\n >\n {finalOutput}\n </Const>\n </File.Source>\n {inferTypeName && (\n <File.Source name={inferTypeName} isExportable isIndexable isTypeOnly>\n {typeName && (\n <Type export name={inferTypeName}>\n {typeName}\n </Type>\n )}\n {!typeName && (\n <Type export name={inferTypeName}>\n {`z.infer<typeof ${name}>`}\n </Type>\n )}\n </File.Source>\n )}\n </>\n )\n}\n"],"mappings":"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"}
@@ -583,7 +583,8 @@ const parse = (0, _kubb_plugin_oas.createParser)({
583
583
  return ${objectValue}
584
584
  }`;
585
585
  }
586
- if (isNullish) return `"${propertyName}": ${objectValue}${zodKeywordMapper.nullish()}`;
586
+ if (isNullish && options.mini) return `"${propertyName}": ${zodKeywordMapper.nullish(objectValue)}`;
587
+ if (isNullish && !options.mini) return `"${propertyName}": ${objectValue}${zodKeywordMapper.nullish()}`;
587
588
  if (isOptional) return `"${propertyName}": ${zodKeywordMapper.optional(objectValue)}`;
588
589
  if (isNullable) return `"${propertyName}": ${zodKeywordMapper.nullable(objectValue)}`;
589
590
  return `"${propertyName}": ${objectValue}`;
@@ -791,4 +792,4 @@ Object.defineProperty(exports, '__toESM', {
791
792
  return __toESM;
792
793
  }
793
794
  });
794
- //# sourceMappingURL=components-BKoSLPE6.cjs.map
795
+ //# sourceMappingURL=components-Cs1U51T4.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"components-BKoSLPE6.cjs","names":["File","Type","Const","transformers","schemaKeywords","transformers","schema","SchemaGenerator","SchemaGenerator","schemaKeywords","parserZod.sort","parserZod.filterMiniModifiers","parserZod.parse","parserZod.wrapWithMiniModifiers","parserZod.extractMiniModifiers","File","Const","transformers","Type"],"sources":["../src/components/Operations.tsx","../src/parser.ts","../src/components/Zod.tsx"],"sourcesContent":["import transformers from '@kubb/core/transformers'\nimport type { HttpMethod, Operation } from '@kubb/oas'\nimport type { SchemaNames } from '@kubb/plugin-oas/hooks'\nimport { Const, File, Type } from '@kubb/react-fabric'\nimport type { KubbNode } from '@kubb/react-fabric/types'\n\ntype Props = {\n name: string\n operations: Array<{ operation: Operation; data: SchemaNames }>\n}\n\nexport function Operations({ name, operations }: Props): KubbNode {\n const operationsJSON = operations.reduce(\n (prev, acc) => {\n prev[`\"${acc.operation.getOperationId()}\"`] = acc.data\n\n return prev\n },\n {} as Record<string, unknown>,\n )\n\n const pathsJSON = operations.reduce(\n (prev, acc) => {\n prev[`\"${acc.operation.path}\"`] = {\n ...(prev[`\"${acc.operation.path}\"`] || ({} as Record<HttpMethod, string>)),\n [acc.operation.method]: `operations[\"${acc.operation.getOperationId()}\"]`,\n }\n\n return prev\n },\n {} as Record<string, Record<HttpMethod, string>>,\n )\n\n return (\n <>\n <File.Source name=\"OperationSchema\" isExportable isIndexable>\n <Type name=\"OperationSchema\" export>{`{\n readonly request: z.ZodTypeAny | undefined;\n readonly parameters: {\n readonly path: z.ZodTypeAny | undefined;\n readonly query: z.ZodTypeAny | undefined;\n readonly header: z.ZodTypeAny | undefined;\n };\n readonly responses: {\n readonly [status: number]: z.ZodTypeAny;\n readonly default: z.ZodTypeAny;\n };\n readonly errors: {\n readonly [status: number]: z.ZodTypeAny;\n };\n}`}</Type>\n </File.Source>\n <File.Source name=\"OperationsMap\" isExportable isIndexable>\n <Type name=\"OperationsMap\" export>\n {'Record<string, OperationSchema>'}\n </Type>\n </File.Source>\n <File.Source name={name} isExportable isIndexable>\n <Const export name={name} asConst>\n {`{${transformers.stringifyObject(operationsJSON)}}`}\n </Const>\n </File.Source>\n <File.Source name={'paths'} isExportable isIndexable>\n <Const export name={'paths'} asConst>\n {`{${transformers.stringifyObject(pathsJSON)}}`}\n </Const>\n </File.Source>\n </>\n )\n}\n","import transformers from '@kubb/core/transformers'\n\nimport type { Schema, SchemaMapper } from '@kubb/plugin-oas'\nimport { createParser, findSchemaKeyword, isKeyword, SchemaGenerator, type SchemaKeywordMapper, schemaKeywords } from '@kubb/plugin-oas'\n\n//TODO add zodKeywordMapper as function that returns 3 versions: v3, v4 and v4 mini, this can also be used to have the custom mapping(see object type)\n// also include shouldCoerce\n\n/**\n * Helper to build string/array length constraint checks for Zod Mini mode\n */\nfunction buildLengthChecks(min?: number, max?: number): string[] {\n const checks: string[] = []\n if (min !== undefined) checks.push(`z.minLength(${min})`)\n if (max !== undefined) checks.push(`z.maxLength(${max})`)\n return checks\n}\n\nconst zodKeywordMapper = {\n any: () => 'z.any()',\n unknown: () => 'z.unknown()',\n void: () => 'z.void()',\n number: (coercion?: boolean, min?: number, max?: number, exclusiveMinimum?: number, exclusiveMaximum?: number, mini?: boolean) => {\n if (mini) {\n const checks: string[] = []\n if (min !== undefined) checks.push(`z.minimum(${min})`)\n if (max !== undefined) checks.push(`z.maximum(${max})`)\n if (exclusiveMinimum !== undefined) checks.push(`z.minimum(${exclusiveMinimum}, { exclusive: true })`)\n if (exclusiveMaximum !== undefined) checks.push(`z.maximum(${exclusiveMaximum}, { exclusive: true })`)\n if (checks.length > 0) {\n return `z.number().check(${checks.join(', ')})`\n }\n return 'z.number()'\n }\n return [\n coercion ? 'z.coerce.number()' : 'z.number()',\n min !== undefined ? `.min(${min})` : undefined,\n max !== undefined ? `.max(${max})` : undefined,\n exclusiveMinimum !== undefined ? `.gt(${exclusiveMinimum})` : undefined,\n exclusiveMaximum !== undefined ? `.lt(${exclusiveMaximum})` : undefined,\n ]\n .filter(Boolean)\n .join('')\n },\n integer: (coercion?: boolean, min?: number, max?: number, version: '3' | '4' = '3', exclusiveMinimum?: number, exclusiveMaximum?: number, mini?: boolean) => {\n if (mini) {\n const checks: string[] = []\n if (min !== undefined) checks.push(`z.minimum(${min})`)\n if (max !== undefined) checks.push(`z.maximum(${max})`)\n if (exclusiveMinimum !== undefined) checks.push(`z.minimum(${exclusiveMinimum}, { exclusive: true })`)\n if (exclusiveMaximum !== undefined) checks.push(`z.maximum(${exclusiveMaximum}, { exclusive: true })`)\n if (checks.length > 0) {\n return `z.int().check(${checks.join(', ')})`\n }\n return 'z.int()'\n }\n return [\n coercion ? 'z.coerce.number().int()' : version === '4' ? 'z.int()' : 'z.number().int()',\n min !== undefined ? `.min(${min})` : undefined,\n max !== undefined ? `.max(${max})` : undefined,\n exclusiveMinimum !== undefined ? `.gt(${exclusiveMinimum})` : undefined,\n exclusiveMaximum !== undefined ? `.lt(${exclusiveMaximum})` : undefined,\n ]\n .filter(Boolean)\n .join('')\n },\n interface: (value?: string, strict?: boolean) => {\n if (strict) {\n return `z.strictInterface({\n ${value}\n })`\n }\n return `z.interface({\n ${value}\n })`\n },\n object: (value?: string, strict?: boolean, version: '3' | '4' = '3') => {\n if (version === '4' && strict) {\n return `z.strictObject({\n ${value}\n })`\n }\n\n if (strict) {\n return `z.object({\n ${value}\n }).strict()`\n }\n\n return `z.object({\n ${value}\n })`\n },\n string: (coercion?: boolean, min?: number, max?: number, mini?: boolean) => {\n if (mini) {\n const checks = buildLengthChecks(min, max)\n if (checks.length > 0) {\n return `z.string().check(${checks.join(', ')})`\n }\n return 'z.string()'\n }\n return [coercion ? 'z.coerce.string()' : 'z.string()', min !== undefined ? `.min(${min})` : undefined, max !== undefined ? `.max(${max})` : undefined]\n .filter(Boolean)\n .join('')\n },\n //support for discriminatedUnion\n boolean: () => 'z.boolean()',\n undefined: () => 'z.undefined()',\n nullable: (value?: string) => {\n if (value) {\n return `z.nullable(${value})`\n }\n return '.nullable()'\n },\n null: () => 'z.null()',\n nullish: (value?: string) => {\n if (value) {\n return `z.nullish(${value})`\n }\n return '.nullish()'\n },\n array: (items: string[] = [], min?: number, max?: number, unique?: boolean, mini?: boolean) => {\n if (mini) {\n const checks = buildLengthChecks(min, max)\n if (unique) checks.push(`z.refine(items => new Set(items).size === items.length, { message: \"Array entries must be unique\" })`)\n if (checks.length > 0) {\n return `z.array(${items?.join('')}).check(${checks.join(', ')})`\n }\n return `z.array(${items?.join('')})`\n }\n return [\n `z.array(${items?.join('')})`,\n min !== undefined ? `.min(${min})` : undefined,\n max !== undefined ? `.max(${max})` : undefined,\n unique ? `.refine(items => new Set(items).size === items.length, { message: \"Array entries must be unique\" })` : undefined,\n ]\n .filter(Boolean)\n .join('')\n },\n tuple: (items: string[] = []) => `z.tuple([${items?.join(', ')}])`,\n enum: (items: string[] = []) => `z.enum([${items?.join(', ')}])`,\n union: (items: string[] = []) => `z.union([${items?.join(', ')}])`,\n const: (value?: string | number | boolean) => `z.literal(${value ?? ''})`,\n /**\n * ISO 8601\n */\n datetime: (offset = false, local = false, version: '3' | '4' = '3', mini?: boolean) => {\n // Zod Mini doesn't support .datetime() method, use plain string\n if (mini) {\n return 'z.string()'\n }\n\n if (offset) {\n return version === '4' ? `z.iso.datetime({ offset: ${offset} })` : `z.string().datetime({ offset: ${offset} })`\n }\n\n if (local) {\n return version === '4' ? `z.iso.datetime({ local: ${local} })` : `z.string().datetime({ local: ${local} })`\n }\n\n return version === '4' ? 'z.iso.datetime()' : 'z.string().datetime()'\n },\n /**\n * Type `'date'` Date\n * Type `'string'` ISO date format (YYYY-MM-DD)\n * @default ISO date format (YYYY-MM-DD)\n */\n date: (type: 'date' | 'string' = 'string', coercion?: boolean, version: '3' | '4' = '3') => {\n if (type === 'string') {\n return version === '4' ? 'z.iso.date()' : 'z.string().date()'\n }\n\n if (coercion) {\n return 'z.coerce.date()'\n }\n\n return 'z.date()'\n },\n /**\n * Type `'date'` Date\n * Type `'string'` ISO time format (HH:mm:ss[.SSSSSS])\n * @default ISO time format (HH:mm:ss[.SSSSSS])\n */\n time: (type: 'date' | 'string' = 'string', coercion?: boolean, version: '3' | '4' = '3') => {\n if (type === 'string') {\n return version === '4' ? 'z.iso.time()' : 'z.string().time()'\n }\n\n if (coercion) {\n return 'z.coerce.date()'\n }\n\n return 'z.date()'\n },\n uuid: (coercion?: boolean, version: '3' | '4' = '3', min?: number, max?: number, mini?: boolean) => {\n if (mini) {\n const checks = buildLengthChecks(min, max)\n if (checks.length > 0) {\n return `z.uuid().check(${checks.join(', ')})`\n }\n return 'z.uuid()'\n }\n return [\n coercion ? (version === '4' ? 'z.uuid()' : 'z.coerce.string().uuid()') : version === '4' ? 'z.uuid()' : 'z.string().uuid()',\n min !== undefined ? `.min(${min})` : undefined,\n max !== undefined ? `.max(${max})` : undefined,\n ]\n .filter(Boolean)\n .join('')\n },\n url: (coercion?: boolean, version: '3' | '4' = '3', min?: number, max?: number, mini?: boolean) => {\n if (mini) {\n const checks = buildLengthChecks(min, max)\n if (checks.length > 0) {\n return `z.url().check(${checks.join(', ')})`\n }\n return 'z.url()'\n }\n return [\n coercion ? (version === '4' ? 'z.url()' : 'z.coerce.string().url()') : version === '4' ? 'z.url()' : 'z.string().url()',\n min !== undefined ? `.min(${min})` : undefined,\n max !== undefined ? `.max(${max})` : undefined,\n ]\n .filter(Boolean)\n .join('')\n },\n default: (value?: string | number | boolean | object, innerSchema?: string, mini?: boolean) => {\n if (mini && innerSchema) {\n const defaultValue = typeof value === 'object' ? '{}' : (value ?? '')\n return `z._default(${innerSchema}, ${defaultValue})`\n }\n\n if (typeof value === 'object') {\n return '.default({})'\n }\n\n if (value === undefined) {\n return '.default()'\n }\n\n if (typeof value === 'string' && !value) {\n return `.default('')`\n }\n\n return `.default(${value ?? ''})`\n },\n and: (items: string[] = [], mini?: boolean) => {\n // zod/mini doesn't support .and() method, so we can't use intersection types\n // In mini mode, we try to extract and append .check() calls instead\n if (mini && items.length > 0) {\n // Try to extract check calls from additional items\n const checks: string[] = []\n for (const item of items) {\n // Extract .check(...) from patterns like \"z.string().check(...)\"\n // Need to handle nested parentheses properly\n const checkStart = item.indexOf('.check(')\n if (checkStart !== -1) {\n // Find the matching closing parenthesis\n let depth = 0\n let i = checkStart + 7 // length of '.check('\n let checkContent = ''\n while (i < item.length) {\n const char = item[i]\n if (char === '(') depth++\n else if (char === ')') {\n if (depth === 0) break\n depth--\n }\n checkContent += char\n i++\n }\n if (checkContent) {\n checks.push(checkContent)\n }\n }\n }\n\n if (checks.length > 0) {\n // Append checks to the base schema\n return `.check(${checks.join(', ')})`\n }\n\n // If we can't extract checks, just use the first schema (limitation)\n return ''\n }\n return items?.map((item) => `.and(${item})`).join('')\n },\n describe: (value = '', innerSchema?: string, mini?: boolean) => {\n if (mini) {\n return undefined\n }\n\n if (innerSchema) {\n return `z.describe(${innerSchema}, ${value})`\n }\n return `.describe(${value})`\n },\n max: undefined,\n min: undefined,\n optional: (value?: string) => {\n if (value) {\n return `z.optional(${value})`\n }\n return '.optional()'\n },\n matches: (value = '', coercion?: boolean, mini?: boolean, min?: number, max?: number) => {\n if (mini) {\n const checks = buildLengthChecks(min, max)\n checks.push(`z.regex(${value})`)\n return `z.string().check(${checks.join(', ')})`\n }\n return [\n coercion ? 'z.coerce.string()' : 'z.string()',\n min !== undefined ? `.min(${min})` : undefined,\n max !== undefined ? `.max(${max})` : undefined,\n `.regex(${value})`,\n ]\n .filter(Boolean)\n .join('')\n },\n email: (coercion?: boolean, version: '3' | '4' = '3', min?: number, max?: number, mini?: boolean) => {\n if (mini) {\n const checks = buildLengthChecks(min, max)\n if (checks.length > 0) {\n return `z.email().check(${checks.join(', ')})`\n }\n return 'z.email()'\n }\n return [\n coercion ? (version === '4' ? 'z.email()' : 'z.coerce.string().email()') : version === '4' ? 'z.email()' : 'z.string().email()',\n min !== undefined ? `.min(${min})` : undefined,\n max !== undefined ? `.max(${max})` : undefined,\n ]\n .filter(Boolean)\n .join('')\n },\n firstName: undefined,\n lastName: undefined,\n password: undefined,\n phone: undefined,\n readOnly: undefined,\n writeOnly: undefined,\n ref: (value?: string) => {\n if (!value) {\n return undefined\n }\n\n return `z.lazy(() => ${value})`\n },\n blob: () => 'z.instanceof(File)',\n deprecated: undefined,\n example: undefined,\n schema: undefined,\n catchall: (value?: string, mini?: boolean) => {\n // Zod Mini doesn't support .catchall() method\n if (mini) {\n return undefined\n }\n return value ? `.catchall(${value})` : undefined\n },\n name: undefined,\n exclusiveMinimum: undefined,\n exclusiveMaximum: undefined,\n} satisfies SchemaMapper<string | null | undefined>\n\n/**\n * @link based on https://github.com/cellular/oazapfts/blob/7ba226ebb15374e8483cc53e7532f1663179a22c/src/codegen/generate.ts#L398\n */\n\nexport function sort(items?: Schema[]): Schema[] {\n const order: string[] = [\n schemaKeywords.string,\n schemaKeywords.datetime,\n schemaKeywords.date,\n schemaKeywords.time,\n schemaKeywords.tuple,\n schemaKeywords.number,\n schemaKeywords.object,\n schemaKeywords.enum,\n schemaKeywords.url,\n schemaKeywords.email,\n schemaKeywords.firstName,\n schemaKeywords.lastName,\n schemaKeywords.password,\n schemaKeywords.matches,\n schemaKeywords.uuid,\n schemaKeywords.null,\n schemaKeywords.min,\n schemaKeywords.max,\n schemaKeywords.default,\n schemaKeywords.describe,\n schemaKeywords.optional,\n schemaKeywords.nullable,\n schemaKeywords.nullish,\n ]\n\n if (!items) {\n return []\n }\n\n return transformers.orderBy(items, [(v) => order.indexOf(v.keyword)], ['asc'])\n}\n\ntype MiniModifiers = {\n hasOptional?: boolean\n hasNullable?: boolean\n hasNullish?: boolean\n defaultValue?: string | number | true | object\n}\n\n/**\n * Keywords that represent modifiers for mini mode\n * These are separated from the base schema and wrapped around it\n * Note: describe is included to filter it out, but won't be wrapped (Zod Mini doesn't support describe)\n */\nexport const miniModifierKeywords = [schemaKeywords.optional, schemaKeywords.nullable, schemaKeywords.nullish, schemaKeywords.default, schemaKeywords.describe]\n\n/**\n * Extracts mini mode modifiers from a schemas array\n * This can be reused by other parsers (e.g., valibot) that need similar functionality\n * Note: describe is not included as Zod Mini doesn't support it\n */\nexport function extractMiniModifiers(schemas: Schema[]): MiniModifiers {\n const defaultSchema = schemas.find((item) => isKeyword(item, schemaKeywords.default)) as { keyword: string; args: unknown } | undefined\n\n return {\n hasOptional: schemas.some((item) => isKeyword(item, schemaKeywords.optional)),\n hasNullable: schemas.some((item) => isKeyword(item, schemaKeywords.nullable)),\n hasNullish: schemas.some((item) => isKeyword(item, schemaKeywords.nullish)),\n defaultValue: defaultSchema?.args as string | number | true | object | undefined,\n }\n}\n\n/**\n * Filters out modifier keywords from schemas for mini mode base schema parsing\n * This can be reused by other parsers (e.g., valibot) that need similar functionality\n */\nexport function filterMiniModifiers(schemas: Schema[]): Schema[] {\n return schemas.filter((item) => !miniModifierKeywords.some((keyword) => isKeyword(item, keyword)))\n}\n\n/**\n * Wraps an output string with Zod Mini functional modifiers\n * Order: default (innermost) -> nullable -> optional (outermost)\n * OR: default -> nullish\n * Note: describe is not supported in Zod Mini and is skipped\n */\nexport function wrapWithMiniModifiers(output: string, modifiers: MiniModifiers): string {\n let result = output\n\n // Apply default first (innermost wrapper)\n if (modifiers.defaultValue !== undefined) {\n result = zodKeywordMapper.default(modifiers.defaultValue, result, true)!\n }\n\n // Apply nullish, nullable, or optional (outer wrappers for optionality)\n if (modifiers.hasNullish) {\n result = zodKeywordMapper.nullish(result)!\n } else {\n if (modifiers.hasNullable) {\n result = zodKeywordMapper.nullable(result)!\n }\n if (modifiers.hasOptional) {\n result = zodKeywordMapper.optional(result)!\n }\n }\n\n return result\n}\n\nconst shouldCoerce = (coercion: ParserOptions['coercion'] | undefined, type: 'dates' | 'strings' | 'numbers'): boolean => {\n if (coercion === undefined) {\n return false\n }\n if (typeof coercion === 'boolean') {\n return coercion\n }\n\n return !!coercion[type]\n}\n\ntype ParserOptions = {\n mapper?: Record<string, string>\n coercion?: boolean | { dates?: boolean; strings?: boolean; numbers?: boolean }\n wrapOutput?: (opts: { output: string; schema: any }) => string | undefined\n version: '3' | '4'\n skipLazyForRefs?: boolean\n mini?: boolean\n}\n\n// Create the parser using createParser\nexport const parse = createParser<string, ParserOptions>({\n mapper: zodKeywordMapper,\n handlers: {\n union(tree, options) {\n const { current, schema, parent, name, siblings } = tree\n\n // zod union type needs at least 2 items\n if (Array.isArray(current.args) && current.args.length === 1) {\n return this.parse({ schema, parent, name, current: current.args[0] as Schema, siblings }, options)\n }\n if (Array.isArray(current.args) && !current.args.length) {\n return ''\n }\n\n return zodKeywordMapper.union(\n sort(current.args)\n .map((it, _index, siblings) => this.parse({ schema, parent: current, name, current: it, siblings }, options))\n .filter(Boolean),\n )\n },\n and(tree, options) {\n const { current, schema, name } = tree\n\n const items = sort(current.args)\n .filter((schema: Schema) => {\n return ![schemaKeywords.optional, schemaKeywords.describe].includes(schema.keyword as typeof schemaKeywords.describe)\n })\n .map((it: Schema, _index, siblings) => this.parse({ schema, parent: current, name, current: it, siblings }, options))\n .filter(Boolean)\n\n return `${items.slice(0, 1)}${zodKeywordMapper.and(items.slice(1), options.mini)}`\n },\n array(tree, options) {\n const { current, schema, name } = tree\n\n return zodKeywordMapper.array(\n sort(current.args.items)\n .map((it, _index, siblings) => {\n return this.parse({ schema, parent: current, name, current: it, siblings }, options)\n })\n .filter(Boolean),\n current.args.min,\n current.args.max,\n current.args.unique,\n options.mini,\n )\n },\n enum(tree, options) {\n const { current, schema, name } = tree\n\n if (current.args.asConst) {\n if (current.args.items.length === 1) {\n const child = {\n keyword: schemaKeywords.const,\n args: current.args.items[0],\n }\n return this.parse({ schema, parent: current, name, current: child, siblings: [child] }, options)\n }\n\n return zodKeywordMapper.union(\n current.args.items\n .map((schema) => ({\n keyword: schemaKeywords.const,\n args: schema,\n }))\n .map((it, _index, siblings) => {\n return this.parse({ schema, parent: current, name, current: it, siblings }, options)\n })\n .filter(Boolean),\n )\n }\n\n return zodKeywordMapper.enum(\n current.args.items.map((schema) => {\n if (schema.format === 'boolean') {\n return transformers.stringify(schema.value)\n }\n\n if (schema.format === 'number') {\n return transformers.stringify(schema.value)\n }\n return transformers.stringify(schema.value)\n }),\n )\n },\n ref(tree, options) {\n const { current } = tree\n\n // Skip z.lazy wrapper if skipLazyForRefs is true (e.g., inside v4 getters)\n if (options.skipLazyForRefs) {\n return current.args?.name\n }\n return zodKeywordMapper.ref(current.args?.name)\n },\n object(tree, options) {\n const { current, schema, name } = tree\n\n const propertyEntries = Object.entries(current.args?.properties || {}).filter((item) => {\n const schema = item[1]\n return schema && typeof schema.map === 'function'\n })\n\n const properties = propertyEntries\n .map(([propertyName, schemas]) => {\n const nameSchema = schemas.find((it) => it.keyword === schemaKeywords.name) as SchemaKeywordMapper['name']\n const isNullable = schemas.some((it) => isKeyword(it, schemaKeywords.nullable))\n const isNullish = schemas.some((it) => isKeyword(it, schemaKeywords.nullish))\n const isOptional = schemas.some((it) => isKeyword(it, schemaKeywords.optional))\n const hasRef = !!SchemaGenerator.find(schemas, schemaKeywords.ref)\n\n const mappedName = nameSchema?.args || propertyName\n\n // custom mapper(pluginOptions)\n // Use Object.hasOwn to avoid matching inherited properties like 'toString', 'valueOf', etc.\n if (options.mapper && Object.hasOwn(options.mapper, mappedName)) {\n return `\"${propertyName}\": ${options.mapper?.[mappedName]}`\n }\n\n const baseSchemaOutput = sort(schemas)\n .filter((schema) => {\n return !isKeyword(schema, schemaKeywords.optional) && !isKeyword(schema, schemaKeywords.nullable) && !isKeyword(schema, schemaKeywords.nullish)\n })\n .map((it) => {\n // For v4 with refs, skip z.lazy wrapper since the getter provides lazy evaluation\n const skipLazyForRefs = options.version === '4' && hasRef\n return this.parse({ schema, parent: current, name, current: it, siblings: schemas }, { ...options, skipLazyForRefs })\n })\n .filter(Boolean)\n .join('')\n\n const objectValue = options.wrapOutput\n ? options.wrapOutput({ output: baseSchemaOutput, schema: schema?.properties?.[propertyName] }) || baseSchemaOutput\n : baseSchemaOutput\n\n if (options.version === '4' && hasRef) {\n // In mini mode, use functional wrappers instead of chainable methods\n if (options.mini) {\n // both optional and nullable\n if (isNullish) {\n return `get \"${propertyName}\"(){\n return ${zodKeywordMapper.nullish(objectValue)}\n }`\n }\n\n // undefined\n if (isOptional) {\n return `get \"${propertyName}\"(){\n return ${zodKeywordMapper.optional(objectValue)}\n }`\n }\n\n // null\n if (isNullable) {\n return `get \"${propertyName}\"(){\n return ${zodKeywordMapper.nullable(objectValue)}\n }`\n }\n\n return `get \"${propertyName}\"(){\n return ${objectValue}\n }`\n }\n\n // Non-mini mode uses chainable methods\n // both optional and nullable\n if (isNullish) {\n return `get \"${propertyName}\"(){\n return ${objectValue}${zodKeywordMapper.nullish()}\n }`\n }\n\n // undefined\n if (isOptional) {\n return `get \"${propertyName}\"(){\n return ${objectValue}${zodKeywordMapper.optional()}\n }`\n }\n\n // null\n if (isNullable) {\n return `get \"${propertyName}\"(){\n return ${objectValue}${zodKeywordMapper.nullable()}\n }`\n }\n\n return `get \"${propertyName}\"(){\n return ${objectValue}\n }`\n }\n\n // both optional and nullable\n if (isNullish) {\n return `\"${propertyName}\": ${objectValue}${zodKeywordMapper.nullish()}`\n }\n\n // undefined\n if (isOptional) {\n return `\"${propertyName}\": ${zodKeywordMapper.optional(objectValue)}`\n }\n\n // null\n if (isNullable) {\n return `\"${propertyName}\": ${zodKeywordMapper.nullable(objectValue)}`\n }\n\n return `\"${propertyName}\": ${objectValue}`\n })\n .join(',\\n')\n\n const additionalProperties = current.args?.additionalProperties?.length\n ? current.args.additionalProperties\n .map((it, _index, siblings) => this.parse({ schema, parent: current, name, current: it, siblings }, options))\n .filter(Boolean)\n .join('')\n : undefined\n\n const text = [\n zodKeywordMapper.object(properties, current.args?.strict, options.version),\n additionalProperties ? zodKeywordMapper.catchall(additionalProperties, options.mini) : undefined,\n ].filter(Boolean)\n\n return text.join('')\n },\n tuple(tree, options) {\n const { current, schema, name } = tree\n\n return zodKeywordMapper.tuple(\n current.args.items.map((it, _index, siblings) => this.parse({ schema, parent: current, name, current: it, siblings }, options)).filter(Boolean),\n )\n },\n const(tree, _options) {\n const { current } = tree\n\n if (current.args.format === 'number' && current.args.value !== undefined) {\n return zodKeywordMapper.const(Number(current.args.value))\n }\n\n if (current.args.format === 'boolean' && current.args.value !== undefined) {\n return zodKeywordMapper.const(typeof current.args.value === 'boolean' ? current.args.value : undefined)\n }\n return zodKeywordMapper.const(transformers.stringify(current.args.value))\n },\n matches(tree, options) {\n const { current, siblings } = tree\n\n // Early exit: if siblings contain both matches and ref → skip matches entirely\n const hasRef = siblings.some((it) => isKeyword(it, schemaKeywords.ref))\n if (hasRef) {\n return undefined // strip matches\n }\n\n const minSchema = findSchemaKeyword(siblings, 'min')\n const maxSchema = findSchemaKeyword(siblings, 'max')\n\n if (current.args) {\n return zodKeywordMapper.matches(\n transformers.toRegExpString(current.args, null),\n shouldCoerce(options.coercion, 'strings'),\n options.mini,\n minSchema?.args,\n maxSchema?.args,\n )\n }\n return undefined\n },\n default(tree, options) {\n const { current } = tree\n\n // In mini mode, default is handled by wrapWithMiniModifiers\n if (options.mini) {\n return undefined\n }\n if (current.args !== undefined) {\n return zodKeywordMapper.default(current.args)\n }\n // When args is undefined, call the mapper without arguments\n return zodKeywordMapper.default()\n },\n describe(tree, options) {\n const { current } = tree\n\n if (current.args) {\n return zodKeywordMapper.describe(transformers.stringify(current.args.toString()), undefined, options.mini)\n }\n return undefined\n },\n string(tree, options) {\n const { siblings } = tree\n\n const minSchema = findSchemaKeyword(siblings, 'min')\n const maxSchema = findSchemaKeyword(siblings, 'max')\n\n return zodKeywordMapper.string(shouldCoerce(options.coercion, 'strings'), minSchema?.args, maxSchema?.args, options.mini)\n },\n uuid(tree, options) {\n const { siblings } = tree\n\n const minSchema = findSchemaKeyword(siblings, 'min')\n const maxSchema = findSchemaKeyword(siblings, 'max')\n\n return zodKeywordMapper.uuid(shouldCoerce(options.coercion, 'strings'), options.version, minSchema?.args, maxSchema?.args, options.mini)\n },\n email(tree, options) {\n const { siblings } = tree\n\n const minSchema = findSchemaKeyword(siblings, 'min')\n const maxSchema = findSchemaKeyword(siblings, 'max')\n\n return zodKeywordMapper.email(shouldCoerce(options.coercion, 'strings'), options.version, minSchema?.args, maxSchema?.args, options.mini)\n },\n url(tree, options) {\n const { siblings } = tree\n\n const minSchema = findSchemaKeyword(siblings, 'min')\n const maxSchema = findSchemaKeyword(siblings, 'max')\n\n return zodKeywordMapper.url(shouldCoerce(options.coercion, 'strings'), options.version, minSchema?.args, maxSchema?.args, options.mini)\n },\n number(tree, options) {\n const { siblings } = tree\n\n const minSchema = findSchemaKeyword(siblings, 'min')\n const maxSchema = findSchemaKeyword(siblings, 'max')\n const exclusiveMinimumSchema = findSchemaKeyword(siblings, 'exclusiveMinimum')\n const exclusiveMaximumSchema = findSchemaKeyword(siblings, 'exclusiveMaximum')\n\n return zodKeywordMapper.number(\n shouldCoerce(options.coercion, 'numbers'),\n minSchema?.args,\n maxSchema?.args,\n exclusiveMinimumSchema?.args,\n exclusiveMaximumSchema?.args,\n options.mini,\n )\n },\n integer(tree, options) {\n const { siblings } = tree\n\n const minSchema = findSchemaKeyword(siblings, 'min')\n const maxSchema = findSchemaKeyword(siblings, 'max')\n const exclusiveMinimumSchema = findSchemaKeyword(siblings, 'exclusiveMinimum')\n const exclusiveMaximumSchema = findSchemaKeyword(siblings, 'exclusiveMaximum')\n\n return zodKeywordMapper.integer(\n shouldCoerce(options.coercion, 'numbers'),\n minSchema?.args,\n maxSchema?.args,\n options.version,\n exclusiveMinimumSchema?.args,\n exclusiveMaximumSchema?.args,\n options.mini,\n )\n },\n datetime(tree, options) {\n const { current } = tree\n\n return zodKeywordMapper.datetime(current.args.offset, current.args.local, options.version, options.mini)\n },\n date(tree, options) {\n const { current } = tree\n\n return zodKeywordMapper.date(current.args.type, shouldCoerce(options.coercion, 'dates'), options.version)\n },\n time(tree, options) {\n const { current } = tree\n\n return zodKeywordMapper.time(current.args.type, shouldCoerce(options.coercion, 'dates'), options.version)\n },\n },\n})\n","import transformers from '@kubb/core/transformers'\nimport type { SchemaObject } from '@kubb/oas'\nimport { isKeyword, type Schema, SchemaGenerator, schemaKeywords } from '@kubb/plugin-oas'\nimport { Const, File, Type } from '@kubb/react-fabric'\nimport type { KubbNode } from '@kubb/react-fabric/types'\nimport * as parserZod from '../parser.ts'\nimport type { PluginZod } from '../types.ts'\n\ntype Props = {\n name: string\n typeName?: string\n inferTypeName?: string\n tree: Array<Schema>\n schema: SchemaObject\n description?: string\n coercion: PluginZod['resolvedOptions']['coercion']\n mapper: PluginZod['resolvedOptions']['mapper']\n keysToOmit?: string[]\n wrapOutput?: PluginZod['resolvedOptions']['wrapOutput']\n version: '3' | '4'\n emptySchemaType: PluginZod['resolvedOptions']['emptySchemaType']\n mini?: boolean\n}\n\nexport function Zod({\n name,\n typeName,\n tree,\n schema,\n inferTypeName,\n mapper,\n coercion,\n keysToOmit,\n description,\n wrapOutput,\n version,\n emptySchemaType,\n mini = false,\n}: Props): KubbNode {\n const hasTuple = !!SchemaGenerator.find(tree, schemaKeywords.tuple)\n\n const schemas = parserZod.sort(tree).filter((item) => {\n if (hasTuple && (isKeyword(item, schemaKeywords.min) || isKeyword(item, schemaKeywords.max))) {\n return false\n }\n\n return true\n })\n\n // In mini mode, filter out modifiers from the main schema parsing\n const baseSchemas = mini ? parserZod.filterMiniModifiers(schemas) : schemas\n\n const output = baseSchemas\n .map((schemaKeyword, index) => {\n const siblings = baseSchemas.filter((_, i) => i !== index)\n\n return parserZod.parse({ schema, parent: undefined, current: schemaKeyword, siblings, name }, { mapper, coercion, wrapOutput, version, mini })\n })\n .filter(Boolean)\n .join('')\n\n let suffix = ''\n const firstSchema = schemas.at(0)\n const lastSchema = schemas.at(-1)\n\n if (!mini && lastSchema && isKeyword(lastSchema, schemaKeywords.nullable)) {\n if (firstSchema && isKeyword(firstSchema, schemaKeywords.ref)) {\n if (version === '3') {\n suffix = '.unwrap().schema.unwrap()'\n } else {\n suffix = '.unwrap().unwrap()'\n }\n } else {\n suffix = '.unwrap()'\n }\n } else if (!mini) {\n if (firstSchema && isKeyword(firstSchema, schemaKeywords.ref)) {\n if (version === '3') {\n suffix = '.schema'\n } else {\n suffix = '.unwrap()'\n }\n }\n }\n\n const emptyValue = parserZod.parse(\n {\n schema,\n parent: undefined,\n current: {\n keyword: schemaKeywords[emptySchemaType],\n },\n siblings: [],\n },\n { mapper, coercion, wrapOutput, version, mini },\n )\n\n let baseSchemaOutput =\n [output, keysToOmit?.length ? `${suffix}.omit({ ${keysToOmit.map((key) => `'${key}': true`).join(',')} })` : undefined].filter(Boolean).join('') ||\n emptyValue ||\n ''\n\n // For mini mode, wrap the output with modifiers using the parser function\n if (mini) {\n baseSchemaOutput = parserZod.wrapWithMiniModifiers(baseSchemaOutput, parserZod.extractMiniModifiers(schemas))\n }\n\n const wrappedSchemaOutput = wrapOutput ? wrapOutput({ output: baseSchemaOutput, schema }) || baseSchemaOutput : baseSchemaOutput\n const finalOutput = typeName ? `${wrappedSchemaOutput} as unknown as ${version === '4' ? 'z.ZodType' : 'ToZod'}<${typeName}>` : wrappedSchemaOutput\n\n return (\n <>\n <File.Source name={name} isExportable isIndexable>\n <Const\n export\n name={name}\n JSDoc={{\n comments: [description ? `@description ${transformers.jsStringEscape(description)}` : undefined].filter(Boolean),\n }}\n >\n {finalOutput}\n </Const>\n </File.Source>\n {inferTypeName && (\n <File.Source name={inferTypeName} isExportable isIndexable isTypeOnly>\n {typeName && (\n <Type export name={inferTypeName}>\n {typeName}\n </Type>\n )}\n {!typeName && (\n <Type export name={inferTypeName}>\n {`z.infer<typeof ${name}>`}\n </Type>\n )}\n </File.Source>\n )}\n </>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"components-Cs1U51T4.cjs","names":["File","Type","Const","transformers","schemaKeywords","transformers","schema","SchemaGenerator","SchemaGenerator","schemaKeywords","parserZod.sort","parserZod.filterMiniModifiers","parserZod.parse","parserZod.wrapWithMiniModifiers","parserZod.extractMiniModifiers","File","Const","transformers","Type"],"sources":["../src/components/Operations.tsx","../src/parser.ts","../src/components/Zod.tsx"],"sourcesContent":["import transformers from '@kubb/core/transformers'\nimport type { HttpMethod, Operation } from '@kubb/oas'\nimport type { SchemaNames } from '@kubb/plugin-oas/hooks'\nimport { Const, File, Type } from '@kubb/react-fabric'\nimport type { KubbNode } from '@kubb/react-fabric/types'\n\ntype Props = {\n name: string\n operations: Array<{ operation: Operation; data: SchemaNames }>\n}\n\nexport function Operations({ name, operations }: Props): KubbNode {\n const operationsJSON = operations.reduce(\n (prev, acc) => {\n prev[`\"${acc.operation.getOperationId()}\"`] = acc.data\n\n return prev\n },\n {} as Record<string, unknown>,\n )\n\n const pathsJSON = operations.reduce(\n (prev, acc) => {\n prev[`\"${acc.operation.path}\"`] = {\n ...(prev[`\"${acc.operation.path}\"`] || ({} as Record<HttpMethod, string>)),\n [acc.operation.method]: `operations[\"${acc.operation.getOperationId()}\"]`,\n }\n\n return prev\n },\n {} as Record<string, Record<HttpMethod, string>>,\n )\n\n return (\n <>\n <File.Source name=\"OperationSchema\" isExportable isIndexable>\n <Type name=\"OperationSchema\" export>{`{\n readonly request: z.ZodTypeAny | undefined;\n readonly parameters: {\n readonly path: z.ZodTypeAny | undefined;\n readonly query: z.ZodTypeAny | undefined;\n readonly header: z.ZodTypeAny | undefined;\n };\n readonly responses: {\n readonly [status: number]: z.ZodTypeAny;\n readonly default: z.ZodTypeAny;\n };\n readonly errors: {\n readonly [status: number]: z.ZodTypeAny;\n };\n}`}</Type>\n </File.Source>\n <File.Source name=\"OperationsMap\" isExportable isIndexable>\n <Type name=\"OperationsMap\" export>\n {'Record<string, OperationSchema>'}\n </Type>\n </File.Source>\n <File.Source name={name} isExportable isIndexable>\n <Const export name={name} asConst>\n {`{${transformers.stringifyObject(operationsJSON)}}`}\n </Const>\n </File.Source>\n <File.Source name={'paths'} isExportable isIndexable>\n <Const export name={'paths'} asConst>\n {`{${transformers.stringifyObject(pathsJSON)}}`}\n </Const>\n </File.Source>\n </>\n )\n}\n","import transformers from '@kubb/core/transformers'\n\nimport type { Schema, SchemaMapper } from '@kubb/plugin-oas'\nimport { createParser, findSchemaKeyword, isKeyword, SchemaGenerator, type SchemaKeywordMapper, schemaKeywords } from '@kubb/plugin-oas'\n\n//TODO add zodKeywordMapper as function that returns 3 versions: v3, v4 and v4 mini, this can also be used to have the custom mapping(see object type)\n// also include shouldCoerce\n\n/**\n * Helper to build string/array length constraint checks for Zod Mini mode\n */\nfunction buildLengthChecks(min?: number, max?: number): string[] {\n const checks: string[] = []\n if (min !== undefined) checks.push(`z.minLength(${min})`)\n if (max !== undefined) checks.push(`z.maxLength(${max})`)\n return checks\n}\n\nconst zodKeywordMapper = {\n any: () => 'z.any()',\n unknown: () => 'z.unknown()',\n void: () => 'z.void()',\n number: (coercion?: boolean, min?: number, max?: number, exclusiveMinimum?: number, exclusiveMaximum?: number, mini?: boolean) => {\n if (mini) {\n const checks: string[] = []\n if (min !== undefined) checks.push(`z.minimum(${min})`)\n if (max !== undefined) checks.push(`z.maximum(${max})`)\n if (exclusiveMinimum !== undefined) checks.push(`z.minimum(${exclusiveMinimum}, { exclusive: true })`)\n if (exclusiveMaximum !== undefined) checks.push(`z.maximum(${exclusiveMaximum}, { exclusive: true })`)\n if (checks.length > 0) {\n return `z.number().check(${checks.join(', ')})`\n }\n return 'z.number()'\n }\n return [\n coercion ? 'z.coerce.number()' : 'z.number()',\n min !== undefined ? `.min(${min})` : undefined,\n max !== undefined ? `.max(${max})` : undefined,\n exclusiveMinimum !== undefined ? `.gt(${exclusiveMinimum})` : undefined,\n exclusiveMaximum !== undefined ? `.lt(${exclusiveMaximum})` : undefined,\n ]\n .filter(Boolean)\n .join('')\n },\n integer: (coercion?: boolean, min?: number, max?: number, version: '3' | '4' = '3', exclusiveMinimum?: number, exclusiveMaximum?: number, mini?: boolean) => {\n if (mini) {\n const checks: string[] = []\n if (min !== undefined) checks.push(`z.minimum(${min})`)\n if (max !== undefined) checks.push(`z.maximum(${max})`)\n if (exclusiveMinimum !== undefined) checks.push(`z.minimum(${exclusiveMinimum}, { exclusive: true })`)\n if (exclusiveMaximum !== undefined) checks.push(`z.maximum(${exclusiveMaximum}, { exclusive: true })`)\n if (checks.length > 0) {\n return `z.int().check(${checks.join(', ')})`\n }\n return 'z.int()'\n }\n return [\n coercion ? 'z.coerce.number().int()' : version === '4' ? 'z.int()' : 'z.number().int()',\n min !== undefined ? `.min(${min})` : undefined,\n max !== undefined ? `.max(${max})` : undefined,\n exclusiveMinimum !== undefined ? `.gt(${exclusiveMinimum})` : undefined,\n exclusiveMaximum !== undefined ? `.lt(${exclusiveMaximum})` : undefined,\n ]\n .filter(Boolean)\n .join('')\n },\n interface: (value?: string, strict?: boolean) => {\n if (strict) {\n return `z.strictInterface({\n ${value}\n })`\n }\n return `z.interface({\n ${value}\n })`\n },\n object: (value?: string, strict?: boolean, version: '3' | '4' = '3') => {\n if (version === '4' && strict) {\n return `z.strictObject({\n ${value}\n })`\n }\n\n if (strict) {\n return `z.object({\n ${value}\n }).strict()`\n }\n\n return `z.object({\n ${value}\n })`\n },\n string: (coercion?: boolean, min?: number, max?: number, mini?: boolean) => {\n if (mini) {\n const checks = buildLengthChecks(min, max)\n if (checks.length > 0) {\n return `z.string().check(${checks.join(', ')})`\n }\n return 'z.string()'\n }\n return [coercion ? 'z.coerce.string()' : 'z.string()', min !== undefined ? `.min(${min})` : undefined, max !== undefined ? `.max(${max})` : undefined]\n .filter(Boolean)\n .join('')\n },\n //support for discriminatedUnion\n boolean: () => 'z.boolean()',\n undefined: () => 'z.undefined()',\n nullable: (value?: string) => {\n if (value) {\n return `z.nullable(${value})`\n }\n return '.nullable()'\n },\n null: () => 'z.null()',\n nullish: (value?: string) => {\n if (value) {\n return `z.nullish(${value})`\n }\n return '.nullish()'\n },\n array: (items: string[] = [], min?: number, max?: number, unique?: boolean, mini?: boolean) => {\n if (mini) {\n const checks = buildLengthChecks(min, max)\n if (unique) checks.push(`z.refine(items => new Set(items).size === items.length, { message: \"Array entries must be unique\" })`)\n if (checks.length > 0) {\n return `z.array(${items?.join('')}).check(${checks.join(', ')})`\n }\n return `z.array(${items?.join('')})`\n }\n return [\n `z.array(${items?.join('')})`,\n min !== undefined ? `.min(${min})` : undefined,\n max !== undefined ? `.max(${max})` : undefined,\n unique ? `.refine(items => new Set(items).size === items.length, { message: \"Array entries must be unique\" })` : undefined,\n ]\n .filter(Boolean)\n .join('')\n },\n tuple: (items: string[] = []) => `z.tuple([${items?.join(', ')}])`,\n enum: (items: string[] = []) => `z.enum([${items?.join(', ')}])`,\n union: (items: string[] = []) => `z.union([${items?.join(', ')}])`,\n const: (value?: string | number | boolean) => `z.literal(${value ?? ''})`,\n /**\n * ISO 8601\n */\n datetime: (offset = false, local = false, version: '3' | '4' = '3', mini?: boolean) => {\n // Zod Mini doesn't support .datetime() method, use plain string\n if (mini) {\n return 'z.string()'\n }\n\n if (offset) {\n return version === '4' ? `z.iso.datetime({ offset: ${offset} })` : `z.string().datetime({ offset: ${offset} })`\n }\n\n if (local) {\n return version === '4' ? `z.iso.datetime({ local: ${local} })` : `z.string().datetime({ local: ${local} })`\n }\n\n return version === '4' ? 'z.iso.datetime()' : 'z.string().datetime()'\n },\n /**\n * Type `'date'` Date\n * Type `'string'` ISO date format (YYYY-MM-DD)\n * @default ISO date format (YYYY-MM-DD)\n */\n date: (type: 'date' | 'string' = 'string', coercion?: boolean, version: '3' | '4' = '3') => {\n if (type === 'string') {\n return version === '4' ? 'z.iso.date()' : 'z.string().date()'\n }\n\n if (coercion) {\n return 'z.coerce.date()'\n }\n\n return 'z.date()'\n },\n /**\n * Type `'date'` Date\n * Type `'string'` ISO time format (HH:mm:ss[.SSSSSS])\n * @default ISO time format (HH:mm:ss[.SSSSSS])\n */\n time: (type: 'date' | 'string' = 'string', coercion?: boolean, version: '3' | '4' = '3') => {\n if (type === 'string') {\n return version === '4' ? 'z.iso.time()' : 'z.string().time()'\n }\n\n if (coercion) {\n return 'z.coerce.date()'\n }\n\n return 'z.date()'\n },\n uuid: (coercion?: boolean, version: '3' | '4' = '3', min?: number, max?: number, mini?: boolean) => {\n if (mini) {\n const checks = buildLengthChecks(min, max)\n if (checks.length > 0) {\n return `z.uuid().check(${checks.join(', ')})`\n }\n return 'z.uuid()'\n }\n return [\n coercion ? (version === '4' ? 'z.uuid()' : 'z.coerce.string().uuid()') : version === '4' ? 'z.uuid()' : 'z.string().uuid()',\n min !== undefined ? `.min(${min})` : undefined,\n max !== undefined ? `.max(${max})` : undefined,\n ]\n .filter(Boolean)\n .join('')\n },\n url: (coercion?: boolean, version: '3' | '4' = '3', min?: number, max?: number, mini?: boolean) => {\n if (mini) {\n const checks = buildLengthChecks(min, max)\n if (checks.length > 0) {\n return `z.url().check(${checks.join(', ')})`\n }\n return 'z.url()'\n }\n return [\n coercion ? (version === '4' ? 'z.url()' : 'z.coerce.string().url()') : version === '4' ? 'z.url()' : 'z.string().url()',\n min !== undefined ? `.min(${min})` : undefined,\n max !== undefined ? `.max(${max})` : undefined,\n ]\n .filter(Boolean)\n .join('')\n },\n default: (value?: string | number | boolean | object, innerSchema?: string, mini?: boolean) => {\n if (mini && innerSchema) {\n const defaultValue = typeof value === 'object' ? '{}' : (value ?? '')\n return `z._default(${innerSchema}, ${defaultValue})`\n }\n\n if (typeof value === 'object') {\n return '.default({})'\n }\n\n if (value === undefined) {\n return '.default()'\n }\n\n if (typeof value === 'string' && !value) {\n return `.default('')`\n }\n\n return `.default(${value ?? ''})`\n },\n and: (items: string[] = [], mini?: boolean) => {\n // zod/mini doesn't support .and() method, so we can't use intersection types\n // In mini mode, we try to extract and append .check() calls instead\n if (mini && items.length > 0) {\n // Try to extract check calls from additional items\n const checks: string[] = []\n for (const item of items) {\n // Extract .check(...) from patterns like \"z.string().check(...)\"\n // Need to handle nested parentheses properly\n const checkStart = item.indexOf('.check(')\n if (checkStart !== -1) {\n // Find the matching closing parenthesis\n let depth = 0\n let i = checkStart + 7 // length of '.check('\n let checkContent = ''\n while (i < item.length) {\n const char = item[i]\n if (char === '(') depth++\n else if (char === ')') {\n if (depth === 0) break\n depth--\n }\n checkContent += char\n i++\n }\n if (checkContent) {\n checks.push(checkContent)\n }\n }\n }\n\n if (checks.length > 0) {\n // Append checks to the base schema\n return `.check(${checks.join(', ')})`\n }\n\n // If we can't extract checks, just use the first schema (limitation)\n return ''\n }\n return items?.map((item) => `.and(${item})`).join('')\n },\n describe: (value = '', innerSchema?: string, mini?: boolean) => {\n if (mini) {\n return undefined\n }\n\n if (innerSchema) {\n return `z.describe(${innerSchema}, ${value})`\n }\n return `.describe(${value})`\n },\n max: undefined,\n min: undefined,\n optional: (value?: string) => {\n if (value) {\n return `z.optional(${value})`\n }\n return '.optional()'\n },\n matches: (value = '', coercion?: boolean, mini?: boolean, min?: number, max?: number) => {\n if (mini) {\n const checks = buildLengthChecks(min, max)\n checks.push(`z.regex(${value})`)\n return `z.string().check(${checks.join(', ')})`\n }\n return [\n coercion ? 'z.coerce.string()' : 'z.string()',\n min !== undefined ? `.min(${min})` : undefined,\n max !== undefined ? `.max(${max})` : undefined,\n `.regex(${value})`,\n ]\n .filter(Boolean)\n .join('')\n },\n email: (coercion?: boolean, version: '3' | '4' = '3', min?: number, max?: number, mini?: boolean) => {\n if (mini) {\n const checks = buildLengthChecks(min, max)\n if (checks.length > 0) {\n return `z.email().check(${checks.join(', ')})`\n }\n return 'z.email()'\n }\n return [\n coercion ? (version === '4' ? 'z.email()' : 'z.coerce.string().email()') : version === '4' ? 'z.email()' : 'z.string().email()',\n min !== undefined ? `.min(${min})` : undefined,\n max !== undefined ? `.max(${max})` : undefined,\n ]\n .filter(Boolean)\n .join('')\n },\n firstName: undefined,\n lastName: undefined,\n password: undefined,\n phone: undefined,\n readOnly: undefined,\n writeOnly: undefined,\n ref: (value?: string) => {\n if (!value) {\n return undefined\n }\n\n return `z.lazy(() => ${value})`\n },\n blob: () => 'z.instanceof(File)',\n deprecated: undefined,\n example: undefined,\n schema: undefined,\n catchall: (value?: string, mini?: boolean) => {\n // Zod Mini doesn't support .catchall() method\n if (mini) {\n return undefined\n }\n return value ? `.catchall(${value})` : undefined\n },\n name: undefined,\n exclusiveMinimum: undefined,\n exclusiveMaximum: undefined,\n} satisfies SchemaMapper<string | null | undefined>\n\n/**\n * @link based on https://github.com/cellular/oazapfts/blob/7ba226ebb15374e8483cc53e7532f1663179a22c/src/codegen/generate.ts#L398\n */\n\nexport function sort(items?: Schema[]): Schema[] {\n const order: string[] = [\n schemaKeywords.string,\n schemaKeywords.datetime,\n schemaKeywords.date,\n schemaKeywords.time,\n schemaKeywords.tuple,\n schemaKeywords.number,\n schemaKeywords.object,\n schemaKeywords.enum,\n schemaKeywords.url,\n schemaKeywords.email,\n schemaKeywords.firstName,\n schemaKeywords.lastName,\n schemaKeywords.password,\n schemaKeywords.matches,\n schemaKeywords.uuid,\n schemaKeywords.null,\n schemaKeywords.min,\n schemaKeywords.max,\n schemaKeywords.default,\n schemaKeywords.describe,\n schemaKeywords.optional,\n schemaKeywords.nullable,\n schemaKeywords.nullish,\n ]\n\n if (!items) {\n return []\n }\n\n return transformers.orderBy(items, [(v) => order.indexOf(v.keyword)], ['asc'])\n}\n\ntype MiniModifiers = {\n hasOptional?: boolean\n hasNullable?: boolean\n hasNullish?: boolean\n defaultValue?: string | number | true | object\n}\n\n/**\n * Keywords that represent modifiers for mini mode\n * These are separated from the base schema and wrapped around it\n * Note: describe is included to filter it out, but won't be wrapped (Zod Mini doesn't support describe)\n */\nexport const miniModifierKeywords = [schemaKeywords.optional, schemaKeywords.nullable, schemaKeywords.nullish, schemaKeywords.default, schemaKeywords.describe]\n\n/**\n * Extracts mini mode modifiers from a schemas array\n * This can be reused by other parsers (e.g., valibot) that need similar functionality\n * Note: describe is not included as Zod Mini doesn't support it\n */\nexport function extractMiniModifiers(schemas: Schema[]): MiniModifiers {\n const defaultSchema = schemas.find((item) => isKeyword(item, schemaKeywords.default)) as { keyword: string; args: unknown } | undefined\n\n return {\n hasOptional: schemas.some((item) => isKeyword(item, schemaKeywords.optional)),\n hasNullable: schemas.some((item) => isKeyword(item, schemaKeywords.nullable)),\n hasNullish: schemas.some((item) => isKeyword(item, schemaKeywords.nullish)),\n defaultValue: defaultSchema?.args as string | number | true | object | undefined,\n }\n}\n\n/**\n * Filters out modifier keywords from schemas for mini mode base schema parsing\n * This can be reused by other parsers (e.g., valibot) that need similar functionality\n */\nexport function filterMiniModifiers(schemas: Schema[]): Schema[] {\n return schemas.filter((item) => !miniModifierKeywords.some((keyword) => isKeyword(item, keyword)))\n}\n\n/**\n * Wraps an output string with Zod Mini functional modifiers\n * Order: default (innermost) -> nullable -> optional (outermost)\n * OR: default -> nullish\n * Note: describe is not supported in Zod Mini and is skipped\n */\nexport function wrapWithMiniModifiers(output: string, modifiers: MiniModifiers): string {\n let result = output\n\n // Apply default first (innermost wrapper)\n if (modifiers.defaultValue !== undefined) {\n result = zodKeywordMapper.default(modifiers.defaultValue, result, true)!\n }\n\n // Apply nullish, nullable, or optional (outer wrappers for optionality)\n if (modifiers.hasNullish) {\n result = zodKeywordMapper.nullish(result)!\n } else {\n if (modifiers.hasNullable) {\n result = zodKeywordMapper.nullable(result)!\n }\n if (modifiers.hasOptional) {\n result = zodKeywordMapper.optional(result)!\n }\n }\n\n return result\n}\n\nconst shouldCoerce = (coercion: ParserOptions['coercion'] | undefined, type: 'dates' | 'strings' | 'numbers'): boolean => {\n if (coercion === undefined) {\n return false\n }\n if (typeof coercion === 'boolean') {\n return coercion\n }\n\n return !!coercion[type]\n}\n\ntype ParserOptions = {\n mapper?: Record<string, string>\n coercion?: boolean | { dates?: boolean; strings?: boolean; numbers?: boolean }\n wrapOutput?: (opts: { output: string; schema: any }) => string | undefined\n version: '3' | '4'\n skipLazyForRefs?: boolean\n mini?: boolean\n}\n\n// Create the parser using createParser\nexport const parse = createParser<string, ParserOptions>({\n mapper: zodKeywordMapper,\n handlers: {\n union(tree, options) {\n const { current, schema, parent, name, siblings } = tree\n\n // zod union type needs at least 2 items\n if (Array.isArray(current.args) && current.args.length === 1) {\n return this.parse({ schema, parent, name, current: current.args[0] as Schema, siblings }, options)\n }\n if (Array.isArray(current.args) && !current.args.length) {\n return ''\n }\n\n return zodKeywordMapper.union(\n sort(current.args)\n .map((it, _index, siblings) => this.parse({ schema, parent: current, name, current: it, siblings }, options))\n .filter(Boolean),\n )\n },\n and(tree, options) {\n const { current, schema, name } = tree\n\n const items = sort(current.args)\n .filter((schema: Schema) => {\n return ![schemaKeywords.optional, schemaKeywords.describe].includes(schema.keyword as typeof schemaKeywords.describe)\n })\n .map((it: Schema, _index, siblings) => this.parse({ schema, parent: current, name, current: it, siblings }, options))\n .filter(Boolean)\n\n return `${items.slice(0, 1)}${zodKeywordMapper.and(items.slice(1), options.mini)}`\n },\n array(tree, options) {\n const { current, schema, name } = tree\n\n return zodKeywordMapper.array(\n sort(current.args.items)\n .map((it, _index, siblings) => {\n return this.parse({ schema, parent: current, name, current: it, siblings }, options)\n })\n .filter(Boolean),\n current.args.min,\n current.args.max,\n current.args.unique,\n options.mini,\n )\n },\n enum(tree, options) {\n const { current, schema, name } = tree\n\n if (current.args.asConst) {\n if (current.args.items.length === 1) {\n const child = {\n keyword: schemaKeywords.const,\n args: current.args.items[0],\n }\n return this.parse({ schema, parent: current, name, current: child, siblings: [child] }, options)\n }\n\n return zodKeywordMapper.union(\n current.args.items\n .map((schema) => ({\n keyword: schemaKeywords.const,\n args: schema,\n }))\n .map((it, _index, siblings) => {\n return this.parse({ schema, parent: current, name, current: it, siblings }, options)\n })\n .filter(Boolean),\n )\n }\n\n return zodKeywordMapper.enum(\n current.args.items.map((schema) => {\n if (schema.format === 'boolean') {\n return transformers.stringify(schema.value)\n }\n\n if (schema.format === 'number') {\n return transformers.stringify(schema.value)\n }\n return transformers.stringify(schema.value)\n }),\n )\n },\n ref(tree, options) {\n const { current } = tree\n\n // Skip z.lazy wrapper if skipLazyForRefs is true (e.g., inside v4 getters)\n if (options.skipLazyForRefs) {\n return current.args?.name\n }\n return zodKeywordMapper.ref(current.args?.name)\n },\n object(tree, options) {\n const { current, schema, name } = tree\n\n const propertyEntries = Object.entries(current.args?.properties || {}).filter((item) => {\n const schema = item[1]\n return schema && typeof schema.map === 'function'\n })\n\n const properties = propertyEntries\n .map(([propertyName, schemas]) => {\n const nameSchema = schemas.find((it) => it.keyword === schemaKeywords.name) as SchemaKeywordMapper['name']\n const isNullable = schemas.some((it) => isKeyword(it, schemaKeywords.nullable))\n const isNullish = schemas.some((it) => isKeyword(it, schemaKeywords.nullish))\n const isOptional = schemas.some((it) => isKeyword(it, schemaKeywords.optional))\n const hasRef = !!SchemaGenerator.find(schemas, schemaKeywords.ref)\n\n const mappedName = nameSchema?.args || propertyName\n\n // custom mapper(pluginOptions)\n // Use Object.hasOwn to avoid matching inherited properties like 'toString', 'valueOf', etc.\n if (options.mapper && Object.hasOwn(options.mapper, mappedName)) {\n return `\"${propertyName}\": ${options.mapper?.[mappedName]}`\n }\n\n const baseSchemaOutput = sort(schemas)\n .filter((schema) => {\n return !isKeyword(schema, schemaKeywords.optional) && !isKeyword(schema, schemaKeywords.nullable) && !isKeyword(schema, schemaKeywords.nullish)\n })\n .map((it) => {\n // For v4 with refs, skip z.lazy wrapper since the getter provides lazy evaluation\n const skipLazyForRefs = options.version === '4' && hasRef\n return this.parse({ schema, parent: current, name, current: it, siblings: schemas }, { ...options, skipLazyForRefs })\n })\n .filter(Boolean)\n .join('')\n\n const objectValue = options.wrapOutput\n ? options.wrapOutput({ output: baseSchemaOutput, schema: schema?.properties?.[propertyName] }) || baseSchemaOutput\n : baseSchemaOutput\n\n if (options.version === '4' && hasRef) {\n // In mini mode, use functional wrappers instead of chainable methods\n if (options.mini) {\n // both optional and nullable\n if (isNullish) {\n return `get \"${propertyName}\"(){\n return ${zodKeywordMapper.nullish(objectValue)}\n }`\n }\n\n // undefined\n if (isOptional) {\n return `get \"${propertyName}\"(){\n return ${zodKeywordMapper.optional(objectValue)}\n }`\n }\n\n // null\n if (isNullable) {\n return `get \"${propertyName}\"(){\n return ${zodKeywordMapper.nullable(objectValue)}\n }`\n }\n\n return `get \"${propertyName}\"(){\n return ${objectValue}\n }`\n }\n\n // Non-mini mode uses chainable methods\n // both optional and nullable\n if (isNullish) {\n return `get \"${propertyName}\"(){\n return ${objectValue}${zodKeywordMapper.nullish()}\n }`\n }\n\n // undefined\n if (isOptional) {\n return `get \"${propertyName}\"(){\n return ${objectValue}${zodKeywordMapper.optional()}\n }`\n }\n\n // null\n if (isNullable) {\n return `get \"${propertyName}\"(){\n return ${objectValue}${zodKeywordMapper.nullable()}\n }`\n }\n\n return `get \"${propertyName}\"(){\n return ${objectValue}\n }`\n }\n\n // both optional and nullable\n if (isNullish && options.mini) {\n return `\"${propertyName}\": ${zodKeywordMapper.nullish(objectValue)}`\n }\n\n if (isNullish && !options.mini) {\n return `\"${propertyName}\": ${objectValue}${zodKeywordMapper.nullish()}`\n }\n\n // undefined\n if (isOptional) {\n return `\"${propertyName}\": ${zodKeywordMapper.optional(objectValue)}`\n }\n\n // null\n if (isNullable) {\n return `\"${propertyName}\": ${zodKeywordMapper.nullable(objectValue)}`\n }\n\n return `\"${propertyName}\": ${objectValue}`\n })\n .join(',\\n')\n\n const additionalProperties = current.args?.additionalProperties?.length\n ? current.args.additionalProperties\n .map((it, _index, siblings) => this.parse({ schema, parent: current, name, current: it, siblings }, options))\n .filter(Boolean)\n .join('')\n : undefined\n\n const text = [\n zodKeywordMapper.object(properties, current.args?.strict, options.version),\n additionalProperties ? zodKeywordMapper.catchall(additionalProperties, options.mini) : undefined,\n ].filter(Boolean)\n\n return text.join('')\n },\n tuple(tree, options) {\n const { current, schema, name } = tree\n\n return zodKeywordMapper.tuple(\n current.args.items.map((it, _index, siblings) => this.parse({ schema, parent: current, name, current: it, siblings }, options)).filter(Boolean),\n )\n },\n const(tree, _options) {\n const { current } = tree\n\n if (current.args.format === 'number' && current.args.value !== undefined) {\n return zodKeywordMapper.const(Number(current.args.value))\n }\n\n if (current.args.format === 'boolean' && current.args.value !== undefined) {\n return zodKeywordMapper.const(typeof current.args.value === 'boolean' ? current.args.value : undefined)\n }\n return zodKeywordMapper.const(transformers.stringify(current.args.value))\n },\n matches(tree, options) {\n const { current, siblings } = tree\n\n // Early exit: if siblings contain both matches and ref → skip matches entirely\n const hasRef = siblings.some((it) => isKeyword(it, schemaKeywords.ref))\n if (hasRef) {\n return undefined // strip matches\n }\n\n const minSchema = findSchemaKeyword(siblings, 'min')\n const maxSchema = findSchemaKeyword(siblings, 'max')\n\n if (current.args) {\n return zodKeywordMapper.matches(\n transformers.toRegExpString(current.args, null),\n shouldCoerce(options.coercion, 'strings'),\n options.mini,\n minSchema?.args,\n maxSchema?.args,\n )\n }\n return undefined\n },\n default(tree, options) {\n const { current } = tree\n\n // In mini mode, default is handled by wrapWithMiniModifiers\n if (options.mini) {\n return undefined\n }\n if (current.args !== undefined) {\n return zodKeywordMapper.default(current.args)\n }\n // When args is undefined, call the mapper without arguments\n return zodKeywordMapper.default()\n },\n describe(tree, options) {\n const { current } = tree\n\n if (current.args) {\n return zodKeywordMapper.describe(transformers.stringify(current.args.toString()), undefined, options.mini)\n }\n return undefined\n },\n string(tree, options) {\n const { siblings } = tree\n\n const minSchema = findSchemaKeyword(siblings, 'min')\n const maxSchema = findSchemaKeyword(siblings, 'max')\n\n return zodKeywordMapper.string(shouldCoerce(options.coercion, 'strings'), minSchema?.args, maxSchema?.args, options.mini)\n },\n uuid(tree, options) {\n const { siblings } = tree\n\n const minSchema = findSchemaKeyword(siblings, 'min')\n const maxSchema = findSchemaKeyword(siblings, 'max')\n\n return zodKeywordMapper.uuid(shouldCoerce(options.coercion, 'strings'), options.version, minSchema?.args, maxSchema?.args, options.mini)\n },\n email(tree, options) {\n const { siblings } = tree\n\n const minSchema = findSchemaKeyword(siblings, 'min')\n const maxSchema = findSchemaKeyword(siblings, 'max')\n\n return zodKeywordMapper.email(shouldCoerce(options.coercion, 'strings'), options.version, minSchema?.args, maxSchema?.args, options.mini)\n },\n url(tree, options) {\n const { siblings } = tree\n\n const minSchema = findSchemaKeyword(siblings, 'min')\n const maxSchema = findSchemaKeyword(siblings, 'max')\n\n return zodKeywordMapper.url(shouldCoerce(options.coercion, 'strings'), options.version, minSchema?.args, maxSchema?.args, options.mini)\n },\n number(tree, options) {\n const { siblings } = tree\n\n const minSchema = findSchemaKeyword(siblings, 'min')\n const maxSchema = findSchemaKeyword(siblings, 'max')\n const exclusiveMinimumSchema = findSchemaKeyword(siblings, 'exclusiveMinimum')\n const exclusiveMaximumSchema = findSchemaKeyword(siblings, 'exclusiveMaximum')\n\n return zodKeywordMapper.number(\n shouldCoerce(options.coercion, 'numbers'),\n minSchema?.args,\n maxSchema?.args,\n exclusiveMinimumSchema?.args,\n exclusiveMaximumSchema?.args,\n options.mini,\n )\n },\n integer(tree, options) {\n const { siblings } = tree\n\n const minSchema = findSchemaKeyword(siblings, 'min')\n const maxSchema = findSchemaKeyword(siblings, 'max')\n const exclusiveMinimumSchema = findSchemaKeyword(siblings, 'exclusiveMinimum')\n const exclusiveMaximumSchema = findSchemaKeyword(siblings, 'exclusiveMaximum')\n\n return zodKeywordMapper.integer(\n shouldCoerce(options.coercion, 'numbers'),\n minSchema?.args,\n maxSchema?.args,\n options.version,\n exclusiveMinimumSchema?.args,\n exclusiveMaximumSchema?.args,\n options.mini,\n )\n },\n datetime(tree, options) {\n const { current } = tree\n\n return zodKeywordMapper.datetime(current.args.offset, current.args.local, options.version, options.mini)\n },\n date(tree, options) {\n const { current } = tree\n\n return zodKeywordMapper.date(current.args.type, shouldCoerce(options.coercion, 'dates'), options.version)\n },\n time(tree, options) {\n const { current } = tree\n\n return zodKeywordMapper.time(current.args.type, shouldCoerce(options.coercion, 'dates'), options.version)\n },\n },\n})\n","import transformers from '@kubb/core/transformers'\nimport type { SchemaObject } from '@kubb/oas'\nimport { isKeyword, type Schema, SchemaGenerator, schemaKeywords } from '@kubb/plugin-oas'\nimport { Const, File, Type } from '@kubb/react-fabric'\nimport type { KubbNode } from '@kubb/react-fabric/types'\nimport * as parserZod from '../parser.ts'\nimport type { PluginZod } from '../types.ts'\n\ntype Props = {\n name: string\n typeName?: string\n inferTypeName?: string\n tree: Array<Schema>\n schema: SchemaObject\n description?: string\n coercion: PluginZod['resolvedOptions']['coercion']\n mapper: PluginZod['resolvedOptions']['mapper']\n keysToOmit?: string[]\n wrapOutput?: PluginZod['resolvedOptions']['wrapOutput']\n version: '3' | '4'\n emptySchemaType: PluginZod['resolvedOptions']['emptySchemaType']\n mini?: boolean\n}\n\nexport function Zod({\n name,\n typeName,\n tree,\n schema,\n inferTypeName,\n mapper,\n coercion,\n keysToOmit,\n description,\n wrapOutput,\n version,\n emptySchemaType,\n mini = false,\n}: Props): KubbNode {\n const hasTuple = !!SchemaGenerator.find(tree, schemaKeywords.tuple)\n\n const schemas = parserZod.sort(tree).filter((item) => {\n if (hasTuple && (isKeyword(item, schemaKeywords.min) || isKeyword(item, schemaKeywords.max))) {\n return false\n }\n\n return true\n })\n\n // In mini mode, filter out modifiers from the main schema parsing\n const baseSchemas = mini ? parserZod.filterMiniModifiers(schemas) : schemas\n\n const output = baseSchemas\n .map((schemaKeyword, index) => {\n const siblings = baseSchemas.filter((_, i) => i !== index)\n\n return parserZod.parse({ schema, parent: undefined, current: schemaKeyword, siblings, name }, { mapper, coercion, wrapOutput, version, mini })\n })\n .filter(Boolean)\n .join('')\n\n let suffix = ''\n const firstSchema = schemas.at(0)\n const lastSchema = schemas.at(-1)\n\n if (!mini && lastSchema && isKeyword(lastSchema, schemaKeywords.nullable)) {\n if (firstSchema && isKeyword(firstSchema, schemaKeywords.ref)) {\n if (version === '3') {\n suffix = '.unwrap().schema.unwrap()'\n } else {\n suffix = '.unwrap().unwrap()'\n }\n } else {\n suffix = '.unwrap()'\n }\n } else if (!mini) {\n if (firstSchema && isKeyword(firstSchema, schemaKeywords.ref)) {\n if (version === '3') {\n suffix = '.schema'\n } else {\n suffix = '.unwrap()'\n }\n }\n }\n\n const emptyValue = parserZod.parse(\n {\n schema,\n parent: undefined,\n current: {\n keyword: schemaKeywords[emptySchemaType],\n },\n siblings: [],\n },\n { mapper, coercion, wrapOutput, version, mini },\n )\n\n let baseSchemaOutput =\n [output, keysToOmit?.length ? `${suffix}.omit({ ${keysToOmit.map((key) => `'${key}': true`).join(',')} })` : undefined].filter(Boolean).join('') ||\n emptyValue ||\n ''\n\n // For mini mode, wrap the output with modifiers using the parser function\n if (mini) {\n baseSchemaOutput = parserZod.wrapWithMiniModifiers(baseSchemaOutput, parserZod.extractMiniModifiers(schemas))\n }\n\n const wrappedSchemaOutput = wrapOutput ? wrapOutput({ output: baseSchemaOutput, schema }) || baseSchemaOutput : baseSchemaOutput\n const finalOutput = typeName ? `${wrappedSchemaOutput} as unknown as ${version === '4' ? 'z.ZodType' : 'ToZod'}<${typeName}>` : wrappedSchemaOutput\n\n return (\n <>\n <File.Source name={name} isExportable isIndexable>\n <Const\n export\n name={name}\n JSDoc={{\n comments: [description ? `@description ${transformers.jsStringEscape(description)}` : undefined].filter(Boolean),\n }}\n >\n {finalOutput}\n </Const>\n </File.Source>\n {inferTypeName && (\n <File.Source name={inferTypeName} isExportable isIndexable isTypeOnly>\n {typeName && (\n <Type export name={inferTypeName}>\n {typeName}\n </Type>\n )}\n {!typeName && (\n <Type export name={inferTypeName}>\n {`z.infer<typeof ${name}>`}\n </Type>\n )}\n </File.Source>\n )}\n </>\n )\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- const require_components = require('./components-BKoSLPE6.cjs');
1
+ const require_components = require('./components-Cs1U51T4.cjs');
2
2
 
3
3
  exports.Operations = require_components.Operations;
4
4
  exports.Zod = require_components.Zod;
@@ -1,3 +1,3 @@
1
- import { n as Operations, t as Zod } from "./components-BdH8vk4k.js";
1
+ import { n as Operations, t as Zod } from "./components-BgtqtaQt.js";
2
2
 
3
3
  export { Operations, Zod };
@@ -1,4 +1,4 @@
1
- const require_components = require('./components-BKoSLPE6.cjs');
1
+ const require_components = require('./components-Cs1U51T4.cjs');
2
2
  let node_path = require("node:path");
3
3
  node_path = require_components.__toESM(node_path);
4
4
  let _kubb_plugin_oas = require("@kubb/plugin-oas");
@@ -285,4 +285,4 @@ Object.defineProperty(exports, 'zodGenerator', {
285
285
  return zodGenerator;
286
286
  }
287
287
  });
288
- //# sourceMappingURL=generators-boBB_r4u.cjs.map
288
+ //# sourceMappingURL=generators-C9G6FSvb.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"generators-boBB_r4u.cjs","names":["File","Operations","SchemaGenerator","options","schemaKeywords","pluginTsName","Fragment","File","path","Zod"],"sources":["../src/generators/operationsGenerator.tsx","../src/generators/zodGenerator.tsx"],"sourcesContent":["import { usePluginManager } from '@kubb/core/hooks'\nimport { createReactGenerator } from '@kubb/plugin-oas/generators'\nimport { useOas, useOperationManager } from '@kubb/plugin-oas/hooks'\nimport { getBanner, getFooter } from '@kubb/plugin-oas/utils'\nimport { File } from '@kubb/react-fabric'\nimport { Operations } from '../components/Operations.tsx'\nimport type { PluginZod } from '../types'\n\nexport const operationsGenerator = createReactGenerator<PluginZod>({\n name: 'operations',\n Operations({ operations, generator, plugin }) {\n const {\n key: pluginKey,\n options: { output, importPath },\n } = plugin\n const pluginManager = usePluginManager()\n\n const oas = useOas()\n const { getFile, groupSchemasByName } = useOperationManager(generator)\n\n const name = 'operations'\n const file = pluginManager.getFile({ name, extname: '.ts', pluginKey })\n\n const transformedOperations = operations.map((operation) => ({ operation, data: groupSchemasByName(operation, { type: 'function' }) }))\n\n const imports = Object.entries(transformedOperations)\n .map(([key, { data, operation }]) => {\n const names = [data.request, ...Object.values(data.responses), ...Object.values(data.parameters)].filter(Boolean)\n\n return <File.Import key={key} name={names} root={file.path} path={getFile(operation).path} />\n })\n .filter(Boolean)\n\n return (\n <File\n baseName={file.baseName}\n path={file.path}\n meta={file.meta}\n banner={getBanner({ oas, output, config: pluginManager.config })}\n footer={getFooter({ oas, output })}\n >\n <File.Import isTypeOnly name={['z']} path={importPath} />\n {imports}\n <Operations name={name} operations={transformedOperations} />\n </File>\n )\n },\n})\n","import path from 'node:path'\nimport { useMode, usePluginManager } from '@kubb/core/hooks'\nimport { type OperationSchema as OperationSchemaType, SchemaGenerator, schemaKeywords } from '@kubb/plugin-oas'\nimport { createReactGenerator } from '@kubb/plugin-oas/generators'\nimport { useOas, useOperationManager, useSchemaManager } from '@kubb/plugin-oas/hooks'\nimport { getBanner, getFooter } from '@kubb/plugin-oas/utils'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { File, Fragment } from '@kubb/react-fabric'\nimport { Zod } from '../components'\nimport type { PluginZod } from '../types'\n\nexport const zodGenerator = createReactGenerator<PluginZod>({\n name: 'zod',\n Operation({ config, operation, generator, plugin }) {\n const {\n options,\n options: { coercion: globalCoercion, inferred, typed, mapper, wrapOutput, version, mini },\n } = plugin\n\n const mode = useMode()\n const pluginManager = usePluginManager()\n\n const oas = useOas()\n const { getSchemas, getFile, getGroup } = useOperationManager(generator)\n const schemaManager = useSchemaManager()\n\n const file = getFile(operation)\n const schemas = getSchemas(operation)\n const schemaGenerator = new SchemaGenerator(options, {\n fabric: generator.context.fabric,\n oas,\n plugin,\n pluginManager,\n events: generator.context.events,\n mode,\n override: options.override,\n })\n\n const operationSchemas = [schemas.pathParams, schemas.queryParams, schemas.headerParams, schemas.statusCodes, schemas.request, schemas.response]\n .flat()\n .filter(Boolean)\n\n const mapOperationSchema = ({ name, schema: schemaOriginal, description, keysToOmit: keysToOmitOriginal, ...options }: OperationSchemaType) => {\n let schemaObject = schemaOriginal\n let keysToOmit = keysToOmitOriginal\n\n if ((schemaOriginal.anyOf || schemaOriginal.oneOf) && keysToOmitOriginal && keysToOmitOriginal.length > 0) {\n schemaObject = structuredClone(schemaOriginal)\n\n // Remove $ref so the schema parser generates inline schema instead of a reference\n delete schemaObject.$ref\n\n for (const key of keysToOmitOriginal) {\n delete schemaObject.properties?.[key]\n }\n\n if (Array.isArray(schemaObject.required)) {\n schemaObject.required = schemaObject.required.filter((key) => !keysToOmitOriginal.includes(key))\n }\n\n keysToOmit = undefined\n }\n\n const hasProperties = Object.keys(schemaObject || {}).length > 0\n const hasDefaults = Object.values(schemaObject.properties || {}).some((prop) => prop && Object.hasOwn(prop, 'default'))\n\n const required = Array.isArray(schemaObject?.required) ? schemaObject.required.length > 0 : !!schemaObject?.required\n const optional = !required && !hasDefaults && hasProperties && name.includes('Params')\n\n if (!optional && Array.isArray(schemaObject.required) && !schemaObject.required.length) {\n schemaObject.required = Object.entries(schemaObject.properties || {})\n .filter(([_key, value]) => value && Object.hasOwn(value, 'default'))\n .map(([key]) => key)\n }\n\n const tree = [\n ...schemaGenerator.parse({ schema: schemaObject, name, parentName: null }),\n optional ? { keyword: schemaKeywords.optional } : undefined,\n ].filter(Boolean)\n const imports = schemaManager.getImports(tree)\n const group = options.operation ? getGroup(options.operation) : undefined\n\n const coercion = name.includes('Params') ? { numbers: true, strings: false, dates: true } : globalCoercion\n\n const zod = {\n name: schemaManager.getName(name, { type: 'function' }),\n inferTypeName: schemaManager.getName(name, { type: 'type' }),\n file: schemaManager.getFile(name),\n }\n\n const type = {\n name: schemaManager.getName(name, {\n type: 'type',\n pluginKey: [pluginTsName],\n }),\n file: schemaManager.getFile(options.operationName || name, {\n pluginKey: [pluginTsName],\n group,\n }),\n }\n\n return (\n <Fragment>\n {typed && <File.Import isTypeOnly root={file.path} path={type.file.path} name={[type.name]} />}\n {typed && version === '3' && <File.Import name={['ToZod']} root={file.path} path={path.resolve(config.root, config.output.path, '.kubb/ToZod.ts')} />}\n {imports.map((imp) => (\n <File.Import key={[imp.path, imp.name, imp.isTypeOnly].join('-')} root={file.path} path={imp.path} name={imp.name} />\n ))}\n <Zod\n name={zod.name}\n typeName={typed ? type.name : undefined}\n inferTypeName={inferred ? zod.inferTypeName : undefined}\n description={description}\n tree={tree}\n schema={schemaObject}\n mapper={mapper}\n coercion={coercion}\n keysToOmit={keysToOmit}\n wrapOutput={wrapOutput}\n version={plugin.options.version}\n emptySchemaType={plugin.options.emptySchemaType}\n mini={mini}\n />\n </Fragment>\n )\n }\n\n return (\n <File\n baseName={file.baseName}\n path={file.path}\n meta={file.meta}\n banner={getBanner({ oas, output: plugin.options.output, config: pluginManager.config })}\n footer={getFooter({ oas, output: plugin.options.output })}\n >\n <File.Import name={['z']} path={plugin.options.importPath} />\n {operationSchemas.map(mapOperationSchema)}\n </File>\n )\n },\n Schema({ config, schema, plugin }) {\n const { getName, getFile, getImports } = useSchemaManager()\n const {\n options: { output, emptySchemaType, coercion, inferred, typed, mapper, importPath, wrapOutput, version, mini },\n } = plugin\n const pluginManager = usePluginManager()\n const oas = useOas()\n\n const imports = getImports(schema.tree)\n\n const zod = {\n name: getName(schema.name, { type: 'function' }),\n inferTypeName: getName(schema.name, { type: 'type' }),\n file: getFile(schema.name),\n }\n\n const type = {\n name: getName(schema.name, { type: 'type', pluginKey: [pluginTsName] }),\n file: getFile(schema.name, { pluginKey: [pluginTsName] }),\n }\n\n return (\n <File\n baseName={zod.file.baseName}\n path={zod.file.path}\n meta={zod.file.meta}\n banner={getBanner({ oas, output, config: pluginManager.config })}\n footer={getFooter({ oas, output })}\n >\n <File.Import name={['z']} path={importPath} />\n {typed && <File.Import isTypeOnly root={zod.file.path} path={type.file.path} name={[type.name]} />}\n {typed && version === '3' && (\n <File.Import name={['ToZod']} root={zod.file.path} path={path.resolve(config.root, config.output.path, '.kubb/ToZod.ts')} />\n )}\n {imports.map((imp) => (\n <File.Import key={[imp.path, imp.name, imp.isTypeOnly].join('-')} root={zod.file.path} path={imp.path} name={imp.name} />\n ))}\n\n <Zod\n name={zod.name}\n typeName={typed ? type.name : undefined}\n inferTypeName={inferred ? zod.inferTypeName : undefined}\n description={schema.value.description}\n tree={schema.tree}\n schema={schema.value}\n mapper={mapper}\n coercion={coercion}\n wrapOutput={wrapOutput}\n version={version}\n emptySchemaType={emptySchemaType}\n mini={mini}\n />\n </File>\n )\n },\n})\n"],"mappings":"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"}
1
+ {"version":3,"file":"generators-C9G6FSvb.cjs","names":["File","Operations","SchemaGenerator","options","schemaKeywords","pluginTsName","Fragment","File","path","Zod"],"sources":["../src/generators/operationsGenerator.tsx","../src/generators/zodGenerator.tsx"],"sourcesContent":["import { usePluginManager } from '@kubb/core/hooks'\nimport { createReactGenerator } from '@kubb/plugin-oas/generators'\nimport { useOas, useOperationManager } from '@kubb/plugin-oas/hooks'\nimport { getBanner, getFooter } from '@kubb/plugin-oas/utils'\nimport { File } from '@kubb/react-fabric'\nimport { Operations } from '../components/Operations.tsx'\nimport type { PluginZod } from '../types'\n\nexport const operationsGenerator = createReactGenerator<PluginZod>({\n name: 'operations',\n Operations({ operations, generator, plugin }) {\n const {\n key: pluginKey,\n options: { output, importPath },\n } = plugin\n const pluginManager = usePluginManager()\n\n const oas = useOas()\n const { getFile, groupSchemasByName } = useOperationManager(generator)\n\n const name = 'operations'\n const file = pluginManager.getFile({ name, extname: '.ts', pluginKey })\n\n const transformedOperations = operations.map((operation) => ({ operation, data: groupSchemasByName(operation, { type: 'function' }) }))\n\n const imports = Object.entries(transformedOperations)\n .map(([key, { data, operation }]) => {\n const names = [data.request, ...Object.values(data.responses), ...Object.values(data.parameters)].filter(Boolean)\n\n return <File.Import key={key} name={names} root={file.path} path={getFile(operation).path} />\n })\n .filter(Boolean)\n\n return (\n <File\n baseName={file.baseName}\n path={file.path}\n meta={file.meta}\n banner={getBanner({ oas, output, config: pluginManager.config })}\n footer={getFooter({ oas, output })}\n >\n <File.Import isTypeOnly name={['z']} path={importPath} />\n {imports}\n <Operations name={name} operations={transformedOperations} />\n </File>\n )\n },\n})\n","import path from 'node:path'\nimport { useMode, usePluginManager } from '@kubb/core/hooks'\nimport { type OperationSchema as OperationSchemaType, SchemaGenerator, schemaKeywords } from '@kubb/plugin-oas'\nimport { createReactGenerator } from '@kubb/plugin-oas/generators'\nimport { useOas, useOperationManager, useSchemaManager } from '@kubb/plugin-oas/hooks'\nimport { getBanner, getFooter } from '@kubb/plugin-oas/utils'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { File, Fragment } from '@kubb/react-fabric'\nimport { Zod } from '../components'\nimport type { PluginZod } from '../types'\n\nexport const zodGenerator = createReactGenerator<PluginZod>({\n name: 'zod',\n Operation({ config, operation, generator, plugin }) {\n const {\n options,\n options: { coercion: globalCoercion, inferred, typed, mapper, wrapOutput, version, mini },\n } = plugin\n\n const mode = useMode()\n const pluginManager = usePluginManager()\n\n const oas = useOas()\n const { getSchemas, getFile, getGroup } = useOperationManager(generator)\n const schemaManager = useSchemaManager()\n\n const file = getFile(operation)\n const schemas = getSchemas(operation)\n const schemaGenerator = new SchemaGenerator(options, {\n fabric: generator.context.fabric,\n oas,\n plugin,\n pluginManager,\n events: generator.context.events,\n mode,\n override: options.override,\n })\n\n const operationSchemas = [schemas.pathParams, schemas.queryParams, schemas.headerParams, schemas.statusCodes, schemas.request, schemas.response]\n .flat()\n .filter(Boolean)\n\n const mapOperationSchema = ({ name, schema: schemaOriginal, description, keysToOmit: keysToOmitOriginal, ...options }: OperationSchemaType) => {\n let schemaObject = schemaOriginal\n let keysToOmit = keysToOmitOriginal\n\n if ((schemaOriginal.anyOf || schemaOriginal.oneOf) && keysToOmitOriginal && keysToOmitOriginal.length > 0) {\n schemaObject = structuredClone(schemaOriginal)\n\n // Remove $ref so the schema parser generates inline schema instead of a reference\n delete schemaObject.$ref\n\n for (const key of keysToOmitOriginal) {\n delete schemaObject.properties?.[key]\n }\n\n if (Array.isArray(schemaObject.required)) {\n schemaObject.required = schemaObject.required.filter((key) => !keysToOmitOriginal.includes(key))\n }\n\n keysToOmit = undefined\n }\n\n const hasProperties = Object.keys(schemaObject || {}).length > 0\n const hasDefaults = Object.values(schemaObject.properties || {}).some((prop) => prop && Object.hasOwn(prop, 'default'))\n\n const required = Array.isArray(schemaObject?.required) ? schemaObject.required.length > 0 : !!schemaObject?.required\n const optional = !required && !hasDefaults && hasProperties && name.includes('Params')\n\n if (!optional && Array.isArray(schemaObject.required) && !schemaObject.required.length) {\n schemaObject.required = Object.entries(schemaObject.properties || {})\n .filter(([_key, value]) => value && Object.hasOwn(value, 'default'))\n .map(([key]) => key)\n }\n\n const tree = [\n ...schemaGenerator.parse({ schema: schemaObject, name, parentName: null }),\n optional ? { keyword: schemaKeywords.optional } : undefined,\n ].filter(Boolean)\n const imports = schemaManager.getImports(tree)\n const group = options.operation ? getGroup(options.operation) : undefined\n\n const coercion = name.includes('Params') ? { numbers: true, strings: false, dates: true } : globalCoercion\n\n const zod = {\n name: schemaManager.getName(name, { type: 'function' }),\n inferTypeName: schemaManager.getName(name, { type: 'type' }),\n file: schemaManager.getFile(name),\n }\n\n const type = {\n name: schemaManager.getName(name, {\n type: 'type',\n pluginKey: [pluginTsName],\n }),\n file: schemaManager.getFile(options.operationName || name, {\n pluginKey: [pluginTsName],\n group,\n }),\n }\n\n return (\n <Fragment>\n {typed && <File.Import isTypeOnly root={file.path} path={type.file.path} name={[type.name]} />}\n {typed && version === '3' && <File.Import name={['ToZod']} root={file.path} path={path.resolve(config.root, config.output.path, '.kubb/ToZod.ts')} />}\n {imports.map((imp) => (\n <File.Import key={[imp.path, imp.name, imp.isTypeOnly].join('-')} root={file.path} path={imp.path} name={imp.name} />\n ))}\n <Zod\n name={zod.name}\n typeName={typed ? type.name : undefined}\n inferTypeName={inferred ? zod.inferTypeName : undefined}\n description={description}\n tree={tree}\n schema={schemaObject}\n mapper={mapper}\n coercion={coercion}\n keysToOmit={keysToOmit}\n wrapOutput={wrapOutput}\n version={plugin.options.version}\n emptySchemaType={plugin.options.emptySchemaType}\n mini={mini}\n />\n </Fragment>\n )\n }\n\n return (\n <File\n baseName={file.baseName}\n path={file.path}\n meta={file.meta}\n banner={getBanner({ oas, output: plugin.options.output, config: pluginManager.config })}\n footer={getFooter({ oas, output: plugin.options.output })}\n >\n <File.Import name={['z']} path={plugin.options.importPath} />\n {operationSchemas.map(mapOperationSchema)}\n </File>\n )\n },\n Schema({ config, schema, plugin }) {\n const { getName, getFile, getImports } = useSchemaManager()\n const {\n options: { output, emptySchemaType, coercion, inferred, typed, mapper, importPath, wrapOutput, version, mini },\n } = plugin\n const pluginManager = usePluginManager()\n const oas = useOas()\n\n const imports = getImports(schema.tree)\n\n const zod = {\n name: getName(schema.name, { type: 'function' }),\n inferTypeName: getName(schema.name, { type: 'type' }),\n file: getFile(schema.name),\n }\n\n const type = {\n name: getName(schema.name, { type: 'type', pluginKey: [pluginTsName] }),\n file: getFile(schema.name, { pluginKey: [pluginTsName] }),\n }\n\n return (\n <File\n baseName={zod.file.baseName}\n path={zod.file.path}\n meta={zod.file.meta}\n banner={getBanner({ oas, output, config: pluginManager.config })}\n footer={getFooter({ oas, output })}\n >\n <File.Import name={['z']} path={importPath} />\n {typed && <File.Import isTypeOnly root={zod.file.path} path={type.file.path} name={[type.name]} />}\n {typed && version === '3' && (\n <File.Import name={['ToZod']} root={zod.file.path} path={path.resolve(config.root, config.output.path, '.kubb/ToZod.ts')} />\n )}\n {imports.map((imp) => (\n <File.Import key={[imp.path, imp.name, imp.isTypeOnly].join('-')} root={zod.file.path} path={imp.path} name={imp.name} />\n ))}\n\n <Zod\n name={zod.name}\n typeName={typed ? type.name : undefined}\n inferTypeName={inferred ? zod.inferTypeName : undefined}\n description={schema.value.description}\n tree={schema.tree}\n schema={schema.value}\n mapper={mapper}\n coercion={coercion}\n wrapOutput={wrapOutput}\n version={version}\n emptySchemaType={emptySchemaType}\n mini={mini}\n />\n </File>\n )\n },\n})\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { t as __name } from "./chunk-eQyhnF5A.js";
2
- import { n as Operations, t as Zod } from "./components-BdH8vk4k.js";
2
+ import { n as Operations, t as Zod } from "./components-BgtqtaQt.js";
3
3
  import path from "node:path";
4
4
  import { SchemaGenerator, schemaKeywords } from "@kubb/plugin-oas";
5
5
  import { pluginTsName } from "@kubb/plugin-ts";
@@ -274,4 +274,4 @@ const zodGenerator = createReactGenerator({
274
274
 
275
275
  //#endregion
276
276
  export { operationsGenerator as n, zodGenerator as t };
277
- //# sourceMappingURL=generators-BIWiaBYS.js.map
277
+ //# sourceMappingURL=generators-D6WbQJ7U.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generators-BIWiaBYS.js","names":["options"],"sources":["../src/generators/operationsGenerator.tsx","../src/generators/zodGenerator.tsx"],"sourcesContent":["import { usePluginManager } from '@kubb/core/hooks'\nimport { createReactGenerator } from '@kubb/plugin-oas/generators'\nimport { useOas, useOperationManager } from '@kubb/plugin-oas/hooks'\nimport { getBanner, getFooter } from '@kubb/plugin-oas/utils'\nimport { File } from '@kubb/react-fabric'\nimport { Operations } from '../components/Operations.tsx'\nimport type { PluginZod } from '../types'\n\nexport const operationsGenerator = createReactGenerator<PluginZod>({\n name: 'operations',\n Operations({ operations, generator, plugin }) {\n const {\n key: pluginKey,\n options: { output, importPath },\n } = plugin\n const pluginManager = usePluginManager()\n\n const oas = useOas()\n const { getFile, groupSchemasByName } = useOperationManager(generator)\n\n const name = 'operations'\n const file = pluginManager.getFile({ name, extname: '.ts', pluginKey })\n\n const transformedOperations = operations.map((operation) => ({ operation, data: groupSchemasByName(operation, { type: 'function' }) }))\n\n const imports = Object.entries(transformedOperations)\n .map(([key, { data, operation }]) => {\n const names = [data.request, ...Object.values(data.responses), ...Object.values(data.parameters)].filter(Boolean)\n\n return <File.Import key={key} name={names} root={file.path} path={getFile(operation).path} />\n })\n .filter(Boolean)\n\n return (\n <File\n baseName={file.baseName}\n path={file.path}\n meta={file.meta}\n banner={getBanner({ oas, output, config: pluginManager.config })}\n footer={getFooter({ oas, output })}\n >\n <File.Import isTypeOnly name={['z']} path={importPath} />\n {imports}\n <Operations name={name} operations={transformedOperations} />\n </File>\n )\n },\n})\n","import path from 'node:path'\nimport { useMode, usePluginManager } from '@kubb/core/hooks'\nimport { type OperationSchema as OperationSchemaType, SchemaGenerator, schemaKeywords } from '@kubb/plugin-oas'\nimport { createReactGenerator } from '@kubb/plugin-oas/generators'\nimport { useOas, useOperationManager, useSchemaManager } from '@kubb/plugin-oas/hooks'\nimport { getBanner, getFooter } from '@kubb/plugin-oas/utils'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { File, Fragment } from '@kubb/react-fabric'\nimport { Zod } from '../components'\nimport type { PluginZod } from '../types'\n\nexport const zodGenerator = createReactGenerator<PluginZod>({\n name: 'zod',\n Operation({ config, operation, generator, plugin }) {\n const {\n options,\n options: { coercion: globalCoercion, inferred, typed, mapper, wrapOutput, version, mini },\n } = plugin\n\n const mode = useMode()\n const pluginManager = usePluginManager()\n\n const oas = useOas()\n const { getSchemas, getFile, getGroup } = useOperationManager(generator)\n const schemaManager = useSchemaManager()\n\n const file = getFile(operation)\n const schemas = getSchemas(operation)\n const schemaGenerator = new SchemaGenerator(options, {\n fabric: generator.context.fabric,\n oas,\n plugin,\n pluginManager,\n events: generator.context.events,\n mode,\n override: options.override,\n })\n\n const operationSchemas = [schemas.pathParams, schemas.queryParams, schemas.headerParams, schemas.statusCodes, schemas.request, schemas.response]\n .flat()\n .filter(Boolean)\n\n const mapOperationSchema = ({ name, schema: schemaOriginal, description, keysToOmit: keysToOmitOriginal, ...options }: OperationSchemaType) => {\n let schemaObject = schemaOriginal\n let keysToOmit = keysToOmitOriginal\n\n if ((schemaOriginal.anyOf || schemaOriginal.oneOf) && keysToOmitOriginal && keysToOmitOriginal.length > 0) {\n schemaObject = structuredClone(schemaOriginal)\n\n // Remove $ref so the schema parser generates inline schema instead of a reference\n delete schemaObject.$ref\n\n for (const key of keysToOmitOriginal) {\n delete schemaObject.properties?.[key]\n }\n\n if (Array.isArray(schemaObject.required)) {\n schemaObject.required = schemaObject.required.filter((key) => !keysToOmitOriginal.includes(key))\n }\n\n keysToOmit = undefined\n }\n\n const hasProperties = Object.keys(schemaObject || {}).length > 0\n const hasDefaults = Object.values(schemaObject.properties || {}).some((prop) => prop && Object.hasOwn(prop, 'default'))\n\n const required = Array.isArray(schemaObject?.required) ? schemaObject.required.length > 0 : !!schemaObject?.required\n const optional = !required && !hasDefaults && hasProperties && name.includes('Params')\n\n if (!optional && Array.isArray(schemaObject.required) && !schemaObject.required.length) {\n schemaObject.required = Object.entries(schemaObject.properties || {})\n .filter(([_key, value]) => value && Object.hasOwn(value, 'default'))\n .map(([key]) => key)\n }\n\n const tree = [\n ...schemaGenerator.parse({ schema: schemaObject, name, parentName: null }),\n optional ? { keyword: schemaKeywords.optional } : undefined,\n ].filter(Boolean)\n const imports = schemaManager.getImports(tree)\n const group = options.operation ? getGroup(options.operation) : undefined\n\n const coercion = name.includes('Params') ? { numbers: true, strings: false, dates: true } : globalCoercion\n\n const zod = {\n name: schemaManager.getName(name, { type: 'function' }),\n inferTypeName: schemaManager.getName(name, { type: 'type' }),\n file: schemaManager.getFile(name),\n }\n\n const type = {\n name: schemaManager.getName(name, {\n type: 'type',\n pluginKey: [pluginTsName],\n }),\n file: schemaManager.getFile(options.operationName || name, {\n pluginKey: [pluginTsName],\n group,\n }),\n }\n\n return (\n <Fragment>\n {typed && <File.Import isTypeOnly root={file.path} path={type.file.path} name={[type.name]} />}\n {typed && version === '3' && <File.Import name={['ToZod']} root={file.path} path={path.resolve(config.root, config.output.path, '.kubb/ToZod.ts')} />}\n {imports.map((imp) => (\n <File.Import key={[imp.path, imp.name, imp.isTypeOnly].join('-')} root={file.path} path={imp.path} name={imp.name} />\n ))}\n <Zod\n name={zod.name}\n typeName={typed ? type.name : undefined}\n inferTypeName={inferred ? zod.inferTypeName : undefined}\n description={description}\n tree={tree}\n schema={schemaObject}\n mapper={mapper}\n coercion={coercion}\n keysToOmit={keysToOmit}\n wrapOutput={wrapOutput}\n version={plugin.options.version}\n emptySchemaType={plugin.options.emptySchemaType}\n mini={mini}\n />\n </Fragment>\n )\n }\n\n return (\n <File\n baseName={file.baseName}\n path={file.path}\n meta={file.meta}\n banner={getBanner({ oas, output: plugin.options.output, config: pluginManager.config })}\n footer={getFooter({ oas, output: plugin.options.output })}\n >\n <File.Import name={['z']} path={plugin.options.importPath} />\n {operationSchemas.map(mapOperationSchema)}\n </File>\n )\n },\n Schema({ config, schema, plugin }) {\n const { getName, getFile, getImports } = useSchemaManager()\n const {\n options: { output, emptySchemaType, coercion, inferred, typed, mapper, importPath, wrapOutput, version, mini },\n } = plugin\n const pluginManager = usePluginManager()\n const oas = useOas()\n\n const imports = getImports(schema.tree)\n\n const zod = {\n name: getName(schema.name, { type: 'function' }),\n inferTypeName: getName(schema.name, { type: 'type' }),\n file: getFile(schema.name),\n }\n\n const type = {\n name: getName(schema.name, { type: 'type', pluginKey: [pluginTsName] }),\n file: getFile(schema.name, { pluginKey: [pluginTsName] }),\n }\n\n return (\n <File\n baseName={zod.file.baseName}\n path={zod.file.path}\n meta={zod.file.meta}\n banner={getBanner({ oas, output, config: pluginManager.config })}\n footer={getFooter({ oas, output })}\n >\n <File.Import name={['z']} path={importPath} />\n {typed && <File.Import isTypeOnly root={zod.file.path} path={type.file.path} name={[type.name]} />}\n {typed && version === '3' && (\n <File.Import name={['ToZod']} root={zod.file.path} path={path.resolve(config.root, config.output.path, '.kubb/ToZod.ts')} />\n )}\n {imports.map((imp) => (\n <File.Import key={[imp.path, imp.name, imp.isTypeOnly].join('-')} root={zod.file.path} path={imp.path} name={imp.name} />\n ))}\n\n <Zod\n name={zod.name}\n typeName={typed ? type.name : undefined}\n inferTypeName={inferred ? zod.inferTypeName : undefined}\n description={schema.value.description}\n tree={schema.tree}\n schema={schema.value}\n mapper={mapper}\n coercion={coercion}\n wrapOutput={wrapOutput}\n version={version}\n emptySchemaType={emptySchemaType}\n mini={mini}\n />\n </File>\n )\n },\n})\n"],"mappings":"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"}
1
+ {"version":3,"file":"generators-D6WbQJ7U.js","names":["options"],"sources":["../src/generators/operationsGenerator.tsx","../src/generators/zodGenerator.tsx"],"sourcesContent":["import { usePluginManager } from '@kubb/core/hooks'\nimport { createReactGenerator } from '@kubb/plugin-oas/generators'\nimport { useOas, useOperationManager } from '@kubb/plugin-oas/hooks'\nimport { getBanner, getFooter } from '@kubb/plugin-oas/utils'\nimport { File } from '@kubb/react-fabric'\nimport { Operations } from '../components/Operations.tsx'\nimport type { PluginZod } from '../types'\n\nexport const operationsGenerator = createReactGenerator<PluginZod>({\n name: 'operations',\n Operations({ operations, generator, plugin }) {\n const {\n key: pluginKey,\n options: { output, importPath },\n } = plugin\n const pluginManager = usePluginManager()\n\n const oas = useOas()\n const { getFile, groupSchemasByName } = useOperationManager(generator)\n\n const name = 'operations'\n const file = pluginManager.getFile({ name, extname: '.ts', pluginKey })\n\n const transformedOperations = operations.map((operation) => ({ operation, data: groupSchemasByName(operation, { type: 'function' }) }))\n\n const imports = Object.entries(transformedOperations)\n .map(([key, { data, operation }]) => {\n const names = [data.request, ...Object.values(data.responses), ...Object.values(data.parameters)].filter(Boolean)\n\n return <File.Import key={key} name={names} root={file.path} path={getFile(operation).path} />\n })\n .filter(Boolean)\n\n return (\n <File\n baseName={file.baseName}\n path={file.path}\n meta={file.meta}\n banner={getBanner({ oas, output, config: pluginManager.config })}\n footer={getFooter({ oas, output })}\n >\n <File.Import isTypeOnly name={['z']} path={importPath} />\n {imports}\n <Operations name={name} operations={transformedOperations} />\n </File>\n )\n },\n})\n","import path from 'node:path'\nimport { useMode, usePluginManager } from '@kubb/core/hooks'\nimport { type OperationSchema as OperationSchemaType, SchemaGenerator, schemaKeywords } from '@kubb/plugin-oas'\nimport { createReactGenerator } from '@kubb/plugin-oas/generators'\nimport { useOas, useOperationManager, useSchemaManager } from '@kubb/plugin-oas/hooks'\nimport { getBanner, getFooter } from '@kubb/plugin-oas/utils'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { File, Fragment } from '@kubb/react-fabric'\nimport { Zod } from '../components'\nimport type { PluginZod } from '../types'\n\nexport const zodGenerator = createReactGenerator<PluginZod>({\n name: 'zod',\n Operation({ config, operation, generator, plugin }) {\n const {\n options,\n options: { coercion: globalCoercion, inferred, typed, mapper, wrapOutput, version, mini },\n } = plugin\n\n const mode = useMode()\n const pluginManager = usePluginManager()\n\n const oas = useOas()\n const { getSchemas, getFile, getGroup } = useOperationManager(generator)\n const schemaManager = useSchemaManager()\n\n const file = getFile(operation)\n const schemas = getSchemas(operation)\n const schemaGenerator = new SchemaGenerator(options, {\n fabric: generator.context.fabric,\n oas,\n plugin,\n pluginManager,\n events: generator.context.events,\n mode,\n override: options.override,\n })\n\n const operationSchemas = [schemas.pathParams, schemas.queryParams, schemas.headerParams, schemas.statusCodes, schemas.request, schemas.response]\n .flat()\n .filter(Boolean)\n\n const mapOperationSchema = ({ name, schema: schemaOriginal, description, keysToOmit: keysToOmitOriginal, ...options }: OperationSchemaType) => {\n let schemaObject = schemaOriginal\n let keysToOmit = keysToOmitOriginal\n\n if ((schemaOriginal.anyOf || schemaOriginal.oneOf) && keysToOmitOriginal && keysToOmitOriginal.length > 0) {\n schemaObject = structuredClone(schemaOriginal)\n\n // Remove $ref so the schema parser generates inline schema instead of a reference\n delete schemaObject.$ref\n\n for (const key of keysToOmitOriginal) {\n delete schemaObject.properties?.[key]\n }\n\n if (Array.isArray(schemaObject.required)) {\n schemaObject.required = schemaObject.required.filter((key) => !keysToOmitOriginal.includes(key))\n }\n\n keysToOmit = undefined\n }\n\n const hasProperties = Object.keys(schemaObject || {}).length > 0\n const hasDefaults = Object.values(schemaObject.properties || {}).some((prop) => prop && Object.hasOwn(prop, 'default'))\n\n const required = Array.isArray(schemaObject?.required) ? schemaObject.required.length > 0 : !!schemaObject?.required\n const optional = !required && !hasDefaults && hasProperties && name.includes('Params')\n\n if (!optional && Array.isArray(schemaObject.required) && !schemaObject.required.length) {\n schemaObject.required = Object.entries(schemaObject.properties || {})\n .filter(([_key, value]) => value && Object.hasOwn(value, 'default'))\n .map(([key]) => key)\n }\n\n const tree = [\n ...schemaGenerator.parse({ schema: schemaObject, name, parentName: null }),\n optional ? { keyword: schemaKeywords.optional } : undefined,\n ].filter(Boolean)\n const imports = schemaManager.getImports(tree)\n const group = options.operation ? getGroup(options.operation) : undefined\n\n const coercion = name.includes('Params') ? { numbers: true, strings: false, dates: true } : globalCoercion\n\n const zod = {\n name: schemaManager.getName(name, { type: 'function' }),\n inferTypeName: schemaManager.getName(name, { type: 'type' }),\n file: schemaManager.getFile(name),\n }\n\n const type = {\n name: schemaManager.getName(name, {\n type: 'type',\n pluginKey: [pluginTsName],\n }),\n file: schemaManager.getFile(options.operationName || name, {\n pluginKey: [pluginTsName],\n group,\n }),\n }\n\n return (\n <Fragment>\n {typed && <File.Import isTypeOnly root={file.path} path={type.file.path} name={[type.name]} />}\n {typed && version === '3' && <File.Import name={['ToZod']} root={file.path} path={path.resolve(config.root, config.output.path, '.kubb/ToZod.ts')} />}\n {imports.map((imp) => (\n <File.Import key={[imp.path, imp.name, imp.isTypeOnly].join('-')} root={file.path} path={imp.path} name={imp.name} />\n ))}\n <Zod\n name={zod.name}\n typeName={typed ? type.name : undefined}\n inferTypeName={inferred ? zod.inferTypeName : undefined}\n description={description}\n tree={tree}\n schema={schemaObject}\n mapper={mapper}\n coercion={coercion}\n keysToOmit={keysToOmit}\n wrapOutput={wrapOutput}\n version={plugin.options.version}\n emptySchemaType={plugin.options.emptySchemaType}\n mini={mini}\n />\n </Fragment>\n )\n }\n\n return (\n <File\n baseName={file.baseName}\n path={file.path}\n meta={file.meta}\n banner={getBanner({ oas, output: plugin.options.output, config: pluginManager.config })}\n footer={getFooter({ oas, output: plugin.options.output })}\n >\n <File.Import name={['z']} path={plugin.options.importPath} />\n {operationSchemas.map(mapOperationSchema)}\n </File>\n )\n },\n Schema({ config, schema, plugin }) {\n const { getName, getFile, getImports } = useSchemaManager()\n const {\n options: { output, emptySchemaType, coercion, inferred, typed, mapper, importPath, wrapOutput, version, mini },\n } = plugin\n const pluginManager = usePluginManager()\n const oas = useOas()\n\n const imports = getImports(schema.tree)\n\n const zod = {\n name: getName(schema.name, { type: 'function' }),\n inferTypeName: getName(schema.name, { type: 'type' }),\n file: getFile(schema.name),\n }\n\n const type = {\n name: getName(schema.name, { type: 'type', pluginKey: [pluginTsName] }),\n file: getFile(schema.name, { pluginKey: [pluginTsName] }),\n }\n\n return (\n <File\n baseName={zod.file.baseName}\n path={zod.file.path}\n meta={zod.file.meta}\n banner={getBanner({ oas, output, config: pluginManager.config })}\n footer={getFooter({ oas, output })}\n >\n <File.Import name={['z']} path={importPath} />\n {typed && <File.Import isTypeOnly root={zod.file.path} path={type.file.path} name={[type.name]} />}\n {typed && version === '3' && (\n <File.Import name={['ToZod']} root={zod.file.path} path={path.resolve(config.root, config.output.path, '.kubb/ToZod.ts')} />\n )}\n {imports.map((imp) => (\n <File.Import key={[imp.path, imp.name, imp.isTypeOnly].join('-')} root={zod.file.path} path={imp.path} name={imp.name} />\n ))}\n\n <Zod\n name={zod.name}\n typeName={typed ? type.name : undefined}\n inferTypeName={inferred ? zod.inferTypeName : undefined}\n description={schema.value.description}\n tree={schema.tree}\n schema={schema.value}\n mapper={mapper}\n coercion={coercion}\n wrapOutput={wrapOutput}\n version={version}\n emptySchemaType={emptySchemaType}\n mini={mini}\n />\n </File>\n )\n },\n})\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- const require_generators = require('./generators-boBB_r4u.cjs');
1
+ const require_generators = require('./generators-C9G6FSvb.cjs');
2
2
 
3
3
  exports.operationsGenerator = require_generators.operationsGenerator;
4
4
  exports.zodGenerator = require_generators.zodGenerator;
@@ -1,3 +1,3 @@
1
- import { n as operationsGenerator, t as zodGenerator } from "./generators-BIWiaBYS.js";
1
+ import { n as operationsGenerator, t as zodGenerator } from "./generators-D6WbQJ7U.js";
2
2
 
3
3
  export { operationsGenerator, zodGenerator };
package/dist/index.cjs CHANGED
@@ -1,5 +1,5 @@
1
- const require_components = require('./components-BKoSLPE6.cjs');
2
- const require_generators = require('./generators-boBB_r4u.cjs');
1
+ const require_components = require('./components-Cs1U51T4.cjs');
2
+ const require_generators = require('./generators-C9G6FSvb.cjs');
3
3
  let node_path = require("node:path");
4
4
  node_path = require_components.__toESM(node_path);
5
5
  let _kubb_core = require("@kubb/core");
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { t as __name } from "./chunk-eQyhnF5A.js";
2
- import { n as operationsGenerator, t as zodGenerator } from "./generators-BIWiaBYS.js";
2
+ import { n as operationsGenerator, t as zodGenerator } from "./generators-D6WbQJ7U.js";
3
3
  import path from "node:path";
4
4
  import { PackageManager, definePlugin, getBarrelFiles, getMode } from "@kubb/core";
5
5
  import { camelCase, pascalCase } from "@kubb/core/transformers";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kubb/plugin-zod",
3
- "version": "4.19.1",
3
+ "version": "4.19.2",
4
4
  "description": "Zod schema generator plugin for Kubb, creating type-safe validation schemas from OpenAPI specifications for runtime data validation.",
5
5
  "keywords": [
6
6
  "zod",
@@ -69,10 +69,10 @@
69
69
  ],
70
70
  "dependencies": {
71
71
  "@kubb/react-fabric": "0.12.4",
72
- "@kubb/core": "4.19.1",
73
- "@kubb/oas": "4.19.1",
74
- "@kubb/plugin-oas": "4.19.1",
75
- "@kubb/plugin-ts": "4.19.1"
72
+ "@kubb/core": "4.19.2",
73
+ "@kubb/oas": "4.19.2",
74
+ "@kubb/plugin-oas": "4.19.2",
75
+ "@kubb/plugin-ts": "4.19.2"
76
76
  },
77
77
  "devDependencies": {
78
78
  "@asteasolutions/zod-to-openapi": "^8.4.0",
package/src/parser.ts CHANGED
@@ -680,7 +680,11 @@ export const parse = createParser<string, ParserOptions>({
680
680
  }
681
681
 
682
682
  // both optional and nullable
683
- if (isNullish) {
683
+ if (isNullish && options.mini) {
684
+ return `"${propertyName}": ${zodKeywordMapper.nullish(objectValue)}`
685
+ }
686
+
687
+ if (isNullish && !options.mini) {
684
688
  return `"${propertyName}": ${objectValue}${zodKeywordMapper.nullish()}`
685
689
  }
686
690