@kubb/plugin-vue-query 5.0.0-beta.3 → 5.0.0-beta.30

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 (41) hide show
  1. package/README.md +26 -5
  2. package/dist/{components-D1UhYFgY.js → components-B4IlVmNa.js} +244 -353
  3. package/dist/components-B4IlVmNa.js.map +1 -0
  4. package/dist/{components-qfOFRSoM.cjs → components-CIedagno.cjs} +269 -354
  5. package/dist/components-CIedagno.cjs.map +1 -0
  6. package/dist/components.cjs +1 -1
  7. package/dist/components.d.ts +3 -67
  8. package/dist/components.js +1 -1
  9. package/dist/{generators-CbnIVBgY.js → generators-ClYptnDj.js} +144 -132
  10. package/dist/generators-ClYptnDj.js.map +1 -0
  11. package/dist/{generators-C4gs_P1i.cjs → generators-D7kNtBBo.cjs} +142 -130
  12. package/dist/generators-D7kNtBBo.cjs.map +1 -0
  13. package/dist/generators.cjs +1 -1
  14. package/dist/generators.d.ts +17 -1
  15. package/dist/generators.js +1 -1
  16. package/dist/index.cjs +100 -17
  17. package/dist/index.cjs.map +1 -1
  18. package/dist/index.d.ts +29 -1
  19. package/dist/index.js +100 -17
  20. package/dist/index.js.map +1 -1
  21. package/dist/types-D-LjzI_Q.d.ts +270 -0
  22. package/extension.yaml +1273 -0
  23. package/package.json +16 -18
  24. package/src/components/InfiniteQuery.tsx +11 -48
  25. package/src/components/InfiniteQueryOptions.tsx +38 -50
  26. package/src/components/Mutation.tsx +33 -42
  27. package/src/components/Query.tsx +11 -49
  28. package/src/components/QueryKey.tsx +8 -61
  29. package/src/components/QueryOptions.tsx +14 -67
  30. package/src/generators/infiniteQueryGenerator.tsx +46 -51
  31. package/src/generators/mutationGenerator.tsx +41 -49
  32. package/src/generators/queryGenerator.tsx +43 -49
  33. package/src/plugin.ts +43 -15
  34. package/src/resolvers/resolverVueQuery.ts +61 -4
  35. package/src/types.ts +129 -53
  36. package/src/utils.ts +44 -25
  37. package/dist/components-D1UhYFgY.js.map +0 -1
  38. package/dist/components-qfOFRSoM.cjs.map +0 -1
  39. package/dist/generators-C4gs_P1i.cjs.map +0 -1
  40. package/dist/generators-CbnIVBgY.js.map +0 -1
  41. package/dist/types-nVDTfuS1.d.ts +0 -194
@@ -1,4 +1,4 @@
1
- const require_components = require("./components-qfOFRSoM.cjs");
1
+ const require_components = require("./components-CIedagno.cjs");
2
2
  let node_path = require("node:path");
3
3
  node_path = require_components.__toESM(node_path);
4
4
  let _kubb_core = require("@kubb/core");
@@ -9,32 +9,36 @@ let _kubb_renderer_jsx = require("@kubb/renderer-jsx");
9
9
  let _kubb_renderer_jsx_jsx_runtime = require("@kubb/renderer-jsx/jsx-runtime");
10
10
  let remeda = require("remeda");
11
11
  //#region src/generators/infiniteQueryGenerator.tsx
12
+ /**
13
+ * Built-in generator for `useInfiniteQuery` composables. Enabled when
14
+ * `pluginVueQuery({ infinite: { ... } })`. Emits one `useFooInfiniteQuery`
15
+ * composable per query operation, wiring the configured cursor path into
16
+ * TanStack Query's cursor-based pagination.
17
+ */
12
18
  const infiniteQueryGenerator = (0, _kubb_core.defineGenerator)({
13
19
  name: "vue-query-infinite",
14
- renderer: _kubb_renderer_jsx.jsxRenderer,
20
+ renderer: _kubb_renderer_jsx.jsxRendererSync,
15
21
  operation(node, ctx) {
16
- const { adapter, config, driver, resolver, root } = ctx;
17
- const { output, query, mutation, infinite, paramsCasing, paramsType, pathParamsType, parser, client: clientOptions, group, transformers } = ctx.options;
22
+ const { config, driver, resolver, root } = ctx;
23
+ const { output, query, mutation, infinite, paramsCasing, paramsType, pathParamsType, parser, client: clientOptions, group } = ctx.options;
18
24
  const pluginTs = driver.getPlugin(_kubb_plugin_ts.pluginTsName);
19
25
  if (!pluginTs) return null;
20
26
  const tsResolver = driver.getResolver(_kubb_plugin_ts.pluginTsName);
21
27
  const isQuery = query === false || !!query && query.methods.some((method) => node.method.toLowerCase() === method.toLowerCase());
22
28
  const isMutation = mutation !== false && !isQuery && (0, remeda.difference)(mutation ? mutation.methods : [], query ? query.methods : []).some((method) => node.method.toLowerCase() === method.toLowerCase());
23
- const infiniteOptions = infinite && typeof infinite === "object" ? infinite : void 0;
29
+ const infiniteOptions = infinite && typeof infinite === "object" ? infinite : null;
24
30
  if (!isQuery || isMutation || !infiniteOptions) return null;
25
31
  const normalizeKey = (key) => key.replace(/\?$/, "");
26
- const queryParamKeys = node.parameters.filter((p) => p.in === "query").map((p) => p.name);
32
+ const queryParamKeys = require_components.getOperationParameters(node).query.map((p) => p.name);
27
33
  const hasQueryParam = infiniteOptions.queryParam ? queryParamKeys.some((k) => normalizeKey(k) === infiniteOptions.queryParam) : false;
28
34
  const hasCursorParam = !infiniteOptions.cursorParam || true;
29
35
  if (!hasQueryParam || !hasCursorParam) return null;
30
36
  const importPath = query ? query.importPath : "@tanstack/vue-query";
31
- const baseName = resolver.resolveName(node.operationId);
32
- const capitalize = (s) => s.charAt(0).toUpperCase() + s.slice(1);
33
- const queryName = require_components.transformName(`use${capitalize(baseName)}Infinite`, "function", transformers);
34
- const queryOptionsName = require_components.transformName(`${baseName}InfiniteQueryOptions`, "function", transformers);
35
- const queryKeyName = require_components.transformName(`${baseName}InfiniteQueryKey`, "const", transformers);
36
- const queryKeyTypeName = require_components.transformName(`${capitalize(baseName)}InfiniteQueryKey`, "type", transformers);
37
- const clientBaseName = require_components.transformName(`${baseName}Infinite`, "function", transformers);
37
+ const queryName = resolver.resolveInfiniteQueryName(node);
38
+ const queryOptionsName = resolver.resolveInfiniteQueryOptionsName(node);
39
+ const queryKeyName = resolver.resolveInfiniteQueryKeyName(node);
40
+ const queryKeyTypeName = resolver.resolveInfiniteQueryKeyTypeName(node);
41
+ const clientBaseName = resolver.resolveInfiniteClientName(node);
38
42
  const meta = {
39
43
  file: resolver.resolveFile({
40
44
  name: queryName,
@@ -44,7 +48,7 @@ const infiniteQueryGenerator = (0, _kubb_core.defineGenerator)({
44
48
  }, {
45
49
  root,
46
50
  output,
47
- group
51
+ group: group ?? void 0
48
52
  }),
49
53
  fileTs: tsResolver.resolveFile({
50
54
  name: node.operationId,
@@ -54,23 +58,16 @@ const infiniteQueryGenerator = (0, _kubb_core.defineGenerator)({
54
58
  }, {
55
59
  root,
56
60
  output: pluginTs.options?.output ?? output,
57
- group: pluginTs.options?.group
61
+ group: pluginTs.options?.group ?? void 0
58
62
  })
59
63
  };
60
- const casedParams = _kubb_core.ast.caseParams(node.parameters, paramsCasing);
61
- const pathParams = casedParams.filter((p) => p.in === "path");
62
- const queryParams = casedParams.filter((p) => p.in === "query");
63
- const headerParams = casedParams.filter((p) => p.in === "header");
64
- const importedTypeNames = [
65
- node.requestBody?.content?.[0]?.schema ? tsResolver.resolveDataName(node) : void 0,
66
- tsResolver.resolveResponseName(node),
67
- ...pathParams.map((p) => tsResolver.resolvePathParamsName(node, p)),
68
- ...queryParams.map((p) => tsResolver.resolveQueryParamsName(node, p)),
69
- ...headerParams.map((p) => tsResolver.resolveHeaderParamsName(node, p)),
70
- ...node.responses.map((res) => tsResolver.resolveResponseStatusName(node, res.statusCode))
71
- ].filter((name) => !!name && name !== queryKeyTypeName);
72
- const pluginZod = parser === "zod" ? driver.getPlugin(_kubb_plugin_zod.pluginZodName) : void 0;
73
- const zodResolver = pluginZod ? driver.getResolver(_kubb_plugin_zod.pluginZodName) : void 0;
64
+ const importedTypeNames = require_components.resolveOperationTypeNames(node, tsResolver, {
65
+ paramsCasing,
66
+ exclude: [queryKeyTypeName],
67
+ order: "body-response-first"
68
+ });
69
+ const pluginZod = parser === "zod" ? driver.getPlugin(_kubb_plugin_zod.pluginZodName) : null;
70
+ const zodResolver = pluginZod ? driver.getResolver(_kubb_plugin_zod.pluginZodName) : null;
74
71
  const fileZod = zodResolver ? zodResolver.resolveFile({
75
72
  name: node.operationId,
76
73
  extname: ".ts",
@@ -79,12 +76,12 @@ const infiniteQueryGenerator = (0, _kubb_core.defineGenerator)({
79
76
  }, {
80
77
  root,
81
78
  output: pluginZod?.options?.output ?? output,
82
- group: pluginZod?.options?.group
83
- }) : void 0;
84
- const zodSchemaNames = zodResolver && parser === "zod" ? [zodResolver.resolveResponseName?.(node), node.requestBody?.content?.[0]?.schema ? zodResolver.resolveDataName?.(node) : void 0].filter(Boolean) : [];
79
+ group: pluginZod?.options?.group ?? void 0
80
+ }) : null;
81
+ const zodSchemaNames = require_components.resolveZodSchemaNames(node, zodResolver);
85
82
  const clientPlugin = driver.getPlugin(_kubb_plugin_client.pluginClientName);
86
83
  const shouldUseClientPlugin = clientPlugin?.name === _kubb_plugin_client.pluginClientName && clientOptions.clientType !== "class";
87
- const clientResolver = shouldUseClientPlugin ? driver.getResolver(_kubb_plugin_client.pluginClientName) : void 0;
84
+ const clientResolver = shouldUseClientPlugin ? driver.getResolver(_kubb_plugin_client.pluginClientName) : null;
88
85
  const clientFile = shouldUseClientPlugin ? clientResolver?.resolveFile({
89
86
  name: node.operationId,
90
87
  extname: ".ts",
@@ -93,30 +90,38 @@ const infiniteQueryGenerator = (0, _kubb_core.defineGenerator)({
93
90
  }, {
94
91
  root,
95
92
  output: clientPlugin?.options?.output ?? output,
96
- group: clientPlugin?.options?.group
97
- }) : void 0;
93
+ group: clientPlugin?.options?.group ?? void 0
94
+ }) : null;
98
95
  const resolvedClientName = shouldUseClientPlugin ? clientResolver?.resolveName(node.operationId) ?? clientBaseName : clientBaseName;
99
96
  return /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx.File, {
100
97
  baseName: meta.file.baseName,
101
98
  path: meta.file.path,
102
99
  meta: meta.file.meta,
103
- banner: resolver.resolveBanner(adapter.inputNode, {
100
+ banner: resolver.resolveBanner(ctx.meta, {
104
101
  output,
105
- config
102
+ config,
103
+ file: {
104
+ path: meta.file.path,
105
+ baseName: meta.file.baseName
106
+ }
106
107
  }),
107
- footer: resolver.resolveFooter(adapter.inputNode, {
108
+ footer: resolver.resolveFooter(ctx.meta, {
108
109
  output,
109
- config
110
+ config,
111
+ file: {
112
+ path: meta.file.path,
113
+ baseName: meta.file.baseName
114
+ }
110
115
  }),
111
116
  children: [
112
- parser === "zod" && fileZod && zodSchemaNames.length > 0 && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
117
+ fileZod && zodSchemaNames.length > 0 && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
113
118
  name: zodSchemaNames,
114
119
  root: meta.file.path,
115
120
  path: fileZod.path
116
121
  }),
117
122
  clientOptions.importPath ? /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [
118
123
  !shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
119
- name: "fetch",
124
+ name: "client",
120
125
  path: clientOptions.importPath
121
126
  }),
122
127
  /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
@@ -135,9 +140,9 @@ const infiniteQueryGenerator = (0, _kubb_core.defineGenerator)({
135
140
  })
136
141
  ] }) : /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [
137
142
  !shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
138
- name: ["fetch"],
143
+ name: ["client"],
139
144
  root: meta.file.path,
140
- path: node_path.default.resolve(root, ".kubb/fetch.ts")
145
+ path: node_path.default.resolve(root, ".kubb/client.ts")
141
146
  }),
142
147
  /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
143
148
  name: [
@@ -146,13 +151,13 @@ const infiniteQueryGenerator = (0, _kubb_core.defineGenerator)({
146
151
  "ResponseErrorConfig"
147
152
  ],
148
153
  root: meta.file.path,
149
- path: node_path.default.resolve(root, ".kubb/fetch.ts"),
154
+ path: node_path.default.resolve(root, ".kubb/client.ts"),
150
155
  isTypeOnly: true
151
156
  }),
152
157
  clientOptions.dataReturnType === "full" && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
153
158
  name: ["ResponseConfig"],
154
159
  root: meta.file.path,
155
- path: node_path.default.resolve(root, ".kubb/fetch.ts"),
160
+ path: node_path.default.resolve(root, ".kubb/client.ts"),
156
161
  isTypeOnly: true
157
162
  })
158
163
  ] }),
@@ -261,24 +266,27 @@ const infiniteQueryGenerator = (0, _kubb_core.defineGenerator)({
261
266
  });
262
267
  //#endregion
263
268
  //#region src/generators/mutationGenerator.tsx
269
+ /**
270
+ * Built-in generator for `useMutation` composables. Emits one
271
+ * `useFooMutation` composable per POST/PUT/DELETE operation (configurable
272
+ * via `mutation.methods`) plus the matching `fooMutationKey` helper.
273
+ */
264
274
  const mutationGenerator = (0, _kubb_core.defineGenerator)({
265
275
  name: "vue-query-mutation",
266
- renderer: _kubb_renderer_jsx.jsxRenderer,
276
+ renderer: _kubb_renderer_jsx.jsxRendererSync,
267
277
  operation(node, ctx) {
268
- const { adapter, config, driver, resolver, root } = ctx;
269
- const { output, query, mutation, paramsCasing, paramsType, pathParamsType, parser, client: clientOptions, group, transformers } = ctx.options;
278
+ const { config, driver, resolver, root } = ctx;
279
+ const { output, query, mutation, paramsCasing, paramsType, pathParamsType, parser, client: clientOptions, group } = ctx.options;
270
280
  const pluginTs = driver.getPlugin(_kubb_plugin_ts.pluginTsName);
271
281
  if (!pluginTs) return null;
272
282
  const tsResolver = driver.getResolver(_kubb_plugin_ts.pluginTsName);
273
283
  const isQuery = query === false || !!query && query.methods.some((method) => node.method.toLowerCase() === method.toLowerCase());
274
284
  if (!(mutation !== false && !isQuery && (0, remeda.difference)(mutation ? mutation.methods : [], query ? query.methods : []).some((method) => node.method.toLowerCase() === method.toLowerCase()))) return null;
275
285
  const importPath = mutation ? mutation.importPath : "@tanstack/vue-query";
276
- const baseName = resolver.resolveName(node.operationId);
277
- const capitalize = (s) => s.charAt(0).toUpperCase() + s.slice(1);
278
- const mutationHookName = require_components.transformName(`use${capitalize(baseName)}`, "function", transformers);
279
- const mutationTypeName = require_components.transformName(`${capitalize(baseName)}`, "type", transformers);
280
- const mutationKeyName = require_components.transformName(`${baseName}MutationKey`, "const", transformers);
281
- const clientName = require_components.transformName(baseName, "function", transformers);
286
+ const mutationHookName = resolver.resolveMutationName(node);
287
+ const mutationTypeName = resolver.resolveMutationTypeName(node);
288
+ const mutationKeyName = resolver.resolveMutationKeyName(node);
289
+ const clientName = resolver.resolveClientName(node);
282
290
  const meta = {
283
291
  file: resolver.resolveFile({
284
292
  name: mutationHookName,
@@ -288,7 +296,7 @@ const mutationGenerator = (0, _kubb_core.defineGenerator)({
288
296
  }, {
289
297
  root,
290
298
  output,
291
- group
299
+ group: group ?? void 0
292
300
  }),
293
301
  fileTs: tsResolver.resolveFile({
294
302
  name: node.operationId,
@@ -298,23 +306,15 @@ const mutationGenerator = (0, _kubb_core.defineGenerator)({
298
306
  }, {
299
307
  root,
300
308
  output: pluginTs.options?.output ?? output,
301
- group: pluginTs.options?.group
309
+ group: pluginTs.options?.group ?? void 0
302
310
  })
303
311
  };
304
- const casedParams = _kubb_core.ast.caseParams(node.parameters, paramsCasing);
305
- const pathParams = casedParams.filter((p) => p.in === "path");
306
- const queryParams = casedParams.filter((p) => p.in === "query");
307
- const headerParams = casedParams.filter((p) => p.in === "header");
308
- const importedTypeNames = [
309
- node.requestBody?.content?.[0]?.schema ? tsResolver.resolveDataName(node) : void 0,
310
- tsResolver.resolveResponseName(node),
311
- ...pathParams.map((p) => tsResolver.resolvePathParamsName(node, p)),
312
- ...queryParams.map((p) => tsResolver.resolveQueryParamsName(node, p)),
313
- ...headerParams.map((p) => tsResolver.resolveHeaderParamsName(node, p)),
314
- ...node.responses.map((res) => tsResolver.resolveResponseStatusName(node, res.statusCode))
315
- ].filter((name) => !!name);
316
- const pluginZod = parser === "zod" ? driver.getPlugin(_kubb_plugin_zod.pluginZodName) : void 0;
317
- const zodResolver = pluginZod ? driver.getResolver(_kubb_plugin_zod.pluginZodName) : void 0;
312
+ const importedTypeNames = require_components.resolveOperationTypeNames(node, tsResolver, {
313
+ paramsCasing,
314
+ order: "body-response-first"
315
+ });
316
+ const pluginZod = parser === "zod" ? driver.getPlugin(_kubb_plugin_zod.pluginZodName) : null;
317
+ const zodResolver = pluginZod ? driver.getResolver(_kubb_plugin_zod.pluginZodName) : null;
318
318
  const fileZod = zodResolver ? zodResolver.resolveFile({
319
319
  name: node.operationId,
320
320
  extname: ".ts",
@@ -323,12 +323,12 @@ const mutationGenerator = (0, _kubb_core.defineGenerator)({
323
323
  }, {
324
324
  root,
325
325
  output: pluginZod?.options?.output ?? output,
326
- group: pluginZod?.options?.group
327
- }) : void 0;
328
- const zodSchemaNames = zodResolver && parser === "zod" ? [zodResolver.resolveResponseName?.(node), node.requestBody?.content?.[0]?.schema ? zodResolver.resolveDataName?.(node) : void 0].filter(Boolean) : [];
326
+ group: pluginZod?.options?.group ?? void 0
327
+ }) : null;
328
+ const zodSchemaNames = require_components.resolveZodSchemaNames(node, zodResolver);
329
329
  const clientPlugin = driver.getPlugin(_kubb_plugin_client.pluginClientName);
330
330
  const shouldUseClientPlugin = clientPlugin?.name === _kubb_plugin_client.pluginClientName && clientOptions.clientType !== "class";
331
- const clientResolver = shouldUseClientPlugin ? driver.getResolver(_kubb_plugin_client.pluginClientName) : void 0;
331
+ const clientResolver = shouldUseClientPlugin ? driver.getResolver(_kubb_plugin_client.pluginClientName) : null;
332
332
  const clientFile = shouldUseClientPlugin ? clientResolver?.resolveFile({
333
333
  name: node.operationId,
334
334
  extname: ".ts",
@@ -337,30 +337,38 @@ const mutationGenerator = (0, _kubb_core.defineGenerator)({
337
337
  }, {
338
338
  root,
339
339
  output: clientPlugin?.options?.output ?? output,
340
- group: clientPlugin?.options?.group
341
- }) : void 0;
340
+ group: clientPlugin?.options?.group ?? void 0
341
+ }) : null;
342
342
  const resolvedClientName = shouldUseClientPlugin ? clientResolver?.resolveName(node.operationId) ?? clientName : clientName;
343
343
  return /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx.File, {
344
344
  baseName: meta.file.baseName,
345
345
  path: meta.file.path,
346
346
  meta: meta.file.meta,
347
- banner: resolver.resolveBanner(adapter.inputNode, {
347
+ banner: resolver.resolveBanner(ctx.meta, {
348
348
  output,
349
- config
349
+ config,
350
+ file: {
351
+ path: meta.file.path,
352
+ baseName: meta.file.baseName
353
+ }
350
354
  }),
351
- footer: resolver.resolveFooter(adapter.inputNode, {
355
+ footer: resolver.resolveFooter(ctx.meta, {
352
356
  output,
353
- config
357
+ config,
358
+ file: {
359
+ path: meta.file.path,
360
+ baseName: meta.file.baseName
361
+ }
354
362
  }),
355
363
  children: [
356
- parser === "zod" && fileZod && zodSchemaNames.length > 0 && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
364
+ fileZod && zodSchemaNames.length > 0 && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
357
365
  name: zodSchemaNames,
358
366
  root: meta.file.path,
359
367
  path: fileZod.path
360
368
  }),
361
369
  clientOptions.importPath ? /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [
362
370
  !shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
363
- name: "fetch",
371
+ name: "client",
364
372
  path: clientOptions.importPath
365
373
  }),
366
374
  /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
@@ -379,9 +387,9 @@ const mutationGenerator = (0, _kubb_core.defineGenerator)({
379
387
  })
380
388
  ] }) : /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [
381
389
  !shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
382
- name: ["fetch"],
390
+ name: ["client"],
383
391
  root: meta.file.path,
384
- path: node_path.default.resolve(root, ".kubb/fetch.ts")
392
+ path: node_path.default.resolve(root, ".kubb/client.ts")
385
393
  }),
386
394
  /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
387
395
  name: [
@@ -390,13 +398,13 @@ const mutationGenerator = (0, _kubb_core.defineGenerator)({
390
398
  "ResponseErrorConfig"
391
399
  ],
392
400
  root: meta.file.path,
393
- path: node_path.default.resolve(root, ".kubb/fetch.ts"),
401
+ path: node_path.default.resolve(root, ".kubb/client.ts"),
394
402
  isTypeOnly: true
395
403
  }),
396
404
  clientOptions.dataReturnType === "full" && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
397
405
  name: ["ResponseConfig"],
398
406
  root: meta.file.path,
399
- path: node_path.default.resolve(root, ".kubb/fetch.ts"),
407
+ path: node_path.default.resolve(root, ".kubb/client.ts"),
400
408
  isTypeOnly: true
401
409
  })
402
410
  ] }),
@@ -410,7 +418,7 @@ const mutationGenerator = (0, _kubb_core.defineGenerator)({
410
418
  root: meta.file.path,
411
419
  path: clientFile.path
412
420
  }),
413
- !shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
421
+ !shouldUseClientPlugin && node.requestBody?.content?.some((e) => e.contentType === "multipart/form-data") && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
414
422
  name: ["buildFormData"],
415
423
  root: meta.file.path,
416
424
  path: node_path.default.resolve(root, ".kubb/config.ts")
@@ -469,12 +477,17 @@ const mutationGenerator = (0, _kubb_core.defineGenerator)({
469
477
  });
470
478
  //#endregion
471
479
  //#region src/generators/queryGenerator.tsx
480
+ /**
481
+ * Built-in generator for `useQuery` composables. Emits one `useFooQuery`
482
+ * composable per GET operation (configurable via `query.methods`) plus the
483
+ * matching `fooQueryKey` / `fooQueryOptions` helpers.
484
+ */
472
485
  const queryGenerator = (0, _kubb_core.defineGenerator)({
473
486
  name: "vue-query",
474
- renderer: _kubb_renderer_jsx.jsxRenderer,
487
+ renderer: _kubb_renderer_jsx.jsxRendererSync,
475
488
  operation(node, ctx) {
476
- const { adapter, config, driver, resolver, root } = ctx;
477
- const { output, query, mutation, paramsCasing, paramsType, pathParamsType, parser, client: clientOptions, group, transformers } = ctx.options;
489
+ const { config, driver, resolver, root } = ctx;
490
+ const { output, query, mutation, paramsCasing, paramsType, pathParamsType, parser, client: clientOptions, group } = ctx.options;
478
491
  const pluginTs = driver.getPlugin(_kubb_plugin_ts.pluginTsName);
479
492
  if (!pluginTs) return null;
480
493
  const tsResolver = driver.getResolver(_kubb_plugin_ts.pluginTsName);
@@ -482,13 +495,11 @@ const queryGenerator = (0, _kubb_core.defineGenerator)({
482
495
  const isMutation = mutation !== false && !isQuery && (0, remeda.difference)(mutation ? mutation.methods : [], query ? query.methods : []).some((method) => node.method.toLowerCase() === method.toLowerCase());
483
496
  if (!isQuery || isMutation) return null;
484
497
  const importPath = query ? query.importPath : "@tanstack/vue-query";
485
- const baseName = resolver.resolveName(node.operationId);
486
- const capitalize = (s) => s.charAt(0).toUpperCase() + s.slice(1);
487
- const queryName = require_components.transformName(`use${capitalize(baseName)}`, "function", transformers);
488
- const queryOptionsName = require_components.transformName(`${baseName}QueryOptions`, "function", transformers);
489
- const queryKeyName = require_components.transformName(`${baseName}QueryKey`, "const", transformers);
490
- const queryKeyTypeName = require_components.transformName(`${capitalize(baseName)}QueryKey`, "type", transformers);
491
- const clientName = require_components.transformName(baseName, "function", transformers);
498
+ const queryName = resolver.resolveQueryName(node);
499
+ const queryOptionsName = resolver.resolveQueryOptionsName(node);
500
+ const queryKeyName = resolver.resolveQueryKeyName(node);
501
+ const queryKeyTypeName = resolver.resolveQueryKeyTypeName(node);
502
+ const clientName = resolver.resolveClientName(node);
492
503
  const meta = {
493
504
  file: resolver.resolveFile({
494
505
  name: queryName,
@@ -498,7 +509,7 @@ const queryGenerator = (0, _kubb_core.defineGenerator)({
498
509
  }, {
499
510
  root,
500
511
  output,
501
- group
512
+ group: group ?? void 0
502
513
  }),
503
514
  fileTs: tsResolver.resolveFile({
504
515
  name: node.operationId,
@@ -508,23 +519,16 @@ const queryGenerator = (0, _kubb_core.defineGenerator)({
508
519
  }, {
509
520
  root,
510
521
  output: pluginTs.options?.output ?? output,
511
- group: pluginTs.options?.group
522
+ group: pluginTs.options?.group ?? void 0
512
523
  })
513
524
  };
514
- const casedParams = _kubb_core.ast.caseParams(node.parameters, paramsCasing);
515
- const pathParams = casedParams.filter((p) => p.in === "path");
516
- const queryParams = casedParams.filter((p) => p.in === "query");
517
- const headerParams = casedParams.filter((p) => p.in === "header");
518
- const importedTypeNames = [
519
- node.requestBody?.content?.[0]?.schema ? tsResolver.resolveDataName(node) : void 0,
520
- tsResolver.resolveResponseName(node),
521
- ...pathParams.map((p) => tsResolver.resolvePathParamsName(node, p)),
522
- ...queryParams.map((p) => tsResolver.resolveQueryParamsName(node, p)),
523
- ...headerParams.map((p) => tsResolver.resolveHeaderParamsName(node, p)),
524
- ...node.responses.map((res) => tsResolver.resolveResponseStatusName(node, res.statusCode))
525
- ].filter((name) => !!name && name !== queryKeyTypeName);
526
- const pluginZod = parser === "zod" ? driver.getPlugin(_kubb_plugin_zod.pluginZodName) : void 0;
527
- const zodResolver = pluginZod ? driver.getResolver(_kubb_plugin_zod.pluginZodName) : void 0;
525
+ const importedTypeNames = require_components.resolveOperationTypeNames(node, tsResolver, {
526
+ paramsCasing,
527
+ exclude: [queryKeyTypeName],
528
+ order: "body-response-first"
529
+ });
530
+ const pluginZod = parser === "zod" ? driver.getPlugin(_kubb_plugin_zod.pluginZodName) : null;
531
+ const zodResolver = pluginZod ? driver.getResolver(_kubb_plugin_zod.pluginZodName) : null;
528
532
  const fileZod = zodResolver ? zodResolver.resolveFile({
529
533
  name: node.operationId,
530
534
  extname: ".ts",
@@ -533,12 +537,12 @@ const queryGenerator = (0, _kubb_core.defineGenerator)({
533
537
  }, {
534
538
  root,
535
539
  output: pluginZod?.options?.output ?? output,
536
- group: pluginZod?.options?.group
537
- }) : void 0;
538
- const zodSchemaNames = zodResolver && parser === "zod" ? [zodResolver.resolveResponseName?.(node), node.requestBody?.content?.[0]?.schema ? zodResolver.resolveDataName?.(node) : void 0].filter(Boolean) : [];
540
+ group: pluginZod?.options?.group ?? void 0
541
+ }) : null;
542
+ const zodSchemaNames = require_components.resolveZodSchemaNames(node, zodResolver);
539
543
  const clientPlugin = driver.getPlugin(_kubb_plugin_client.pluginClientName);
540
544
  const shouldUseClientPlugin = clientPlugin?.name === _kubb_plugin_client.pluginClientName && clientOptions.clientType !== "class";
541
- const clientResolver = shouldUseClientPlugin ? driver.getResolver(_kubb_plugin_client.pluginClientName) : void 0;
545
+ const clientResolver = shouldUseClientPlugin ? driver.getResolver(_kubb_plugin_client.pluginClientName) : null;
542
546
  const clientFile = shouldUseClientPlugin ? clientResolver?.resolveFile({
543
547
  name: node.operationId,
544
548
  extname: ".ts",
@@ -547,30 +551,38 @@ const queryGenerator = (0, _kubb_core.defineGenerator)({
547
551
  }, {
548
552
  root,
549
553
  output: clientPlugin?.options?.output ?? output,
550
- group: clientPlugin?.options?.group
551
- }) : void 0;
554
+ group: clientPlugin?.options?.group ?? void 0
555
+ }) : null;
552
556
  const resolvedClientName = shouldUseClientPlugin ? clientResolver?.resolveName(node.operationId) ?? clientName : clientName;
553
557
  return /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx.File, {
554
558
  baseName: meta.file.baseName,
555
559
  path: meta.file.path,
556
560
  meta: meta.file.meta,
557
- banner: resolver.resolveBanner(adapter.inputNode, {
561
+ banner: resolver.resolveBanner(ctx.meta, {
558
562
  output,
559
- config
563
+ config,
564
+ file: {
565
+ path: meta.file.path,
566
+ baseName: meta.file.baseName
567
+ }
560
568
  }),
561
- footer: resolver.resolveFooter(adapter.inputNode, {
569
+ footer: resolver.resolveFooter(ctx.meta, {
562
570
  output,
563
- config
571
+ config,
572
+ file: {
573
+ path: meta.file.path,
574
+ baseName: meta.file.baseName
575
+ }
564
576
  }),
565
577
  children: [
566
- parser === "zod" && fileZod && zodSchemaNames.length > 0 && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
578
+ fileZod && zodSchemaNames.length > 0 && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
567
579
  name: zodSchemaNames,
568
580
  root: meta.file.path,
569
581
  path: fileZod.path
570
582
  }),
571
583
  clientOptions.importPath ? /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [
572
584
  !shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
573
- name: "fetch",
585
+ name: "client",
574
586
  path: clientOptions.importPath
575
587
  }),
576
588
  /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
@@ -589,9 +601,9 @@ const queryGenerator = (0, _kubb_core.defineGenerator)({
589
601
  })
590
602
  ] }) : /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [
591
603
  !shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
592
- name: ["fetch"],
604
+ name: ["client"],
593
605
  root: meta.file.path,
594
- path: node_path.default.resolve(root, ".kubb/fetch.ts")
606
+ path: node_path.default.resolve(root, ".kubb/client.ts")
595
607
  }),
596
608
  /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
597
609
  name: [
@@ -600,13 +612,13 @@ const queryGenerator = (0, _kubb_core.defineGenerator)({
600
612
  "ResponseErrorConfig"
601
613
  ],
602
614
  root: meta.file.path,
603
- path: node_path.default.resolve(root, ".kubb/fetch.ts"),
615
+ path: node_path.default.resolve(root, ".kubb/client.ts"),
604
616
  isTypeOnly: true
605
617
  }),
606
618
  clientOptions.dataReturnType === "full" && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
607
619
  name: ["ResponseConfig"],
608
620
  root: meta.file.path,
609
- path: node_path.default.resolve(root, ".kubb/fetch.ts"),
621
+ path: node_path.default.resolve(root, ".kubb/client.ts"),
610
622
  isTypeOnly: true
611
623
  })
612
624
  ] }),
@@ -723,4 +735,4 @@ Object.defineProperty(exports, "queryGenerator", {
723
735
  }
724
736
  });
725
737
 
726
- //# sourceMappingURL=generators-C4gs_P1i.cjs.map
738
+ //# sourceMappingURL=generators-D7kNtBBo.cjs.map