@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/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 { createProperty, createSchema, extractRefName } from '@kubb/ast'
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
- })