@kubb/plugin-zod 4.1.3 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,29 +1,29 @@
1
1
  <div align="center">
2
+ <h1>Plugin Zod</h1>
3
+ <a href="https://kubb.dev" target="_blank" rel="noopener noreferrer">
4
+ <img width="180" src="https://raw.githubusercontent.com/kubb-labs/kubb/main/assets/logo.png" alt="Kubb logo">
5
+ </a>
2
6
 
3
- <!-- <img src="assets/logo.png" alt="logo" width="200" height="auto" /> -->
4
- <h1>@kubb/plugin-zod</h1>
5
-
6
- <p>
7
- Swagger integration for Zod to generate all the different schemas based on an OpenAPI specification.
8
- </p>
9
- <img src="https://raw.githubusercontent.com/kubb-labs/kubb/main/assets/banner.png" alt="logo" height="auto" />
10
7
 
11
8
  [![npm version][npm-version-src]][npm-version-href]
12
9
  [![npm downloads][npm-downloads-src]][npm-downloads-href]
13
10
  [![Coverage][coverage-src]][coverage-href]
14
11
  [![License][license-src]][license-href]
15
-
12
+ [![Sponsors][sponsors-src]][sponsors-href]
16
13
  <h4>
17
- <a href="https://codesandbox.io/s/github/kubb-labs/kubb/tree/main//examples/typescript" target="_blank">View Demo</a>
18
- <span> · </span>
19
- <a href="https://kubb.dev/" target="_blank">Documentation</a>
20
- <span> · </span>
21
- <a href="https://github.com/kubb-labs/kubb/issues/" target="_blank">Report Bug</a>
22
- <span> · </span>
23
- <a href="https://github.com/kubb-labs/kubb/issues/" target="_blank">Request Feature</a>
24
- </h4>
14
+ <a href="https://codesandbox.io/s/github/kubb-labs/kubb/tree/main//examples/typescript" target="_blank">View Demo</a>
15
+ <span> · </span>
16
+ <a href="https://kubb.dev/" target="_blank">Documentation</a>
17
+ <span> · </span>
18
+ <a href="https://github.com/kubb-labs/kubb/issues/" target="_blank">Report Bug</a>
19
+ <span> · </span>
20
+ <a href="https://github.com/kubb-labs/kubb/issues/" target="_blank">Request Feature</a>
21
+ </h4>
25
22
  </div>
26
23
 
24
+ Swagger integration for Zod to generate all the different schemas based on an OpenAPI specification.
25
+
26
+
27
27
  ## Supporting Kubb
28
28
 
29
29
  Kubb uses an MIT-licensed open source project with its ongoing development made possible entirely by the support of Sponsors. If you would like to become a sponsor, please consider:
@@ -51,3 +51,5 @@ Kubb uses an MIT-licensed open source project with its ongoing development made
51
51
  [minified-href]: https://www.npmjs.com/package/@kubb/plugin-zod
52
52
  [coverage-src]: https://img.shields.io/codecov/c/github/kubb-labs/kubb?style=flat&colorA=18181B&colorB=f58517
53
53
  [coverage-href]: https://www.npmjs.com/package/@kubb/plugin-zod
54
+ [sponsors-src]: https://img.shields.io/github/sponsors/stijnvanhulle?style=flat&colorA=18181B&colorB=f58517
55
+ [sponsors-href]: https://github.com/sponsors/stijnvanhulle/
@@ -16,27 +16,64 @@ function Operations({ name, operations }) {
16
16
  };
17
17
  return prev;
18
18
  }, {});
19
- return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(File.Source, {
20
- name,
21
- isExportable: true,
22
- isIndexable: true,
23
- children: /* @__PURE__ */ jsx(Const, {
24
- export: true,
19
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
20
+ /* @__PURE__ */ jsx(File.Source, {
21
+ name: "OperationSchema",
22
+ isExportable: true,
23
+ isIndexable: true,
24
+ children: /* @__PURE__ */ jsx(Type, {
25
+ name: "OperationSchema",
26
+ export: true,
27
+ children: `{
28
+ readonly request: z.ZodTypeAny | undefined;
29
+ readonly parameters: {
30
+ readonly path: z.ZodTypeAny | undefined;
31
+ readonly query: z.ZodTypeAny | undefined;
32
+ readonly header: z.ZodTypeAny | undefined;
33
+ };
34
+ readonly responses: {
35
+ readonly [status: number]: z.ZodTypeAny;
36
+ readonly default: z.ZodTypeAny;
37
+ };
38
+ readonly errors: {
39
+ readonly [status: number]: z.ZodTypeAny;
40
+ };
41
+ }`
42
+ })
43
+ }),
44
+ /* @__PURE__ */ jsx(File.Source, {
45
+ name: "OperationsMap",
46
+ isExportable: true,
47
+ isIndexable: true,
48
+ children: /* @__PURE__ */ jsx(Type, {
49
+ name: "OperationsMap",
50
+ export: true,
51
+ children: "Record<string, OperationSchema>"
52
+ })
53
+ }),
54
+ /* @__PURE__ */ jsx(File.Source, {
25
55
  name,
26
- asConst: true,
27
- children: `{${transformers.stringifyObject(operationsJSON)}}`
28
- })
29
- }), /* @__PURE__ */ jsx(File.Source, {
30
- name: "paths",
31
- isExportable: true,
32
- isIndexable: true,
33
- children: /* @__PURE__ */ jsx(Const, {
34
- export: true,
56
+ isExportable: true,
57
+ isIndexable: true,
58
+ children: /* @__PURE__ */ jsx(Const, {
59
+ export: true,
60
+ name,
61
+ asConst: true,
62
+ children: `{${transformers.stringifyObject(operationsJSON)}}`
63
+ })
64
+ }),
65
+ /* @__PURE__ */ jsx(File.Source, {
35
66
  name: "paths",
36
- asConst: true,
37
- children: `{${transformers.stringifyObject(pathsJSON)}}`
67
+ isExportable: true,
68
+ isIndexable: true,
69
+ children: /* @__PURE__ */ jsx(Const, {
70
+ export: true,
71
+ name: "paths",
72
+ asConst: true,
73
+ children: `{${transformers.stringifyObject(pathsJSON)}}`
74
+ })
38
75
  })
39
- })] });
76
+ ] });
40
77
  }
41
78
 
42
79
  //#endregion
@@ -470,5 +507,5 @@ function Zod({ name, typeName, tree, rawSchema, inferTypeName, mapper, coercion,
470
507
  }
471
508
 
472
509
  //#endregion
473
- export { Operations, Zod };
474
- //# sourceMappingURL=components-Btq9ngUK.js.map
510
+ export { Operations as n, Zod as t };
511
+ //# sourceMappingURL=components-8y_GG0Uf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components-8y_GG0Uf.js","names":["order: string[]","name","value","parserZod.sort","parserZod.parse"],"sources":["../src/components/Operations.tsx","../src/parser.ts","../src/components/Zod.tsx"],"sourcesContent":["import type { SchemaNames } from '@kubb/plugin-oas/hooks'\nimport { Const, File, Type } from '@kubb/react'\n\nimport transformers from '@kubb/core/transformers'\nimport type { HttpMethod, Operation } from '@kubb/oas'\n\ntype Props = {\n name: string\n operations: Array<{ operation: Operation; data: SchemaNames }>\n}\n\nexport function Operations({ name, operations }: Props) {\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'\nimport type { SchemaObject } from '@kubb/oas'\n\nimport type { Schema, SchemaKeywordBase, SchemaMapper } from '@kubb/plugin-oas'\nimport { isKeyword, SchemaGenerator, type SchemaKeywordMapper, type SchemaTree, 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\nconst zodKeywordMapper = {\n any: () => 'z.any()',\n unknown: () => 'z.unknown()',\n void: () => 'z.void()',\n number: (coercion?: boolean, min?: number, max?: number) => {\n return [coercion ? 'z.coerce.number()' : 'z.number()', min !== undefined ? `.min(${min})` : undefined, max !== undefined ? `.max(${max})` : undefined]\n .filter(Boolean)\n .join('')\n },\n integer: (coercion?: boolean, min?: number, max?: number, version: '3' | '4' = '3') => {\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 ]\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) => {\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) => {\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') => {\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 '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) => {\n return [\n coercion ? '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) => {\n return [\n coercion ? '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 | true | object) => {\n if (typeof value === 'object') {\n return '.default({})'\n }\n return `.default(${value ?? ''})`\n },\n and: (items: string[] = []) => items?.map((item) => `.and(${item})`).join(''),\n describe: (value = '') => `.describe(${value})`,\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) => (coercion ? `z.coerce.string().regex(${value})` : `z.string().regex(${value})`),\n email: (coercion?: boolean, version: '3' | '4' = '3', min?: number, max?: number) => {\n return [\n coercion ? '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, version: '3' | '4' = '3') => {\n if (!value) {\n return undefined\n }\n\n return version === '4' ? value : `z.lazy(() => ${value})`\n },\n blob: () => 'z.instanceof(File)',\n deprecated: undefined,\n example: undefined,\n schema: undefined,\n catchall: (value?: string) => (value ? `.catchall(${value})` : undefined),\n name: 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\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 name: string\n typeName?: string\n description?: string\n keysToOmit?: string[]\n mapper?: Record<string, string>\n coercion?: boolean | { dates?: boolean; strings?: boolean; numbers?: boolean }\n wrapOutput?: (opts: { output: string; schema: any }) => string | undefined\n rawSchema: SchemaObject\n version: '3' | '4'\n}\n\nexport function parse({ parent, current, name, siblings }: SchemaTree, options: ParserOptions): string | undefined {\n const value = zodKeywordMapper[current.keyword as keyof typeof zodKeywordMapper]\n\n // Early exit: if siblings contain both matches and ref → skip matches entirely\n const hasMatches = siblings.some((it) => isKeyword(it, schemaKeywords.matches))\n const hasRef = siblings.some((it) => isKeyword(it, schemaKeywords.ref))\n\n if (hasMatches && hasRef && isKeyword(current, schemaKeywords.matches)) {\n return undefined // strip matches\n }\n\n if (!value) {\n return undefined\n }\n\n if (isKeyword(current, schemaKeywords.union)) {\n // zod union type needs at least 2 items\n if (Array.isArray(current.args) && current.args.length === 1) {\n return parse({ parent, name: 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((schema, _index, siblings) => parse({ parent: current, name: name, current: schema, siblings }, options))\n .filter(Boolean),\n )\n }\n\n if (isKeyword(current, schemaKeywords.and)) {\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((schema: Schema, _index, siblings) => parse({ parent: current, name: name, current: schema, siblings }, options))\n .filter(Boolean)\n\n return `${items.slice(0, 1)}${zodKeywordMapper.and(items.slice(1))}`\n }\n\n if (isKeyword(current, schemaKeywords.array)) {\n return zodKeywordMapper.array(\n sort(current.args.items)\n .map((schemas, _index, siblings) => parse({ parent: current, name: name, current: schemas, siblings }, options))\n .filter(Boolean),\n current.args.min,\n current.args.max,\n current.args.unique,\n )\n }\n\n if (isKeyword(current, schemaKeywords.enum)) {\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 parse({ parent: current, name: 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((schema, _index, siblings) => {\n return parse({ parent: current, name: name, current: schema, 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\n if (isKeyword(current, schemaKeywords.ref)) {\n return zodKeywordMapper.ref(current.args?.name, options.version)\n }\n\n if (isKeyword(current, schemaKeywords.object)) {\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(([name, 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\n const mappedName = nameSchema?.args || name\n\n // custom mapper(pluginOptions)\n if (options.mapper?.[mappedName]) {\n return `\"${name}\": ${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((schema) => parse({ parent: current, name, current: schema, siblings: schemas }, options))\n .filter(Boolean)\n .join('')\n\n const objectValue = options.wrapOutput\n ? options.wrapOutput({ output: baseSchemaOutput, schema: options.rawSchema?.properties?.[name] }) || baseSchemaOutput\n : baseSchemaOutput\n\n if (options.version === '4' && SchemaGenerator.find(schemas, schemaKeywords.ref)) {\n // both optional and nullable\n if (isNullish) {\n return `get \"${name}\"(){\n return ${zodKeywordMapper.nullish(objectValue)}\n }`\n }\n\n // undefined\n if (isOptional) {\n return `get \"${name}\"(){\n return ${zodKeywordMapper.optional(objectValue)}\n }`\n }\n\n // null\n if (isNullable) {\n return `get \"${name}\"(){\n return ${zodKeywordMapper.nullable(objectValue)}\n }`\n }\n\n return `get \"${name}\"(){\n return ${objectValue}\n }`\n }\n\n // both optional and nullable\n if (isNullish) {\n return `\"${name}\": ${objectValue}${zodKeywordMapper.nullish()}`\n }\n\n // undefined\n if (isOptional) {\n return `\"${name}\": ${zodKeywordMapper.optional(objectValue)}`\n }\n\n // null\n if (isNullable) {\n return `\"${name}\": ${zodKeywordMapper.nullable(objectValue)}`\n }\n\n return `\"${name}\": ${objectValue}`\n })\n .join(',\\n')\n\n const additionalProperties = current.args?.additionalProperties?.length\n ? current.args.additionalProperties\n .map((schema, _index, siblings) => parse({ parent: current, name: name, current: schema, 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) : undefined,\n ].filter(Boolean)\n\n return text.join('')\n }\n\n if (isKeyword(current, schemaKeywords.tuple)) {\n return zodKeywordMapper.tuple(\n current.args.items.map((schema, _index, siblings) => parse({ parent: current, name: name, current: schema, siblings }, options)).filter(Boolean),\n )\n }\n\n if (isKeyword(current, schemaKeywords.const)) {\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(current.args.value)\n }\n return zodKeywordMapper.const(transformers.stringify(current.args.value))\n }\n\n if (isKeyword(current, schemaKeywords.matches)) {\n if (current.args) {\n return zodKeywordMapper.matches(transformers.toRegExpString(current.args, null), shouldCoerce(options.coercion, 'strings'))\n }\n }\n\n if (isKeyword(current, schemaKeywords.default)) {\n if (current.args) {\n return zodKeywordMapper.default(current.args)\n }\n }\n\n if (isKeyword(current, schemaKeywords.describe)) {\n if (current.args) {\n return zodKeywordMapper.describe(transformers.stringify(current.args.toString()))\n }\n }\n\n if (isKeyword(current, schemaKeywords.string)) {\n const minSchema = SchemaGenerator.find(siblings, schemaKeywords.min)\n const maxSchema = SchemaGenerator.find(siblings, schemaKeywords.max)\n\n return zodKeywordMapper.string(shouldCoerce(options.coercion, 'strings'), minSchema?.args, maxSchema?.args)\n }\n\n if (isKeyword(current, schemaKeywords.uuid)) {\n return zodKeywordMapper.uuid(shouldCoerce(options.coercion, 'strings'), options.version)\n }\n\n if (isKeyword(current, schemaKeywords.email)) {\n const minSchema = SchemaGenerator.find(siblings, schemaKeywords.min)\n const maxSchema = SchemaGenerator.find(siblings, schemaKeywords.max)\n\n return zodKeywordMapper.email(shouldCoerce(options.coercion, 'strings'), options.version, minSchema?.args, maxSchema?.args)\n }\n\n if (isKeyword(current, schemaKeywords.url)) {\n const minSchema = SchemaGenerator.find(siblings, schemaKeywords.min)\n const maxSchema = SchemaGenerator.find(siblings, schemaKeywords.max)\n\n return zodKeywordMapper.url(shouldCoerce(options.coercion, 'strings'), options.version, minSchema?.args, maxSchema?.args)\n }\n\n if (isKeyword(current, schemaKeywords.number)) {\n const minSchema = SchemaGenerator.find(siblings, schemaKeywords.min)\n const maxSchema = SchemaGenerator.find(siblings, schemaKeywords.max)\n\n return zodKeywordMapper.number(shouldCoerce(options.coercion, 'numbers'), minSchema?.args, maxSchema?.args)\n }\n\n if (isKeyword(current, schemaKeywords.integer)) {\n const minSchema = SchemaGenerator.find(siblings, schemaKeywords.min)\n const maxSchema = SchemaGenerator.find(siblings, schemaKeywords.max)\n\n return zodKeywordMapper.integer(shouldCoerce(options.coercion, 'numbers'), minSchema?.args, maxSchema?.args, options.version)\n }\n\n if (isKeyword(current, schemaKeywords.datetime)) {\n return zodKeywordMapper.datetime(current.args.offset, current.args.local, options.version)\n }\n\n if (isKeyword(current, schemaKeywords.date)) {\n return zodKeywordMapper.date(current.args.type, shouldCoerce(options.coercion, 'dates'), options.version)\n }\n\n if (isKeyword(current, schemaKeywords.time)) {\n return zodKeywordMapper.time(current.args.type, shouldCoerce(options.coercion, 'dates'), options.version)\n }\n\n if (current.keyword in zodKeywordMapper && 'args' in current) {\n const value = zodKeywordMapper[current.keyword as keyof typeof zodKeywordMapper] as (typeof zodKeywordMapper)['const']\n\n return value((current as SchemaKeywordBase<unknown>).args as any)\n }\n\n if (current.keyword in zodKeywordMapper) {\n return value()\n }\n\n return undefined\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'\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 rawSchema: 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}\n\nexport function Zod({\n name,\n typeName,\n tree,\n rawSchema,\n inferTypeName,\n mapper,\n coercion,\n keysToOmit,\n description,\n wrapOutput,\n version,\n emptySchemaType,\n}: Props) {\n const hasTuple = !!SchemaGenerator.deepSearch(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 const output = schemas\n .map((schema, index) => {\n const siblings = schemas.filter((_, i) => i !== index)\n\n return parserZod.parse(\n { parent: undefined, current: schema, siblings },\n { name, keysToOmit, typeName, description, mapper, coercion, wrapOutput, rawSchema, version },\n )\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 (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 {\n if (firstSchema && isKeyword(firstSchema, schemaKeywords.ref) && version === '3') {\n suffix = '.schema'\n }\n }\n\n const emptyValue = parserZod.parse(\n {\n parent: undefined,\n current: {\n keyword: schemaKeywords[emptySchemaType],\n },\n siblings: [],\n },\n { name, keysToOmit, typeName, description, mapper, coercion, wrapOutput, rawSchema, version },\n )\n\n const baseSchemaOutput =\n [output, keysToOmit?.length ? `${suffix}.omit({ ${keysToOmit.map((key) => `'${key}': true`).join(',')} })` : undefined].filter(Boolean).join('') ||\n emptyValue ||\n ''\n const wrappedSchemaOutput = wrapOutput ? wrapOutput({ output: baseSchemaOutput, schema: rawSchema }) || 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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"}
@@ -43,27 +43,64 @@ function Operations({ name, operations }) {
43
43
  };
44
44
  return prev;
45
45
  }, {});
46
- return /* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsxs)(__kubb_react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsx)(__kubb_react.File.Source, {
47
- name,
48
- isExportable: true,
49
- isIndexable: true,
50
- children: /* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsx)(__kubb_react.Const, {
51
- export: true,
46
+ return /* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsxs)(__kubb_react_jsx_runtime.Fragment, { children: [
47
+ /* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsx)(__kubb_react.File.Source, {
48
+ name: "OperationSchema",
49
+ isExportable: true,
50
+ isIndexable: true,
51
+ children: /* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsx)(__kubb_react.Type, {
52
+ name: "OperationSchema",
53
+ export: true,
54
+ children: `{
55
+ readonly request: z.ZodTypeAny | undefined;
56
+ readonly parameters: {
57
+ readonly path: z.ZodTypeAny | undefined;
58
+ readonly query: z.ZodTypeAny | undefined;
59
+ readonly header: z.ZodTypeAny | undefined;
60
+ };
61
+ readonly responses: {
62
+ readonly [status: number]: z.ZodTypeAny;
63
+ readonly default: z.ZodTypeAny;
64
+ };
65
+ readonly errors: {
66
+ readonly [status: number]: z.ZodTypeAny;
67
+ };
68
+ }`
69
+ })
70
+ }),
71
+ /* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsx)(__kubb_react.File.Source, {
72
+ name: "OperationsMap",
73
+ isExportable: true,
74
+ isIndexable: true,
75
+ children: /* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsx)(__kubb_react.Type, {
76
+ name: "OperationsMap",
77
+ export: true,
78
+ children: "Record<string, OperationSchema>"
79
+ })
80
+ }),
81
+ /* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsx)(__kubb_react.File.Source, {
52
82
  name,
53
- asConst: true,
54
- children: `{${__kubb_core_transformers.default.stringifyObject(operationsJSON)}}`
55
- })
56
- }), /* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsx)(__kubb_react.File.Source, {
57
- name: "paths",
58
- isExportable: true,
59
- isIndexable: true,
60
- children: /* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsx)(__kubb_react.Const, {
61
- export: true,
83
+ isExportable: true,
84
+ isIndexable: true,
85
+ children: /* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsx)(__kubb_react.Const, {
86
+ export: true,
87
+ name,
88
+ asConst: true,
89
+ children: `{${__kubb_core_transformers.default.stringifyObject(operationsJSON)}}`
90
+ })
91
+ }),
92
+ /* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsx)(__kubb_react.File.Source, {
62
93
  name: "paths",
63
- asConst: true,
64
- children: `{${__kubb_core_transformers.default.stringifyObject(pathsJSON)}}`
94
+ isExportable: true,
95
+ isIndexable: true,
96
+ children: /* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsx)(__kubb_react.Const, {
97
+ export: true,
98
+ name: "paths",
99
+ asConst: true,
100
+ children: `{${__kubb_core_transformers.default.stringifyObject(pathsJSON)}}`
101
+ })
65
102
  })
66
- })] });
103
+ ] });
67
104
  }
68
105
 
69
106
  //#endregion
@@ -515,4 +552,4 @@ Object.defineProperty(exports, '__toESM', {
515
552
  return __toESM;
516
553
  }
517
554
  });
518
- //# sourceMappingURL=components-DiXPMONd.cjs.map
555
+ //# sourceMappingURL=components-DwRiz-bh.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components-DwRiz-bh.cjs","names":["File","Type","Const","transformers","order: string[]","schemaKeywords","transformers","name","SchemaGenerator","value","SchemaGenerator","schemaKeywords","parserZod.sort","parserZod.parse","File","Const","transformers","Type"],"sources":["../src/components/Operations.tsx","../src/parser.ts","../src/components/Zod.tsx"],"sourcesContent":["import type { SchemaNames } from '@kubb/plugin-oas/hooks'\nimport { Const, File, Type } from '@kubb/react'\n\nimport transformers from '@kubb/core/transformers'\nimport type { HttpMethod, Operation } from '@kubb/oas'\n\ntype Props = {\n name: string\n operations: Array<{ operation: Operation; data: SchemaNames }>\n}\n\nexport function Operations({ name, operations }: Props) {\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'\nimport type { SchemaObject } from '@kubb/oas'\n\nimport type { Schema, SchemaKeywordBase, SchemaMapper } from '@kubb/plugin-oas'\nimport { isKeyword, SchemaGenerator, type SchemaKeywordMapper, type SchemaTree, 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\nconst zodKeywordMapper = {\n any: () => 'z.any()',\n unknown: () => 'z.unknown()',\n void: () => 'z.void()',\n number: (coercion?: boolean, min?: number, max?: number) => {\n return [coercion ? 'z.coerce.number()' : 'z.number()', min !== undefined ? `.min(${min})` : undefined, max !== undefined ? `.max(${max})` : undefined]\n .filter(Boolean)\n .join('')\n },\n integer: (coercion?: boolean, min?: number, max?: number, version: '3' | '4' = '3') => {\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 ]\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) => {\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) => {\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') => {\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 '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) => {\n return [\n coercion ? '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) => {\n return [\n coercion ? '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 | true | object) => {\n if (typeof value === 'object') {\n return '.default({})'\n }\n return `.default(${value ?? ''})`\n },\n and: (items: string[] = []) => items?.map((item) => `.and(${item})`).join(''),\n describe: (value = '') => `.describe(${value})`,\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) => (coercion ? `z.coerce.string().regex(${value})` : `z.string().regex(${value})`),\n email: (coercion?: boolean, version: '3' | '4' = '3', min?: number, max?: number) => {\n return [\n coercion ? '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, version: '3' | '4' = '3') => {\n if (!value) {\n return undefined\n }\n\n return version === '4' ? value : `z.lazy(() => ${value})`\n },\n blob: () => 'z.instanceof(File)',\n deprecated: undefined,\n example: undefined,\n schema: undefined,\n catchall: (value?: string) => (value ? `.catchall(${value})` : undefined),\n name: 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\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 name: string\n typeName?: string\n description?: string\n keysToOmit?: string[]\n mapper?: Record<string, string>\n coercion?: boolean | { dates?: boolean; strings?: boolean; numbers?: boolean }\n wrapOutput?: (opts: { output: string; schema: any }) => string | undefined\n rawSchema: SchemaObject\n version: '3' | '4'\n}\n\nexport function parse({ parent, current, name, siblings }: SchemaTree, options: ParserOptions): string | undefined {\n const value = zodKeywordMapper[current.keyword as keyof typeof zodKeywordMapper]\n\n // Early exit: if siblings contain both matches and ref → skip matches entirely\n const hasMatches = siblings.some((it) => isKeyword(it, schemaKeywords.matches))\n const hasRef = siblings.some((it) => isKeyword(it, schemaKeywords.ref))\n\n if (hasMatches && hasRef && isKeyword(current, schemaKeywords.matches)) {\n return undefined // strip matches\n }\n\n if (!value) {\n return undefined\n }\n\n if (isKeyword(current, schemaKeywords.union)) {\n // zod union type needs at least 2 items\n if (Array.isArray(current.args) && current.args.length === 1) {\n return parse({ parent, name: 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((schema, _index, siblings) => parse({ parent: current, name: name, current: schema, siblings }, options))\n .filter(Boolean),\n )\n }\n\n if (isKeyword(current, schemaKeywords.and)) {\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((schema: Schema, _index, siblings) => parse({ parent: current, name: name, current: schema, siblings }, options))\n .filter(Boolean)\n\n return `${items.slice(0, 1)}${zodKeywordMapper.and(items.slice(1))}`\n }\n\n if (isKeyword(current, schemaKeywords.array)) {\n return zodKeywordMapper.array(\n sort(current.args.items)\n .map((schemas, _index, siblings) => parse({ parent: current, name: name, current: schemas, siblings }, options))\n .filter(Boolean),\n current.args.min,\n current.args.max,\n current.args.unique,\n )\n }\n\n if (isKeyword(current, schemaKeywords.enum)) {\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 parse({ parent: current, name: 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((schema, _index, siblings) => {\n return parse({ parent: current, name: name, current: schema, 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\n if (isKeyword(current, schemaKeywords.ref)) {\n return zodKeywordMapper.ref(current.args?.name, options.version)\n }\n\n if (isKeyword(current, schemaKeywords.object)) {\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(([name, 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\n const mappedName = nameSchema?.args || name\n\n // custom mapper(pluginOptions)\n if (options.mapper?.[mappedName]) {\n return `\"${name}\": ${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((schema) => parse({ parent: current, name, current: schema, siblings: schemas }, options))\n .filter(Boolean)\n .join('')\n\n const objectValue = options.wrapOutput\n ? options.wrapOutput({ output: baseSchemaOutput, schema: options.rawSchema?.properties?.[name] }) || baseSchemaOutput\n : baseSchemaOutput\n\n if (options.version === '4' && SchemaGenerator.find(schemas, schemaKeywords.ref)) {\n // both optional and nullable\n if (isNullish) {\n return `get \"${name}\"(){\n return ${zodKeywordMapper.nullish(objectValue)}\n }`\n }\n\n // undefined\n if (isOptional) {\n return `get \"${name}\"(){\n return ${zodKeywordMapper.optional(objectValue)}\n }`\n }\n\n // null\n if (isNullable) {\n return `get \"${name}\"(){\n return ${zodKeywordMapper.nullable(objectValue)}\n }`\n }\n\n return `get \"${name}\"(){\n return ${objectValue}\n }`\n }\n\n // both optional and nullable\n if (isNullish) {\n return `\"${name}\": ${objectValue}${zodKeywordMapper.nullish()}`\n }\n\n // undefined\n if (isOptional) {\n return `\"${name}\": ${zodKeywordMapper.optional(objectValue)}`\n }\n\n // null\n if (isNullable) {\n return `\"${name}\": ${zodKeywordMapper.nullable(objectValue)}`\n }\n\n return `\"${name}\": ${objectValue}`\n })\n .join(',\\n')\n\n const additionalProperties = current.args?.additionalProperties?.length\n ? current.args.additionalProperties\n .map((schema, _index, siblings) => parse({ parent: current, name: name, current: schema, 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) : undefined,\n ].filter(Boolean)\n\n return text.join('')\n }\n\n if (isKeyword(current, schemaKeywords.tuple)) {\n return zodKeywordMapper.tuple(\n current.args.items.map((schema, _index, siblings) => parse({ parent: current, name: name, current: schema, siblings }, options)).filter(Boolean),\n )\n }\n\n if (isKeyword(current, schemaKeywords.const)) {\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(current.args.value)\n }\n return zodKeywordMapper.const(transformers.stringify(current.args.value))\n }\n\n if (isKeyword(current, schemaKeywords.matches)) {\n if (current.args) {\n return zodKeywordMapper.matches(transformers.toRegExpString(current.args, null), shouldCoerce(options.coercion, 'strings'))\n }\n }\n\n if (isKeyword(current, schemaKeywords.default)) {\n if (current.args) {\n return zodKeywordMapper.default(current.args)\n }\n }\n\n if (isKeyword(current, schemaKeywords.describe)) {\n if (current.args) {\n return zodKeywordMapper.describe(transformers.stringify(current.args.toString()))\n }\n }\n\n if (isKeyword(current, schemaKeywords.string)) {\n const minSchema = SchemaGenerator.find(siblings, schemaKeywords.min)\n const maxSchema = SchemaGenerator.find(siblings, schemaKeywords.max)\n\n return zodKeywordMapper.string(shouldCoerce(options.coercion, 'strings'), minSchema?.args, maxSchema?.args)\n }\n\n if (isKeyword(current, schemaKeywords.uuid)) {\n return zodKeywordMapper.uuid(shouldCoerce(options.coercion, 'strings'), options.version)\n }\n\n if (isKeyword(current, schemaKeywords.email)) {\n const minSchema = SchemaGenerator.find(siblings, schemaKeywords.min)\n const maxSchema = SchemaGenerator.find(siblings, schemaKeywords.max)\n\n return zodKeywordMapper.email(shouldCoerce(options.coercion, 'strings'), options.version, minSchema?.args, maxSchema?.args)\n }\n\n if (isKeyword(current, schemaKeywords.url)) {\n const minSchema = SchemaGenerator.find(siblings, schemaKeywords.min)\n const maxSchema = SchemaGenerator.find(siblings, schemaKeywords.max)\n\n return zodKeywordMapper.url(shouldCoerce(options.coercion, 'strings'), options.version, minSchema?.args, maxSchema?.args)\n }\n\n if (isKeyword(current, schemaKeywords.number)) {\n const minSchema = SchemaGenerator.find(siblings, schemaKeywords.min)\n const maxSchema = SchemaGenerator.find(siblings, schemaKeywords.max)\n\n return zodKeywordMapper.number(shouldCoerce(options.coercion, 'numbers'), minSchema?.args, maxSchema?.args)\n }\n\n if (isKeyword(current, schemaKeywords.integer)) {\n const minSchema = SchemaGenerator.find(siblings, schemaKeywords.min)\n const maxSchema = SchemaGenerator.find(siblings, schemaKeywords.max)\n\n return zodKeywordMapper.integer(shouldCoerce(options.coercion, 'numbers'), minSchema?.args, maxSchema?.args, options.version)\n }\n\n if (isKeyword(current, schemaKeywords.datetime)) {\n return zodKeywordMapper.datetime(current.args.offset, current.args.local, options.version)\n }\n\n if (isKeyword(current, schemaKeywords.date)) {\n return zodKeywordMapper.date(current.args.type, shouldCoerce(options.coercion, 'dates'), options.version)\n }\n\n if (isKeyword(current, schemaKeywords.time)) {\n return zodKeywordMapper.time(current.args.type, shouldCoerce(options.coercion, 'dates'), options.version)\n }\n\n if (current.keyword in zodKeywordMapper && 'args' in current) {\n const value = zodKeywordMapper[current.keyword as keyof typeof zodKeywordMapper] as (typeof zodKeywordMapper)['const']\n\n return value((current as SchemaKeywordBase<unknown>).args as any)\n }\n\n if (current.keyword in zodKeywordMapper) {\n return value()\n }\n\n return undefined\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'\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 rawSchema: 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}\n\nexport function Zod({\n name,\n typeName,\n tree,\n rawSchema,\n inferTypeName,\n mapper,\n coercion,\n keysToOmit,\n description,\n wrapOutput,\n version,\n emptySchemaType,\n}: Props) {\n const hasTuple = !!SchemaGenerator.deepSearch(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 const output = schemas\n .map((schema, index) => {\n const siblings = schemas.filter((_, i) => i !== index)\n\n return parserZod.parse(\n { parent: undefined, current: schema, siblings },\n { name, keysToOmit, typeName, description, mapper, coercion, wrapOutput, rawSchema, version },\n )\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 (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 {\n if (firstSchema && isKeyword(firstSchema, schemaKeywords.ref) && version === '3') {\n suffix = '.schema'\n }\n }\n\n const emptyValue = parserZod.parse(\n {\n parent: undefined,\n current: {\n keyword: schemaKeywords[emptySchemaType],\n },\n siblings: [],\n },\n { name, keysToOmit, typeName, description, mapper, coercion, wrapOutput, rawSchema, version },\n )\n\n const baseSchemaOutput =\n [output, keysToOmit?.length ? `${suffix}.omit({ ${keysToOmit.map((key) => `'${key}': true`).join(',')} })` : undefined].filter(Boolean).join('') ||\n emptyValue ||\n ''\n const wrappedSchemaOutput = wrapOutput ? wrapOutput({ output: baseSchemaOutput, schema: rawSchema }) || 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-DiXPMONd.cjs');
1
+ const require_components = require('./components-DwRiz-bh.cjs');
2
2
 
3
3
  exports.Operations = require_components.Operations;
4
4
  exports.Zod = require_components.Zod;
@@ -1,4 +1,4 @@
1
- import { Operation, PluginZod, Schema, SchemaObject } from "./types-C4zDVwZ4.cjs";
1
+ import { i as Schema, n as PluginZod, o as Operation, s as SchemaObject } from "./types-w5zjJR8e.cjs";
2
2
 
3
3
  //#region ../plugin-oas/src/hooks/useOperationManager.d.ts
4
4
 
@@ -1,4 +1,4 @@
1
- import { Operation, PluginZod, Schema, SchemaObject } from "./types-BY-RtmUj.js";
1
+ import { i as Schema, n as PluginZod, o as Operation, s as SchemaObject } from "./types-CQb3A4Sz.js";
2
2
 
3
3
  //#region ../plugin-oas/src/hooks/useOperationManager.d.ts
4
4
 
@@ -1,3 +1,3 @@
1
- import { Operations, Zod } from "./components-Btq9ngUK.js";
1
+ import { n as Operations, t as Zod } from "./components-8y_GG0Uf.js";
2
2
 
3
3
  export { Operations, Zod };
@@ -1,8 +1,10 @@
1
- const require_components = require('./components-DiXPMONd.cjs');
1
+ const require_components = require('./components-DwRiz-bh.cjs');
2
2
  let __kubb_plugin_oas = require("@kubb/plugin-oas");
3
3
  __kubb_plugin_oas = require_components.__toESM(__kubb_plugin_oas);
4
4
  let __kubb_plugin_ts = require("@kubb/plugin-ts");
5
5
  __kubb_plugin_ts = require_components.__toESM(__kubb_plugin_ts);
6
+ let __kubb_core_hooks = require("@kubb/core/hooks");
7
+ __kubb_core_hooks = require_components.__toESM(__kubb_core_hooks);
6
8
  let __kubb_plugin_oas_components = require("@kubb/plugin-oas/components");
7
9
  __kubb_plugin_oas_components = require_components.__toESM(__kubb_plugin_oas_components);
8
10
  let __kubb_plugin_oas_hooks = require("@kubb/plugin-oas/hooks");
@@ -19,7 +21,9 @@ const zodGenerator = (0, __kubb_plugin_oas.createReactGenerator)({
19
21
  name: "zod",
20
22
  Operation({ operation, options }) {
21
23
  const { coercion: globalCoercion, inferred, typed, mapper, wrapOutput } = options;
22
- const { plugin, pluginManager, mode } = (0, __kubb_react.useApp)();
24
+ const plugin = (0, __kubb_core_hooks.usePlugin)();
25
+ const mode = (0, __kubb_core_hooks.useMode)();
26
+ const pluginManager = (0, __kubb_core_hooks.usePluginManager)();
23
27
  const oas = (0, __kubb_plugin_oas_hooks.useOas)();
24
28
  const { getSchemas, getFile, getGroup } = (0, __kubb_plugin_oas_hooks.useOperationManager)();
25
29
  const schemaManager = (0, __kubb_plugin_oas_hooks.useSchemaManager)();
@@ -134,7 +138,8 @@ const zodGenerator = (0, __kubb_plugin_oas.createReactGenerator)({
134
138
  Schema({ schema, options }) {
135
139
  const { coercion, inferred, typed, mapper, importPath, wrapOutput, version } = options;
136
140
  const { getName, getFile, getImports } = (0, __kubb_plugin_oas_hooks.useSchemaManager)();
137
- const { pluginManager, plugin: { options: { output, emptySchemaType } } } = (0, __kubb_react.useApp)();
141
+ const { options: { output, emptySchemaType } } = (0, __kubb_core_hooks.usePlugin)();
142
+ const pluginManager = (0, __kubb_core_hooks.usePluginManager)();
138
143
  const oas = (0, __kubb_plugin_oas_hooks.useOas)();
139
144
  const imports = getImports(schema.tree);
140
145
  const zod = {
@@ -210,7 +215,8 @@ const zodGenerator = (0, __kubb_plugin_oas.createReactGenerator)({
210
215
  const operationsGenerator = (0, __kubb_plugin_oas.createReactGenerator)({
211
216
  name: "operations",
212
217
  Operations({ operations }) {
213
- const { pluginManager, plugin: { key: pluginKey, options: { output } } } = (0, __kubb_react.useApp)();
218
+ const { key: pluginKey, options: { output, importPath } } = (0, __kubb_core_hooks.usePlugin)();
219
+ const pluginManager = (0, __kubb_core_hooks.usePluginManager)();
214
220
  const oas = (0, __kubb_plugin_oas_hooks.useOas)();
215
221
  const { getFile, groupSchemasByName } = (0, __kubb_plugin_oas_hooks.useOperationManager)();
216
222
  const name = "operations";
@@ -248,10 +254,18 @@ const operationsGenerator = (0, __kubb_plugin_oas.createReactGenerator)({
248
254
  oas,
249
255
  output
250
256
  }),
251
- children: [imports, /* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsx)(require_components.Operations, {
252
- name,
253
- operations: transformedOperations
254
- })]
257
+ children: [
258
+ /* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsx)(__kubb_react.File.Import, {
259
+ isTypeOnly: true,
260
+ name: ["z"],
261
+ path: importPath
262
+ }),
263
+ imports,
264
+ /* @__PURE__ */ (0, __kubb_react_jsx_runtime.jsx)(require_components.Operations, {
265
+ name,
266
+ operations: transformedOperations
267
+ })
268
+ ]
255
269
  });
256
270
  }
257
271
  });
@@ -269,4 +283,4 @@ Object.defineProperty(exports, 'zodGenerator', {
269
283
  return zodGenerator;
270
284
  }
271
285
  });
272
- //# sourceMappingURL=generators-DIVRsyWg.cjs.map
286
+ //# sourceMappingURL=generators-BO4N79H7.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generators-BO4N79H7.cjs","names":["SchemaGenerator","options","schemaKeywords","pluginTsName","Oas","File","Zod","File","Operations"],"sources":["../src/generators/zodGenerator.tsx","../src/generators/operationsGenerator.tsx"],"sourcesContent":["import { useMode, usePlugin, usePluginManager } from '@kubb/core/hooks'\nimport { createReactGenerator, type OperationSchema as OperationSchemaType, SchemaGenerator, schemaKeywords } from '@kubb/plugin-oas'\nimport { Oas } from '@kubb/plugin-oas/components'\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 } from '@kubb/react'\nimport { Zod } from '../components'\nimport type { PluginZod } from '../types'\n\nexport const zodGenerator = createReactGenerator<PluginZod>({\n name: 'zod',\n Operation({ operation, options }) {\n const { coercion: globalCoercion, inferred, typed, mapper, wrapOutput } = options\n\n const plugin = usePlugin<PluginZod>()\n const mode = useMode()\n const pluginManager = usePluginManager()\n\n const oas = useOas()\n const { getSchemas, getFile, getGroup } = useOperationManager()\n const schemaManager = useSchemaManager()\n\n const file = getFile(operation)\n const schemas = getSchemas(operation)\n const schemaGenerator = new SchemaGenerator(options, {\n oas,\n plugin,\n pluginManager,\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: schemaObject, description, keysToOmit, ...options }: OperationSchemaType, i: number) => {\n // hack so Params can be optional when needed\n const required = Array.isArray(schemaObject?.required) ? !!schemaObject.required.length : !!schemaObject?.required\n const someDefaults = Object.values(schemaObject.properties || {}).some((property) => Object.hasOwn(property, 'default') && property.default !== undefined)\n const optional = !required && !someDefaults && name.includes('Params')\n\n const tree = [...schemaGenerator.parse({ schemaObject, name }), optional ? { keyword: schemaKeywords.optional } : undefined].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 <Oas.Schema key={i} name={name} schemaObject={schemaObject} tree={tree}>\n {typed && <File.Import isTypeOnly root={file.path} path={type.file.path} name={[type.name]} />}\n {typed && plugin.options.version === '3' && <File.Import isTypeOnly path={'@kubb/plugin-zod/utils'} name={['ToZod']} />}\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 rawSchema={schemaObject}\n mapper={mapper}\n coercion={coercion}\n keysToOmit={keysToOmit}\n wrapOutput={wrapOutput}\n version={plugin.options.version}\n emptySchemaType={plugin.options.emptySchemaType}\n />\n </Oas.Schema>\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({ schema, options }) {\n const { coercion, inferred, typed, mapper, importPath, wrapOutput, version } = options\n\n const { getName, getFile, getImports } = useSchemaManager()\n const {\n options: { output, emptySchemaType },\n } = usePlugin<PluginZod>()\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 && <File.Import isTypeOnly path={options.version === '4' ? '@kubb/plugin-zod/utils/v4' : '@kubb/plugin-zod/utils'} name={['ToZod']} />}\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 rawSchema={schema.value}\n mapper={mapper}\n coercion={coercion}\n wrapOutput={wrapOutput}\n version={version}\n emptySchemaType={emptySchemaType}\n />\n </File>\n )\n },\n})\n","import { usePlugin, usePluginManager } from '@kubb/core/hooks'\nimport { createReactGenerator } from '@kubb/plugin-oas'\nimport { useOas, useOperationManager } from '@kubb/plugin-oas/hooks'\nimport { getBanner, getFooter } from '@kubb/plugin-oas/utils'\nimport { File } from '@kubb/react'\nimport { Operations } from '../components/Operations.tsx'\nimport type { PluginZod } from '../types'\n\nexport const operationsGenerator = createReactGenerator<PluginZod>({\n name: 'operations',\n Operations({ operations }) {\n const {\n key: pluginKey,\n options: { output, importPath },\n } = usePlugin<PluginZod>()\n const pluginManager = usePluginManager()\n\n const oas = useOas()\n const { getFile, groupSchemasByName } = useOperationManager()\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"],"mappings":"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"}
@@ -1,10 +1,11 @@
1
- import { Operations, Zod } from "./components-Btq9ngUK.js";
1
+ import { n as Operations, t as Zod } from "./components-8y_GG0Uf.js";
2
2
  import { SchemaGenerator, createReactGenerator, schemaKeywords } from "@kubb/plugin-oas";
3
3
  import { pluginTsName } from "@kubb/plugin-ts";
4
+ import { useMode, usePlugin, usePluginManager } from "@kubb/core/hooks";
4
5
  import { Oas } from "@kubb/plugin-oas/components";
5
6
  import { useOas, useOperationManager, useSchemaManager } from "@kubb/plugin-oas/hooks";
6
7
  import { getBanner, getFooter } from "@kubb/plugin-oas/utils";
7
- import { File, useApp } from "@kubb/react";
8
+ import { File } from "@kubb/react";
8
9
  import { jsx, jsxs } from "@kubb/react/jsx-runtime";
9
10
 
10
11
  //#region src/generators/zodGenerator.tsx
@@ -12,7 +13,9 @@ const zodGenerator = createReactGenerator({
12
13
  name: "zod",
13
14
  Operation({ operation, options }) {
14
15
  const { coercion: globalCoercion, inferred, typed, mapper, wrapOutput } = options;
15
- const { plugin, pluginManager, mode } = useApp();
16
+ const plugin = usePlugin();
17
+ const mode = useMode();
18
+ const pluginManager = usePluginManager();
16
19
  const oas = useOas();
17
20
  const { getSchemas, getFile, getGroup } = useOperationManager();
18
21
  const schemaManager = useSchemaManager();
@@ -127,7 +130,8 @@ const zodGenerator = createReactGenerator({
127
130
  Schema({ schema, options }) {
128
131
  const { coercion, inferred, typed, mapper, importPath, wrapOutput, version } = options;
129
132
  const { getName, getFile, getImports } = useSchemaManager();
130
- const { pluginManager, plugin: { options: { output, emptySchemaType } } } = useApp();
133
+ const { options: { output, emptySchemaType } } = usePlugin();
134
+ const pluginManager = usePluginManager();
131
135
  const oas = useOas();
132
136
  const imports = getImports(schema.tree);
133
137
  const zod = {
@@ -203,7 +207,8 @@ const zodGenerator = createReactGenerator({
203
207
  const operationsGenerator = createReactGenerator({
204
208
  name: "operations",
205
209
  Operations({ operations }) {
206
- const { pluginManager, plugin: { key: pluginKey, options: { output } } } = useApp();
210
+ const { key: pluginKey, options: { output, importPath } } = usePlugin();
211
+ const pluginManager = usePluginManager();
207
212
  const oas = useOas();
208
213
  const { getFile, groupSchemasByName } = useOperationManager();
209
214
  const name = "operations";
@@ -241,14 +246,22 @@ const operationsGenerator = createReactGenerator({
241
246
  oas,
242
247
  output
243
248
  }),
244
- children: [imports, /* @__PURE__ */ jsx(Operations, {
245
- name,
246
- operations: transformedOperations
247
- })]
249
+ children: [
250
+ /* @__PURE__ */ jsx(File.Import, {
251
+ isTypeOnly: true,
252
+ name: ["z"],
253
+ path: importPath
254
+ }),
255
+ imports,
256
+ /* @__PURE__ */ jsx(Operations, {
257
+ name,
258
+ operations: transformedOperations
259
+ })
260
+ ]
248
261
  });
249
262
  }
250
263
  });
251
264
 
252
265
  //#endregion
253
- export { operationsGenerator, zodGenerator };
254
- //# sourceMappingURL=generators-YcatTu7g.js.map
266
+ export { zodGenerator as n, operationsGenerator as t };
267
+ //# sourceMappingURL=generators-bYDLojHd.js.map