@kubb/plugin-zod 0.0.0-canary-20251028131922 → 0.0.0-canary-20251103125929
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/dist/{components-DUJ6Xkpc.js → components-DpM7dEpH.js} +4 -4
- package/dist/{components-DUJ6Xkpc.js.map → components-DpM7dEpH.js.map} +1 -1
- package/dist/components.d.cts +2 -1
- package/dist/components.d.ts +2 -1
- package/dist/components.js +1 -1
- package/dist/{generators-B2hD7k6l.cjs → generators-DXfU6W14.cjs} +113 -118
- package/dist/generators-DXfU6W14.cjs.map +1 -0
- package/dist/{generators-CwEOtNXG.js → generators-pT2oV1kT.js} +115 -121
- package/dist/generators-pT2oV1kT.js.map +1 -0
- package/dist/generators.cjs +1 -1
- package/dist/generators.d.cts +4 -4
- package/dist/generators.d.ts +4 -4
- package/dist/generators.js +2 -2
- package/dist/index.cjs +11 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +11 -2
- package/dist/index.js.map +1 -1
- package/dist/{types-CENqfJvI.d.cts → types-DBZGvY3G.d.cts} +148 -265
- package/dist/{types-DRKJPaUn.d.ts → types-Dz_P13wd.d.ts} +148 -265
- package/package.json +18 -20
- package/src/generators/index.ts +1 -1
- package/src/generators/operationsGenerator.tsx +5 -5
- package/src/generators/zodGenerator.tsx +22 -19
- package/src/plugin.ts +15 -0
- package/dist/generators-B2hD7k6l.cjs.map +0 -1
- package/dist/generators-CwEOtNXG.js.map +0 -1
- package/dist/utils.cjs +0 -0
- package/dist/utils.d.cts +0 -28
- package/dist/utils.d.ts +0 -28
- package/dist/utils.js +0 -1
- package/src/utils/index.ts +0 -1
- /package/{src/utils → templates}/ToZod.ts +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import transformers from "@kubb/core/transformers";
|
|
2
2
|
import { SchemaGenerator, isKeyword, schemaKeywords } from "@kubb/plugin-oas";
|
|
3
3
|
import { Const, File, Type } from "@kubb/react-fabric";
|
|
4
|
-
import { Fragment, jsx, jsxs } from "@kubb/react-fabric/jsx-runtime";
|
|
4
|
+
import { Fragment as Fragment$1, jsx, jsxs } from "@kubb/react-fabric/jsx-runtime";
|
|
5
5
|
|
|
6
6
|
//#region src/components/Operations.tsx
|
|
7
7
|
function Operations({ name, operations }) {
|
|
@@ -16,7 +16,7 @@ function Operations({ name, operations }) {
|
|
|
16
16
|
};
|
|
17
17
|
return prev;
|
|
18
18
|
}, {});
|
|
19
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
19
|
+
return /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
20
20
|
/* @__PURE__ */ jsx(File.Source, {
|
|
21
21
|
name: "OperationSchema",
|
|
22
22
|
isExportable: true,
|
|
@@ -489,7 +489,7 @@ function Zod({ name, typeName, tree, rawSchema, inferTypeName, mapper, coercion,
|
|
|
489
489
|
schema: rawSchema
|
|
490
490
|
}) || baseSchemaOutput : baseSchemaOutput;
|
|
491
491
|
const finalOutput = typeName ? `${wrappedSchemaOutput} as unknown as ${version === "4" ? "z.ZodType" : "ToZod"}<${typeName}>` : wrappedSchemaOutput;
|
|
492
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(File.Source, {
|
|
492
|
+
return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(File.Source, {
|
|
493
493
|
name,
|
|
494
494
|
isExportable: true,
|
|
495
495
|
isIndexable: true,
|
|
@@ -518,4 +518,4 @@ function Zod({ name, typeName, tree, rawSchema, inferTypeName, mapper, coercion,
|
|
|
518
518
|
|
|
519
519
|
//#endregion
|
|
520
520
|
export { Operations as n, Zod as t };
|
|
521
|
-
//# sourceMappingURL=components-
|
|
521
|
+
//# sourceMappingURL=components-DpM7dEpH.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components-DUJ6Xkpc.js","names":["order: string[]","name","value","parserZod.sort","parserZod.parse"],"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'\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, exclusiveMinimum?: number, exclusiveMaximum?: number) => {\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) => {\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) => {\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 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\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 const exclusiveMinimumSchema = SchemaGenerator.find(siblings, schemaKeywords.exclusiveMinimum)\n const exclusiveMaximumSchema = SchemaGenerator.find(siblings, schemaKeywords.exclusiveMaximum)\n return zodKeywordMapper.number(\n shouldCoerce(options.coercion, 'numbers'),\n minSchema?.args,\n maxSchema?.args,\n exclusiveMinimumSchema?.args,\n exclusiveMaximumSchema?.args,\n )\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 const exclusiveMinimumSchema = SchemaGenerator.find(siblings, schemaKeywords.exclusiveMinimum)\n const exclusiveMaximumSchema = SchemaGenerator.find(siblings, schemaKeywords.exclusiveMaximum)\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 )\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-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 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): KubbNode {\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
|
+
{"version":3,"file":"components-DpM7dEpH.js","names":["order: string[]","name","value","parserZod.sort","parserZod.parse"],"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'\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, exclusiveMinimum?: number, exclusiveMaximum?: number) => {\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) => {\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) => {\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 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\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 const exclusiveMinimumSchema = SchemaGenerator.find(siblings, schemaKeywords.exclusiveMinimum)\n const exclusiveMaximumSchema = SchemaGenerator.find(siblings, schemaKeywords.exclusiveMaximum)\n return zodKeywordMapper.number(\n shouldCoerce(options.coercion, 'numbers'),\n minSchema?.args,\n maxSchema?.args,\n exclusiveMinimumSchema?.args,\n exclusiveMaximumSchema?.args,\n )\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 const exclusiveMinimumSchema = SchemaGenerator.find(siblings, schemaKeywords.exclusiveMinimum)\n const exclusiveMaximumSchema = SchemaGenerator.find(siblings, schemaKeywords.exclusiveMaximum)\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 )\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-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 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): KubbNode {\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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"}
|
package/dist/components.d.cts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { i as Schema, n as PluginZod, o as Operation, s as SchemaObject } from "./types-DBZGvY3G.cjs";
|
|
2
|
+
import { KubbFile } from "@kubb/fabric-core/types";
|
|
2
3
|
import { KubbNode } from "@kubb/react-fabric/types";
|
|
3
4
|
|
|
4
5
|
//#region ../plugin-oas/src/hooks/useOperationManager.d.ts
|
package/dist/components.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { i as Schema, n as PluginZod, o as Operation, s as SchemaObject } from "./types-Dz_P13wd.js";
|
|
2
|
+
import { KubbFile } from "@kubb/fabric-core/types";
|
|
2
3
|
import { KubbNode } from "@kubb/react-fabric/types";
|
|
3
4
|
|
|
4
5
|
//#region ../plugin-oas/src/hooks/useOperationManager.d.ts
|
package/dist/components.js
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
const require_components = require('./components-BiOh-7_I.cjs');
|
|
2
|
+
let node_path = require("node:path");
|
|
3
|
+
node_path = require_components.__toESM(node_path);
|
|
2
4
|
let __kubb_plugin_oas = require("@kubb/plugin-oas");
|
|
3
5
|
__kubb_plugin_oas = require_components.__toESM(__kubb_plugin_oas);
|
|
4
6
|
let __kubb_plugin_ts = require("@kubb/plugin-ts");
|
|
5
7
|
__kubb_plugin_ts = require_components.__toESM(__kubb_plugin_ts);
|
|
6
8
|
let __kubb_core_hooks = require("@kubb/core/hooks");
|
|
7
9
|
__kubb_core_hooks = require_components.__toESM(__kubb_core_hooks);
|
|
8
|
-
let
|
|
9
|
-
|
|
10
|
+
let __kubb_plugin_oas_generators = require("@kubb/plugin-oas/generators");
|
|
11
|
+
__kubb_plugin_oas_generators = require_components.__toESM(__kubb_plugin_oas_generators);
|
|
10
12
|
let __kubb_plugin_oas_hooks = require("@kubb/plugin-oas/hooks");
|
|
11
13
|
__kubb_plugin_oas_hooks = require_components.__toESM(__kubb_plugin_oas_hooks);
|
|
12
14
|
let __kubb_plugin_oas_utils = require("@kubb/plugin-oas/utils");
|
|
@@ -16,21 +18,80 @@ __kubb_react_fabric = require_components.__toESM(__kubb_react_fabric);
|
|
|
16
18
|
let __kubb_react_fabric_jsx_runtime = require("@kubb/react-fabric/jsx-runtime");
|
|
17
19
|
__kubb_react_fabric_jsx_runtime = require_components.__toESM(__kubb_react_fabric_jsx_runtime);
|
|
18
20
|
|
|
21
|
+
//#region src/generators/operationsGenerator.tsx
|
|
22
|
+
const operationsGenerator = (0, __kubb_plugin_oas_generators.createReactGenerator)({
|
|
23
|
+
name: "operations",
|
|
24
|
+
Operations({ operations, generator, plugin }) {
|
|
25
|
+
const { key: pluginKey, options: { output, importPath } } = plugin;
|
|
26
|
+
const pluginManager = (0, __kubb_core_hooks.usePluginManager)();
|
|
27
|
+
const oas = (0, __kubb_plugin_oas_hooks.useOas)();
|
|
28
|
+
const { getFile, groupSchemasByName } = (0, __kubb_plugin_oas_hooks.useOperationManager)(generator);
|
|
29
|
+
const name = "operations";
|
|
30
|
+
const file = pluginManager.getFile({
|
|
31
|
+
name,
|
|
32
|
+
extname: ".ts",
|
|
33
|
+
pluginKey
|
|
34
|
+
});
|
|
35
|
+
const transformedOperations = operations.map((operation) => ({
|
|
36
|
+
operation,
|
|
37
|
+
data: groupSchemasByName(operation, { type: "function" })
|
|
38
|
+
}));
|
|
39
|
+
const imports = Object.entries(transformedOperations).map(([key, { data, operation }]) => {
|
|
40
|
+
const names = [
|
|
41
|
+
data.request,
|
|
42
|
+
...Object.values(data.responses),
|
|
43
|
+
...Object.values(data.parameters)
|
|
44
|
+
].filter(Boolean);
|
|
45
|
+
return /* @__PURE__ */ (0, __kubb_react_fabric_jsx_runtime.jsx)(__kubb_react_fabric.File.Import, {
|
|
46
|
+
name: names,
|
|
47
|
+
root: file.path,
|
|
48
|
+
path: getFile(operation).path
|
|
49
|
+
}, key);
|
|
50
|
+
}).filter(Boolean);
|
|
51
|
+
return /* @__PURE__ */ (0, __kubb_react_fabric_jsx_runtime.jsxs)(__kubb_react_fabric.File, {
|
|
52
|
+
baseName: file.baseName,
|
|
53
|
+
path: file.path,
|
|
54
|
+
meta: file.meta,
|
|
55
|
+
banner: (0, __kubb_plugin_oas_utils.getBanner)({
|
|
56
|
+
oas,
|
|
57
|
+
output,
|
|
58
|
+
config: pluginManager.config
|
|
59
|
+
}),
|
|
60
|
+
footer: (0, __kubb_plugin_oas_utils.getFooter)({
|
|
61
|
+
oas,
|
|
62
|
+
output
|
|
63
|
+
}),
|
|
64
|
+
children: [
|
|
65
|
+
/* @__PURE__ */ (0, __kubb_react_fabric_jsx_runtime.jsx)(__kubb_react_fabric.File.Import, {
|
|
66
|
+
isTypeOnly: true,
|
|
67
|
+
name: ["z"],
|
|
68
|
+
path: importPath
|
|
69
|
+
}),
|
|
70
|
+
imports,
|
|
71
|
+
/* @__PURE__ */ (0, __kubb_react_fabric_jsx_runtime.jsx)(require_components.Operations, {
|
|
72
|
+
name,
|
|
73
|
+
operations: transformedOperations
|
|
74
|
+
})
|
|
75
|
+
]
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
//#endregion
|
|
19
81
|
//#region src/generators/zodGenerator.tsx
|
|
20
|
-
const zodGenerator = (0,
|
|
82
|
+
const zodGenerator = (0, __kubb_plugin_oas_generators.createReactGenerator)({
|
|
21
83
|
name: "zod",
|
|
22
|
-
Operation({ operation,
|
|
23
|
-
const { coercion: globalCoercion, inferred, typed, mapper, wrapOutput } =
|
|
24
|
-
const plugin = (0, __kubb_core_hooks.usePlugin)();
|
|
84
|
+
Operation({ config, operation, generator, plugin }) {
|
|
85
|
+
const { options, options: { coercion: globalCoercion, inferred, typed, mapper, wrapOutput, version } } = plugin;
|
|
25
86
|
const mode = (0, __kubb_core_hooks.useMode)();
|
|
26
87
|
const pluginManager = (0, __kubb_core_hooks.usePluginManager)();
|
|
27
88
|
const oas = (0, __kubb_plugin_oas_hooks.useOas)();
|
|
28
|
-
const { getSchemas, getFile, getGroup } = (0, __kubb_plugin_oas_hooks.useOperationManager)();
|
|
89
|
+
const { getSchemas, getFile, getGroup } = (0, __kubb_plugin_oas_hooks.useOperationManager)(generator);
|
|
29
90
|
const schemaManager = (0, __kubb_plugin_oas_hooks.useSchemaManager)();
|
|
30
91
|
const file = getFile(operation);
|
|
31
92
|
const schemas = getSchemas(operation);
|
|
32
93
|
const schemaGenerator = new __kubb_plugin_oas.SchemaGenerator(options, {
|
|
33
|
-
fabric:
|
|
94
|
+
fabric: generator.context.fabric,
|
|
34
95
|
oas,
|
|
35
96
|
plugin,
|
|
36
97
|
pluginManager,
|
|
@@ -45,7 +106,7 @@ const zodGenerator = (0, __kubb_plugin_oas.createReactGenerator)({
|
|
|
45
106
|
schemas.request,
|
|
46
107
|
schemas.response
|
|
47
108
|
].flat().filter(Boolean);
|
|
48
|
-
const mapOperationSchema = ({ name, schema: schemaObject, description, keysToOmit,...options$1 }
|
|
109
|
+
const mapOperationSchema = ({ name, schema: schemaObject, description, keysToOmit,...options$1 }) => {
|
|
49
110
|
const required = Array.isArray(schemaObject?.required) ? !!schemaObject.required.length : !!schemaObject?.required;
|
|
50
111
|
const someDefaults = Object.values(schemaObject.properties || {}).some((property) => Object.hasOwn(property, "default") && property.default !== void 0);
|
|
51
112
|
const optional = !required && !someDefaults && name.includes("Params");
|
|
@@ -75,47 +136,42 @@ const zodGenerator = (0, __kubb_plugin_oas.createReactGenerator)({
|
|
|
75
136
|
group
|
|
76
137
|
})
|
|
77
138
|
};
|
|
78
|
-
return /* @__PURE__ */ (0, __kubb_react_fabric_jsx_runtime.jsxs)(
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
version: plugin.options.version,
|
|
115
|
-
emptySchemaType: plugin.options.emptySchemaType
|
|
116
|
-
})
|
|
117
|
-
]
|
|
118
|
-
}, i);
|
|
139
|
+
return /* @__PURE__ */ (0, __kubb_react_fabric_jsx_runtime.jsxs)(__kubb_react_fabric.Fragment, { children: [
|
|
140
|
+
typed && /* @__PURE__ */ (0, __kubb_react_fabric_jsx_runtime.jsx)(__kubb_react_fabric.File.Import, {
|
|
141
|
+
isTypeOnly: true,
|
|
142
|
+
root: file.path,
|
|
143
|
+
path: type.file.path,
|
|
144
|
+
name: [type.name]
|
|
145
|
+
}),
|
|
146
|
+
typed && version === "3" && /* @__PURE__ */ (0, __kubb_react_fabric_jsx_runtime.jsx)(__kubb_react_fabric.File.Import, {
|
|
147
|
+
name: ["ToZod"],
|
|
148
|
+
root: file.path,
|
|
149
|
+
path: node_path.default.resolve(config.root, config.output.path, ".kubb/ToZod.ts")
|
|
150
|
+
}),
|
|
151
|
+
imports.map((imp) => /* @__PURE__ */ (0, __kubb_react_fabric_jsx_runtime.jsx)(__kubb_react_fabric.File.Import, {
|
|
152
|
+
root: file.path,
|
|
153
|
+
path: imp.path,
|
|
154
|
+
name: imp.name
|
|
155
|
+
}, [
|
|
156
|
+
imp.path,
|
|
157
|
+
imp.name,
|
|
158
|
+
imp.isTypeOnly
|
|
159
|
+
].join("-"))),
|
|
160
|
+
/* @__PURE__ */ (0, __kubb_react_fabric_jsx_runtime.jsx)(require_components.Zod, {
|
|
161
|
+
name: zod.name,
|
|
162
|
+
typeName: typed ? type.name : void 0,
|
|
163
|
+
inferTypeName: inferred ? zod.inferTypeName : void 0,
|
|
164
|
+
description,
|
|
165
|
+
tree,
|
|
166
|
+
rawSchema: schemaObject,
|
|
167
|
+
mapper,
|
|
168
|
+
coercion,
|
|
169
|
+
keysToOmit,
|
|
170
|
+
wrapOutput,
|
|
171
|
+
version: plugin.options.version,
|
|
172
|
+
emptySchemaType: plugin.options.emptySchemaType
|
|
173
|
+
})
|
|
174
|
+
] });
|
|
119
175
|
};
|
|
120
176
|
return /* @__PURE__ */ (0, __kubb_react_fabric_jsx_runtime.jsxs)(__kubb_react_fabric.File, {
|
|
121
177
|
baseName: file.baseName,
|
|
@@ -136,10 +192,9 @@ const zodGenerator = (0, __kubb_plugin_oas.createReactGenerator)({
|
|
|
136
192
|
}), operationSchemas.map(mapOperationSchema)]
|
|
137
193
|
});
|
|
138
194
|
},
|
|
139
|
-
Schema({ schema,
|
|
140
|
-
const { coercion, inferred, typed, mapper, importPath, wrapOutput, version } = options;
|
|
195
|
+
Schema({ config, schema, plugin }) {
|
|
141
196
|
const { getName, getFile, getImports } = (0, __kubb_plugin_oas_hooks.useSchemaManager)();
|
|
142
|
-
const { options: { output, emptySchemaType } } =
|
|
197
|
+
const { options: { output, emptySchemaType, coercion, inferred, typed, mapper, importPath, wrapOutput, version } } = plugin;
|
|
143
198
|
const pluginManager = (0, __kubb_core_hooks.usePluginManager)();
|
|
144
199
|
const oas = (0, __kubb_plugin_oas_hooks.useOas)();
|
|
145
200
|
const imports = getImports(schema.tree);
|
|
@@ -179,10 +234,10 @@ const zodGenerator = (0, __kubb_plugin_oas.createReactGenerator)({
|
|
|
179
234
|
path: type.file.path,
|
|
180
235
|
name: [type.name]
|
|
181
236
|
}),
|
|
182
|
-
typed && /* @__PURE__ */ (0, __kubb_react_fabric_jsx_runtime.jsx)(__kubb_react_fabric.File.Import, {
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
237
|
+
typed && version === "3" && /* @__PURE__ */ (0, __kubb_react_fabric_jsx_runtime.jsx)(__kubb_react_fabric.File.Import, {
|
|
238
|
+
name: ["ToZod"],
|
|
239
|
+
root: zod.file.path,
|
|
240
|
+
path: node_path.default.resolve(config.root, config.output.path, ".kubb/ToZod.ts")
|
|
186
241
|
}),
|
|
187
242
|
imports.map((imp) => /* @__PURE__ */ (0, __kubb_react_fabric_jsx_runtime.jsx)(__kubb_react_fabric.File.Import, {
|
|
188
243
|
root: zod.file.path,
|
|
@@ -211,66 +266,6 @@ const zodGenerator = (0, __kubb_plugin_oas.createReactGenerator)({
|
|
|
211
266
|
}
|
|
212
267
|
});
|
|
213
268
|
|
|
214
|
-
//#endregion
|
|
215
|
-
//#region src/generators/operationsGenerator.tsx
|
|
216
|
-
const operationsGenerator = (0, __kubb_plugin_oas.createReactGenerator)({
|
|
217
|
-
name: "operations",
|
|
218
|
-
Operations({ operations }) {
|
|
219
|
-
const { key: pluginKey, options: { output, importPath } } = (0, __kubb_core_hooks.usePlugin)();
|
|
220
|
-
const pluginManager = (0, __kubb_core_hooks.usePluginManager)();
|
|
221
|
-
const oas = (0, __kubb_plugin_oas_hooks.useOas)();
|
|
222
|
-
const { getFile, groupSchemasByName } = (0, __kubb_plugin_oas_hooks.useOperationManager)();
|
|
223
|
-
const name = "operations";
|
|
224
|
-
const file = pluginManager.getFile({
|
|
225
|
-
name,
|
|
226
|
-
extname: ".ts",
|
|
227
|
-
pluginKey
|
|
228
|
-
});
|
|
229
|
-
const transformedOperations = operations.map((operation) => ({
|
|
230
|
-
operation,
|
|
231
|
-
data: groupSchemasByName(operation, { type: "function" })
|
|
232
|
-
}));
|
|
233
|
-
const imports = Object.entries(transformedOperations).map(([key, { data, operation }]) => {
|
|
234
|
-
const names = [
|
|
235
|
-
data.request,
|
|
236
|
-
...Object.values(data.responses),
|
|
237
|
-
...Object.values(data.parameters)
|
|
238
|
-
].filter(Boolean);
|
|
239
|
-
return /* @__PURE__ */ (0, __kubb_react_fabric_jsx_runtime.jsx)(__kubb_react_fabric.File.Import, {
|
|
240
|
-
name: names,
|
|
241
|
-
root: file.path,
|
|
242
|
-
path: getFile(operation).path
|
|
243
|
-
}, key);
|
|
244
|
-
}).filter(Boolean);
|
|
245
|
-
return /* @__PURE__ */ (0, __kubb_react_fabric_jsx_runtime.jsxs)(__kubb_react_fabric.File, {
|
|
246
|
-
baseName: file.baseName,
|
|
247
|
-
path: file.path,
|
|
248
|
-
meta: file.meta,
|
|
249
|
-
banner: (0, __kubb_plugin_oas_utils.getBanner)({
|
|
250
|
-
oas,
|
|
251
|
-
output,
|
|
252
|
-
config: pluginManager.config
|
|
253
|
-
}),
|
|
254
|
-
footer: (0, __kubb_plugin_oas_utils.getFooter)({
|
|
255
|
-
oas,
|
|
256
|
-
output
|
|
257
|
-
}),
|
|
258
|
-
children: [
|
|
259
|
-
/* @__PURE__ */ (0, __kubb_react_fabric_jsx_runtime.jsx)(__kubb_react_fabric.File.Import, {
|
|
260
|
-
isTypeOnly: true,
|
|
261
|
-
name: ["z"],
|
|
262
|
-
path: importPath
|
|
263
|
-
}),
|
|
264
|
-
imports,
|
|
265
|
-
/* @__PURE__ */ (0, __kubb_react_fabric_jsx_runtime.jsx)(require_components.Operations, {
|
|
266
|
-
name,
|
|
267
|
-
operations: transformedOperations
|
|
268
|
-
})
|
|
269
|
-
]
|
|
270
|
-
});
|
|
271
|
-
}
|
|
272
|
-
});
|
|
273
|
-
|
|
274
269
|
//#endregion
|
|
275
270
|
Object.defineProperty(exports, 'operationsGenerator', {
|
|
276
271
|
enumerable: true,
|
|
@@ -284,4 +279,4 @@ Object.defineProperty(exports, 'zodGenerator', {
|
|
|
284
279
|
return zodGenerator;
|
|
285
280
|
}
|
|
286
281
|
});
|
|
287
|
-
//# sourceMappingURL=generators-
|
|
282
|
+
//# sourceMappingURL=generators-DXfU6W14.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generators-DXfU6W14.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 },\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 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) => {\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 <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 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 </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 },\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 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"],"mappings":"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"}
|