@kubb/plugin-zod 5.0.0-alpha.34 → 5.0.0-alpha.35
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/index.cjs +94 -161
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +15 -18
- package/dist/index.js +96 -163
- package/dist/index.js.map +1 -1
- package/package.json +4 -5
- package/src/components/Operations.tsx +2 -2
- package/src/components/Zod.tsx +3 -4
- package/src/generators/zodGenerator.tsx +17 -18
- package/src/generators/zodGeneratorLegacy.tsx +47 -48
- package/src/plugin.ts +50 -84
- package/src/printers/printerZod.ts +11 -11
- package/src/printers/printerZodMini.ts +10 -10
- package/src/types.ts +10 -11
- package/src/utils.ts +9 -10
- package/src/presets.ts +0 -30
package/src/types.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import type { OperationParamsResolver } from '@kubb/ast'
|
|
2
|
-
import type { OperationNode, ParameterNode, SchemaNode, StatusCode, Visitor } from '@kubb/ast/types'
|
|
3
1
|
import type {
|
|
2
|
+
ast,
|
|
4
3
|
CompatibilityPreset,
|
|
5
4
|
Exclude,
|
|
6
5
|
Generator,
|
|
@@ -21,7 +20,7 @@ import type { PrinterZodMiniNodes } from './printers/printerZodMini.ts'
|
|
|
21
20
|
* Extends the base `Resolver` with zod-specific naming helpers.
|
|
22
21
|
*/
|
|
23
22
|
export type ResolverZod = Resolver &
|
|
24
|
-
OperationParamsResolver & {
|
|
23
|
+
ast.OperationParamsResolver & {
|
|
25
24
|
/**
|
|
26
25
|
* Resolves a camelCase schema function name with a `Schema` suffix.
|
|
27
26
|
*/
|
|
@@ -56,42 +55,42 @@ export type ResolverZod = Resolver &
|
|
|
56
55
|
* @example
|
|
57
56
|
* resolver.resolveResponseStatusName(node, 200) // → 'listPetsStatus200Schema'
|
|
58
57
|
*/
|
|
59
|
-
resolveResponseStatusName(this: ResolverZod, node: OperationNode, statusCode: StatusCode): string
|
|
58
|
+
resolveResponseStatusName(this: ResolverZod, node: ast.OperationNode, statusCode: ast.StatusCode): string
|
|
60
59
|
/**
|
|
61
60
|
* Resolves the name for the collection of all operation responses.
|
|
62
61
|
*
|
|
63
62
|
* @example
|
|
64
63
|
* resolver.resolveResponsesName(node) // → 'listPetsResponsesSchema'
|
|
65
64
|
*/
|
|
66
|
-
resolveResponsesName(this: ResolverZod, node: OperationNode): string
|
|
65
|
+
resolveResponsesName(this: ResolverZod, node: ast.OperationNode): string
|
|
67
66
|
/**
|
|
68
67
|
* Resolves the name for the union of all operation responses.
|
|
69
68
|
*
|
|
70
69
|
* @example
|
|
71
70
|
* resolver.resolveResponseName(node) // → 'listPetsResponseSchema'
|
|
72
71
|
*/
|
|
73
|
-
resolveResponseName(this: ResolverZod, node: OperationNode): string
|
|
72
|
+
resolveResponseName(this: ResolverZod, node: ast.OperationNode): string
|
|
74
73
|
/**
|
|
75
74
|
* Resolves the name for an operation's grouped path parameters type.
|
|
76
75
|
*
|
|
77
76
|
* @example
|
|
78
77
|
* resolver.resolvePathParamsName(node, param) // → 'deletePetPathPetIdSchema'
|
|
79
78
|
*/
|
|
80
|
-
resolvePathParamsName(this: ResolverZod, node: OperationNode, param: ParameterNode): string
|
|
79
|
+
resolvePathParamsName(this: ResolverZod, node: ast.OperationNode, param: ast.ParameterNode): string
|
|
81
80
|
/**
|
|
82
81
|
* Resolves the name for an operation's grouped query parameters type.
|
|
83
82
|
*
|
|
84
83
|
* @example
|
|
85
84
|
* resolver.resolveQueryParamsName(node, param) // → 'findPetsByStatusQueryStatusSchema'
|
|
86
85
|
*/
|
|
87
|
-
resolveQueryParamsName(this: ResolverZod, node: OperationNode, param: ParameterNode): string
|
|
86
|
+
resolveQueryParamsName(this: ResolverZod, node: ast.OperationNode, param: ast.ParameterNode): string
|
|
88
87
|
/**
|
|
89
88
|
* Resolves the name for an operation's grouped header parameters type.
|
|
90
89
|
*
|
|
91
90
|
* @example
|
|
92
91
|
* resolver.resolveHeaderParamsName(node, param) // → 'deletePetHeaderApiKeySchema'
|
|
93
92
|
*/
|
|
94
|
-
resolveHeaderParamsName(this: ResolverZod, node: OperationNode, param: ParameterNode): string
|
|
93
|
+
resolveHeaderParamsName(this: ResolverZod, node: ast.OperationNode, param: ast.ParameterNode): string
|
|
95
94
|
}
|
|
96
95
|
|
|
97
96
|
export type Options = {
|
|
@@ -171,7 +170,7 @@ export type Options = {
|
|
|
171
170
|
* Useful for edge cases like adding `.openapi()` metadata or wrapping
|
|
172
171
|
* schemas with extension helpers (openapi -> zod -> openapi round-trips).
|
|
173
172
|
*/
|
|
174
|
-
wrapOutput?: (arg: { output: string; schema: SchemaNode }) => string | undefined
|
|
173
|
+
wrapOutput?: (arg: { output: string; schema: ast.SchemaNode }) => string | undefined
|
|
175
174
|
/**
|
|
176
175
|
* How to style your params, by default no casing is applied
|
|
177
176
|
* - 'camelcase' uses camelCase for pathParams, queryParams and headerParams property names
|
|
@@ -218,7 +217,7 @@ export type Options = {
|
|
|
218
217
|
* A single AST visitor applied to each SchemaNode/OperationNode before printing.
|
|
219
218
|
* When a visitor method returns `null` or `undefined`, the preset transformer's result is used instead.
|
|
220
219
|
*/
|
|
221
|
-
transformer?: Visitor
|
|
220
|
+
transformer?: ast.Visitor
|
|
222
221
|
}
|
|
223
222
|
|
|
224
223
|
type ResolvedOptions = {
|
package/src/utils.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { stringify, toRegExpString } from '@internals/utils'
|
|
2
|
-
import {
|
|
3
|
-
import type { OperationNode, ParameterNode, SchemaNode } from '@kubb/ast/types'
|
|
2
|
+
import { ast } from '@kubb/core'
|
|
4
3
|
import type { PluginZod, ResolverZod } from './types.ts'
|
|
5
4
|
|
|
6
5
|
/**
|
|
@@ -17,7 +16,7 @@ export function shouldCoerce(coercion: PluginZod['resolvedOptions']['coercion']
|
|
|
17
16
|
* Collects all resolved schema names for an operation's parameters and responses
|
|
18
17
|
* into a single lookup object, useful for building imports and type references.
|
|
19
18
|
*/
|
|
20
|
-
export function buildSchemaNames(node: OperationNode, { params, resolver }: { params: Array<ParameterNode>; resolver: ResolverZod }) {
|
|
19
|
+
export function buildSchemaNames(node: ast.OperationNode, { params, resolver }: { params: Array<ast.ParameterNode>; resolver: ResolverZod }) {
|
|
21
20
|
const pathParam = params.find((p) => p.in === 'path')
|
|
22
21
|
const queryParam = params.find((p) => p.in === 'query')
|
|
23
22
|
const headerParam = params.find((p) => p.in === 'header')
|
|
@@ -196,14 +195,14 @@ export function applyMiniModifiers({ value, nullable, optional, nullish, default
|
|
|
196
195
|
* A `visited` set prevents infinite recursion on circular schema graphs.
|
|
197
196
|
*/
|
|
198
197
|
export function containsSelfRef(
|
|
199
|
-
node: SchemaNode,
|
|
200
|
-
{ schemaName, resolver, visited = new Set() }: { schemaName: string; resolver: ResolverZod | undefined; visited?: Set<SchemaNode> },
|
|
198
|
+
node: ast.SchemaNode,
|
|
199
|
+
{ schemaName, resolver, visited = new Set() }: { schemaName: string; resolver: ResolverZod | undefined; visited?: Set<ast.SchemaNode> },
|
|
201
200
|
): boolean {
|
|
202
201
|
if (visited.has(node)) return false
|
|
203
202
|
visited.add(node)
|
|
204
203
|
|
|
205
204
|
if (node.type === 'ref' && node.ref) {
|
|
206
|
-
const rawName = extractRefName(node.ref) ?? node.name
|
|
205
|
+
const rawName = ast.extractRefName(node.ref) ?? node.name
|
|
207
206
|
const resolved = rawName ? (resolver?.default(rawName, 'function') ?? rawName) : node.name
|
|
208
207
|
return resolved === schemaName
|
|
209
208
|
}
|
|
@@ -224,7 +223,7 @@ export function containsSelfRef(
|
|
|
224
223
|
}
|
|
225
224
|
|
|
226
225
|
type BuildGroupedParamsSchemaOptions = {
|
|
227
|
-
params: Array<ParameterNode>
|
|
226
|
+
params: Array<ast.ParameterNode>
|
|
228
227
|
optional?: boolean
|
|
229
228
|
}
|
|
230
229
|
|
|
@@ -232,13 +231,13 @@ type BuildGroupedParamsSchemaOptions = {
|
|
|
232
231
|
* Builds an `object` schema node grouping the given parameter nodes.
|
|
233
232
|
* The `primitive: 'object'` marker ensures the Zod printer emits `z.object(…)` rather than a record.
|
|
234
233
|
*/
|
|
235
|
-
export function buildGroupedParamsSchema({ params, optional }: BuildGroupedParamsSchemaOptions): SchemaNode {
|
|
236
|
-
return createSchema({
|
|
234
|
+
export function buildGroupedParamsSchema({ params, optional }: BuildGroupedParamsSchemaOptions): ast.SchemaNode {
|
|
235
|
+
return ast.createSchema({
|
|
237
236
|
type: 'object',
|
|
238
237
|
optional,
|
|
239
238
|
primitive: 'object',
|
|
240
239
|
properties: params.map((param) =>
|
|
241
|
-
createProperty({
|
|
240
|
+
ast.createProperty({
|
|
242
241
|
name: param.name,
|
|
243
242
|
required: param.required,
|
|
244
243
|
schema: param.schema,
|
package/src/presets.ts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { definePresets } from '@kubb/core'
|
|
2
|
-
import { zodGenerator } from './generators/zodGenerator.tsx'
|
|
3
|
-
import { zodGeneratorLegacy } from './generators/zodGeneratorLegacy.tsx'
|
|
4
|
-
import { printerZod } from './printers/printerZod.ts'
|
|
5
|
-
import { resolverZod } from './resolvers/resolverZod.ts'
|
|
6
|
-
import { resolverZodLegacy } from './resolvers/resolverZodLegacy.ts'
|
|
7
|
-
import type { ResolverZod } from './types.ts'
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Built-in preset registry for `@kubb/plugin-zod`.
|
|
11
|
-
*
|
|
12
|
-
* - `default` — uses `resolverZod` and `zodGenerator` (current naming conventions).
|
|
13
|
-
* - `kubbV4` — uses `resolverZodLegacy` and `zodGeneratorLegacy` (Kubb v4 naming conventions).
|
|
14
|
-
*
|
|
15
|
-
* Note: `printerZodMini` is selected at runtime by the generator when `mini: true` is set.
|
|
16
|
-
*/
|
|
17
|
-
export const presets = definePresets<ResolverZod>({
|
|
18
|
-
default: {
|
|
19
|
-
name: 'default',
|
|
20
|
-
resolver: resolverZod,
|
|
21
|
-
generators: [zodGenerator],
|
|
22
|
-
printer: printerZod,
|
|
23
|
-
},
|
|
24
|
-
kubbV4: {
|
|
25
|
-
name: 'kubbV4',
|
|
26
|
-
resolver: resolverZodLegacy,
|
|
27
|
-
generators: [zodGeneratorLegacy],
|
|
28
|
-
printer: printerZod,
|
|
29
|
-
},
|
|
30
|
-
})
|