@kubb/plugin-react-query 5.0.0-alpha.8 → 5.0.0-beta.10

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 (54) hide show
  1. package/LICENSE +17 -10
  2. package/README.md +34 -85
  3. package/dist/components-Dow6tde8.js +1459 -0
  4. package/dist/components-Dow6tde8.js.map +1 -0
  5. package/dist/components-HwdCDefj.cjs +1603 -0
  6. package/dist/components-HwdCDefj.cjs.map +1 -0
  7. package/dist/components.cjs +1 -1
  8. package/dist/components.d.ts +49 -179
  9. package/dist/components.js +1 -1
  10. package/dist/generators-CcOmnTPa.cjs +1454 -0
  11. package/dist/generators-CcOmnTPa.cjs.map +1 -0
  12. package/dist/generators-yfZr_qfT.js +1412 -0
  13. package/dist/generators-yfZr_qfT.js.map +1 -0
  14. package/dist/generators.cjs +1 -1
  15. package/dist/generators.d.ts +9 -476
  16. package/dist/generators.js +1 -1
  17. package/dist/index.cjs +197 -126
  18. package/dist/index.cjs.map +1 -1
  19. package/dist/index.d.ts +4 -4
  20. package/dist/index.js +193 -126
  21. package/dist/index.js.map +1 -1
  22. package/dist/types-DG_OxOym.d.ts +363 -0
  23. package/extension.yaml +911 -0
  24. package/package.json +59 -64
  25. package/src/components/InfiniteQuery.tsx +79 -138
  26. package/src/components/InfiniteQueryOptions.tsx +55 -166
  27. package/src/components/Mutation.tsx +74 -111
  28. package/src/components/MutationOptions.tsx +61 -80
  29. package/src/components/Query.tsx +66 -142
  30. package/src/components/QueryOptions.tsx +56 -138
  31. package/src/components/SuspenseInfiniteQuery.tsx +79 -138
  32. package/src/components/SuspenseInfiniteQueryOptions.tsx +55 -166
  33. package/src/components/SuspenseQuery.tsx +66 -152
  34. package/src/generators/customHookOptionsFileGenerator.tsx +37 -51
  35. package/src/generators/hookOptionsGenerator.tsx +111 -174
  36. package/src/generators/infiniteQueryGenerator.tsx +158 -178
  37. package/src/generators/mutationGenerator.tsx +112 -139
  38. package/src/generators/queryGenerator.tsx +128 -142
  39. package/src/generators/suspenseInfiniteQueryGenerator.tsx +157 -156
  40. package/src/generators/suspenseQueryGenerator.tsx +126 -152
  41. package/src/index.ts +1 -1
  42. package/src/plugin.ts +134 -187
  43. package/src/resolvers/resolverReactQuery.ts +107 -0
  44. package/src/types.ts +172 -49
  45. package/src/utils.ts +10 -0
  46. package/dist/components-BHQT9ZLc.cjs +0 -1634
  47. package/dist/components-BHQT9ZLc.cjs.map +0 -1
  48. package/dist/components-CpyHYGOw.js +0 -1520
  49. package/dist/components-CpyHYGOw.js.map +0 -1
  50. package/dist/generators-DP07m3rH.cjs +0 -1469
  51. package/dist/generators-DP07m3rH.cjs.map +0 -1
  52. package/dist/generators-DkQwKTc2.js +0 -1427
  53. package/dist/generators-DkQwKTc2.js.map +0 -1
  54. package/dist/types-D5S7Ny9r.d.ts +0 -270
@@ -0,0 +1,1454 @@
1
+ const require_components = require("./components-HwdCDefj.cjs");
2
+ let node_path = require("node:path");
3
+ node_path = require_components.__toESM(node_path);
4
+ let _kubb_core = require("@kubb/core");
5
+ let _kubb_plugin_client = require("@kubb/plugin-client");
6
+ let _kubb_plugin_ts = require("@kubb/plugin-ts");
7
+ let _kubb_plugin_zod = require("@kubb/plugin-zod");
8
+ let _kubb_renderer_jsx = require("@kubb/renderer-jsx");
9
+ let _kubb_renderer_jsx_jsx_runtime = require("@kubb/renderer-jsx/jsx-runtime");
10
+ let node_fs = require("node:fs");
11
+ node_fs = require_components.__toESM(node_fs);
12
+ let remeda = require("remeda");
13
+ //#region src/generators/customHookOptionsFileGenerator.tsx
14
+ const customHookOptionsFileGenerator = (0, _kubb_core.defineGenerator)({
15
+ name: "react-query-custom-hook-options-file",
16
+ renderer: _kubb_renderer_jsx.jsxRenderer,
17
+ operations(nodes, ctx) {
18
+ const { resolver, config, root } = ctx;
19
+ const { output, customOptions, query, group } = ctx.options;
20
+ if (!customOptions) return null;
21
+ const override = output.override ?? config.output.override ?? false;
22
+ const { importPath, name } = customOptions;
23
+ const hookOptionsName = resolver.resolveHookOptionsName();
24
+ const customHookOptionsName = resolver.resolveCustomHookOptionsName();
25
+ const reactQueryImportPath = query ? query.importPath : "@tanstack/react-query";
26
+ let hookFilePath;
27
+ const firstNode = nodes[0];
28
+ if (firstNode) {
29
+ const hookName = resolver.resolveQueryName(firstNode);
30
+ hookFilePath = resolver.resolveFile({
31
+ name: hookName,
32
+ extname: ".ts",
33
+ tag: firstNode.tags[0] ?? "default",
34
+ path: firstNode.path
35
+ }, {
36
+ root,
37
+ output,
38
+ group
39
+ }).path;
40
+ } else hookFilePath = node_path.default.resolve(root, "index.ts");
41
+ const ensureExtension = (filePath, extname) => {
42
+ if (node_path.default.extname(filePath) === "") return filePath + extname;
43
+ return filePath;
44
+ };
45
+ const basePath = node_path.default.dirname(hookFilePath);
46
+ const actualFilePath = ensureExtension(importPath, ".ts");
47
+ const file = {
48
+ baseName: node_path.default.basename(actualFilePath),
49
+ name: node_path.default.basename(actualFilePath, node_path.default.extname(actualFilePath)),
50
+ path: node_path.default.resolve(basePath, actualFilePath)
51
+ };
52
+ if (node_fs.default.existsSync(file.path) && !override) return null;
53
+ return /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx.File, {
54
+ baseName: file.baseName,
55
+ path: file.path,
56
+ children: [
57
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
58
+ name: ["QueryClient"],
59
+ path: reactQueryImportPath,
60
+ isTypeOnly: true
61
+ }),
62
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
63
+ name: ["useQueryClient"],
64
+ path: reactQueryImportPath
65
+ }),
66
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
67
+ name: [hookOptionsName],
68
+ root: file.path,
69
+ path: node_path.default.resolve(root, "./index.ts")
70
+ }),
71
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx.File.Source, {
72
+ name: file.name,
73
+ isExportable: true,
74
+ isIndexable: true,
75
+ children: [/* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.Function, {
76
+ name: customHookOptionsName,
77
+ params: "{ queryClient }: { queryClient: QueryClient }",
78
+ returnType: `Partial<${hookOptionsName}>`,
79
+ children: `return {
80
+ // TODO: Define custom hook options here
81
+ // Example:
82
+ // useUpdatePetHook: {
83
+ // onSuccess: () => {
84
+ // void queryClient.invalidateQueries({ queryKey: ['pet'] })
85
+ // }
86
+ // }
87
+ }`
88
+ }), /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.Function, {
89
+ name,
90
+ generics: `T extends keyof ${hookOptionsName}`,
91
+ params: "{ hookName, operationId }: { hookName: T, operationId: string }",
92
+ returnType: `${hookOptionsName}[T]`,
93
+ export: true,
94
+ children: `const queryClient = useQueryClient()
95
+ const customOptions = ${customHookOptionsName}({ queryClient })
96
+ return customOptions[hookName] ?? {}`
97
+ })]
98
+ })
99
+ ]
100
+ });
101
+ }
102
+ });
103
+ //#endregion
104
+ //#region src/generators/hookOptionsGenerator.tsx
105
+ const hookOptionsGenerator = (0, _kubb_core.defineGenerator)({
106
+ name: "react-query-hook-options",
107
+ renderer: _kubb_renderer_jsx.jsxRenderer,
108
+ operations(nodes, ctx) {
109
+ const { resolver, config, root, adapter } = ctx;
110
+ const { output, customOptions, query, mutation, suspense, infinite, group, override } = ctx.options;
111
+ if (!customOptions) return null;
112
+ const name = resolver.resolveHookOptionsName();
113
+ const resolvedFile = resolver.resolveFile({
114
+ name,
115
+ extname: ".ts"
116
+ }, {
117
+ root,
118
+ output,
119
+ group
120
+ });
121
+ const hookOptionsFile = {
122
+ ...resolvedFile,
123
+ baseName: `${name}.ts`,
124
+ path: resolvedFile.path.replace(/[^/\\]+\.ts$/, `${name}.ts`)
125
+ };
126
+ const imports = [];
127
+ const hookOptions = {};
128
+ for (const node of nodes) {
129
+ const opOverrides = require_components.resolveOperationOverrides(node, override);
130
+ const nodeQuery = "query" in opOverrides ? opOverrides.query : query;
131
+ const nodeMutation = "mutation" in opOverrides ? opOverrides.mutation : mutation;
132
+ const nodeInfinite = "infinite" in opOverrides ? opOverrides.infinite : infinite;
133
+ const nodeInfiniteOptions = nodeInfinite && typeof nodeInfinite === "object" ? nodeInfinite : void 0;
134
+ const isQueryOp = nodeQuery === false ? !!query && query.methods.some((m) => node.method.toLowerCase() === m.toLowerCase()) : !!nodeQuery && nodeQuery.methods.some((m) => node.method.toLowerCase() === m.toLowerCase());
135
+ const isMutationOp = nodeMutation !== false && !isQueryOp && (0, remeda.difference)(nodeMutation ? nodeMutation.methods : [], nodeQuery ? nodeQuery.methods : []).some((m) => node.method.toLowerCase() === m.toLowerCase());
136
+ const isSuspenseOp = !!suspense;
137
+ const isInfiniteOp = !!nodeInfiniteOptions;
138
+ if (isQueryOp) {
139
+ const queryOptionsName = resolver.resolveQueryOptionsName(node);
140
+ const queryHookName = resolver.resolveQueryName(node);
141
+ const queryHookFile = resolver.resolveFile({
142
+ name: queryHookName,
143
+ extname: ".ts",
144
+ tag: node.tags[0] ?? "default",
145
+ path: node.path
146
+ }, {
147
+ root,
148
+ output,
149
+ group
150
+ });
151
+ imports.push(/* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
152
+ name: [queryOptionsName],
153
+ root: hookOptionsFile.path,
154
+ path: queryHookFile.path
155
+ }));
156
+ hookOptions[queryHookName] = `Partial<ReturnType<typeof ${queryOptionsName}>>`;
157
+ if (isSuspenseOp) {
158
+ const suspenseOptionsName = resolver.resolveSuspenseQueryOptionsName(node);
159
+ const suspenseHookName = resolver.resolveSuspenseQueryName(node);
160
+ const suspenseHookFile = resolver.resolveFile({
161
+ name: suspenseHookName,
162
+ extname: ".ts",
163
+ tag: node.tags[0] ?? "default",
164
+ path: node.path
165
+ }, {
166
+ root,
167
+ output,
168
+ group
169
+ });
170
+ imports.push(/* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
171
+ name: [suspenseOptionsName],
172
+ root: hookOptionsFile.path,
173
+ path: suspenseHookFile.path
174
+ }));
175
+ hookOptions[suspenseHookName] = `Partial<ReturnType<typeof ${suspenseOptionsName}>>`;
176
+ }
177
+ if (isInfiniteOp) {
178
+ const normalizeKey = (key) => key.replace(/\?$/, "");
179
+ const queryParamKeys = require_components.getOperationParameters(node).query.map((p) => p.name);
180
+ if (nodeInfiniteOptions.queryParam ? queryParamKeys.some((k) => normalizeKey(k) === nodeInfiniteOptions.queryParam) : false) {
181
+ const infiniteOptionsName = resolver.resolveInfiniteQueryOptionsName(node);
182
+ const infiniteHookName = resolver.resolveInfiniteQueryName(node);
183
+ const infiniteHookFile = resolver.resolveFile({
184
+ name: infiniteHookName,
185
+ extname: ".ts",
186
+ tag: node.tags[0] ?? "default",
187
+ path: node.path
188
+ }, {
189
+ root,
190
+ output,
191
+ group
192
+ });
193
+ imports.push(/* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
194
+ name: [infiniteOptionsName],
195
+ root: hookOptionsFile.path,
196
+ path: infiniteHookFile.path
197
+ }));
198
+ hookOptions[infiniteHookName] = `Partial<ReturnType<typeof ${infiniteOptionsName}>>`;
199
+ if (isSuspenseOp) {
200
+ const suspenseInfiniteOptionsName = resolver.resolveSuspenseInfiniteQueryOptionsName(node);
201
+ const suspenseInfiniteHookName = resolver.resolveSuspenseInfiniteQueryName(node);
202
+ const suspenseInfiniteHookFile = resolver.resolveFile({
203
+ name: suspenseInfiniteHookName,
204
+ extname: ".ts",
205
+ tag: node.tags[0] ?? "default",
206
+ path: node.path
207
+ }, {
208
+ root,
209
+ output,
210
+ group
211
+ });
212
+ imports.push(/* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
213
+ name: [suspenseInfiniteOptionsName],
214
+ root: hookOptionsFile.path,
215
+ path: suspenseInfiniteHookFile.path
216
+ }));
217
+ hookOptions[suspenseInfiniteHookName] = `Partial<ReturnType<typeof ${suspenseInfiniteOptionsName}>>`;
218
+ }
219
+ }
220
+ }
221
+ }
222
+ if (isMutationOp) {
223
+ const mutationOptionsName = resolver.resolveMutationOptionsName(node);
224
+ const mutationHookName = resolver.resolveMutationName(node);
225
+ const mutationHookFile = resolver.resolveFile({
226
+ name: mutationHookName,
227
+ extname: ".ts",
228
+ tag: node.tags[0] ?? "default",
229
+ path: node.path
230
+ }, {
231
+ root,
232
+ output,
233
+ group
234
+ });
235
+ imports.push(/* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
236
+ name: [mutationOptionsName],
237
+ root: hookOptionsFile.path,
238
+ path: mutationHookFile.path
239
+ }));
240
+ hookOptions[mutationHookName] = `Partial<ReturnType<typeof ${mutationOptionsName}>>`;
241
+ }
242
+ }
243
+ return /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx.File, {
244
+ baseName: hookOptionsFile.baseName,
245
+ path: hookOptionsFile.path,
246
+ meta: hookOptionsFile.meta,
247
+ banner: resolver.resolveBanner(adapter.inputNode, {
248
+ output,
249
+ config
250
+ }),
251
+ footer: resolver.resolveFooter(adapter.inputNode, {
252
+ output,
253
+ config
254
+ }),
255
+ children: [imports, /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Source, {
256
+ name,
257
+ isExportable: true,
258
+ isIndexable: true,
259
+ isTypeOnly: true,
260
+ children: /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.Type, {
261
+ export: true,
262
+ name,
263
+ children: `{ ${Object.keys(hookOptions).map((key) => `${JSON.stringify(key)}: ${hookOptions[key]}`).join(", ")} }`
264
+ })
265
+ })]
266
+ });
267
+ }
268
+ });
269
+ //#endregion
270
+ //#region src/generators/infiniteQueryGenerator.tsx
271
+ const infiniteQueryGenerator = (0, _kubb_core.defineGenerator)({
272
+ name: "react-infinite-query",
273
+ renderer: _kubb_renderer_jsx.jsxRenderer,
274
+ operation(node, ctx) {
275
+ const { adapter, config, driver, resolver, root } = ctx;
276
+ const { output, query, mutation, infinite, paramsCasing, paramsType, pathParamsType, parser, client: clientOptions, group, customOptions } = ctx.options;
277
+ const pluginTs = driver.getPlugin(_kubb_plugin_ts.pluginTsName);
278
+ if (!pluginTs) return null;
279
+ const tsResolver = driver.getResolver(_kubb_plugin_ts.pluginTsName);
280
+ const isQuery = query === false || !!query && query.methods.some((method) => node.method.toLowerCase() === method.toLowerCase());
281
+ const isMutation = mutation !== false && !isQuery && (0, remeda.difference)(mutation ? mutation.methods : [], query ? query.methods : []).some((method) => node.method.toLowerCase() === method.toLowerCase());
282
+ const infiniteOptions = infinite && typeof infinite === "object" ? infinite : void 0;
283
+ if (!isQuery || isMutation || !infiniteOptions) return null;
284
+ const normalizeKey = (key) => key.replace(/\?$/, "");
285
+ const queryParamKeys = require_components.getOperationParameters(node).query.map((p) => p.name);
286
+ const hasQueryParam = infiniteOptions.queryParam ? queryParamKeys.some((k) => normalizeKey(k) === infiniteOptions.queryParam) : false;
287
+ const hasCursorParam = !infiniteOptions.cursorParam || true;
288
+ if (!hasQueryParam || !hasCursorParam) return null;
289
+ const importPath = query ? query.importPath : "@tanstack/react-query";
290
+ const queryName = resolver.resolveInfiniteQueryName(node);
291
+ const queryOptionsName = resolver.resolveInfiniteQueryOptionsName(node);
292
+ const queryKeyName = resolver.resolveInfiniteQueryKeyName(node);
293
+ const queryKeyTypeName = resolver.resolveInfiniteQueryKeyTypeName(node);
294
+ const clientBaseName = resolver.resolveInfiniteClientName(node);
295
+ const meta = {
296
+ file: resolver.resolveFile({
297
+ name: queryName,
298
+ extname: ".ts",
299
+ tag: node.tags[0] ?? "default",
300
+ path: node.path
301
+ }, {
302
+ root,
303
+ output,
304
+ group
305
+ }),
306
+ fileTs: tsResolver.resolveFile({
307
+ name: node.operationId,
308
+ extname: ".ts",
309
+ tag: node.tags[0] ?? "default",
310
+ path: node.path
311
+ }, {
312
+ root,
313
+ output: pluginTs.options?.output ?? output,
314
+ group: pluginTs.options?.group
315
+ })
316
+ };
317
+ const importedTypeNames = require_components.resolveOperationTypeNames(node, tsResolver, {
318
+ paramsCasing,
319
+ exclude: [queryKeyTypeName],
320
+ order: "body-response-first"
321
+ });
322
+ const pluginZod = parser === "zod" ? driver.getPlugin(_kubb_plugin_zod.pluginZodName) : void 0;
323
+ const zodResolver = pluginZod ? driver.getResolver(_kubb_plugin_zod.pluginZodName) : void 0;
324
+ const fileZod = zodResolver ? zodResolver.resolveFile({
325
+ name: node.operationId,
326
+ extname: ".ts",
327
+ tag: node.tags[0] ?? "default",
328
+ path: node.path
329
+ }, {
330
+ root,
331
+ output: pluginZod?.options?.output ?? output,
332
+ group: pluginZod?.options?.group
333
+ }) : void 0;
334
+ const zodSchemaNames = require_components.resolveZodSchemaNames(node, zodResolver);
335
+ const clientPlugin = driver.getPlugin(_kubb_plugin_client.pluginClientName);
336
+ const shouldUseClientPlugin = clientPlugin?.name === _kubb_plugin_client.pluginClientName && clientOptions.clientType !== "class";
337
+ const clientResolver = shouldUseClientPlugin ? driver.getResolver(_kubb_plugin_client.pluginClientName) : void 0;
338
+ const clientFile = shouldUseClientPlugin ? clientResolver?.resolveFile({
339
+ name: node.operationId,
340
+ extname: ".ts",
341
+ tag: node.tags[0] ?? "default",
342
+ path: node.path
343
+ }, {
344
+ root,
345
+ output: clientPlugin?.options?.output ?? output,
346
+ group: clientPlugin?.options?.group
347
+ }) : void 0;
348
+ const resolvedClientName = shouldUseClientPlugin ? clientResolver?.resolveName(node.operationId) ?? clientBaseName : clientBaseName;
349
+ return /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx.File, {
350
+ baseName: meta.file.baseName,
351
+ path: meta.file.path,
352
+ meta: meta.file.meta,
353
+ banner: resolver.resolveBanner(adapter.inputNode, {
354
+ output,
355
+ config
356
+ }),
357
+ footer: resolver.resolveFooter(adapter.inputNode, {
358
+ output,
359
+ config
360
+ }),
361
+ children: [
362
+ fileZod && zodSchemaNames.length > 0 && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
363
+ name: zodSchemaNames,
364
+ root: meta.file.path,
365
+ path: fileZod.path
366
+ }),
367
+ clientOptions.importPath ? /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [
368
+ !shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
369
+ name: "fetch",
370
+ path: clientOptions.importPath
371
+ }),
372
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
373
+ name: [
374
+ "Client",
375
+ "RequestConfig",
376
+ "ResponseErrorConfig"
377
+ ],
378
+ path: clientOptions.importPath,
379
+ isTypeOnly: true
380
+ }),
381
+ clientOptions.dataReturnType === "full" && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
382
+ name: ["ResponseConfig"],
383
+ path: clientOptions.importPath,
384
+ isTypeOnly: true
385
+ })
386
+ ] }) : /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [
387
+ !shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
388
+ name: ["fetch"],
389
+ root: meta.file.path,
390
+ path: node_path.default.resolve(root, ".kubb/fetch.ts")
391
+ }),
392
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
393
+ name: [
394
+ "Client",
395
+ "RequestConfig",
396
+ "ResponseErrorConfig"
397
+ ],
398
+ root: meta.file.path,
399
+ path: node_path.default.resolve(root, ".kubb/fetch.ts"),
400
+ isTypeOnly: true
401
+ }),
402
+ clientOptions.dataReturnType === "full" && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
403
+ name: ["ResponseConfig"],
404
+ root: meta.file.path,
405
+ path: node_path.default.resolve(root, ".kubb/fetch.ts"),
406
+ isTypeOnly: true
407
+ })
408
+ ] }),
409
+ shouldUseClientPlugin && clientFile && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
410
+ name: [resolvedClientName],
411
+ root: meta.file.path,
412
+ path: clientFile.path
413
+ }),
414
+ !shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
415
+ name: ["buildFormData"],
416
+ root: meta.file.path,
417
+ path: node_path.default.resolve(root, ".kubb/config.ts")
418
+ }),
419
+ customOptions && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
420
+ name: [customOptions.name],
421
+ path: customOptions.importPath
422
+ }),
423
+ meta.fileTs && importedTypeNames.length > 0 && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
424
+ name: Array.from(new Set(importedTypeNames)),
425
+ root: meta.file.path,
426
+ path: meta.fileTs.path,
427
+ isTypeOnly: true
428
+ }),
429
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(require_components.QueryKey, {
430
+ name: queryKeyName,
431
+ typeName: queryKeyTypeName,
432
+ node,
433
+ tsResolver,
434
+ pathParamsType,
435
+ paramsCasing,
436
+ transformer: ctx.options.queryKey
437
+ }),
438
+ !shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_plugin_client.Client, {
439
+ name: resolvedClientName,
440
+ baseURL: clientOptions.baseURL,
441
+ dataReturnType: clientOptions.dataReturnType || "data",
442
+ paramsCasing: clientOptions.paramsCasing || paramsCasing,
443
+ paramsType,
444
+ pathParamsType,
445
+ parser,
446
+ node,
447
+ tsResolver,
448
+ zodResolver
449
+ }),
450
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
451
+ name: ["InfiniteData"],
452
+ isTypeOnly: true,
453
+ path: importPath
454
+ }),
455
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
456
+ name: ["infiniteQueryOptions"],
457
+ path: importPath
458
+ }),
459
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(require_components.InfiniteQueryOptions, {
460
+ name: queryOptionsName,
461
+ clientName: resolvedClientName,
462
+ queryKeyName,
463
+ node,
464
+ tsResolver,
465
+ paramsCasing,
466
+ paramsType,
467
+ pathParamsType,
468
+ dataReturnType: clientOptions.dataReturnType || "data",
469
+ cursorParam: infiniteOptions.cursorParam,
470
+ nextParam: infiniteOptions.nextParam,
471
+ previousParam: infiniteOptions.previousParam,
472
+ initialPageParam: infiniteOptions.initialPageParam,
473
+ queryParam: infiniteOptions.queryParam
474
+ }),
475
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
476
+ name: ["useInfiniteQuery"],
477
+ path: importPath
478
+ }),
479
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
480
+ name: [
481
+ "QueryKey",
482
+ "QueryClient",
483
+ "InfiniteQueryObserverOptions",
484
+ "UseInfiniteQueryResult"
485
+ ],
486
+ path: importPath,
487
+ isTypeOnly: true
488
+ }),
489
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(require_components.InfiniteQuery, {
490
+ name: queryName,
491
+ queryOptionsName,
492
+ queryKeyName,
493
+ queryKeyTypeName,
494
+ node,
495
+ tsResolver,
496
+ paramsCasing,
497
+ paramsType,
498
+ pathParamsType,
499
+ dataReturnType: clientOptions.dataReturnType || "data",
500
+ initialPageParam: infiniteOptions.initialPageParam,
501
+ queryParam: infiniteOptions.queryParam,
502
+ customOptions
503
+ })
504
+ ]
505
+ });
506
+ }
507
+ });
508
+ //#endregion
509
+ //#region src/generators/mutationGenerator.tsx
510
+ const mutationGenerator = (0, _kubb_core.defineGenerator)({
511
+ name: "react-query-mutation",
512
+ renderer: _kubb_renderer_jsx.jsxRenderer,
513
+ operation(node, ctx) {
514
+ const { adapter, config, driver, resolver, root } = ctx;
515
+ const { output, query, mutation, paramsCasing, paramsType, pathParamsType, parser, client: clientOptions, group, customOptions } = ctx.options;
516
+ const pluginTs = driver.getPlugin(_kubb_plugin_ts.pluginTsName);
517
+ if (!pluginTs) return null;
518
+ const tsResolver = driver.getResolver(_kubb_plugin_ts.pluginTsName);
519
+ const isQuery = query === false || !!query && query.methods.some((method) => node.method.toLowerCase() === method.toLowerCase());
520
+ if (!(mutation !== false && !isQuery && (0, remeda.difference)(mutation ? mutation.methods : [], query ? query.methods : []).some((method) => node.method.toLowerCase() === method.toLowerCase()))) return null;
521
+ const importPath = mutation ? mutation.importPath : "@tanstack/react-query";
522
+ const mutationHookName = resolver.resolveMutationName(node);
523
+ const mutationTypeName = resolver.resolveMutationTypeName(node);
524
+ const mutationOptionsName = resolver.resolveMutationOptionsName(node);
525
+ const mutationKeyName = resolver.resolveMutationKeyName(node);
526
+ const clientName = resolver.resolveClientName(node);
527
+ const meta = {
528
+ file: resolver.resolveFile({
529
+ name: mutationHookName,
530
+ extname: ".ts",
531
+ tag: node.tags[0] ?? "default",
532
+ path: node.path
533
+ }, {
534
+ root,
535
+ output,
536
+ group
537
+ }),
538
+ fileTs: tsResolver.resolveFile({
539
+ name: node.operationId,
540
+ extname: ".ts",
541
+ tag: node.tags[0] ?? "default",
542
+ path: node.path
543
+ }, {
544
+ root,
545
+ output: pluginTs.options?.output ?? output,
546
+ group: pluginTs.options?.group
547
+ })
548
+ };
549
+ const importedTypeNames = require_components.resolveOperationTypeNames(node, tsResolver, {
550
+ paramsCasing,
551
+ order: "body-response-first"
552
+ });
553
+ const pluginZod = parser === "zod" ? driver.getPlugin(_kubb_plugin_zod.pluginZodName) : void 0;
554
+ const zodResolver = pluginZod ? driver.getResolver(_kubb_plugin_zod.pluginZodName) : void 0;
555
+ const fileZod = zodResolver ? zodResolver.resolveFile({
556
+ name: node.operationId,
557
+ extname: ".ts",
558
+ tag: node.tags[0] ?? "default",
559
+ path: node.path
560
+ }, {
561
+ root,
562
+ output: pluginZod?.options?.output ?? output,
563
+ group: pluginZod?.options?.group
564
+ }) : void 0;
565
+ const zodSchemaNames = require_components.resolveZodSchemaNames(node, zodResolver);
566
+ const clientPlugin = driver.getPlugin(_kubb_plugin_client.pluginClientName);
567
+ const shouldUseClientPlugin = clientPlugin?.name === _kubb_plugin_client.pluginClientName && clientOptions.clientType !== "class";
568
+ const clientResolver = shouldUseClientPlugin ? driver.getResolver(_kubb_plugin_client.pluginClientName) : void 0;
569
+ const clientFile = shouldUseClientPlugin ? clientResolver?.resolveFile({
570
+ name: node.operationId,
571
+ extname: ".ts",
572
+ tag: node.tags[0] ?? "default",
573
+ path: node.path
574
+ }, {
575
+ root,
576
+ output: clientPlugin?.options?.output ?? output,
577
+ group: clientPlugin?.options?.group
578
+ }) : void 0;
579
+ const resolvedClientName = shouldUseClientPlugin ? clientResolver?.resolveName(node.operationId) ?? clientName : clientName;
580
+ return /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx.File, {
581
+ baseName: meta.file.baseName,
582
+ path: meta.file.path,
583
+ meta: meta.file.meta,
584
+ banner: resolver.resolveBanner(adapter.inputNode, {
585
+ output,
586
+ config
587
+ }),
588
+ footer: resolver.resolveFooter(adapter.inputNode, {
589
+ output,
590
+ config
591
+ }),
592
+ children: [
593
+ fileZod && zodSchemaNames.length > 0 && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
594
+ name: zodSchemaNames,
595
+ root: meta.file.path,
596
+ path: fileZod.path
597
+ }),
598
+ clientOptions.importPath ? /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [
599
+ !shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
600
+ name: "fetch",
601
+ path: clientOptions.importPath
602
+ }),
603
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
604
+ name: [
605
+ "Client",
606
+ "RequestConfig",
607
+ "ResponseErrorConfig"
608
+ ],
609
+ path: clientOptions.importPath,
610
+ isTypeOnly: true
611
+ }),
612
+ clientOptions.dataReturnType === "full" && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
613
+ name: ["ResponseConfig"],
614
+ path: clientOptions.importPath,
615
+ isTypeOnly: true
616
+ })
617
+ ] }) : /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [
618
+ !shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
619
+ name: ["fetch"],
620
+ root: meta.file.path,
621
+ path: node_path.default.resolve(root, ".kubb/fetch.ts")
622
+ }),
623
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
624
+ name: [
625
+ "Client",
626
+ "RequestConfig",
627
+ "ResponseErrorConfig"
628
+ ],
629
+ root: meta.file.path,
630
+ path: node_path.default.resolve(root, ".kubb/fetch.ts"),
631
+ isTypeOnly: true
632
+ }),
633
+ clientOptions.dataReturnType === "full" && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
634
+ name: ["ResponseConfig"],
635
+ root: meta.file.path,
636
+ path: node_path.default.resolve(root, ".kubb/fetch.ts"),
637
+ isTypeOnly: true
638
+ })
639
+ ] }),
640
+ shouldUseClientPlugin && clientFile && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
641
+ name: [resolvedClientName],
642
+ root: meta.file.path,
643
+ path: clientFile.path
644
+ }),
645
+ !shouldUseClientPlugin && node.requestBody?.content?.some((e) => e.contentType === "multipart/form-data") && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
646
+ name: ["buildFormData"],
647
+ root: meta.file.path,
648
+ path: node_path.default.resolve(root, ".kubb/config.ts")
649
+ }),
650
+ customOptions && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
651
+ name: [customOptions.name],
652
+ path: customOptions.importPath
653
+ }),
654
+ meta.fileTs && importedTypeNames.length > 0 && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
655
+ name: Array.from(new Set(importedTypeNames)),
656
+ root: meta.file.path,
657
+ path: meta.fileTs.path,
658
+ isTypeOnly: true
659
+ }),
660
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(require_components.MutationKey, {
661
+ name: mutationKeyName,
662
+ node,
663
+ pathParamsType,
664
+ paramsCasing,
665
+ transformer: ctx.options.mutationKey
666
+ }),
667
+ !shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_plugin_client.Client, {
668
+ name: resolvedClientName,
669
+ baseURL: clientOptions.baseURL,
670
+ dataReturnType: clientOptions.dataReturnType || "data",
671
+ paramsCasing: clientOptions.paramsCasing || paramsCasing,
672
+ paramsType,
673
+ pathParamsType,
674
+ parser,
675
+ node,
676
+ tsResolver,
677
+ zodResolver
678
+ }),
679
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
680
+ name: ["mutationOptions"],
681
+ path: importPath
682
+ }),
683
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(require_components.MutationOptions, {
684
+ name: mutationOptionsName,
685
+ clientName: resolvedClientName,
686
+ mutationKeyName,
687
+ node,
688
+ tsResolver,
689
+ paramsCasing,
690
+ paramsType,
691
+ pathParamsType,
692
+ dataReturnType: clientOptions.dataReturnType || "data"
693
+ }),
694
+ mutation && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [
695
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
696
+ name: ["useMutation"],
697
+ path: importPath
698
+ }),
699
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
700
+ name: [
701
+ "UseMutationOptions",
702
+ "UseMutationResult",
703
+ "QueryClient"
704
+ ],
705
+ path: importPath,
706
+ isTypeOnly: true
707
+ }),
708
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(require_components.Mutation, {
709
+ name: mutationHookName,
710
+ typeName: mutationTypeName,
711
+ mutationOptionsName,
712
+ mutationKeyName,
713
+ node,
714
+ tsResolver,
715
+ dataReturnType: clientOptions.dataReturnType || "data",
716
+ paramsCasing,
717
+ pathParamsType,
718
+ customOptions
719
+ })
720
+ ] })
721
+ ]
722
+ });
723
+ }
724
+ });
725
+ //#endregion
726
+ //#region src/generators/queryGenerator.tsx
727
+ const queryGenerator = (0, _kubb_core.defineGenerator)({
728
+ name: "react-query",
729
+ renderer: _kubb_renderer_jsx.jsxRenderer,
730
+ operation(node, ctx) {
731
+ const { adapter, config, driver, resolver, root } = ctx;
732
+ const { output, query, mutation, paramsCasing, paramsType, pathParamsType, parser, client: clientOptions, group, customOptions } = ctx.options;
733
+ const pluginTs = driver.getPlugin(_kubb_plugin_ts.pluginTsName);
734
+ if (!pluginTs) return null;
735
+ const tsResolver = driver.getResolver(_kubb_plugin_ts.pluginTsName);
736
+ const isQuery = query === false || !!query && query.methods.some((method) => node.method.toLowerCase() === method.toLowerCase());
737
+ const isMutation = mutation !== false && !isQuery && (0, remeda.difference)(mutation ? mutation.methods : [], query ? query.methods : []).some((method) => node.method.toLowerCase() === method.toLowerCase());
738
+ if (!isQuery || isMutation) return null;
739
+ const importPath = query ? query.importPath : "@tanstack/react-query";
740
+ const queryName = resolver.resolveQueryName(node);
741
+ const queryOptionsName = resolver.resolveQueryOptionsName(node);
742
+ const queryKeyName = resolver.resolveQueryKeyName(node);
743
+ const queryKeyTypeName = resolver.resolveQueryKeyTypeName(node);
744
+ const clientName = resolver.resolveClientName(node);
745
+ const meta = {
746
+ file: resolver.resolveFile({
747
+ name: queryName,
748
+ extname: ".ts",
749
+ tag: node.tags[0] ?? "default",
750
+ path: node.path
751
+ }, {
752
+ root,
753
+ output,
754
+ group
755
+ }),
756
+ fileTs: tsResolver.resolveFile({
757
+ name: node.operationId,
758
+ extname: ".ts",
759
+ tag: node.tags[0] ?? "default",
760
+ path: node.path
761
+ }, {
762
+ root,
763
+ output: pluginTs.options?.output ?? output,
764
+ group: pluginTs.options?.group
765
+ })
766
+ };
767
+ const importedTypeNames = require_components.resolveOperationTypeNames(node, tsResolver, {
768
+ paramsCasing,
769
+ exclude: [queryKeyTypeName],
770
+ order: "body-response-first"
771
+ });
772
+ const pluginZod = parser === "zod" ? driver.getPlugin(_kubb_plugin_zod.pluginZodName) : void 0;
773
+ const zodResolver = pluginZod ? driver.getResolver(_kubb_plugin_zod.pluginZodName) : void 0;
774
+ const fileZod = zodResolver ? zodResolver.resolveFile({
775
+ name: node.operationId,
776
+ extname: ".ts",
777
+ tag: node.tags[0] ?? "default",
778
+ path: node.path
779
+ }, {
780
+ root,
781
+ output: pluginZod?.options?.output ?? output,
782
+ group: pluginZod?.options?.group
783
+ }) : void 0;
784
+ const zodSchemaNames = require_components.resolveZodSchemaNames(node, zodResolver);
785
+ const clientPlugin = driver.getPlugin(_kubb_plugin_client.pluginClientName);
786
+ const shouldUseClientPlugin = clientPlugin?.name === _kubb_plugin_client.pluginClientName && clientOptions.clientType !== "class";
787
+ const clientResolver = shouldUseClientPlugin ? driver.getResolver(_kubb_plugin_client.pluginClientName) : void 0;
788
+ const clientFile = shouldUseClientPlugin ? clientResolver?.resolveFile({
789
+ name: node.operationId,
790
+ extname: ".ts",
791
+ tag: node.tags[0] ?? "default",
792
+ path: node.path
793
+ }, {
794
+ root,
795
+ output: clientPlugin?.options?.output ?? output,
796
+ group: clientPlugin?.options?.group
797
+ }) : void 0;
798
+ const resolvedClientName = shouldUseClientPlugin ? clientResolver?.resolveName(node.operationId) ?? clientName : clientName;
799
+ return /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx.File, {
800
+ baseName: meta.file.baseName,
801
+ path: meta.file.path,
802
+ meta: meta.file.meta,
803
+ banner: resolver.resolveBanner(adapter.inputNode, {
804
+ output,
805
+ config
806
+ }),
807
+ footer: resolver.resolveFooter(adapter.inputNode, {
808
+ output,
809
+ config
810
+ }),
811
+ children: [
812
+ fileZod && zodSchemaNames.length > 0 && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
813
+ name: zodSchemaNames,
814
+ root: meta.file.path,
815
+ path: fileZod.path
816
+ }),
817
+ clientOptions.importPath ? /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [
818
+ !shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
819
+ name: "fetch",
820
+ path: clientOptions.importPath
821
+ }),
822
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
823
+ name: [
824
+ "Client",
825
+ "RequestConfig",
826
+ "ResponseErrorConfig"
827
+ ],
828
+ path: clientOptions.importPath,
829
+ isTypeOnly: true
830
+ }),
831
+ clientOptions.dataReturnType === "full" && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
832
+ name: ["ResponseConfig"],
833
+ path: clientOptions.importPath,
834
+ isTypeOnly: true
835
+ })
836
+ ] }) : /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [
837
+ !shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
838
+ name: ["fetch"],
839
+ root: meta.file.path,
840
+ path: node_path.default.resolve(root, ".kubb/fetch.ts")
841
+ }),
842
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
843
+ name: [
844
+ "Client",
845
+ "RequestConfig",
846
+ "ResponseErrorConfig"
847
+ ],
848
+ root: meta.file.path,
849
+ path: node_path.default.resolve(root, ".kubb/fetch.ts"),
850
+ isTypeOnly: true
851
+ }),
852
+ clientOptions.dataReturnType === "full" && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
853
+ name: ["ResponseConfig"],
854
+ root: meta.file.path,
855
+ path: node_path.default.resolve(root, ".kubb/fetch.ts"),
856
+ isTypeOnly: true
857
+ })
858
+ ] }),
859
+ shouldUseClientPlugin && clientFile && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
860
+ name: [resolvedClientName],
861
+ root: meta.file.path,
862
+ path: clientFile.path
863
+ }),
864
+ !shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
865
+ name: ["buildFormData"],
866
+ root: meta.file.path,
867
+ path: node_path.default.resolve(root, ".kubb/config.ts")
868
+ }),
869
+ customOptions && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
870
+ name: [customOptions.name],
871
+ path: customOptions.importPath
872
+ }),
873
+ meta.fileTs && importedTypeNames.length > 0 && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
874
+ name: Array.from(new Set(importedTypeNames)),
875
+ root: meta.file.path,
876
+ path: meta.fileTs.path,
877
+ isTypeOnly: true
878
+ }),
879
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(require_components.QueryKey, {
880
+ name: queryKeyName,
881
+ typeName: queryKeyTypeName,
882
+ node,
883
+ tsResolver,
884
+ pathParamsType,
885
+ paramsCasing,
886
+ transformer: ctx.options.queryKey
887
+ }),
888
+ !shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_plugin_client.Client, {
889
+ name: resolvedClientName,
890
+ baseURL: clientOptions.baseURL,
891
+ dataReturnType: clientOptions.dataReturnType || "data",
892
+ paramsCasing: clientOptions.paramsCasing || paramsCasing,
893
+ paramsType,
894
+ pathParamsType,
895
+ parser,
896
+ node,
897
+ tsResolver,
898
+ zodResolver
899
+ }),
900
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
901
+ name: ["queryOptions"],
902
+ path: importPath
903
+ }),
904
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(require_components.QueryOptions, {
905
+ name: queryOptionsName,
906
+ clientName: resolvedClientName,
907
+ queryKeyName,
908
+ node,
909
+ tsResolver,
910
+ paramsCasing,
911
+ paramsType,
912
+ pathParamsType,
913
+ dataReturnType: clientOptions.dataReturnType || "data"
914
+ }),
915
+ query && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [
916
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
917
+ name: ["useQuery"],
918
+ path: importPath
919
+ }),
920
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
921
+ name: [
922
+ "QueryKey",
923
+ "QueryClient",
924
+ "QueryObserverOptions",
925
+ "UseQueryResult"
926
+ ],
927
+ path: importPath,
928
+ isTypeOnly: true
929
+ }),
930
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(require_components.Query, {
931
+ name: queryName,
932
+ queryOptionsName,
933
+ queryKeyName,
934
+ queryKeyTypeName,
935
+ node,
936
+ tsResolver,
937
+ paramsCasing,
938
+ paramsType,
939
+ pathParamsType,
940
+ dataReturnType: clientOptions.dataReturnType || "data",
941
+ customOptions
942
+ })
943
+ ] })
944
+ ]
945
+ });
946
+ }
947
+ });
948
+ //#endregion
949
+ //#region src/generators/suspenseInfiniteQueryGenerator.tsx
950
+ const suspenseInfiniteQueryGenerator = (0, _kubb_core.defineGenerator)({
951
+ name: "react-suspense-infinite-query",
952
+ renderer: _kubb_renderer_jsx.jsxRenderer,
953
+ operation(node, ctx) {
954
+ const { adapter, config, driver, resolver, root } = ctx;
955
+ const { output, query, mutation, infinite, suspense, paramsCasing, paramsType, pathParamsType, parser, client: clientOptions, group, customOptions } = ctx.options;
956
+ const pluginTs = driver.getPlugin(_kubb_plugin_ts.pluginTsName);
957
+ if (!pluginTs) return null;
958
+ const tsResolver = driver.getResolver(_kubb_plugin_ts.pluginTsName);
959
+ const isQuery = query === false || !!query && query.methods.some((method) => node.method.toLowerCase() === method.toLowerCase());
960
+ const isMutation = mutation !== false && !isQuery && (0, remeda.difference)(mutation ? mutation.methods : [], query ? query.methods : []).some((method) => node.method.toLowerCase() === method.toLowerCase());
961
+ const isSuspense = !!suspense;
962
+ const infiniteOptions = infinite && typeof infinite === "object" ? infinite : void 0;
963
+ if (!isQuery || isMutation || !isSuspense || !infiniteOptions) return null;
964
+ const normalizeKey = (key) => key.replace(/\?$/, "");
965
+ const queryParamKeys = require_components.getOperationParameters(node).query.map((p) => p.name);
966
+ const hasQueryParam = infiniteOptions.queryParam ? queryParamKeys.some((k) => normalizeKey(k) === infiniteOptions.queryParam) : false;
967
+ const hasCursorParam = !infiniteOptions.cursorParam || true;
968
+ if (!hasQueryParam || !hasCursorParam) return null;
969
+ const importPath = query ? query.importPath : "@tanstack/react-query";
970
+ const queryName = resolver.resolveSuspenseInfiniteQueryName(node);
971
+ const queryOptionsName = resolver.resolveSuspenseInfiniteQueryOptionsName(node);
972
+ const queryKeyName = resolver.resolveSuspenseInfiniteQueryKeyName(node);
973
+ const queryKeyTypeName = resolver.resolveSuspenseInfiniteQueryKeyTypeName(node);
974
+ const clientBaseName = resolver.resolveSuspenseInfiniteClientName(node);
975
+ const meta = {
976
+ file: resolver.resolveFile({
977
+ name: queryName,
978
+ extname: ".ts",
979
+ tag: node.tags[0] ?? "default",
980
+ path: node.path
981
+ }, {
982
+ root,
983
+ output,
984
+ group
985
+ }),
986
+ fileTs: tsResolver.resolveFile({
987
+ name: node.operationId,
988
+ extname: ".ts",
989
+ tag: node.tags[0] ?? "default",
990
+ path: node.path
991
+ }, {
992
+ root,
993
+ output: pluginTs.options?.output ?? output,
994
+ group: pluginTs.options?.group
995
+ })
996
+ };
997
+ const importedTypeNames = require_components.resolveOperationTypeNames(node, tsResolver, {
998
+ paramsCasing,
999
+ order: "body-response-first"
1000
+ });
1001
+ const pluginZod = parser === "zod" ? driver.getPlugin(_kubb_plugin_zod.pluginZodName) : void 0;
1002
+ const zodResolver = pluginZod ? driver.getResolver(_kubb_plugin_zod.pluginZodName) : void 0;
1003
+ const fileZod = zodResolver ? zodResolver.resolveFile({
1004
+ name: node.operationId,
1005
+ extname: ".ts",
1006
+ tag: node.tags[0] ?? "default",
1007
+ path: node.path
1008
+ }, {
1009
+ root,
1010
+ output: pluginZod?.options?.output ?? output,
1011
+ group: pluginZod?.options?.group
1012
+ }) : void 0;
1013
+ const zodSchemaNames = require_components.resolveZodSchemaNames(node, zodResolver);
1014
+ const clientPlugin = driver.getPlugin(_kubb_plugin_client.pluginClientName);
1015
+ const shouldUseClientPlugin = clientPlugin?.name === _kubb_plugin_client.pluginClientName && clientOptions.clientType !== "class";
1016
+ const clientResolver = shouldUseClientPlugin ? driver.getResolver(_kubb_plugin_client.pluginClientName) : void 0;
1017
+ const clientFile = shouldUseClientPlugin ? clientResolver?.resolveFile({
1018
+ name: node.operationId,
1019
+ extname: ".ts",
1020
+ tag: node.tags[0] ?? "default",
1021
+ path: node.path
1022
+ }, {
1023
+ root,
1024
+ output: clientPlugin?.options?.output ?? output,
1025
+ group: clientPlugin?.options?.group
1026
+ }) : void 0;
1027
+ const resolvedClientName = shouldUseClientPlugin ? clientResolver?.resolveName(node.operationId) ?? clientBaseName : clientBaseName;
1028
+ return /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx.File, {
1029
+ baseName: meta.file.baseName,
1030
+ path: meta.file.path,
1031
+ meta: meta.file.meta,
1032
+ banner: resolver.resolveBanner(adapter.inputNode, {
1033
+ output,
1034
+ config
1035
+ }),
1036
+ footer: resolver.resolveFooter(adapter.inputNode, {
1037
+ output,
1038
+ config
1039
+ }),
1040
+ children: [
1041
+ fileZod && zodSchemaNames.length > 0 && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
1042
+ name: zodSchemaNames,
1043
+ root: meta.file.path,
1044
+ path: fileZod.path
1045
+ }),
1046
+ clientOptions.importPath ? /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [
1047
+ !shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
1048
+ name: "fetch",
1049
+ path: clientOptions.importPath
1050
+ }),
1051
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
1052
+ name: [
1053
+ "Client",
1054
+ "RequestConfig",
1055
+ "ResponseErrorConfig"
1056
+ ],
1057
+ path: clientOptions.importPath,
1058
+ isTypeOnly: true
1059
+ }),
1060
+ clientOptions.dataReturnType === "full" && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
1061
+ name: ["ResponseConfig"],
1062
+ path: clientOptions.importPath,
1063
+ isTypeOnly: true
1064
+ })
1065
+ ] }) : /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [
1066
+ !shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
1067
+ name: ["fetch"],
1068
+ root: meta.file.path,
1069
+ path: node_path.default.resolve(root, ".kubb/fetch.ts")
1070
+ }),
1071
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
1072
+ name: [
1073
+ "Client",
1074
+ "RequestConfig",
1075
+ "ResponseErrorConfig"
1076
+ ],
1077
+ root: meta.file.path,
1078
+ path: node_path.default.resolve(root, ".kubb/fetch.ts"),
1079
+ isTypeOnly: true
1080
+ }),
1081
+ clientOptions.dataReturnType === "full" && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
1082
+ name: ["ResponseConfig"],
1083
+ root: meta.file.path,
1084
+ path: node_path.default.resolve(root, ".kubb/fetch.ts"),
1085
+ isTypeOnly: true
1086
+ })
1087
+ ] }),
1088
+ shouldUseClientPlugin && clientFile && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
1089
+ name: [resolvedClientName],
1090
+ root: meta.file.path,
1091
+ path: clientFile.path
1092
+ }),
1093
+ !shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
1094
+ name: ["buildFormData"],
1095
+ root: meta.file.path,
1096
+ path: node_path.default.resolve(root, ".kubb/config.ts")
1097
+ }),
1098
+ customOptions && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
1099
+ name: [customOptions.name],
1100
+ path: customOptions.importPath
1101
+ }),
1102
+ meta.fileTs && importedTypeNames.length > 0 && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
1103
+ name: Array.from(new Set(importedTypeNames)),
1104
+ root: meta.file.path,
1105
+ path: meta.fileTs.path,
1106
+ isTypeOnly: true
1107
+ }),
1108
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(require_components.QueryKey, {
1109
+ name: queryKeyName,
1110
+ typeName: queryKeyTypeName,
1111
+ node,
1112
+ tsResolver,
1113
+ pathParamsType,
1114
+ paramsCasing,
1115
+ transformer: ctx.options.queryKey
1116
+ }),
1117
+ !shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_plugin_client.Client, {
1118
+ name: resolvedClientName,
1119
+ baseURL: clientOptions.baseURL,
1120
+ dataReturnType: clientOptions.dataReturnType || "data",
1121
+ paramsCasing: clientOptions.paramsCasing || paramsCasing,
1122
+ paramsType,
1123
+ pathParamsType,
1124
+ parser,
1125
+ node,
1126
+ tsResolver,
1127
+ zodResolver
1128
+ }),
1129
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
1130
+ name: ["InfiniteData"],
1131
+ isTypeOnly: true,
1132
+ path: importPath
1133
+ }),
1134
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
1135
+ name: ["infiniteQueryOptions"],
1136
+ path: importPath
1137
+ }),
1138
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(require_components.SuspenseInfiniteQueryOptions, {
1139
+ name: queryOptionsName,
1140
+ clientName: resolvedClientName,
1141
+ queryKeyName,
1142
+ node,
1143
+ tsResolver,
1144
+ paramsCasing,
1145
+ paramsType,
1146
+ pathParamsType,
1147
+ dataReturnType: clientOptions.dataReturnType || "data",
1148
+ cursorParam: infiniteOptions.cursorParam,
1149
+ nextParam: infiniteOptions.nextParam,
1150
+ previousParam: infiniteOptions.previousParam,
1151
+ initialPageParam: infiniteOptions.initialPageParam,
1152
+ queryParam: infiniteOptions.queryParam
1153
+ }),
1154
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
1155
+ name: ["useSuspenseInfiniteQuery"],
1156
+ path: importPath
1157
+ }),
1158
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
1159
+ name: [
1160
+ "QueryKey",
1161
+ "QueryClient",
1162
+ "UseSuspenseInfiniteQueryOptions",
1163
+ "UseSuspenseInfiniteQueryResult"
1164
+ ],
1165
+ path: importPath,
1166
+ isTypeOnly: true
1167
+ }),
1168
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(require_components.SuspenseInfiniteQuery, {
1169
+ name: queryName,
1170
+ queryOptionsName,
1171
+ queryKeyName,
1172
+ queryKeyTypeName,
1173
+ node,
1174
+ tsResolver,
1175
+ paramsCasing,
1176
+ paramsType,
1177
+ pathParamsType,
1178
+ dataReturnType: clientOptions.dataReturnType || "data",
1179
+ initialPageParam: infiniteOptions.initialPageParam,
1180
+ queryParam: infiniteOptions.queryParam,
1181
+ customOptions
1182
+ })
1183
+ ]
1184
+ });
1185
+ }
1186
+ });
1187
+ //#endregion
1188
+ //#region src/generators/suspenseQueryGenerator.tsx
1189
+ const suspenseQueryGenerator = (0, _kubb_core.defineGenerator)({
1190
+ name: "react-suspense-query",
1191
+ renderer: _kubb_renderer_jsx.jsxRenderer,
1192
+ operation(node, ctx) {
1193
+ const { adapter, config, driver, resolver, root } = ctx;
1194
+ const { output, query, mutation, suspense, paramsCasing, paramsType, pathParamsType, parser, client: clientOptions, group, customOptions } = ctx.options;
1195
+ const pluginTs = driver.getPlugin(_kubb_plugin_ts.pluginTsName);
1196
+ if (!pluginTs) return null;
1197
+ const tsResolver = driver.getResolver(_kubb_plugin_ts.pluginTsName);
1198
+ const isQuery = query === false || !!query && query.methods.some((method) => node.method.toLowerCase() === method.toLowerCase());
1199
+ const isMutation = mutation !== false && !isQuery && (0, remeda.difference)(mutation ? mutation.methods : [], query ? query.methods : []).some((method) => node.method.toLowerCase() === method.toLowerCase());
1200
+ if (!isQuery || isMutation || !!!suspense) return null;
1201
+ const importPath = query ? query.importPath : "@tanstack/react-query";
1202
+ const queryName = resolver.resolveSuspenseQueryName(node);
1203
+ const queryOptionsName = resolver.resolveSuspenseQueryOptionsName(node);
1204
+ const queryKeyName = resolver.resolveSuspenseQueryKeyName(node);
1205
+ const queryKeyTypeName = resolver.resolveSuspenseQueryKeyTypeName(node);
1206
+ const clientName = resolver.resolveSuspenseClientName(node);
1207
+ const meta = {
1208
+ file: resolver.resolveFile({
1209
+ name: queryName,
1210
+ extname: ".ts",
1211
+ tag: node.tags[0] ?? "default",
1212
+ path: node.path
1213
+ }, {
1214
+ root,
1215
+ output,
1216
+ group
1217
+ }),
1218
+ fileTs: tsResolver.resolveFile({
1219
+ name: node.operationId,
1220
+ extname: ".ts",
1221
+ tag: node.tags[0] ?? "default",
1222
+ path: node.path
1223
+ }, {
1224
+ root,
1225
+ output: pluginTs.options?.output ?? output,
1226
+ group: pluginTs.options?.group
1227
+ })
1228
+ };
1229
+ const importedTypeNames = require_components.resolveOperationTypeNames(node, tsResolver, {
1230
+ paramsCasing,
1231
+ exclude: [queryKeyTypeName],
1232
+ order: "body-response-first"
1233
+ });
1234
+ const pluginZod = parser === "zod" ? driver.getPlugin(_kubb_plugin_zod.pluginZodName) : void 0;
1235
+ const zodResolver = pluginZod ? driver.getResolver(_kubb_plugin_zod.pluginZodName) : void 0;
1236
+ const fileZod = zodResolver ? zodResolver.resolveFile({
1237
+ name: node.operationId,
1238
+ extname: ".ts",
1239
+ tag: node.tags[0] ?? "default",
1240
+ path: node.path
1241
+ }, {
1242
+ root,
1243
+ output: pluginZod?.options?.output ?? output,
1244
+ group: pluginZod?.options?.group
1245
+ }) : void 0;
1246
+ const zodSchemaNames = require_components.resolveZodSchemaNames(node, zodResolver);
1247
+ const clientPlugin = driver.getPlugin(_kubb_plugin_client.pluginClientName);
1248
+ const shouldUseClientPlugin = clientPlugin?.name === _kubb_plugin_client.pluginClientName && clientOptions.clientType !== "class";
1249
+ const clientResolver = shouldUseClientPlugin ? driver.getResolver(_kubb_plugin_client.pluginClientName) : void 0;
1250
+ const clientFile = shouldUseClientPlugin ? clientResolver?.resolveFile({
1251
+ name: node.operationId,
1252
+ extname: ".ts",
1253
+ tag: node.tags[0] ?? "default",
1254
+ path: node.path
1255
+ }, {
1256
+ root,
1257
+ output: clientPlugin?.options?.output ?? output,
1258
+ group: clientPlugin?.options?.group
1259
+ }) : void 0;
1260
+ const resolvedClientName = shouldUseClientPlugin ? clientResolver?.resolveName(node.operationId) ?? clientName : clientName;
1261
+ return /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx.File, {
1262
+ baseName: meta.file.baseName,
1263
+ path: meta.file.path,
1264
+ meta: meta.file.meta,
1265
+ banner: resolver.resolveBanner(adapter.inputNode, {
1266
+ output,
1267
+ config
1268
+ }),
1269
+ footer: resolver.resolveFooter(adapter.inputNode, {
1270
+ output,
1271
+ config
1272
+ }),
1273
+ children: [
1274
+ fileZod && zodSchemaNames.length > 0 && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
1275
+ name: zodSchemaNames,
1276
+ root: meta.file.path,
1277
+ path: fileZod.path
1278
+ }),
1279
+ clientOptions.importPath ? /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [
1280
+ !shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
1281
+ name: "fetch",
1282
+ path: clientOptions.importPath
1283
+ }),
1284
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
1285
+ name: [
1286
+ "Client",
1287
+ "RequestConfig",
1288
+ "ResponseErrorConfig"
1289
+ ],
1290
+ path: clientOptions.importPath,
1291
+ isTypeOnly: true
1292
+ }),
1293
+ clientOptions.dataReturnType === "full" && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
1294
+ name: ["ResponseConfig"],
1295
+ path: clientOptions.importPath,
1296
+ isTypeOnly: true
1297
+ })
1298
+ ] }) : /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [
1299
+ !shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
1300
+ name: ["fetch"],
1301
+ root: meta.file.path,
1302
+ path: node_path.default.resolve(root, ".kubb/fetch.ts")
1303
+ }),
1304
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
1305
+ name: [
1306
+ "Client",
1307
+ "RequestConfig",
1308
+ "ResponseErrorConfig"
1309
+ ],
1310
+ root: meta.file.path,
1311
+ path: node_path.default.resolve(root, ".kubb/fetch.ts"),
1312
+ isTypeOnly: true
1313
+ }),
1314
+ clientOptions.dataReturnType === "full" && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
1315
+ name: ["ResponseConfig"],
1316
+ root: meta.file.path,
1317
+ path: node_path.default.resolve(root, ".kubb/fetch.ts"),
1318
+ isTypeOnly: true
1319
+ })
1320
+ ] }),
1321
+ shouldUseClientPlugin && clientFile && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
1322
+ name: [resolvedClientName],
1323
+ root: meta.file.path,
1324
+ path: clientFile.path
1325
+ }),
1326
+ !shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
1327
+ name: ["buildFormData"],
1328
+ root: meta.file.path,
1329
+ path: node_path.default.resolve(root, ".kubb/config.ts")
1330
+ }),
1331
+ customOptions && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
1332
+ name: [customOptions.name],
1333
+ path: customOptions.importPath
1334
+ }),
1335
+ meta.fileTs && importedTypeNames.length > 0 && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
1336
+ name: Array.from(new Set(importedTypeNames)),
1337
+ root: meta.file.path,
1338
+ path: meta.fileTs.path,
1339
+ isTypeOnly: true
1340
+ }),
1341
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(require_components.QueryKey, {
1342
+ name: queryKeyName,
1343
+ typeName: queryKeyTypeName,
1344
+ node,
1345
+ tsResolver,
1346
+ pathParamsType,
1347
+ paramsCasing,
1348
+ transformer: ctx.options.queryKey
1349
+ }),
1350
+ !shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_plugin_client.Client, {
1351
+ name: resolvedClientName,
1352
+ baseURL: clientOptions.baseURL,
1353
+ dataReturnType: clientOptions.dataReturnType || "data",
1354
+ paramsCasing: clientOptions.paramsCasing || paramsCasing,
1355
+ paramsType,
1356
+ pathParamsType,
1357
+ parser,
1358
+ node,
1359
+ tsResolver,
1360
+ zodResolver
1361
+ }),
1362
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
1363
+ name: ["queryOptions"],
1364
+ path: importPath
1365
+ }),
1366
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(require_components.QueryOptions, {
1367
+ name: queryOptionsName,
1368
+ clientName: resolvedClientName,
1369
+ queryKeyName,
1370
+ node,
1371
+ tsResolver,
1372
+ paramsCasing,
1373
+ paramsType,
1374
+ pathParamsType,
1375
+ dataReturnType: clientOptions.dataReturnType || "data"
1376
+ }),
1377
+ suspense && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [
1378
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
1379
+ name: ["useSuspenseQuery"],
1380
+ path: importPath
1381
+ }),
1382
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
1383
+ name: [
1384
+ "QueryKey",
1385
+ "QueryClient",
1386
+ "UseSuspenseQueryOptions",
1387
+ "UseSuspenseQueryResult"
1388
+ ],
1389
+ path: importPath,
1390
+ isTypeOnly: true
1391
+ }),
1392
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(require_components.SuspenseQuery, {
1393
+ name: queryName,
1394
+ queryOptionsName,
1395
+ queryKeyName,
1396
+ queryKeyTypeName,
1397
+ node,
1398
+ tsResolver,
1399
+ paramsCasing,
1400
+ paramsType,
1401
+ pathParamsType,
1402
+ dataReturnType: clientOptions.dataReturnType || "data",
1403
+ customOptions
1404
+ })
1405
+ ] })
1406
+ ]
1407
+ });
1408
+ }
1409
+ });
1410
+ //#endregion
1411
+ Object.defineProperty(exports, "customHookOptionsFileGenerator", {
1412
+ enumerable: true,
1413
+ get: function() {
1414
+ return customHookOptionsFileGenerator;
1415
+ }
1416
+ });
1417
+ Object.defineProperty(exports, "hookOptionsGenerator", {
1418
+ enumerable: true,
1419
+ get: function() {
1420
+ return hookOptionsGenerator;
1421
+ }
1422
+ });
1423
+ Object.defineProperty(exports, "infiniteQueryGenerator", {
1424
+ enumerable: true,
1425
+ get: function() {
1426
+ return infiniteQueryGenerator;
1427
+ }
1428
+ });
1429
+ Object.defineProperty(exports, "mutationGenerator", {
1430
+ enumerable: true,
1431
+ get: function() {
1432
+ return mutationGenerator;
1433
+ }
1434
+ });
1435
+ Object.defineProperty(exports, "queryGenerator", {
1436
+ enumerable: true,
1437
+ get: function() {
1438
+ return queryGenerator;
1439
+ }
1440
+ });
1441
+ Object.defineProperty(exports, "suspenseInfiniteQueryGenerator", {
1442
+ enumerable: true,
1443
+ get: function() {
1444
+ return suspenseInfiniteQueryGenerator;
1445
+ }
1446
+ });
1447
+ Object.defineProperty(exports, "suspenseQueryGenerator", {
1448
+ enumerable: true,
1449
+ get: function() {
1450
+ return suspenseQueryGenerator;
1451
+ }
1452
+ });
1453
+
1454
+ //# sourceMappingURL=generators-CcOmnTPa.cjs.map