@kubb/plugin-ts 5.0.0-alpha.12 → 5.0.0-alpha.14

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.
Files changed (47) hide show
  1. package/dist/{Type-CX1HRooG.js → Type-C8EHVKjc.js} +6 -84
  2. package/dist/Type-C8EHVKjc.js.map +1 -0
  3. package/dist/{Type-Cat0_htq.cjs → Type-DrOq6-nh.cjs} +11 -139
  4. package/dist/Type-DrOq6-nh.cjs.map +1 -0
  5. package/dist/casing-Cp-jbC_k.js +84 -0
  6. package/dist/casing-Cp-jbC_k.js.map +1 -0
  7. package/dist/casing-D2uQKLWS.cjs +144 -0
  8. package/dist/casing-D2uQKLWS.cjs.map +1 -0
  9. package/dist/components.cjs +1 -1
  10. package/dist/components.d.ts +2 -1
  11. package/dist/components.js +1 -1
  12. package/dist/{generators-DWBU-MuW.cjs → generators-B6JGhHkV.cjs} +54 -33
  13. package/dist/generators-B6JGhHkV.cjs.map +1 -0
  14. package/dist/{generators-CLuCmfUz.js → generators-BTTcjgbY.js} +52 -31
  15. package/dist/generators-BTTcjgbY.js.map +1 -0
  16. package/dist/generators.cjs +1 -1
  17. package/dist/generators.d.ts +1 -1
  18. package/dist/generators.js +1 -1
  19. package/dist/index-B5pSjbZv.d.ts +51 -0
  20. package/dist/index.cjs +15 -191
  21. package/dist/index.cjs.map +1 -1
  22. package/dist/index.d.ts +3 -46
  23. package/dist/index.js +11 -187
  24. package/dist/index.js.map +1 -1
  25. package/dist/resolvers-C_vYX56l.js +183 -0
  26. package/dist/resolvers-C_vYX56l.js.map +1 -0
  27. package/dist/resolvers-DDZC7d43.cjs +193 -0
  28. package/dist/resolvers-DDZC7d43.cjs.map +1 -0
  29. package/dist/resolvers.cjs +4 -0
  30. package/dist/resolvers.d.ts +2 -0
  31. package/dist/resolvers.js +2 -0
  32. package/dist/{types-BA1ZCQ5p.d.ts → types-D9zzvE0V.d.ts} +40 -16
  33. package/package.json +12 -5
  34. package/src/components/Type.tsx +1 -0
  35. package/src/generators/typeGenerator.tsx +33 -14
  36. package/src/generators/utils.ts +18 -9
  37. package/src/index.ts +2 -2
  38. package/src/plugin.ts +55 -69
  39. package/src/printer.ts +5 -2
  40. package/src/resolvers/index.ts +2 -0
  41. package/src/{resolverTs.ts → resolvers/resolverTs.ts} +6 -89
  42. package/src/resolvers/resolverTsLegacy.ts +86 -0
  43. package/src/types.ts +39 -15
  44. package/dist/Type-CX1HRooG.js.map +0 -1
  45. package/dist/Type-Cat0_htq.cjs.map +0 -1
  46. package/dist/generators-CLuCmfUz.js.map +0 -1
  47. package/dist/generators-DWBU-MuW.cjs.map +0 -1
@@ -1,4 +1,5 @@
1
- const require_Type = require("./Type-Cat0_htq.cjs");
1
+ const require_casing = require("./casing-D2uQKLWS.cjs");
2
+ const require_Type = require("./Type-DrOq6-nh.cjs");
2
3
  let _kubb_ast = require("@kubb/ast");
3
4
  let _kubb_core = require("@kubb/core");
4
5
  let _kubb_core_hooks = require("@kubb/core/hooks");
@@ -16,10 +17,10 @@ function buildParamsSchema({ params, node, resolver }) {
16
17
  type: "object",
17
18
  properties: params.map((param) => (0, _kubb_ast.createProperty)({
18
19
  name: param.name,
20
+ required: param.required,
19
21
  schema: (0, _kubb_ast.createSchema)({
20
22
  type: "ref",
21
- name: resolver.resolveParamName(node, param),
22
- optional: !param.required
23
+ name: resolver.resolveParamName(node, param)
23
24
  })
24
25
  }))
25
26
  });
@@ -53,14 +54,12 @@ function buildDataSchemaNode({ node, resolver }) {
53
54
  }),
54
55
  (0, _kubb_ast.createProperty)({
55
56
  name: "pathParams",
57
+ required: pathParams.length > 0,
56
58
  schema: pathParams.length > 0 ? buildParamsSchema({
57
59
  params: pathParams,
58
60
  node,
59
61
  resolver
60
- }) : (0, _kubb_ast.createSchema)({
61
- type: "never",
62
- optional: true
63
- })
62
+ }) : (0, _kubb_ast.createSchema)({ type: "never" })
64
63
  }),
65
64
  (0, _kubb_ast.createProperty)({
66
65
  name: "queryParams",
@@ -92,6 +91,7 @@ function buildDataSchemaNode({ node, resolver }) {
92
91
  }),
93
92
  (0, _kubb_ast.createProperty)({
94
93
  name: "url",
94
+ required: true,
95
95
  schema: (0, _kubb_ast.createSchema)({
96
96
  type: "url",
97
97
  path: node.path
@@ -111,6 +111,7 @@ function buildResponsesSchemaNode({ node, resolver }) {
111
111
  type: "object",
112
112
  properties: node.responses.map((res) => (0, _kubb_ast.createProperty)({
113
113
  name: String(res.statusCode),
114
+ required: true,
114
115
  schema: (0, _kubb_ast.createSchema)({
115
116
  type: "ref",
116
117
  name: resolver.resolveResponseStatusTypedName(node, res.statusCode)
@@ -143,13 +144,10 @@ function buildGroupedParamsSchema({ params, parentName }) {
143
144
  return (0, _kubb_ast.createSchema)({
144
145
  type: "object",
145
146
  properties: params.map((param) => {
146
- let schema = {
147
- ...param.schema,
148
- optional: !param.required
149
- };
147
+ let schema = param.schema;
150
148
  if ((0, _kubb_ast.narrowSchema)(schema, "enum") && !schema.name && parentName) schema = {
151
149
  ...schema,
152
- name: require_Type.pascalCase([
150
+ name: require_casing.pascalCase([
153
151
  parentName,
154
152
  param.name,
155
153
  "enum"
@@ -157,6 +155,7 @@ function buildGroupedParamsSchema({ params, parentName }) {
157
155
  };
158
156
  return (0, _kubb_ast.createProperty)({
159
157
  name: param.name,
158
+ required: param.required,
160
159
  schema
161
160
  });
162
161
  })
@@ -164,7 +163,7 @@ function buildGroupedParamsSchema({ params, parentName }) {
164
163
  }
165
164
  /**
166
165
  * Builds the legacy wrapper `ObjectSchemaNode` for `<OperationId>Mutation` / `<OperationId>Query`.
167
- * Structure: `{ Response, Request (mutation) | QueryParams (query), Errors }`.
166
+ * Structure: `{ Response, Request?, QueryParams?, PathParams?, HeaderParams?, Errors }`.
168
167
  * Mirrors the v4 naming convention where this type acts as a namespace for the operation's shapes.
169
168
  *
170
169
  * @deprecated Legacy only — will be removed in v6.
@@ -198,17 +197,20 @@ function buildLegacyResponsesSchemaNode({ node, resolver }) {
198
197
  }) : (0, _kubb_ast.createSchema)({ type: "any" });
199
198
  const properties = [(0, _kubb_ast.createProperty)({
200
199
  name: "Response",
200
+ required: true,
201
201
  schema: responseSchema
202
202
  })];
203
203
  if (!isGet && node.requestBody?.schema) properties.push((0, _kubb_ast.createProperty)({
204
204
  name: "Request",
205
+ required: true,
205
206
  schema: (0, _kubb_ast.createSchema)({
206
207
  type: "ref",
207
208
  name: resolver.resolveDataTypedName(node)
208
209
  })
209
210
  }));
210
- else if (isGet && node.parameters.some((p) => p.in === "query")) properties.push((0, _kubb_ast.createProperty)({
211
+ if (node.parameters.some((p) => p.in === "query") && resolver.resolveQueryParamsTypedName) properties.push((0, _kubb_ast.createProperty)({
211
212
  name: "QueryParams",
213
+ required: true,
212
214
  schema: (0, _kubb_ast.createSchema)({
213
215
  type: "ref",
214
216
  name: resolver.resolveQueryParamsTypedName(node)
@@ -216,6 +218,7 @@ function buildLegacyResponsesSchemaNode({ node, resolver }) {
216
218
  }));
217
219
  if (node.parameters.some((p) => p.in === "path") && resolver.resolvePathParamsTypedName) properties.push((0, _kubb_ast.createProperty)({
218
220
  name: "PathParams",
221
+ required: true,
219
222
  schema: (0, _kubb_ast.createSchema)({
220
223
  type: "ref",
221
224
  name: resolver.resolvePathParamsTypedName(node)
@@ -223,6 +226,7 @@ function buildLegacyResponsesSchemaNode({ node, resolver }) {
223
226
  }));
224
227
  if (node.parameters.some((p) => p.in === "header") && resolver.resolveHeaderParamsTypedName) properties.push((0, _kubb_ast.createProperty)({
225
228
  name: "HeaderParams",
229
+ required: true,
226
230
  schema: (0, _kubb_ast.createSchema)({
227
231
  type: "ref",
228
232
  name: resolver.resolveHeaderParamsTypedName(node)
@@ -230,6 +234,7 @@ function buildLegacyResponsesSchemaNode({ node, resolver }) {
230
234
  }));
231
235
  properties.push((0, _kubb_ast.createProperty)({
232
236
  name: "Errors",
237
+ required: true,
233
238
  schema: errorsSchema
234
239
  }));
235
240
  return (0, _kubb_ast.createSchema)({
@@ -273,7 +278,7 @@ function nameUnnamedEnums(node, parentName) {
273
278
  schema(n) {
274
279
  if (n.type === "enum" && !n.name) return {
275
280
  ...n,
276
- name: require_Type.pascalCase([parentName, "enum"].join(" "))
281
+ name: require_casing.pascalCase([parentName, "enum"].join(" "))
277
282
  };
278
283
  },
279
284
  property(p) {
@@ -282,7 +287,7 @@ function nameUnnamedEnums(node, parentName) {
282
287
  ...p,
283
288
  schema: {
284
289
  ...enumNode,
285
- name: require_Type.pascalCase([
290
+ name: require_casing.pascalCase([
286
291
  parentName,
287
292
  p.name,
288
293
  "enum"
@@ -298,7 +303,7 @@ const typeGenerator = (0, _kubb_core.defineGenerator)({
298
303
  name: "typescript",
299
304
  type: "react",
300
305
  Operation({ node, adapter, options }) {
301
- const { enumType, enumKeyCasing, optionalType, arrayType, syntaxType, paramsCasing, group, resolver, legacy } = options;
306
+ const { enumType, enumKeyCasing, optionalType, arrayType, syntaxType, paramsCasing, group, resolver, baseResolver, legacy, transformers = [] } = options;
302
307
  const { mode, getFile, resolveBanner, resolveFooter } = (0, _kubb_core_hooks.useKubb)();
303
308
  const file = getFile({
304
309
  name: node.operationId,
@@ -309,7 +314,8 @@ const typeGenerator = (0, _kubb_core.defineGenerator)({
309
314
  const params = (0, _kubb_ast.applyParamsCasing)(node.parameters, paramsCasing);
310
315
  function renderSchemaType({ node: schemaNode, name, typedName, description, keysToOmit }) {
311
316
  if (!schemaNode) return null;
312
- const imports = adapter.getImports(schemaNode, (schemaName) => ({
317
+ const transformedNode = (0, _kubb_ast.transform)(schemaNode, (0, _kubb_ast.composeTransformers)(...transformers));
318
+ const imports = adapter.getImports(transformedNode, (schemaName) => ({
313
319
  name: resolver.default(schemaName, "type"),
314
320
  path: getFile({
315
321
  name: schemaName,
@@ -329,7 +335,7 @@ const typeGenerator = (0, _kubb_core.defineGenerator)({
329
335
  ].join("-"))), /* @__PURE__ */ (0, _kubb_react_fabric_jsx_runtime.jsx)(require_Type.Type, {
330
336
  name,
331
337
  typedName,
332
- node: schemaNode,
338
+ node: transformedNode,
333
339
  description,
334
340
  enumType,
335
341
  enumKeyCasing,
@@ -337,13 +343,15 @@ const typeGenerator = (0, _kubb_core.defineGenerator)({
337
343
  arrayType,
338
344
  syntaxType,
339
345
  resolver,
340
- keysToOmit
346
+ keysToOmit,
347
+ legacy
341
348
  })] });
342
349
  }
343
350
  const responseTypes = legacy ? node.responses.map((res) => {
344
351
  const responseName = resolver.resolveResponseStatusName(node, res.statusCode);
352
+ const baseResponseName = baseResolver.resolveResponseStatusName(node, res.statusCode);
345
353
  return renderSchemaType({
346
- node: res.schema ? nameUnnamedEnums(res.schema, responseName) : res.schema,
354
+ node: res.schema ? nameUnnamedEnums(res.schema, baseResponseName) : res.schema,
347
355
  name: responseName,
348
356
  typedName: resolver.resolveResponseStatusTypedName(node, res.statusCode),
349
357
  description: res.description,
@@ -357,10 +365,10 @@ const typeGenerator = (0, _kubb_core.defineGenerator)({
357
365
  keysToOmit: res.keysToOmit
358
366
  }));
359
367
  const requestType = node.requestBody?.schema ? renderSchemaType({
360
- node: legacy ? nameUnnamedEnums(node.requestBody.schema, resolver.resolveDataName(node)) : node.requestBody.schema,
368
+ node: legacy ? nameUnnamedEnums(node.requestBody.schema, baseResolver.resolveDataName(node)) : node.requestBody.schema,
361
369
  name: resolver.resolveDataName(node),
362
370
  typedName: resolver.resolveDataTypedName(node),
363
- description: node.requestBody.schema.description,
371
+ description: node.requestBody.description ?? node.requestBody.schema.description,
364
372
  keysToOmit: node.requestBody.keysToOmit
365
373
  }) : null;
366
374
  if (legacy) {
@@ -371,7 +379,7 @@ const typeGenerator = (0, _kubb_core.defineGenerator)({
371
379
  pathParams.length > 0 ? renderSchemaType({
372
380
  node: buildGroupedParamsSchema({
373
381
  params: pathParams,
374
- parentName: resolver.resolvePathParamsName(node)
382
+ parentName: baseResolver.resolvePathParamsName(node)
375
383
  }),
376
384
  name: resolver.resolvePathParamsName(node),
377
385
  typedName: resolver.resolvePathParamsTypedName(node)
@@ -379,7 +387,7 @@ const typeGenerator = (0, _kubb_core.defineGenerator)({
379
387
  queryParams.length > 0 ? renderSchemaType({
380
388
  node: buildGroupedParamsSchema({
381
389
  params: queryParams,
382
- parentName: resolver.resolveQueryParamsName(node)
390
+ parentName: baseResolver.resolveQueryParamsName(node)
383
391
  }),
384
392
  name: resolver.resolveQueryParamsName(node),
385
393
  typedName: resolver.resolveQueryParamsTypedName(node)
@@ -387,7 +395,7 @@ const typeGenerator = (0, _kubb_core.defineGenerator)({
387
395
  headerParams.length > 0 ? renderSchemaType({
388
396
  node: buildGroupedParamsSchema({
389
397
  params: headerParams,
390
- parentName: resolver.resolveHeaderParamsName(node)
398
+ parentName: baseResolver.resolveHeaderParamsName(node)
391
399
  }),
392
400
  name: resolver.resolveHeaderParamsName(node),
393
401
  typedName: resolver.resolveHeaderParamsTypedName(node)
@@ -419,8 +427,8 @@ const typeGenerator = (0, _kubb_core.defineGenerator)({
419
427
  legacyParamTypes,
420
428
  responseTypes,
421
429
  requestType,
422
- legacyResponsesType,
423
- legacyResponseType
430
+ legacyResponseType,
431
+ legacyResponsesType
424
432
  ]
425
433
  });
426
434
  }
@@ -429,6 +437,16 @@ const typeGenerator = (0, _kubb_core.defineGenerator)({
429
437
  name: resolver.resolveParamName(node, param),
430
438
  typedName: resolver.resolveParamTypedName(node, param)
431
439
  }));
440
+ const queryParamsList = params.filter((p) => p.in === "query");
441
+ const queryParamsType = queryParamsList.length > 0 ? renderSchemaType({
442
+ node: buildParamsSchema({
443
+ params: queryParamsList,
444
+ node,
445
+ resolver
446
+ }),
447
+ name: resolver.resolveQueryParamsName(node),
448
+ typedName: resolver.resolveQueryParamsTypedName(node)
449
+ }) : null;
432
450
  const dataType = renderSchemaType({
433
451
  node: buildDataSchemaNode({
434
452
  node: {
@@ -465,6 +483,7 @@ const typeGenerator = (0, _kubb_core.defineGenerator)({
465
483
  footer: resolveFooter(),
466
484
  children: [
467
485
  paramTypes,
486
+ queryParamsType,
468
487
  responseTypes,
469
488
  requestType,
470
489
  dataType,
@@ -474,10 +493,11 @@ const typeGenerator = (0, _kubb_core.defineGenerator)({
474
493
  });
475
494
  },
476
495
  Schema({ node, adapter, options }) {
477
- const { enumType, enumKeyCasing, syntaxType, optionalType, arrayType, resolver } = options;
496
+ const { enumType, enumKeyCasing, syntaxType, optionalType, arrayType, resolver, legacy, transformers = [] } = options;
478
497
  const { mode, getFile, resolveBanner, resolveFooter } = (0, _kubb_core_hooks.useKubb)();
479
498
  if (!node.name) return;
480
- const imports = adapter.getImports(node, (schemaName) => ({
499
+ const transformedNode = (0, _kubb_ast.transform)(node, (0, _kubb_ast.composeTransformers)(...transformers));
500
+ const imports = adapter.getImports(transformedNode, (schemaName) => ({
481
501
  name: resolver.default(schemaName, "type"),
482
502
  path: getFile({
483
503
  name: schemaName,
@@ -514,13 +534,14 @@ const typeGenerator = (0, _kubb_core.defineGenerator)({
514
534
  ].join("-"))), /* @__PURE__ */ (0, _kubb_react_fabric_jsx_runtime.jsx)(require_Type.Type, {
515
535
  name: type.name,
516
536
  typedName: type.typedName,
517
- node,
537
+ node: transformedNode,
518
538
  enumType,
519
539
  enumKeyCasing,
520
540
  optionalType,
521
541
  arrayType,
522
542
  syntaxType,
523
- resolver
543
+ resolver,
544
+ legacy
524
545
  })]
525
546
  });
526
547
  }
@@ -533,4 +554,4 @@ Object.defineProperty(exports, "typeGenerator", {
533
554
  }
534
555
  });
535
556
 
536
- //# sourceMappingURL=generators-DWBU-MuW.cjs.map
557
+ //# sourceMappingURL=generators-B6JGhHkV.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generators-B6JGhHkV.cjs","names":["pascalCase","File","Type","ENUM_TYPES_WITH_KEY_SUFFIX"],"sources":["../src/generators/utils.ts","../src/generators/typeGenerator.tsx"],"sourcesContent":["import { pascalCase } from '@internals/utils'\nimport { createProperty, createSchema, narrowSchema, transform } from '@kubb/ast'\nimport type { OperationNode, ParameterNode, SchemaNode } from '@kubb/ast/types'\nimport type { ResolverTs } from '../types.ts'\n\ntype BuildParamsSchemaOptions = {\n params: Array<ParameterNode>\n node: OperationNode\n resolver: ResolverTs\n}\n\n/**\n * Builds an `ObjectSchemaNode` for a group of parameters (path/query/header).\n * Each property is a `ref` schema pointing to the individually-resolved parameter type.\n * The ref name includes the parameter location so generated type names follow\n * the `<OperationId><Location><ParamName>` convention.\n */\nexport function buildParamsSchema({ params, node, resolver }: BuildParamsSchemaOptions): SchemaNode {\n return createSchema({\n type: 'object',\n properties: params.map((param) =>\n createProperty({\n name: param.name,\n required: param.required,\n schema: createSchema({\n type: 'ref',\n name: resolver.resolveParamName(node, param),\n }),\n }),\n ),\n })\n}\n\ntype BuildOperationSchemaOptions = {\n node: OperationNode\n resolver: ResolverTs\n}\n\n/**\n * Builds an `ObjectSchemaNode` representing the `<OperationId>RequestConfig` type:\n * - `data` → request body ref (optional) or `never`\n * - `pathParams` → inline object of path param refs, or `never`\n * - `queryParams` → inline object of query param refs (optional), or `never`\n * - `headerParams` → inline object of header param refs (optional), or `never`\n * - `url` → Express-style template literal (plugin-ts extension, handled by printer)\n */\nexport function buildDataSchemaNode({ node, resolver }: BuildOperationSchemaOptions): SchemaNode {\n const pathParams = node.parameters.filter((p) => p.in === 'path')\n const queryParams = node.parameters.filter((p) => p.in === 'query')\n const headerParams = node.parameters.filter((p) => p.in === 'header')\n\n return createSchema({\n type: 'object',\n deprecated: node.deprecated,\n properties: [\n createProperty({\n name: 'data',\n schema: node.requestBody?.schema\n ? createSchema({\n type: 'ref',\n name: resolver.resolveDataTypedName(node),\n optional: true,\n })\n : createSchema({ type: 'never', optional: true }),\n }),\n createProperty({\n name: 'pathParams',\n required: pathParams.length > 0,\n schema: pathParams.length > 0 ? buildParamsSchema({ params: pathParams, node, resolver }) : createSchema({ type: 'never' }),\n }),\n createProperty({\n name: 'queryParams',\n schema:\n queryParams.length > 0\n ? createSchema({ ...buildParamsSchema({ params: queryParams, node, resolver }), optional: true })\n : createSchema({ type: 'never', optional: true }),\n }),\n createProperty({\n name: 'headerParams',\n schema:\n headerParams.length > 0\n ? createSchema({ ...buildParamsSchema({ params: headerParams, node, resolver }), optional: true })\n : createSchema({ type: 'never', optional: true }),\n }),\n createProperty({\n name: 'url',\n required: true,\n schema: createSchema({ type: 'url', path: node.path }),\n }),\n ],\n })\n}\n\n/**\n * Builds an `ObjectSchemaNode` representing `<OperationId>Responses` — keyed by HTTP status code.\n * Numeric status codes produce unquoted numeric keys (e.g. `200:`).\n * All responses are included; those without a schema are represented as a ref to a `never` type.\n */\nexport function buildResponsesSchemaNode({ node, resolver }: BuildOperationSchemaOptions): SchemaNode | null {\n if (node.responses.length === 0) {\n return null\n }\n\n return createSchema({\n type: 'object',\n properties: node.responses.map((res) =>\n createProperty({\n name: String(res.statusCode),\n required: true,\n schema: createSchema({\n type: 'ref',\n name: resolver.resolveResponseStatusTypedName(node, res.statusCode),\n }),\n }),\n ),\n })\n}\n\n/**\n * Builds a `UnionSchemaNode` representing `<OperationId>Response` — all response types in union format.\n * Returns `null` when the operation has no responses with schemas.\n */\nexport function buildResponseUnionSchemaNode({ node, resolver }: BuildOperationSchemaOptions): SchemaNode | null {\n const responsesWithSchema = node.responses.filter((res) => res.schema)\n\n if (responsesWithSchema.length === 0) {\n return null\n }\n\n return createSchema({\n type: 'union',\n members: responsesWithSchema.map((res) =>\n createSchema({\n type: 'ref',\n name: resolver.resolveResponseStatusTypedName(node, res.statusCode),\n }),\n ),\n })\n}\n\ntype BuildGroupedParamsSchemaOptions = {\n params: Array<ParameterNode>\n /**\n * Parent type name (e.g. `FindPetsByStatusQueryParams`) used to derive enum names\n * for inline enum properties (e.g. `FindPetsByStatusQueryParamsStatusEnum`).\n */\n parentName?: string\n}\n\n/**\n * Builds an `ObjectSchemaNode` for a grouped parameters type (path/query/header) in legacy mode.\n * Each property directly embeds the parameter's schema inline (not a ref).\n * Used to generate `<OperationId>PathParams`, `<OperationId>QueryParams`, `<OperationId>HeaderParams`.\n * @deprecated Legacy only — will be removed in v6.\n */\nexport function buildGroupedParamsSchema({ params, parentName }: BuildGroupedParamsSchemaOptions): SchemaNode {\n return createSchema({\n type: 'object',\n properties: params.map((param) => {\n let schema = param.schema\n if (narrowSchema(schema, 'enum') && !schema.name && parentName) {\n schema = { ...schema, name: pascalCase([parentName, param.name, 'enum'].join(' ')) }\n }\n return createProperty({\n name: param.name,\n required: param.required,\n schema,\n })\n }),\n })\n}\n\n/**\n * Builds the legacy wrapper `ObjectSchemaNode` for `<OperationId>Mutation` / `<OperationId>Query`.\n * Structure: `{ Response, Request?, QueryParams?, PathParams?, HeaderParams?, Errors }`.\n * Mirrors the v4 naming convention where this type acts as a namespace for the operation's shapes.\n *\n * @deprecated Legacy only — will be removed in v6.\n */\nexport function buildLegacyResponsesSchemaNode({ node, resolver }: BuildOperationSchemaOptions): SchemaNode | null {\n const isGet = node.method.toLowerCase() === 'get'\n const successResponses = node.responses.filter((res) => {\n const code = Number(res.statusCode)\n return !Number.isNaN(code) && code >= 200 && code < 300\n })\n const errorResponses = node.responses.filter((res) => res.statusCode === 'default' || Number(res.statusCode) >= 400)\n\n const responseSchema =\n successResponses.length > 0\n ? successResponses.length === 1\n ? createSchema({ type: 'ref', name: resolver.resolveResponseStatusTypedName(node, successResponses[0]!.statusCode) })\n : createSchema({\n type: 'union',\n members: successResponses.map((res) => createSchema({ type: 'ref', name: resolver.resolveResponseStatusTypedName(node, res.statusCode) })),\n })\n : createSchema({ type: 'any' })\n\n const errorsSchema =\n errorResponses.length > 0\n ? errorResponses.length === 1\n ? createSchema({ type: 'ref', name: resolver.resolveResponseStatusTypedName(node, errorResponses[0]!.statusCode) })\n : createSchema({\n type: 'union',\n members: errorResponses.map((res) => createSchema({ type: 'ref', name: resolver.resolveResponseStatusTypedName(node, res.statusCode) })),\n })\n : createSchema({ type: 'any' })\n\n const properties = [createProperty({ name: 'Response', required: true, schema: responseSchema })]\n\n if (!isGet && node.requestBody?.schema) {\n properties.push(\n createProperty({\n name: 'Request',\n required: true,\n schema: createSchema({ type: 'ref', name: resolver.resolveDataTypedName(node) }),\n }),\n )\n }\n\n if (node.parameters.some((p) => p.in === 'query') && resolver.resolveQueryParamsTypedName) {\n properties.push(\n createProperty({\n name: 'QueryParams',\n required: true,\n schema: createSchema({ type: 'ref', name: resolver.resolveQueryParamsTypedName(node) }),\n }),\n )\n }\n\n if (node.parameters.some((p) => p.in === 'path') && resolver.resolvePathParamsTypedName) {\n properties.push(\n createProperty({\n name: 'PathParams',\n required: true,\n schema: createSchema({ type: 'ref', name: resolver.resolvePathParamsTypedName(node) }),\n }),\n )\n }\n\n if (node.parameters.some((p) => p.in === 'header') && resolver.resolveHeaderParamsTypedName) {\n properties.push(\n createProperty({\n name: 'HeaderParams',\n required: true,\n schema: createSchema({ type: 'ref', name: resolver.resolveHeaderParamsTypedName(node) }),\n }),\n )\n }\n\n properties.push(createProperty({ name: 'Errors', required: true, schema: errorsSchema }))\n\n return createSchema({ type: 'object', properties })\n}\n\n/**\n * Builds the legacy response union for `<OperationId>MutationResponse` / `<OperationId>QueryResponse`.\n * In legacy mode this is the **success** response only (not the full union including errors).\n * Returns an `any` schema when there is no success response, matching v4 behavior.\n * @deprecated Legacy only — will be removed in v6.\n */\nexport function buildLegacyResponseUnionSchemaNode({ node, resolver }: BuildOperationSchemaOptions): SchemaNode {\n const successResponses = node.responses.filter((res) => {\n const code = Number(res.statusCode)\n return !Number.isNaN(code) && code >= 200 && code < 300\n })\n\n if (successResponses.length === 0) {\n return createSchema({ type: 'any' })\n }\n\n if (successResponses.length === 1) {\n return createSchema({ type: 'ref', name: resolver.resolveResponseStatusTypedName(node, successResponses[0]!.statusCode) })\n }\n\n return createSchema({\n type: 'union',\n members: successResponses.map((res) => createSchema({ type: 'ref', name: resolver.resolveResponseStatusTypedName(node, res.statusCode) })),\n })\n}\n\n/**\n * Names unnamed enum nodes within a schema tree based on the parent type name.\n * Used in legacy mode to ensure inline enums in response/request schemas get\n * extracted as named enum declarations (e.g. `DeletePet200Enum`).\n *\n * @deprecated Legacy only — will be removed in v6.\n */\nexport function nameUnnamedEnums(node: SchemaNode, parentName: string): SchemaNode {\n return transform(node, {\n schema(n) {\n if (n.type === 'enum' && !n.name) {\n return { ...n, name: pascalCase([parentName, 'enum'].join(' ')) }\n }\n return undefined\n },\n property(p) {\n const enumNode = narrowSchema(p.schema, 'enum')\n if (enumNode && !enumNode.name) {\n return {\n ...p,\n schema: { ...enumNode, name: pascalCase([parentName, p.name, 'enum'].join(' ')) },\n }\n }\n return undefined\n },\n })\n}\n","import { applyParamsCasing, composeTransformers, transform } from '@kubb/ast'\nimport type { SchemaNode } from '@kubb/ast/types'\nimport { defineGenerator } from '@kubb/core'\nimport { useKubb } from '@kubb/core/hooks'\nimport { File } from '@kubb/react-fabric'\nimport { Type } from '../components/Type.tsx'\nimport { ENUM_TYPES_WITH_KEY_SUFFIX } from '../constants.ts'\nimport type { PluginTs } from '../types'\nimport {\n buildDataSchemaNode,\n buildGroupedParamsSchema,\n buildLegacyResponsesSchemaNode,\n buildLegacyResponseUnionSchemaNode,\n buildParamsSchema,\n buildResponsesSchemaNode,\n buildResponseUnionSchemaNode,\n nameUnnamedEnums,\n} from './utils.ts'\n\nexport const typeGenerator = defineGenerator<PluginTs>({\n name: 'typescript',\n type: 'react',\n Operation({ node, adapter, options }) {\n const { enumType, enumKeyCasing, optionalType, arrayType, syntaxType, paramsCasing, group, resolver, baseResolver, legacy, transformers = [] } = options\n const { mode, getFile, resolveBanner, resolveFooter } = useKubb<PluginTs>()\n\n const file = getFile({\n name: node.operationId,\n extname: '.ts',\n mode,\n options: {\n group: group ? (group.type === 'tag' ? { tag: node.tags[0] ?? 'default' } : { path: node.path }) : undefined,\n },\n })\n const params = applyParamsCasing(node.parameters, paramsCasing)\n\n function renderSchemaType({\n node: schemaNode,\n name,\n typedName,\n description,\n keysToOmit,\n }: {\n node: SchemaNode | null\n name: string\n typedName: string\n description?: string\n keysToOmit?: Array<string>\n }) {\n if (!schemaNode) {\n return null\n }\n\n const transformedNode = transform(schemaNode, composeTransformers(...transformers))\n\n const imports = adapter.getImports(transformedNode, (schemaName) => ({\n name: resolver.default(schemaName, 'type'),\n path: getFile({ name: schemaName, extname: '.ts', mode }).path,\n }))\n\n return (\n <>\n {mode === 'split' &&\n imports.map((imp) => <File.Import key={[name, imp.path, imp.isTypeOnly].join('-')} root={file.path} path={imp.path} name={imp.name} isTypeOnly />)}\n <Type\n name={name}\n typedName={typedName}\n node={transformedNode}\n description={description}\n enumType={enumType}\n enumKeyCasing={enumKeyCasing}\n optionalType={optionalType}\n arrayType={arrayType}\n syntaxType={syntaxType}\n resolver={resolver}\n keysToOmit={keysToOmit}\n legacy={legacy}\n />\n </>\n )\n }\n\n const responseTypes = legacy\n ? node.responses.map((res) => {\n const responseName = resolver.resolveResponseStatusName(node, res.statusCode)\n const baseResponseName = baseResolver.resolveResponseStatusName(node, res.statusCode)\n\n return renderSchemaType({\n node: res.schema ? nameUnnamedEnums(res.schema, baseResponseName) : res.schema,\n name: responseName,\n typedName: resolver.resolveResponseStatusTypedName(node, res.statusCode),\n description: res.description,\n keysToOmit: res.keysToOmit,\n })\n })\n : node.responses.map((res) =>\n renderSchemaType({\n node: res.schema,\n name: resolver.resolveResponseStatusName(node, res.statusCode),\n typedName: resolver.resolveResponseStatusTypedName(node, res.statusCode),\n description: res.description,\n keysToOmit: res.keysToOmit,\n }),\n )\n\n const requestType = node.requestBody?.schema\n ? renderSchemaType({\n node: legacy ? nameUnnamedEnums(node.requestBody.schema, baseResolver.resolveDataName(node)) : node.requestBody.schema,\n name: resolver.resolveDataName(node),\n typedName: resolver.resolveDataTypedName(node),\n description: node.requestBody.description ?? node.requestBody.schema.description,\n keysToOmit: node.requestBody.keysToOmit,\n })\n : null\n\n if (legacy) {\n const pathParams = params.filter((p) => p.in === 'path')\n const queryParams = params.filter((p) => p.in === 'query')\n const headerParams = params.filter((p) => p.in === 'header')\n\n const legacyParamTypes = [\n pathParams.length > 0\n ? renderSchemaType({\n node: buildGroupedParamsSchema({ params: pathParams, parentName: baseResolver.resolvePathParamsName!(node) }),\n name: resolver.resolvePathParamsName!(node),\n typedName: resolver.resolvePathParamsTypedName!(node),\n })\n : null,\n queryParams.length > 0\n ? renderSchemaType({\n node: buildGroupedParamsSchema({ params: queryParams, parentName: baseResolver.resolveQueryParamsName!(node) }),\n name: resolver.resolveQueryParamsName!(node),\n typedName: resolver.resolveQueryParamsTypedName!(node),\n })\n : null,\n headerParams.length > 0\n ? renderSchemaType({\n node: buildGroupedParamsSchema({ params: headerParams, parentName: baseResolver.resolveHeaderParamsName!(node) }),\n name: resolver.resolveHeaderParamsName!(node),\n typedName: resolver.resolveHeaderParamsTypedName!(node),\n })\n : null,\n ]\n\n const legacyResponsesType = renderSchemaType({\n node: buildLegacyResponsesSchemaNode({ node, resolver }),\n name: resolver.resolveResponsesName(node),\n typedName: resolver.resolveResponsesTypedName(node),\n })\n\n const legacyResponseType = renderSchemaType({\n node: buildLegacyResponseUnionSchemaNode({ node, resolver }),\n name: resolver.resolveResponseName(node),\n typedName: resolver.resolveResponseTypedName(node),\n })\n\n return (\n <File baseName={file.baseName} path={file.path} meta={file.meta} banner={resolveBanner()} footer={resolveFooter()}>\n {legacyParamTypes}\n {responseTypes}\n {requestType}\n {legacyResponseType}\n {legacyResponsesType}\n </File>\n )\n }\n\n const paramTypes = params.map((param) =>\n renderSchemaType({\n node: param.schema,\n name: resolver.resolveParamName(node, param),\n typedName: resolver.resolveParamTypedName(node, param),\n }),\n )\n\n const queryParamsList = params.filter((p) => p.in === 'query')\n const queryParamsType =\n queryParamsList.length > 0\n ? renderSchemaType({\n node: buildParamsSchema({ params: queryParamsList, node, resolver }),\n name: resolver.resolveQueryParamsName!(node),\n typedName: resolver.resolveQueryParamsTypedName!(node),\n })\n : null\n\n const dataType = renderSchemaType({\n node: buildDataSchemaNode({ node: { ...node, parameters: params }, resolver }),\n name: resolver.resolveRequestConfigName(node),\n typedName: resolver.resolveRequestConfigTypedName(node),\n })\n\n const responsesType = renderSchemaType({\n node: buildResponsesSchemaNode({ node, resolver }),\n name: resolver.resolveResponsesName(node),\n typedName: resolver.resolveResponsesTypedName(node),\n })\n\n const responseType = renderSchemaType({\n node: buildResponseUnionSchemaNode({ node, resolver }),\n name: resolver.resolveResponseName(node),\n typedName: resolver.resolveResponseTypedName(node),\n description: 'Union of all possible responses',\n })\n\n return (\n <File baseName={file.baseName} path={file.path} meta={file.meta} banner={resolveBanner()} footer={resolveFooter()}>\n {paramTypes}\n {queryParamsType}\n {responseTypes}\n {requestType}\n {dataType}\n {responsesType}\n {responseType}\n </File>\n )\n },\n Schema({ node, adapter, options }) {\n const { enumType, enumKeyCasing, syntaxType, optionalType, arrayType, resolver, legacy, transformers = [] } = options\n const { mode, getFile, resolveBanner, resolveFooter } = useKubb<PluginTs>()\n\n if (!node.name) {\n return\n }\n\n const transformedNode = transform(node, composeTransformers(...transformers))\n\n const imports = adapter.getImports(transformedNode, (schemaName) => ({\n name: resolver.default(schemaName, 'type'),\n path: getFile({ name: schemaName, extname: '.ts', mode }).path,\n }))\n\n const isEnumSchema = node.type === 'enum'\n\n const typedName = ENUM_TYPES_WITH_KEY_SUFFIX.has(enumType) && isEnumSchema ? resolver.resolveEnumKeyTypedName(node) : resolver.resolveTypedName(node.name)\n\n const type = {\n name: resolver.resolveName(node.name),\n typedName,\n file: getFile({ name: node.name, extname: '.ts', mode }),\n } as const\n\n return (\n <File baseName={type.file.baseName} path={type.file.path} meta={type.file.meta} banner={resolveBanner()} footer={resolveFooter()}>\n {mode === 'split' &&\n imports.map((imp) => (\n <File.Import key={[node.name, imp.path, imp.isTypeOnly].join('-')} root={type.file.path} path={imp.path} name={imp.name} isTypeOnly />\n ))}\n <Type\n name={type.name}\n typedName={type.typedName}\n node={transformedNode}\n enumType={enumType}\n enumKeyCasing={enumKeyCasing}\n optionalType={optionalType}\n arrayType={arrayType}\n syntaxType={syntaxType}\n resolver={resolver}\n legacy={legacy}\n />\n </File>\n )\n },\n})\n"],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import "./chunk--u3MIqq1.js";
2
- import { a as pascalCase, r as ENUM_TYPES_WITH_KEY_SUFFIX, t as Type } from "./Type-CX1HRooG.js";
3
- import { applyParamsCasing, createProperty, createSchema, narrowSchema, transform } from "@kubb/ast";
2
+ import { n as pascalCase } from "./casing-Cp-jbC_k.js";
3
+ import { r as ENUM_TYPES_WITH_KEY_SUFFIX, t as Type } from "./Type-C8EHVKjc.js";
4
+ import { applyParamsCasing, composeTransformers, createProperty, createSchema, narrowSchema, transform } from "@kubb/ast";
4
5
  import { defineGenerator } from "@kubb/core";
5
6
  import { useKubb } from "@kubb/core/hooks";
6
7
  import { File } from "@kubb/react-fabric";
@@ -17,10 +18,10 @@ function buildParamsSchema({ params, node, resolver }) {
17
18
  type: "object",
18
19
  properties: params.map((param) => createProperty({
19
20
  name: param.name,
21
+ required: param.required,
20
22
  schema: createSchema({
21
23
  type: "ref",
22
- name: resolver.resolveParamName(node, param),
23
- optional: !param.required
24
+ name: resolver.resolveParamName(node, param)
24
25
  })
25
26
  }))
26
27
  });
@@ -54,14 +55,12 @@ function buildDataSchemaNode({ node, resolver }) {
54
55
  }),
55
56
  createProperty({
56
57
  name: "pathParams",
58
+ required: pathParams.length > 0,
57
59
  schema: pathParams.length > 0 ? buildParamsSchema({
58
60
  params: pathParams,
59
61
  node,
60
62
  resolver
61
- }) : createSchema({
62
- type: "never",
63
- optional: true
64
- })
63
+ }) : createSchema({ type: "never" })
65
64
  }),
66
65
  createProperty({
67
66
  name: "queryParams",
@@ -93,6 +92,7 @@ function buildDataSchemaNode({ node, resolver }) {
93
92
  }),
94
93
  createProperty({
95
94
  name: "url",
95
+ required: true,
96
96
  schema: createSchema({
97
97
  type: "url",
98
98
  path: node.path
@@ -112,6 +112,7 @@ function buildResponsesSchemaNode({ node, resolver }) {
112
112
  type: "object",
113
113
  properties: node.responses.map((res) => createProperty({
114
114
  name: String(res.statusCode),
115
+ required: true,
115
116
  schema: createSchema({
116
117
  type: "ref",
117
118
  name: resolver.resolveResponseStatusTypedName(node, res.statusCode)
@@ -144,10 +145,7 @@ function buildGroupedParamsSchema({ params, parentName }) {
144
145
  return createSchema({
145
146
  type: "object",
146
147
  properties: params.map((param) => {
147
- let schema = {
148
- ...param.schema,
149
- optional: !param.required
150
- };
148
+ let schema = param.schema;
151
149
  if (narrowSchema(schema, "enum") && !schema.name && parentName) schema = {
152
150
  ...schema,
153
151
  name: pascalCase([
@@ -158,6 +156,7 @@ function buildGroupedParamsSchema({ params, parentName }) {
158
156
  };
159
157
  return createProperty({
160
158
  name: param.name,
159
+ required: param.required,
161
160
  schema
162
161
  });
163
162
  })
@@ -165,7 +164,7 @@ function buildGroupedParamsSchema({ params, parentName }) {
165
164
  }
166
165
  /**
167
166
  * Builds the legacy wrapper `ObjectSchemaNode` for `<OperationId>Mutation` / `<OperationId>Query`.
168
- * Structure: `{ Response, Request (mutation) | QueryParams (query), Errors }`.
167
+ * Structure: `{ Response, Request?, QueryParams?, PathParams?, HeaderParams?, Errors }`.
169
168
  * Mirrors the v4 naming convention where this type acts as a namespace for the operation's shapes.
170
169
  *
171
170
  * @deprecated Legacy only — will be removed in v6.
@@ -199,17 +198,20 @@ function buildLegacyResponsesSchemaNode({ node, resolver }) {
199
198
  }) : createSchema({ type: "any" });
200
199
  const properties = [createProperty({
201
200
  name: "Response",
201
+ required: true,
202
202
  schema: responseSchema
203
203
  })];
204
204
  if (!isGet && node.requestBody?.schema) properties.push(createProperty({
205
205
  name: "Request",
206
+ required: true,
206
207
  schema: createSchema({
207
208
  type: "ref",
208
209
  name: resolver.resolveDataTypedName(node)
209
210
  })
210
211
  }));
211
- else if (isGet && node.parameters.some((p) => p.in === "query")) properties.push(createProperty({
212
+ if (node.parameters.some((p) => p.in === "query") && resolver.resolveQueryParamsTypedName) properties.push(createProperty({
212
213
  name: "QueryParams",
214
+ required: true,
213
215
  schema: createSchema({
214
216
  type: "ref",
215
217
  name: resolver.resolveQueryParamsTypedName(node)
@@ -217,6 +219,7 @@ function buildLegacyResponsesSchemaNode({ node, resolver }) {
217
219
  }));
218
220
  if (node.parameters.some((p) => p.in === "path") && resolver.resolvePathParamsTypedName) properties.push(createProperty({
219
221
  name: "PathParams",
222
+ required: true,
220
223
  schema: createSchema({
221
224
  type: "ref",
222
225
  name: resolver.resolvePathParamsTypedName(node)
@@ -224,6 +227,7 @@ function buildLegacyResponsesSchemaNode({ node, resolver }) {
224
227
  }));
225
228
  if (node.parameters.some((p) => p.in === "header") && resolver.resolveHeaderParamsTypedName) properties.push(createProperty({
226
229
  name: "HeaderParams",
230
+ required: true,
227
231
  schema: createSchema({
228
232
  type: "ref",
229
233
  name: resolver.resolveHeaderParamsTypedName(node)
@@ -231,6 +235,7 @@ function buildLegacyResponsesSchemaNode({ node, resolver }) {
231
235
  }));
232
236
  properties.push(createProperty({
233
237
  name: "Errors",
238
+ required: true,
234
239
  schema: errorsSchema
235
240
  }));
236
241
  return createSchema({
@@ -299,7 +304,7 @@ const typeGenerator = defineGenerator({
299
304
  name: "typescript",
300
305
  type: "react",
301
306
  Operation({ node, adapter, options }) {
302
- const { enumType, enumKeyCasing, optionalType, arrayType, syntaxType, paramsCasing, group, resolver, legacy } = options;
307
+ const { enumType, enumKeyCasing, optionalType, arrayType, syntaxType, paramsCasing, group, resolver, baseResolver, legacy, transformers = [] } = options;
303
308
  const { mode, getFile, resolveBanner, resolveFooter } = useKubb();
304
309
  const file = getFile({
305
310
  name: node.operationId,
@@ -310,7 +315,8 @@ const typeGenerator = defineGenerator({
310
315
  const params = applyParamsCasing(node.parameters, paramsCasing);
311
316
  function renderSchemaType({ node: schemaNode, name, typedName, description, keysToOmit }) {
312
317
  if (!schemaNode) return null;
313
- const imports = adapter.getImports(schemaNode, (schemaName) => ({
318
+ const transformedNode = transform(schemaNode, composeTransformers(...transformers));
319
+ const imports = adapter.getImports(transformedNode, (schemaName) => ({
314
320
  name: resolver.default(schemaName, "type"),
315
321
  path: getFile({
316
322
  name: schemaName,
@@ -330,7 +336,7 @@ const typeGenerator = defineGenerator({
330
336
  ].join("-"))), /* @__PURE__ */ jsx(Type, {
331
337
  name,
332
338
  typedName,
333
- node: schemaNode,
339
+ node: transformedNode,
334
340
  description,
335
341
  enumType,
336
342
  enumKeyCasing,
@@ -338,13 +344,15 @@ const typeGenerator = defineGenerator({
338
344
  arrayType,
339
345
  syntaxType,
340
346
  resolver,
341
- keysToOmit
347
+ keysToOmit,
348
+ legacy
342
349
  })] });
343
350
  }
344
351
  const responseTypes = legacy ? node.responses.map((res) => {
345
352
  const responseName = resolver.resolveResponseStatusName(node, res.statusCode);
353
+ const baseResponseName = baseResolver.resolveResponseStatusName(node, res.statusCode);
346
354
  return renderSchemaType({
347
- node: res.schema ? nameUnnamedEnums(res.schema, responseName) : res.schema,
355
+ node: res.schema ? nameUnnamedEnums(res.schema, baseResponseName) : res.schema,
348
356
  name: responseName,
349
357
  typedName: resolver.resolveResponseStatusTypedName(node, res.statusCode),
350
358
  description: res.description,
@@ -358,10 +366,10 @@ const typeGenerator = defineGenerator({
358
366
  keysToOmit: res.keysToOmit
359
367
  }));
360
368
  const requestType = node.requestBody?.schema ? renderSchemaType({
361
- node: legacy ? nameUnnamedEnums(node.requestBody.schema, resolver.resolveDataName(node)) : node.requestBody.schema,
369
+ node: legacy ? nameUnnamedEnums(node.requestBody.schema, baseResolver.resolveDataName(node)) : node.requestBody.schema,
362
370
  name: resolver.resolveDataName(node),
363
371
  typedName: resolver.resolveDataTypedName(node),
364
- description: node.requestBody.schema.description,
372
+ description: node.requestBody.description ?? node.requestBody.schema.description,
365
373
  keysToOmit: node.requestBody.keysToOmit
366
374
  }) : null;
367
375
  if (legacy) {
@@ -372,7 +380,7 @@ const typeGenerator = defineGenerator({
372
380
  pathParams.length > 0 ? renderSchemaType({
373
381
  node: buildGroupedParamsSchema({
374
382
  params: pathParams,
375
- parentName: resolver.resolvePathParamsName(node)
383
+ parentName: baseResolver.resolvePathParamsName(node)
376
384
  }),
377
385
  name: resolver.resolvePathParamsName(node),
378
386
  typedName: resolver.resolvePathParamsTypedName(node)
@@ -380,7 +388,7 @@ const typeGenerator = defineGenerator({
380
388
  queryParams.length > 0 ? renderSchemaType({
381
389
  node: buildGroupedParamsSchema({
382
390
  params: queryParams,
383
- parentName: resolver.resolveQueryParamsName(node)
391
+ parentName: baseResolver.resolveQueryParamsName(node)
384
392
  }),
385
393
  name: resolver.resolveQueryParamsName(node),
386
394
  typedName: resolver.resolveQueryParamsTypedName(node)
@@ -388,7 +396,7 @@ const typeGenerator = defineGenerator({
388
396
  headerParams.length > 0 ? renderSchemaType({
389
397
  node: buildGroupedParamsSchema({
390
398
  params: headerParams,
391
- parentName: resolver.resolveHeaderParamsName(node)
399
+ parentName: baseResolver.resolveHeaderParamsName(node)
392
400
  }),
393
401
  name: resolver.resolveHeaderParamsName(node),
394
402
  typedName: resolver.resolveHeaderParamsTypedName(node)
@@ -420,8 +428,8 @@ const typeGenerator = defineGenerator({
420
428
  legacyParamTypes,
421
429
  responseTypes,
422
430
  requestType,
423
- legacyResponsesType,
424
- legacyResponseType
431
+ legacyResponseType,
432
+ legacyResponsesType
425
433
  ]
426
434
  });
427
435
  }
@@ -430,6 +438,16 @@ const typeGenerator = defineGenerator({
430
438
  name: resolver.resolveParamName(node, param),
431
439
  typedName: resolver.resolveParamTypedName(node, param)
432
440
  }));
441
+ const queryParamsList = params.filter((p) => p.in === "query");
442
+ const queryParamsType = queryParamsList.length > 0 ? renderSchemaType({
443
+ node: buildParamsSchema({
444
+ params: queryParamsList,
445
+ node,
446
+ resolver
447
+ }),
448
+ name: resolver.resolveQueryParamsName(node),
449
+ typedName: resolver.resolveQueryParamsTypedName(node)
450
+ }) : null;
433
451
  const dataType = renderSchemaType({
434
452
  node: buildDataSchemaNode({
435
453
  node: {
@@ -466,6 +484,7 @@ const typeGenerator = defineGenerator({
466
484
  footer: resolveFooter(),
467
485
  children: [
468
486
  paramTypes,
487
+ queryParamsType,
469
488
  responseTypes,
470
489
  requestType,
471
490
  dataType,
@@ -475,10 +494,11 @@ const typeGenerator = defineGenerator({
475
494
  });
476
495
  },
477
496
  Schema({ node, adapter, options }) {
478
- const { enumType, enumKeyCasing, syntaxType, optionalType, arrayType, resolver } = options;
497
+ const { enumType, enumKeyCasing, syntaxType, optionalType, arrayType, resolver, legacy, transformers = [] } = options;
479
498
  const { mode, getFile, resolveBanner, resolveFooter } = useKubb();
480
499
  if (!node.name) return;
481
- const imports = adapter.getImports(node, (schemaName) => ({
500
+ const transformedNode = transform(node, composeTransformers(...transformers));
501
+ const imports = adapter.getImports(transformedNode, (schemaName) => ({
482
502
  name: resolver.default(schemaName, "type"),
483
503
  path: getFile({
484
504
  name: schemaName,
@@ -515,13 +535,14 @@ const typeGenerator = defineGenerator({
515
535
  ].join("-"))), /* @__PURE__ */ jsx(Type, {
516
536
  name: type.name,
517
537
  typedName: type.typedName,
518
- node,
538
+ node: transformedNode,
519
539
  enumType,
520
540
  enumKeyCasing,
521
541
  optionalType,
522
542
  arrayType,
523
543
  syntaxType,
524
- resolver
544
+ resolver,
545
+ legacy
525
546
  })]
526
547
  });
527
548
  }
@@ -529,4 +550,4 @@ const typeGenerator = defineGenerator({
529
550
  //#endregion
530
551
  export { typeGenerator as t };
531
552
 
532
- //# sourceMappingURL=generators-CLuCmfUz.js.map
553
+ //# sourceMappingURL=generators-BTTcjgbY.js.map