@kubb/plugin-react-query 5.0.0-beta.64 → 5.0.0-beta.73

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