@kubb/plugin-vue-query 5.0.0-beta.4 → 5.0.0-beta.56

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 (43) hide show
  1. package/README.md +39 -22
  2. package/dist/{components-D1UhYFgY.js → components-B79Gljyl.js} +483 -565
  3. package/dist/components-B79Gljyl.js.map +1 -0
  4. package/dist/{components-qfOFRSoM.cjs → components-D3xIZ9FA.cjs} +513 -565
  5. package/dist/components-D3xIZ9FA.cjs.map +1 -0
  6. package/dist/components.cjs +1 -1
  7. package/dist/components.d.ts +4 -68
  8. package/dist/components.js +1 -1
  9. package/dist/{generators-C4gs_P1i.cjs → generators-BTtcGtUY.cjs} +225 -314
  10. package/dist/generators-BTtcGtUY.cjs.map +1 -0
  11. package/dist/generators-D95ddIFV.js +620 -0
  12. package/dist/generators-D95ddIFV.js.map +1 -0
  13. package/dist/generators.cjs +1 -1
  14. package/dist/generators.d.ts +21 -6
  15. package/dist/generators.js +1 -1
  16. package/dist/index.cjs +158 -25
  17. package/dist/index.cjs.map +1 -1
  18. package/dist/index.d.ts +31 -4
  19. package/dist/index.js +160 -27
  20. package/dist/index.js.map +1 -1
  21. package/dist/types-CwabLiFK.d.ts +266 -0
  22. package/package.json +18 -27
  23. package/src/components/InfiniteQuery.tsx +18 -50
  24. package/src/components/InfiniteQueryOptions.tsx +64 -82
  25. package/src/components/Mutation.tsx +35 -44
  26. package/src/components/Query.tsx +18 -51
  27. package/src/components/QueryKey.tsx +9 -61
  28. package/src/components/QueryOptions.tsx +22 -99
  29. package/src/generators/infiniteQueryGenerator.tsx +55 -67
  30. package/src/generators/mutationGenerator.tsx +53 -65
  31. package/src/generators/queryGenerator.tsx +52 -65
  32. package/src/plugin.ts +48 -32
  33. package/src/resolvers/resolverVueQuery.ts +63 -6
  34. package/src/types.ts +132 -60
  35. package/src/utils.ts +45 -25
  36. package/dist/components-D1UhYFgY.js.map +0 -1
  37. package/dist/components-qfOFRSoM.cjs.map +0 -1
  38. package/dist/generators-C4gs_P1i.cjs.map +0 -1
  39. package/dist/generators-CbnIVBgY.js +0 -709
  40. package/dist/generators-CbnIVBgY.js.map +0 -1
  41. package/dist/types-nVDTfuS1.d.ts +0 -194
  42. package/extension.yaml +0 -793
  43. /package/dist/{chunk--u3MIqq1.js → chunk-C0LytTxp.js} +0 -0
@@ -1,4 +1,4 @@
1
- const require_components = require("./components-qfOFRSoM.cjs");
1
+ const require_components = require("./components-D3xIZ9FA.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");
@@ -7,155 +7,124 @@ let _kubb_plugin_ts = require("@kubb/plugin-ts");
7
7
  let _kubb_plugin_zod = require("@kubb/plugin-zod");
8
8
  let _kubb_renderer_jsx = require("@kubb/renderer-jsx");
9
9
  let _kubb_renderer_jsx_jsx_runtime = require("@kubb/renderer-jsx/jsx-runtime");
10
- let remeda = require("remeda");
11
10
  //#region src/generators/infiniteQueryGenerator.tsx
11
+ /**
12
+ * Built-in generator for `useInfiniteQuery` composables. Enabled when
13
+ * `pluginVueQuery({ infinite: { ... } })`. Emits one `useFooInfiniteQuery`
14
+ * composable per query operation, wiring the configured cursor path into
15
+ * TanStack Query's cursor-based pagination.
16
+ */
12
17
  const infiniteQueryGenerator = (0, _kubb_core.defineGenerator)({
13
18
  name: "vue-query-infinite",
14
19
  renderer: _kubb_renderer_jsx.jsxRenderer,
15
20
  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;
21
+ if (!_kubb_core.ast.isHttpOperationNode(node)) return null;
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
- 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;
28
+ const queryMethods = new Set(query ? query.methods : []);
29
+ const isMutation = mutation !== false && !isQuery && (mutation ? mutation.methods : []).some((method) => !queryMethods.has(method) && node.method.toLowerCase() === method.toLowerCase());
30
+ const infiniteOptions = infinite && typeof infinite === "object" ? infinite : null;
24
31
  if (!isQuery || isMutation || !infiniteOptions) return null;
25
32
  const normalizeKey = (key) => key.replace(/\?$/, "");
26
- const queryParamKeys = node.parameters.filter((p) => p.in === "query").map((p) => p.name);
33
+ const queryParamKeys = require_components.getOperationParameters(node).query.map((p) => p.name);
27
34
  const hasQueryParam = infiniteOptions.queryParam ? queryParamKeys.some((k) => normalizeKey(k) === infiniteOptions.queryParam) : false;
28
35
  const hasCursorParam = !infiniteOptions.cursorParam || true;
29
36
  if (!hasQueryParam || !hasCursorParam) return null;
30
37
  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);
38
+ const queryName = resolver.resolveInfiniteQueryName(node);
39
+ const queryOptionsName = resolver.resolveInfiniteQueryOptionsName(node);
40
+ const queryKeyName = resolver.resolveInfiniteQueryKeyName(node);
41
+ const queryKeyTypeName = resolver.resolveInfiniteQueryKeyTypeName(node);
42
+ const clientBaseName = resolver.resolveInfiniteClientName(node);
38
43
  const meta = {
39
- file: resolver.resolveFile({
40
- name: queryName,
41
- extname: ".ts",
42
- tag: node.tags[0] ?? "default",
43
- path: node.path
44
- }, {
44
+ file: resolver.resolveFile(require_components.operationFileEntry(node, queryName), {
45
45
  root,
46
46
  output,
47
- group
47
+ group: group ?? void 0
48
48
  }),
49
- fileTs: tsResolver.resolveFile({
50
- name: node.operationId,
51
- extname: ".ts",
52
- tag: node.tags[0] ?? "default",
53
- path: node.path
54
- }, {
49
+ fileTs: tsResolver.resolveFile(require_components.operationFileEntry(node, node.operationId), {
55
50
  root,
56
51
  output: pluginTs.options?.output ?? output,
57
- group: pluginTs.options?.group
52
+ group: pluginTs.options?.group ?? void 0
58
53
  })
59
54
  };
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;
74
- const fileZod = zodResolver ? zodResolver.resolveFile({
75
- name: node.operationId,
76
- extname: ".ts",
77
- tag: node.tags[0] ?? "default",
78
- path: node.path
79
- }, {
55
+ const importedTypeNames = require_components.resolveOperationTypeNames(node, tsResolver, {
56
+ paramsCasing,
57
+ exclude: [queryKeyTypeName],
58
+ order: "body-response-first"
59
+ });
60
+ const pluginZod = (0, _kubb_plugin_client.isParserEnabled)(parser) ? driver.getPlugin(_kubb_plugin_zod.pluginZodName) : null;
61
+ const zodResolver = pluginZod ? driver.getResolver(_kubb_plugin_zod.pluginZodName) : null;
62
+ const fileZod = zodResolver ? zodResolver.resolveFile(require_components.operationFileEntry(node, node.operationId), {
80
63
  root,
81
64
  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) : [];
65
+ group: pluginZod?.options?.group ?? void 0
66
+ }) : null;
67
+ const zodSchemaNames = require_components.resolveZodSchemaNames(node, zodResolver, parser);
85
68
  const clientPlugin = driver.getPlugin(_kubb_plugin_client.pluginClientName);
86
69
  const shouldUseClientPlugin = clientPlugin?.name === _kubb_plugin_client.pluginClientName && clientOptions.clientType !== "class";
87
- const clientResolver = shouldUseClientPlugin ? driver.getResolver(_kubb_plugin_client.pluginClientName) : void 0;
88
- const clientFile = shouldUseClientPlugin ? clientResolver?.resolveFile({
89
- name: node.operationId,
90
- extname: ".ts",
91
- tag: node.tags[0] ?? "default",
92
- path: node.path
93
- }, {
70
+ const clientResolver = shouldUseClientPlugin ? driver.getResolver(_kubb_plugin_client.pluginClientName) : null;
71
+ const clientFile = shouldUseClientPlugin ? clientResolver?.resolveFile(require_components.operationFileEntry(node, node.operationId), {
94
72
  root,
95
73
  output: clientPlugin?.options?.output ?? output,
96
- group: clientPlugin?.options?.group
97
- }) : void 0;
74
+ group: clientPlugin?.options?.group ?? void 0
75
+ }) : null;
98
76
  const resolvedClientName = shouldUseClientPlugin ? clientResolver?.resolveName(node.operationId) ?? clientBaseName : clientBaseName;
99
77
  return /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx.File, {
100
78
  baseName: meta.file.baseName,
101
79
  path: meta.file.path,
102
80
  meta: meta.file.meta,
103
- banner: resolver.resolveBanner(adapter.inputNode, {
81
+ banner: resolver.resolveBanner(ctx.meta, {
104
82
  output,
105
- config
83
+ config,
84
+ file: {
85
+ path: meta.file.path,
86
+ baseName: meta.file.baseName
87
+ }
106
88
  }),
107
- footer: resolver.resolveFooter(adapter.inputNode, {
89
+ footer: resolver.resolveFooter(ctx.meta, {
108
90
  output,
109
- config
91
+ config,
92
+ file: {
93
+ path: meta.file.path,
94
+ baseName: meta.file.baseName
95
+ }
110
96
  }),
111
97
  children: [
112
- parser === "zod" && fileZod && zodSchemaNames.length > 0 && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
98
+ fileZod && zodSchemaNames.length > 0 && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
113
99
  name: zodSchemaNames,
114
100
  root: meta.file.path,
115
101
  path: fileZod.path
116
102
  }),
117
- clientOptions.importPath ? /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [
118
- !shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
119
- name: "fetch",
120
- path: clientOptions.importPath
121
- }),
122
- /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
123
- name: [
124
- "Client",
125
- "RequestConfig",
126
- "ResponseErrorConfig"
127
- ],
128
- path: clientOptions.importPath,
129
- isTypeOnly: true
130
- }),
131
- clientOptions.dataReturnType === "full" && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
132
- name: ["ResponseConfig"],
133
- path: clientOptions.importPath,
134
- isTypeOnly: true
135
- })
136
- ] }) : /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [
137
- !shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
138
- name: ["fetch"],
139
- root: meta.file.path,
140
- path: node_path.default.resolve(root, ".kubb/fetch.ts")
141
- }),
142
- /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
143
- name: [
144
- "Client",
145
- "RequestConfig",
146
- "ResponseErrorConfig"
147
- ],
148
- root: meta.file.path,
149
- path: node_path.default.resolve(root, ".kubb/fetch.ts"),
150
- isTypeOnly: true
151
- }),
152
- clientOptions.dataReturnType === "full" && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
153
- name: ["ResponseConfig"],
154
- root: meta.file.path,
155
- path: node_path.default.resolve(root, ".kubb/fetch.ts"),
156
- isTypeOnly: true
157
- })
158
- ] }),
103
+ clientOptions.importPath ? /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [!shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
104
+ name: "client",
105
+ path: clientOptions.importPath
106
+ }), /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
107
+ name: [
108
+ "Client",
109
+ "RequestConfig",
110
+ "ResponseErrorConfig"
111
+ ],
112
+ path: clientOptions.importPath,
113
+ isTypeOnly: true
114
+ })] }) : /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [!shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
115
+ name: ["client"],
116
+ root: meta.file.path,
117
+ path: node_path.default.resolve(root, ".kubb/client.ts")
118
+ }), /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
119
+ name: [
120
+ "Client",
121
+ "RequestConfig",
122
+ "ResponseErrorConfig"
123
+ ],
124
+ root: meta.file.path,
125
+ path: node_path.default.resolve(root, ".kubb/client.ts"),
126
+ isTypeOnly: true
127
+ })] }),
159
128
  /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
160
129
  name: ["toValue"],
161
130
  path: "vue"
@@ -261,145 +230,113 @@ const infiniteQueryGenerator = (0, _kubb_core.defineGenerator)({
261
230
  });
262
231
  //#endregion
263
232
  //#region src/generators/mutationGenerator.tsx
233
+ /**
234
+ * Built-in generator for `useMutation` composables. Emits one
235
+ * `useFooMutation` composable per POST/PUT/DELETE operation (configurable
236
+ * via `mutation.methods`) plus the matching `fooMutationKey` helper.
237
+ */
264
238
  const mutationGenerator = (0, _kubb_core.defineGenerator)({
265
239
  name: "vue-query-mutation",
266
240
  renderer: _kubb_renderer_jsx.jsxRenderer,
267
241
  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;
242
+ if (!_kubb_core.ast.isHttpOperationNode(node)) return null;
243
+ const { config, driver, resolver, root } = ctx;
244
+ const { output, query, mutation, paramsCasing, paramsType, pathParamsType, parser, client: clientOptions, group } = ctx.options;
270
245
  const pluginTs = driver.getPlugin(_kubb_plugin_ts.pluginTsName);
271
246
  if (!pluginTs) return null;
272
247
  const tsResolver = driver.getResolver(_kubb_plugin_ts.pluginTsName);
273
248
  const isQuery = query === false || !!query && query.methods.some((method) => node.method.toLowerCase() === method.toLowerCase());
274
- if (!(mutation !== false && !isQuery && (0, remeda.difference)(mutation ? mutation.methods : [], query ? query.methods : []).some((method) => node.method.toLowerCase() === method.toLowerCase()))) return null;
249
+ const queryMethods = new Set(query ? query.methods : []);
250
+ if (!(mutation !== false && !isQuery && (mutation ? mutation.methods : []).some((method) => !queryMethods.has(method) && node.method.toLowerCase() === method.toLowerCase()))) return null;
275
251
  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);
252
+ const mutationHookName = resolver.resolveMutationName(node);
253
+ const mutationTypeName = resolver.resolveMutationTypeName(node);
254
+ const mutationKeyName = resolver.resolveMutationKeyName(node);
255
+ const clientName = resolver.resolveClientName(node);
282
256
  const meta = {
283
- file: resolver.resolveFile({
284
- name: mutationHookName,
285
- extname: ".ts",
286
- tag: node.tags[0] ?? "default",
287
- path: node.path
288
- }, {
257
+ file: resolver.resolveFile(require_components.operationFileEntry(node, mutationHookName), {
289
258
  root,
290
259
  output,
291
- group
260
+ group: group ?? void 0
292
261
  }),
293
- fileTs: tsResolver.resolveFile({
294
- name: node.operationId,
295
- extname: ".ts",
296
- tag: node.tags[0] ?? "default",
297
- path: node.path
298
- }, {
262
+ fileTs: tsResolver.resolveFile(require_components.operationFileEntry(node, node.operationId), {
299
263
  root,
300
264
  output: pluginTs.options?.output ?? output,
301
- group: pluginTs.options?.group
265
+ group: pluginTs.options?.group ?? void 0
302
266
  })
303
267
  };
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;
318
- const fileZod = zodResolver ? zodResolver.resolveFile({
319
- name: node.operationId,
320
- extname: ".ts",
321
- tag: node.tags[0] ?? "default",
322
- path: node.path
323
- }, {
268
+ const importedTypeNames = require_components.resolveOperationTypeNames(node, tsResolver, {
269
+ paramsCasing,
270
+ order: "body-response-first"
271
+ });
272
+ const pluginZod = (0, _kubb_plugin_client.isParserEnabled)(parser) ? driver.getPlugin(_kubb_plugin_zod.pluginZodName) : null;
273
+ const zodResolver = pluginZod ? driver.getResolver(_kubb_plugin_zod.pluginZodName) : null;
274
+ const fileZod = zodResolver ? zodResolver.resolveFile(require_components.operationFileEntry(node, node.operationId), {
324
275
  root,
325
276
  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) : [];
277
+ group: pluginZod?.options?.group ?? void 0
278
+ }) : null;
279
+ const zodSchemaNames = require_components.resolveZodSchemaNames(node, zodResolver, parser);
329
280
  const clientPlugin = driver.getPlugin(_kubb_plugin_client.pluginClientName);
330
281
  const shouldUseClientPlugin = clientPlugin?.name === _kubb_plugin_client.pluginClientName && clientOptions.clientType !== "class";
331
- const clientResolver = shouldUseClientPlugin ? driver.getResolver(_kubb_plugin_client.pluginClientName) : void 0;
332
- const clientFile = shouldUseClientPlugin ? clientResolver?.resolveFile({
333
- name: node.operationId,
334
- extname: ".ts",
335
- tag: node.tags[0] ?? "default",
336
- path: node.path
337
- }, {
282
+ const clientResolver = shouldUseClientPlugin ? driver.getResolver(_kubb_plugin_client.pluginClientName) : null;
283
+ const clientFile = shouldUseClientPlugin ? clientResolver?.resolveFile(require_components.operationFileEntry(node, node.operationId), {
338
284
  root,
339
285
  output: clientPlugin?.options?.output ?? output,
340
- group: clientPlugin?.options?.group
341
- }) : void 0;
286
+ group: clientPlugin?.options?.group ?? void 0
287
+ }) : null;
342
288
  const resolvedClientName = shouldUseClientPlugin ? clientResolver?.resolveName(node.operationId) ?? clientName : clientName;
343
289
  return /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx.File, {
344
290
  baseName: meta.file.baseName,
345
291
  path: meta.file.path,
346
292
  meta: meta.file.meta,
347
- banner: resolver.resolveBanner(adapter.inputNode, {
293
+ banner: resolver.resolveBanner(ctx.meta, {
348
294
  output,
349
- config
295
+ config,
296
+ file: {
297
+ path: meta.file.path,
298
+ baseName: meta.file.baseName
299
+ }
350
300
  }),
351
- footer: resolver.resolveFooter(adapter.inputNode, {
301
+ footer: resolver.resolveFooter(ctx.meta, {
352
302
  output,
353
- config
303
+ config,
304
+ file: {
305
+ path: meta.file.path,
306
+ baseName: meta.file.baseName
307
+ }
354
308
  }),
355
309
  children: [
356
- parser === "zod" && fileZod && zodSchemaNames.length > 0 && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
310
+ fileZod && zodSchemaNames.length > 0 && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
357
311
  name: zodSchemaNames,
358
312
  root: meta.file.path,
359
313
  path: fileZod.path
360
314
  }),
361
- clientOptions.importPath ? /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [
362
- !shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
363
- name: "fetch",
364
- path: clientOptions.importPath
365
- }),
366
- /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
367
- name: [
368
- "Client",
369
- "RequestConfig",
370
- "ResponseErrorConfig"
371
- ],
372
- path: clientOptions.importPath,
373
- isTypeOnly: true
374
- }),
375
- clientOptions.dataReturnType === "full" && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
376
- name: ["ResponseConfig"],
377
- path: clientOptions.importPath,
378
- isTypeOnly: true
379
- })
380
- ] }) : /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [
381
- !shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
382
- name: ["fetch"],
383
- root: meta.file.path,
384
- path: node_path.default.resolve(root, ".kubb/fetch.ts")
385
- }),
386
- /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
387
- name: [
388
- "Client",
389
- "RequestConfig",
390
- "ResponseErrorConfig"
391
- ],
392
- root: meta.file.path,
393
- path: node_path.default.resolve(root, ".kubb/fetch.ts"),
394
- isTypeOnly: true
395
- }),
396
- clientOptions.dataReturnType === "full" && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
397
- name: ["ResponseConfig"],
398
- root: meta.file.path,
399
- path: node_path.default.resolve(root, ".kubb/fetch.ts"),
400
- isTypeOnly: true
401
- })
402
- ] }),
315
+ clientOptions.importPath ? /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [!shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
316
+ name: "client",
317
+ path: clientOptions.importPath
318
+ }), /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
319
+ name: [
320
+ "Client",
321
+ "RequestConfig",
322
+ "ResponseErrorConfig"
323
+ ],
324
+ path: clientOptions.importPath,
325
+ isTypeOnly: true
326
+ })] }) : /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [!shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
327
+ name: ["client"],
328
+ root: meta.file.path,
329
+ path: node_path.default.resolve(root, ".kubb/client.ts")
330
+ }), /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
331
+ name: [
332
+ "Client",
333
+ "RequestConfig",
334
+ "ResponseErrorConfig"
335
+ ],
336
+ root: meta.file.path,
337
+ path: node_path.default.resolve(root, ".kubb/client.ts"),
338
+ isTypeOnly: true
339
+ })] }),
403
340
  /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
404
341
  name: ["MaybeRefOrGetter"],
405
342
  path: "vue",
@@ -410,11 +347,16 @@ const mutationGenerator = (0, _kubb_core.defineGenerator)({
410
347
  root: meta.file.path,
411
348
  path: clientFile.path
412
349
  }),
413
- !shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
350
+ !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
351
  name: ["buildFormData"],
415
352
  root: meta.file.path,
416
353
  path: node_path.default.resolve(root, ".kubb/config.ts")
417
354
  }),
355
+ !shouldUseClientPlugin && parser === "zod" && zodResolver && node.requestBody?.content?.[0]?.schema && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
356
+ name: ["z"],
357
+ path: "zod",
358
+ isTypeOnly: true
359
+ }),
418
360
  meta.fileTs && importedTypeNames.length > 0 && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
419
361
  name: Array.from(new Set(importedTypeNames)),
420
362
  root: meta.file.path,
@@ -469,147 +411,116 @@ const mutationGenerator = (0, _kubb_core.defineGenerator)({
469
411
  });
470
412
  //#endregion
471
413
  //#region src/generators/queryGenerator.tsx
414
+ /**
415
+ * Built-in generator for `useQuery` composables. Emits one `useFooQuery`
416
+ * composable per GET operation (configurable via `query.methods`) plus the
417
+ * matching `fooQueryKey` / `fooQueryOptions` helpers.
418
+ */
472
419
  const queryGenerator = (0, _kubb_core.defineGenerator)({
473
420
  name: "vue-query",
474
421
  renderer: _kubb_renderer_jsx.jsxRenderer,
475
422
  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;
423
+ if (!_kubb_core.ast.isHttpOperationNode(node)) return null;
424
+ const { config, driver, resolver, root } = ctx;
425
+ const { output, query, mutation, paramsCasing, paramsType, pathParamsType, parser, client: clientOptions, group } = ctx.options;
478
426
  const pluginTs = driver.getPlugin(_kubb_plugin_ts.pluginTsName);
479
427
  if (!pluginTs) return null;
480
428
  const tsResolver = driver.getResolver(_kubb_plugin_ts.pluginTsName);
481
429
  const isQuery = query === false || !!query && query.methods.some((method) => node.method.toLowerCase() === method.toLowerCase());
482
- const isMutation = mutation !== false && !isQuery && (0, remeda.difference)(mutation ? mutation.methods : [], query ? query.methods : []).some((method) => node.method.toLowerCase() === method.toLowerCase());
430
+ const queryMethods = new Set(query ? query.methods : []);
431
+ const isMutation = mutation !== false && !isQuery && (mutation ? mutation.methods : []).some((method) => !queryMethods.has(method) && node.method.toLowerCase() === method.toLowerCase());
483
432
  if (!isQuery || isMutation) return null;
484
433
  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);
434
+ const queryName = resolver.resolveQueryName(node);
435
+ const queryOptionsName = resolver.resolveQueryOptionsName(node);
436
+ const queryKeyName = resolver.resolveQueryKeyName(node);
437
+ const queryKeyTypeName = resolver.resolveQueryKeyTypeName(node);
438
+ const clientName = resolver.resolveClientName(node);
492
439
  const meta = {
493
- file: resolver.resolveFile({
494
- name: queryName,
495
- extname: ".ts",
496
- tag: node.tags[0] ?? "default",
497
- path: node.path
498
- }, {
440
+ file: resolver.resolveFile(require_components.operationFileEntry(node, queryName), {
499
441
  root,
500
442
  output,
501
- group
443
+ group: group ?? void 0
502
444
  }),
503
- fileTs: tsResolver.resolveFile({
504
- name: node.operationId,
505
- extname: ".ts",
506
- tag: node.tags[0] ?? "default",
507
- path: node.path
508
- }, {
445
+ fileTs: tsResolver.resolveFile(require_components.operationFileEntry(node, node.operationId), {
509
446
  root,
510
447
  output: pluginTs.options?.output ?? output,
511
- group: pluginTs.options?.group
448
+ group: pluginTs.options?.group ?? void 0
512
449
  })
513
450
  };
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;
528
- const fileZod = zodResolver ? zodResolver.resolveFile({
529
- name: node.operationId,
530
- extname: ".ts",
531
- tag: node.tags[0] ?? "default",
532
- path: node.path
533
- }, {
451
+ const importedTypeNames = require_components.resolveOperationTypeNames(node, tsResolver, {
452
+ paramsCasing,
453
+ exclude: [queryKeyTypeName],
454
+ order: "body-response-first"
455
+ });
456
+ const pluginZod = (0, _kubb_plugin_client.isParserEnabled)(parser) ? driver.getPlugin(_kubb_plugin_zod.pluginZodName) : null;
457
+ const zodResolver = pluginZod ? driver.getResolver(_kubb_plugin_zod.pluginZodName) : null;
458
+ const fileZod = zodResolver ? zodResolver.resolveFile(require_components.operationFileEntry(node, node.operationId), {
534
459
  root,
535
460
  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) : [];
461
+ group: pluginZod?.options?.group ?? void 0
462
+ }) : null;
463
+ const zodSchemaNames = require_components.resolveZodSchemaNames(node, zodResolver, parser);
539
464
  const clientPlugin = driver.getPlugin(_kubb_plugin_client.pluginClientName);
540
465
  const shouldUseClientPlugin = clientPlugin?.name === _kubb_plugin_client.pluginClientName && clientOptions.clientType !== "class";
541
- const clientResolver = shouldUseClientPlugin ? driver.getResolver(_kubb_plugin_client.pluginClientName) : void 0;
542
- const clientFile = shouldUseClientPlugin ? clientResolver?.resolveFile({
543
- name: node.operationId,
544
- extname: ".ts",
545
- tag: node.tags[0] ?? "default",
546
- path: node.path
547
- }, {
466
+ const clientResolver = shouldUseClientPlugin ? driver.getResolver(_kubb_plugin_client.pluginClientName) : null;
467
+ const clientFile = shouldUseClientPlugin ? clientResolver?.resolveFile(require_components.operationFileEntry(node, node.operationId), {
548
468
  root,
549
469
  output: clientPlugin?.options?.output ?? output,
550
- group: clientPlugin?.options?.group
551
- }) : void 0;
470
+ group: clientPlugin?.options?.group ?? void 0
471
+ }) : null;
552
472
  const resolvedClientName = shouldUseClientPlugin ? clientResolver?.resolveName(node.operationId) ?? clientName : clientName;
553
473
  return /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx.File, {
554
474
  baseName: meta.file.baseName,
555
475
  path: meta.file.path,
556
476
  meta: meta.file.meta,
557
- banner: resolver.resolveBanner(adapter.inputNode, {
477
+ banner: resolver.resolveBanner(ctx.meta, {
558
478
  output,
559
- config
479
+ config,
480
+ file: {
481
+ path: meta.file.path,
482
+ baseName: meta.file.baseName
483
+ }
560
484
  }),
561
- footer: resolver.resolveFooter(adapter.inputNode, {
485
+ footer: resolver.resolveFooter(ctx.meta, {
562
486
  output,
563
- config
487
+ config,
488
+ file: {
489
+ path: meta.file.path,
490
+ baseName: meta.file.baseName
491
+ }
564
492
  }),
565
493
  children: [
566
- parser === "zod" && fileZod && zodSchemaNames.length > 0 && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
494
+ fileZod && zodSchemaNames.length > 0 && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
567
495
  name: zodSchemaNames,
568
496
  root: meta.file.path,
569
497
  path: fileZod.path
570
498
  }),
571
- clientOptions.importPath ? /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [
572
- !shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
573
- name: "fetch",
574
- path: clientOptions.importPath
575
- }),
576
- /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
577
- name: [
578
- "Client",
579
- "RequestConfig",
580
- "ResponseErrorConfig"
581
- ],
582
- path: clientOptions.importPath,
583
- isTypeOnly: true
584
- }),
585
- clientOptions.dataReturnType === "full" && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
586
- name: ["ResponseConfig"],
587
- path: clientOptions.importPath,
588
- isTypeOnly: true
589
- })
590
- ] }) : /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [
591
- !shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
592
- name: ["fetch"],
593
- root: meta.file.path,
594
- path: node_path.default.resolve(root, ".kubb/fetch.ts")
595
- }),
596
- /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
597
- name: [
598
- "Client",
599
- "RequestConfig",
600
- "ResponseErrorConfig"
601
- ],
602
- root: meta.file.path,
603
- path: node_path.default.resolve(root, ".kubb/fetch.ts"),
604
- isTypeOnly: true
605
- }),
606
- clientOptions.dataReturnType === "full" && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
607
- name: ["ResponseConfig"],
608
- root: meta.file.path,
609
- path: node_path.default.resolve(root, ".kubb/fetch.ts"),
610
- isTypeOnly: true
611
- })
612
- ] }),
499
+ clientOptions.importPath ? /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [!shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
500
+ name: "client",
501
+ path: clientOptions.importPath
502
+ }), /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
503
+ name: [
504
+ "Client",
505
+ "RequestConfig",
506
+ "ResponseErrorConfig"
507
+ ],
508
+ path: clientOptions.importPath,
509
+ isTypeOnly: true
510
+ })] }) : /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [!shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
511
+ name: ["client"],
512
+ root: meta.file.path,
513
+ path: node_path.default.resolve(root, ".kubb/client.ts")
514
+ }), /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
515
+ name: [
516
+ "Client",
517
+ "RequestConfig",
518
+ "ResponseErrorConfig"
519
+ ],
520
+ root: meta.file.path,
521
+ path: node_path.default.resolve(root, ".kubb/client.ts"),
522
+ isTypeOnly: true
523
+ })] }),
613
524
  /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
614
525
  name: ["toValue"],
615
526
  path: "vue"
@@ -723,4 +634,4 @@ Object.defineProperty(exports, "queryGenerator", {
723
634
  }
724
635
  });
725
636
 
726
- //# sourceMappingURL=generators-C4gs_P1i.cjs.map
637
+ //# sourceMappingURL=generators-BTtcGtUY.cjs.map