@kubb/plugin-react-query 5.0.0-beta.27 → 5.0.0-beta.29

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.
@@ -257,11 +257,19 @@ const hookOptionsGenerator = defineGenerator({
257
257
  meta: hookOptionsFile.meta,
258
258
  banner: resolver.resolveBanner(ctx.meta, {
259
259
  output,
260
- config
260
+ config,
261
+ file: {
262
+ path: hookOptionsFile.path,
263
+ baseName: hookOptionsFile.baseName
264
+ }
261
265
  }),
262
266
  footer: resolver.resolveFooter(ctx.meta, {
263
267
  output,
264
- config
268
+ config,
269
+ file: {
270
+ path: hookOptionsFile.path,
271
+ baseName: hookOptionsFile.baseName
272
+ }
265
273
  }),
266
274
  children: [imports, /* @__PURE__ */ jsx(File.Source, {
267
275
  name,
@@ -369,11 +377,19 @@ const infiniteQueryGenerator = defineGenerator({
369
377
  meta: meta.file.meta,
370
378
  banner: resolver.resolveBanner(ctx.meta, {
371
379
  output,
372
- config
380
+ config,
381
+ file: {
382
+ path: meta.file.path,
383
+ baseName: meta.file.baseName
384
+ }
373
385
  }),
374
386
  footer: resolver.resolveFooter(ctx.meta, {
375
387
  output,
376
- config
388
+ config,
389
+ file: {
390
+ path: meta.file.path,
391
+ baseName: meta.file.baseName
392
+ }
377
393
  }),
378
394
  children: [
379
395
  fileZod && zodSchemaNames.length > 0 && /* @__PURE__ */ jsx(File.Import, {
@@ -383,7 +399,7 @@ const infiniteQueryGenerator = defineGenerator({
383
399
  }),
384
400
  clientOptions.importPath ? /* @__PURE__ */ jsxs(Fragment, { children: [
385
401
  !shouldUseClientPlugin && /* @__PURE__ */ jsx(File.Import, {
386
- name: "fetch",
402
+ name: "client",
387
403
  path: clientOptions.importPath
388
404
  }),
389
405
  /* @__PURE__ */ jsx(File.Import, {
@@ -402,9 +418,9 @@ const infiniteQueryGenerator = defineGenerator({
402
418
  })
403
419
  ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
404
420
  !shouldUseClientPlugin && /* @__PURE__ */ jsx(File.Import, {
405
- name: ["fetch"],
421
+ name: ["client"],
406
422
  root: meta.file.path,
407
- path: path.resolve(root, ".kubb/fetch.ts")
423
+ path: path.resolve(root, ".kubb/client.ts")
408
424
  }),
409
425
  /* @__PURE__ */ jsx(File.Import, {
410
426
  name: [
@@ -413,13 +429,13 @@ const infiniteQueryGenerator = defineGenerator({
413
429
  "ResponseErrorConfig"
414
430
  ],
415
431
  root: meta.file.path,
416
- path: path.resolve(root, ".kubb/fetch.ts"),
432
+ path: path.resolve(root, ".kubb/client.ts"),
417
433
  isTypeOnly: true
418
434
  }),
419
435
  clientOptions.dataReturnType === "full" && /* @__PURE__ */ jsx(File.Import, {
420
436
  name: ["ResponseConfig"],
421
437
  root: meta.file.path,
422
- path: path.resolve(root, ".kubb/fetch.ts"),
438
+ path: path.resolve(root, ".kubb/client.ts"),
423
439
  isTypeOnly: true
424
440
  })
425
441
  ] }),
@@ -605,11 +621,19 @@ const mutationGenerator = defineGenerator({
605
621
  meta: meta.file.meta,
606
622
  banner: resolver.resolveBanner(ctx.meta, {
607
623
  output,
608
- config
624
+ config,
625
+ file: {
626
+ path: meta.file.path,
627
+ baseName: meta.file.baseName
628
+ }
609
629
  }),
610
630
  footer: resolver.resolveFooter(ctx.meta, {
611
631
  output,
612
- config
632
+ config,
633
+ file: {
634
+ path: meta.file.path,
635
+ baseName: meta.file.baseName
636
+ }
613
637
  }),
614
638
  children: [
615
639
  fileZod && zodSchemaNames.length > 0 && /* @__PURE__ */ jsx(File.Import, {
@@ -619,7 +643,7 @@ const mutationGenerator = defineGenerator({
619
643
  }),
620
644
  clientOptions.importPath ? /* @__PURE__ */ jsxs(Fragment, { children: [
621
645
  !shouldUseClientPlugin && /* @__PURE__ */ jsx(File.Import, {
622
- name: "fetch",
646
+ name: "client",
623
647
  path: clientOptions.importPath
624
648
  }),
625
649
  /* @__PURE__ */ jsx(File.Import, {
@@ -638,9 +662,9 @@ const mutationGenerator = defineGenerator({
638
662
  })
639
663
  ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
640
664
  !shouldUseClientPlugin && /* @__PURE__ */ jsx(File.Import, {
641
- name: ["fetch"],
665
+ name: ["client"],
642
666
  root: meta.file.path,
643
- path: path.resolve(root, ".kubb/fetch.ts")
667
+ path: path.resolve(root, ".kubb/client.ts")
644
668
  }),
645
669
  /* @__PURE__ */ jsx(File.Import, {
646
670
  name: [
@@ -649,13 +673,13 @@ const mutationGenerator = defineGenerator({
649
673
  "ResponseErrorConfig"
650
674
  ],
651
675
  root: meta.file.path,
652
- path: path.resolve(root, ".kubb/fetch.ts"),
676
+ path: path.resolve(root, ".kubb/client.ts"),
653
677
  isTypeOnly: true
654
678
  }),
655
679
  clientOptions.dataReturnType === "full" && /* @__PURE__ */ jsx(File.Import, {
656
680
  name: ["ResponseConfig"],
657
681
  root: meta.file.path,
658
- path: path.resolve(root, ".kubb/fetch.ts"),
682
+ path: path.resolve(root, ".kubb/client.ts"),
659
683
  isTypeOnly: true
660
684
  })
661
685
  ] }),
@@ -829,11 +853,19 @@ const queryGenerator = defineGenerator({
829
853
  meta: meta.file.meta,
830
854
  banner: resolver.resolveBanner(ctx.meta, {
831
855
  output,
832
- config
856
+ config,
857
+ file: {
858
+ path: meta.file.path,
859
+ baseName: meta.file.baseName
860
+ }
833
861
  }),
834
862
  footer: resolver.resolveFooter(ctx.meta, {
835
863
  output,
836
- config
864
+ config,
865
+ file: {
866
+ path: meta.file.path,
867
+ baseName: meta.file.baseName
868
+ }
837
869
  }),
838
870
  children: [
839
871
  fileZod && zodSchemaNames.length > 0 && /* @__PURE__ */ jsx(File.Import, {
@@ -843,7 +875,7 @@ const queryGenerator = defineGenerator({
843
875
  }),
844
876
  clientOptions.importPath ? /* @__PURE__ */ jsxs(Fragment, { children: [
845
877
  !shouldUseClientPlugin && /* @__PURE__ */ jsx(File.Import, {
846
- name: "fetch",
878
+ name: "client",
847
879
  path: clientOptions.importPath
848
880
  }),
849
881
  /* @__PURE__ */ jsx(File.Import, {
@@ -862,9 +894,9 @@ const queryGenerator = defineGenerator({
862
894
  })
863
895
  ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
864
896
  !shouldUseClientPlugin && /* @__PURE__ */ jsx(File.Import, {
865
- name: ["fetch"],
897
+ name: ["client"],
866
898
  root: meta.file.path,
867
- path: path.resolve(root, ".kubb/fetch.ts")
899
+ path: path.resolve(root, ".kubb/client.ts")
868
900
  }),
869
901
  /* @__PURE__ */ jsx(File.Import, {
870
902
  name: [
@@ -873,13 +905,13 @@ const queryGenerator = defineGenerator({
873
905
  "ResponseErrorConfig"
874
906
  ],
875
907
  root: meta.file.path,
876
- path: path.resolve(root, ".kubb/fetch.ts"),
908
+ path: path.resolve(root, ".kubb/client.ts"),
877
909
  isTypeOnly: true
878
910
  }),
879
911
  clientOptions.dataReturnType === "full" && /* @__PURE__ */ jsx(File.Import, {
880
912
  name: ["ResponseConfig"],
881
913
  root: meta.file.path,
882
- path: path.resolve(root, ".kubb/fetch.ts"),
914
+ path: path.resolve(root, ".kubb/client.ts"),
883
915
  isTypeOnly: true
884
916
  })
885
917
  ] }),
@@ -1064,11 +1096,19 @@ const suspenseInfiniteQueryGenerator = defineGenerator({
1064
1096
  meta: meta.file.meta,
1065
1097
  banner: resolver.resolveBanner(ctx.meta, {
1066
1098
  output,
1067
- config
1099
+ config,
1100
+ file: {
1101
+ path: meta.file.path,
1102
+ baseName: meta.file.baseName
1103
+ }
1068
1104
  }),
1069
1105
  footer: resolver.resolveFooter(ctx.meta, {
1070
1106
  output,
1071
- config
1107
+ config,
1108
+ file: {
1109
+ path: meta.file.path,
1110
+ baseName: meta.file.baseName
1111
+ }
1072
1112
  }),
1073
1113
  children: [
1074
1114
  fileZod && zodSchemaNames.length > 0 && /* @__PURE__ */ jsx(File.Import, {
@@ -1078,7 +1118,7 @@ const suspenseInfiniteQueryGenerator = defineGenerator({
1078
1118
  }),
1079
1119
  clientOptions.importPath ? /* @__PURE__ */ jsxs(Fragment, { children: [
1080
1120
  !shouldUseClientPlugin && /* @__PURE__ */ jsx(File.Import, {
1081
- name: "fetch",
1121
+ name: "client",
1082
1122
  path: clientOptions.importPath
1083
1123
  }),
1084
1124
  /* @__PURE__ */ jsx(File.Import, {
@@ -1097,9 +1137,9 @@ const suspenseInfiniteQueryGenerator = defineGenerator({
1097
1137
  })
1098
1138
  ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
1099
1139
  !shouldUseClientPlugin && /* @__PURE__ */ jsx(File.Import, {
1100
- name: ["fetch"],
1140
+ name: ["client"],
1101
1141
  root: meta.file.path,
1102
- path: path.resolve(root, ".kubb/fetch.ts")
1142
+ path: path.resolve(root, ".kubb/client.ts")
1103
1143
  }),
1104
1144
  /* @__PURE__ */ jsx(File.Import, {
1105
1145
  name: [
@@ -1108,13 +1148,13 @@ const suspenseInfiniteQueryGenerator = defineGenerator({
1108
1148
  "ResponseErrorConfig"
1109
1149
  ],
1110
1150
  root: meta.file.path,
1111
- path: path.resolve(root, ".kubb/fetch.ts"),
1151
+ path: path.resolve(root, ".kubb/client.ts"),
1112
1152
  isTypeOnly: true
1113
1153
  }),
1114
1154
  clientOptions.dataReturnType === "full" && /* @__PURE__ */ jsx(File.Import, {
1115
1155
  name: ["ResponseConfig"],
1116
1156
  root: meta.file.path,
1117
- path: path.resolve(root, ".kubb/fetch.ts"),
1157
+ path: path.resolve(root, ".kubb/client.ts"),
1118
1158
  isTypeOnly: true
1119
1159
  })
1120
1160
  ] }),
@@ -1303,11 +1343,19 @@ const suspenseQueryGenerator = defineGenerator({
1303
1343
  meta: meta.file.meta,
1304
1344
  banner: resolver.resolveBanner(ctx.meta, {
1305
1345
  output,
1306
- config
1346
+ config,
1347
+ file: {
1348
+ path: meta.file.path,
1349
+ baseName: meta.file.baseName
1350
+ }
1307
1351
  }),
1308
1352
  footer: resolver.resolveFooter(ctx.meta, {
1309
1353
  output,
1310
- config
1354
+ config,
1355
+ file: {
1356
+ path: meta.file.path,
1357
+ baseName: meta.file.baseName
1358
+ }
1311
1359
  }),
1312
1360
  children: [
1313
1361
  fileZod && zodSchemaNames.length > 0 && /* @__PURE__ */ jsx(File.Import, {
@@ -1317,7 +1365,7 @@ const suspenseQueryGenerator = defineGenerator({
1317
1365
  }),
1318
1366
  clientOptions.importPath ? /* @__PURE__ */ jsxs(Fragment, { children: [
1319
1367
  !shouldUseClientPlugin && /* @__PURE__ */ jsx(File.Import, {
1320
- name: "fetch",
1368
+ name: "client",
1321
1369
  path: clientOptions.importPath
1322
1370
  }),
1323
1371
  /* @__PURE__ */ jsx(File.Import, {
@@ -1336,9 +1384,9 @@ const suspenseQueryGenerator = defineGenerator({
1336
1384
  })
1337
1385
  ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
1338
1386
  !shouldUseClientPlugin && /* @__PURE__ */ jsx(File.Import, {
1339
- name: ["fetch"],
1387
+ name: ["client"],
1340
1388
  root: meta.file.path,
1341
- path: path.resolve(root, ".kubb/fetch.ts")
1389
+ path: path.resolve(root, ".kubb/client.ts")
1342
1390
  }),
1343
1391
  /* @__PURE__ */ jsx(File.Import, {
1344
1392
  name: [
@@ -1347,13 +1395,13 @@ const suspenseQueryGenerator = defineGenerator({
1347
1395
  "ResponseErrorConfig"
1348
1396
  ],
1349
1397
  root: meta.file.path,
1350
- path: path.resolve(root, ".kubb/fetch.ts"),
1398
+ path: path.resolve(root, ".kubb/client.ts"),
1351
1399
  isTypeOnly: true
1352
1400
  }),
1353
1401
  clientOptions.dataReturnType === "full" && /* @__PURE__ */ jsx(File.Import, {
1354
1402
  name: ["ResponseConfig"],
1355
1403
  root: meta.file.path,
1356
- path: path.resolve(root, ".kubb/fetch.ts"),
1404
+ path: path.resolve(root, ".kubb/client.ts"),
1357
1405
  isTypeOnly: true
1358
1406
  })
1359
1407
  ] }),
@@ -1449,4 +1497,4 @@ const suspenseQueryGenerator = defineGenerator({
1449
1497
  //#endregion
1450
1498
  export { infiniteQueryGenerator as a, mutationGenerator as i, suspenseInfiniteQueryGenerator as n, hookOptionsGenerator as o, queryGenerator as r, customHookOptionsFileGenerator as s, suspenseQueryGenerator as t };
1451
1499
 
1452
- //# sourceMappingURL=generators-C-cwJah8.js.map
1500
+ //# sourceMappingURL=generators-Bma51Uar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generators-Bma51Uar.js","names":[],"sources":["../src/generators/customHookOptionsFileGenerator.tsx","../src/generators/hookOptionsGenerator.tsx","../src/generators/infiniteQueryGenerator.tsx","../src/generators/mutationGenerator.tsx","../src/generators/queryGenerator.tsx","../src/generators/suspenseInfiniteQueryGenerator.tsx","../src/generators/suspenseQueryGenerator.tsx"],"sourcesContent":["import fs from 'node:fs'\nimport path from 'node:path'\n\nimport { defineGenerator } from '@kubb/core'\nimport { File, Function, jsxRendererSync } from '@kubb/renderer-jsx'\nimport type { PluginReactQuery } from '../types'\n\n/**\n * Scaffolds the user-editable `useCustomHookOptions` file when\n * `pluginReactQuery({ customOptions: { ... } })` is configured. The file is\n * only created when it does not already exist, so user edits persist across\n * regeneration.\n */\nexport const customHookOptionsFileGenerator = defineGenerator<PluginReactQuery>({\n name: 'react-query-custom-hook-options-file',\n renderer: jsxRendererSync,\n operations(nodes, ctx) {\n const { resolver, config, root } = ctx\n const { output, customOptions, query, group } = ctx.options\n\n if (!customOptions) return null\n\n const override = output.override ?? config.output.override ?? false\n const { importPath, name } = customOptions\n const hookOptionsName = resolver.resolveHookOptionsName()\n const customHookOptionsName = resolver.resolveCustomHookOptionsName()\n\n const reactQueryImportPath = query ? query.importPath : '@tanstack/react-query'\n\n let hookFilePath: string\n const firstNode = nodes[0]\n if (firstNode) {\n const hookName = resolver.resolveQueryName(firstNode)\n const hookFile = resolver.resolveFile(\n { name: hookName, extname: '.ts', tag: firstNode.tags[0] ?? 'default', path: firstNode.path },\n { root, output, group: group ?? undefined },\n )\n hookFilePath = hookFile.path\n } else {\n hookFilePath = path.resolve(root, 'index.ts')\n }\n\n const ensureExtension = (filePath: string, extname: string) => {\n if (path.extname(filePath) === '') return filePath + extname\n return filePath\n }\n\n const basePath = path.dirname(hookFilePath)\n const actualFilePath = ensureExtension(importPath, '.ts')\n const file = {\n baseName: path.basename(actualFilePath) as `${string}.${string}`,\n name: path.basename(actualFilePath, path.extname(actualFilePath)),\n path: path.resolve(basePath, actualFilePath),\n }\n\n if (fs.existsSync(file.path) && !override) return null\n\n return (\n <File baseName={file.baseName} path={file.path}>\n <File.Import name={['QueryClient']} path={reactQueryImportPath} isTypeOnly />\n <File.Import name={['useQueryClient']} path={reactQueryImportPath} />\n <File.Import name={[hookOptionsName]} root={file.path} path={path.resolve(root, './index.ts')} />\n <File.Source name={file.name} isExportable isIndexable>\n <Function name={customHookOptionsName} params=\"{ queryClient }: { queryClient: QueryClient }\" returnType={`Partial<${hookOptionsName}>`}>\n {`return {\n // TODO: Define custom hook options here\n // Example:\n // useUpdatePetHook: {\n // onSuccess: () => {\n // void queryClient.invalidateQueries({ queryKey: ['pet'] })\n // }\n // }\n }`}\n </Function>\n <Function\n name={name}\n generics={`T extends keyof ${hookOptionsName}`}\n params=\"{ hookName, operationId }: { hookName: T, operationId: string }\"\n returnType={`${hookOptionsName}[T]`}\n export\n >\n {`const queryClient = useQueryClient()\n const customOptions = ${customHookOptionsName}({ queryClient })\n return customOptions[hookName] ?? {}`}\n </Function>\n </File.Source>\n </File>\n )\n },\n})\n","import { getOperationParameters } from '@internals/shared'\nimport { defineGenerator } from '@kubb/core'\nimport { File, jsxRendererSync, Type } from '@kubb/renderer-jsx'\nimport type { KubbReactNode } from '@kubb/renderer-jsx/types'\nimport { difference } from 'remeda'\nimport type { PluginReactQuery } from '../types'\nimport { resolveOperationOverrides } from '../utils.ts'\n\ntype QueryOption = PluginReactQuery['resolvedOptions']['query']\ntype MutationOption = PluginReactQuery['resolvedOptions']['mutation']\n\n/**\n * Emits the `HookOptions` type used by `customOptions`. Enabled when\n * `pluginReactQuery({ customOptions: { ... } })`. The generated type lists\n * every hook keyed by name so user-supplied options stay in sync with the\n * generated hooks at compile time.\n */\nexport const hookOptionsGenerator = defineGenerator<PluginReactQuery>({\n name: 'react-query-hook-options',\n renderer: jsxRendererSync,\n operations(nodes, ctx) {\n const { resolver, config, root } = ctx\n const { output, customOptions, query, mutation, suspense, infinite, group, override } = ctx.options\n\n if (!customOptions) return null\n\n const name = resolver.resolveHookOptionsName()\n const resolvedFile = resolver.resolveFile({ name, extname: '.ts' }, { root, output, group: group ?? undefined })\n const hookOptionsFile = {\n ...resolvedFile,\n baseName: `${name}.ts` as const,\n path: resolvedFile.path.replace(/[^/\\\\]+\\.ts$/, `${name}.ts`),\n }\n\n const imports: Array<KubbReactNode> = []\n const hookOptions: Record<string, string> = {}\n\n for (const node of nodes) {\n const opOverrides = resolveOperationOverrides(node, override)\n const nodeQuery: QueryOption = 'query' in opOverrides ? (opOverrides.query as QueryOption) : query\n const nodeMutation: MutationOption = 'mutation' in opOverrides ? (opOverrides.mutation as MutationOption) : mutation\n const nodeInfinite = 'infinite' in opOverrides ? opOverrides.infinite : infinite\n const nodeInfiniteOptions = nodeInfinite && typeof nodeInfinite === 'object' ? nodeInfinite : null\n\n // query: false means \"still a query but skip the useQuery hook\"\n const isQueryOp =\n nodeQuery === false\n ? !!query && query.methods.some((m) => node.method.toLowerCase() === m.toLowerCase())\n : !!nodeQuery && nodeQuery.methods.some((m) => node.method.toLowerCase() === m.toLowerCase())\n const isMutationOp =\n nodeMutation !== false &&\n !isQueryOp &&\n difference(nodeMutation ? nodeMutation.methods : [], nodeQuery ? nodeQuery.methods : []).some((m) => node.method.toLowerCase() === m.toLowerCase())\n const isSuspenseOp = !!suspense\n const isInfiniteOp = !!nodeInfiniteOptions\n\n if (isQueryOp) {\n const queryOptionsName = resolver.resolveQueryOptionsName(node)\n const queryHookName = resolver.resolveQueryName(node)\n const queryHookFile = resolver.resolveFile(\n { name: queryHookName, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n { root, output, group: group ?? undefined },\n )\n imports.push(<File.Import name={[queryOptionsName]} root={hookOptionsFile.path} path={queryHookFile.path} />)\n hookOptions[queryHookName] = `Partial<ReturnType<typeof ${queryOptionsName}>>`\n\n if (isSuspenseOp) {\n const suspenseOptionsName = resolver.resolveSuspenseQueryOptionsName(node)\n const suspenseHookName = resolver.resolveSuspenseQueryName(node)\n const suspenseHookFile = resolver.resolveFile(\n { name: suspenseHookName, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n { root, output, group: group ?? undefined },\n )\n imports.push(<File.Import name={[suspenseOptionsName]} root={hookOptionsFile.path} path={suspenseHookFile.path} />)\n hookOptions[suspenseHookName] = `Partial<ReturnType<typeof ${suspenseOptionsName}>>`\n }\n\n if (isInfiniteOp) {\n // Validate queryParam\n const normalizeKey = (key: string) => key.replace(/\\?$/, '')\n const queryParamKeys = getOperationParameters(node).query.map((p) => p.name)\n const hasQueryParam = nodeInfiniteOptions!.queryParam ? queryParamKeys.some((k) => normalizeKey(k) === nodeInfiniteOptions!.queryParam) : false\n\n if (hasQueryParam) {\n const infiniteOptionsName = resolver.resolveInfiniteQueryOptionsName(node)\n const infiniteHookName = resolver.resolveInfiniteQueryName(node)\n const infiniteHookFile = resolver.resolveFile(\n { name: infiniteHookName, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n { root, output, group: group ?? undefined },\n )\n imports.push(<File.Import name={[infiniteOptionsName]} root={hookOptionsFile.path} path={infiniteHookFile.path} />)\n hookOptions[infiniteHookName] = `Partial<ReturnType<typeof ${infiniteOptionsName}>>`\n\n if (isSuspenseOp) {\n const suspenseInfiniteOptionsName = resolver.resolveSuspenseInfiniteQueryOptionsName(node)\n const suspenseInfiniteHookName = resolver.resolveSuspenseInfiniteQueryName(node)\n const suspenseInfiniteHookFile = resolver.resolveFile(\n { name: suspenseInfiniteHookName, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n { root, output, group: group ?? undefined },\n )\n imports.push(<File.Import name={[suspenseInfiniteOptionsName]} root={hookOptionsFile.path} path={suspenseInfiniteHookFile.path} />)\n hookOptions[suspenseInfiniteHookName] = `Partial<ReturnType<typeof ${suspenseInfiniteOptionsName}>>`\n }\n }\n }\n }\n\n if (isMutationOp) {\n const mutationOptionsName = resolver.resolveMutationOptionsName(node)\n const mutationHookName = resolver.resolveMutationName(node)\n const mutationHookFile = resolver.resolveFile(\n { name: mutationHookName, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n { root, output, group: group ?? undefined },\n )\n imports.push(<File.Import name={[mutationOptionsName]} root={hookOptionsFile.path} path={mutationHookFile.path} />)\n hookOptions[mutationHookName] = `Partial<ReturnType<typeof ${mutationOptionsName}>>`\n }\n }\n\n return (\n <File\n baseName={hookOptionsFile.baseName}\n path={hookOptionsFile.path}\n meta={hookOptionsFile.meta}\n banner={resolver.resolveBanner(ctx.meta, { output, config, file: { path: hookOptionsFile.path, baseName: hookOptionsFile.baseName } })}\n footer={resolver.resolveFooter(ctx.meta, { output, config, file: { path: hookOptionsFile.path, baseName: hookOptionsFile.baseName } })}\n >\n {imports}\n <File.Source name={name} isExportable isIndexable isTypeOnly>\n <Type export name={name}>\n {`{ ${Object.keys(hookOptions)\n .map((key) => `${JSON.stringify(key)}: ${hookOptions[key]}`)\n .join(', ')} }`}\n </Type>\n </File.Source>\n </File>\n )\n },\n})\n","import path from 'node:path'\nimport { getOperationParameters, resolveOperationTypeNames } from '@internals/shared'\nimport { resolveZodSchemaNames } from '@internals/tanstack-query'\nimport { defineGenerator } from '@kubb/core'\nimport { Client, pluginClientName } from '@kubb/plugin-client'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { pluginZodName } from '@kubb/plugin-zod'\nimport { File, jsxRendererSync } from '@kubb/renderer-jsx'\nimport { difference } from 'remeda'\nimport { InfiniteQuery, InfiniteQueryOptions, QueryKey } from '../components'\nimport type { PluginReactQuery } from '../types'\n\n/**\n * Built-in generator for `useInfiniteQuery` hooks. Enabled when\n * `pluginReactQuery({ infinite: { ... } })`. Emits one `useFooInfiniteQuery`\n * hook per query operation, wiring the configured `nextParam` /\n * `previousParam` paths into TanStack Query's cursor-based pagination.\n */\nexport const infiniteQueryGenerator = defineGenerator<PluginReactQuery>({\n name: 'react-infinite-query',\n renderer: jsxRendererSync,\n operation(node, ctx) {\n const { config, driver, resolver, root } = ctx\n const { output, query, mutation, infinite, paramsCasing, paramsType, pathParamsType, parser, client: clientOptions, group, customOptions } = ctx.options\n\n const pluginTs = driver.getPlugin(pluginTsName)\n if (!pluginTs) return null\n const tsResolver = driver.getResolver(pluginTsName)\n\n const isQuery = query === false || (!!query && query.methods.some((method) => node.method.toLowerCase() === method.toLowerCase()))\n const isMutation =\n mutation !== false &&\n !isQuery &&\n difference(mutation ? mutation.methods : [], query ? query.methods : []).some((method) => node.method.toLowerCase() === method.toLowerCase())\n const infiniteOptions = infinite && typeof infinite === 'object' ? infinite : null\n\n if (!isQuery || isMutation || !infiniteOptions) return null\n\n // Validate queryParam exists in operation's query parameters\n const normalizeKey = (key: string) => key.replace(/\\?$/, '')\n const queryParamKeys = getOperationParameters(node).query.map((p) => p.name)\n const hasQueryParam = infiniteOptions.queryParam ? queryParamKeys.some((k) => normalizeKey(k) === infiniteOptions.queryParam) : false\n // cursorParam validation against response schema keys is skipped in v5 (complex schema inspection)\n const hasCursorParam = !infiniteOptions.cursorParam || true\n\n if (!hasQueryParam || !hasCursorParam) return null\n\n const importPath = query ? query.importPath : '@tanstack/react-query'\n\n const queryName = resolver.resolveInfiniteQueryName(node)\n const queryOptionsName = resolver.resolveInfiniteQueryOptionsName(node)\n const queryKeyName = resolver.resolveInfiniteQueryKeyName(node)\n const queryKeyTypeName = resolver.resolveInfiniteQueryKeyTypeName(node)\n const clientBaseName = resolver.resolveInfiniteClientName(node)\n\n const meta = {\n file: resolver.resolveFile(\n { name: queryName, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n { root, output, group: group ?? undefined },\n ),\n fileTs: tsResolver.resolveFile(\n { name: node.operationId, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n { root, output: pluginTs.options?.output ?? output, group: pluginTs.options?.group ?? undefined },\n ),\n }\n\n const importedTypeNames = resolveOperationTypeNames(node, tsResolver, {\n paramsCasing,\n exclude: [queryKeyTypeName],\n order: 'body-response-first',\n })\n\n const pluginZod = parser === 'zod' ? driver.getPlugin(pluginZodName) : null\n const zodResolver = pluginZod ? driver.getResolver(pluginZodName) : null\n const fileZod = zodResolver\n ? zodResolver.resolveFile(\n { name: node.operationId, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n { root, output: pluginZod?.options?.output ?? output, group: pluginZod?.options?.group ?? undefined },\n )\n : null\n const zodSchemaNames = resolveZodSchemaNames(node, zodResolver)\n\n const clientPlugin = driver.getPlugin(pluginClientName)\n const hasClientPlugin = clientPlugin?.name === pluginClientName\n const shouldUseClientPlugin = hasClientPlugin && clientOptions.clientType !== 'class'\n const clientResolver = shouldUseClientPlugin ? driver.getResolver(pluginClientName) : null\n\n const clientFile = shouldUseClientPlugin\n ? clientResolver?.resolveFile(\n { name: node.operationId, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n {\n root,\n output: clientPlugin?.options?.output ?? output,\n group: clientPlugin?.options?.group ?? undefined,\n },\n )\n : null\n\n const resolvedClientName = shouldUseClientPlugin ? (clientResolver?.resolveName(node.operationId) ?? clientBaseName) : clientBaseName\n\n return (\n <File\n baseName={meta.file.baseName}\n path={meta.file.path}\n meta={meta.file.meta}\n banner={resolver.resolveBanner(ctx.meta, { output, config, file: { path: meta.file.path, baseName: meta.file.baseName } })}\n footer={resolver.resolveFooter(ctx.meta, { output, config, file: { path: meta.file.path, baseName: meta.file.baseName } })}\n >\n {fileZod && zodSchemaNames.length > 0 && <File.Import name={zodSchemaNames} root={meta.file.path} path={fileZod.path} />}\n {clientOptions.importPath ? (\n <>\n {!shouldUseClientPlugin && <File.Import name={'client'} path={clientOptions.importPath} />}\n <File.Import name={['Client', 'RequestConfig', 'ResponseErrorConfig']} path={clientOptions.importPath} isTypeOnly />\n {clientOptions.dataReturnType === 'full' && <File.Import name={['ResponseConfig']} path={clientOptions.importPath} isTypeOnly />}\n </>\n ) : (\n <>\n {!shouldUseClientPlugin && <File.Import name={['client']} root={meta.file.path} path={path.resolve(root, '.kubb/client.ts')} />}\n <File.Import\n name={['Client', 'RequestConfig', 'ResponseErrorConfig']}\n root={meta.file.path}\n path={path.resolve(root, '.kubb/client.ts')}\n isTypeOnly\n />\n {clientOptions.dataReturnType === 'full' && (\n <File.Import name={['ResponseConfig']} root={meta.file.path} path={path.resolve(root, '.kubb/client.ts')} isTypeOnly />\n )}\n </>\n )}\n {shouldUseClientPlugin && clientFile && <File.Import name={[resolvedClientName]} root={meta.file.path} path={clientFile.path} />}\n {!shouldUseClientPlugin && <File.Import name={['buildFormData']} root={meta.file.path} path={path.resolve(root, '.kubb/config.ts')} />}\n {customOptions && <File.Import name={[customOptions.name]} path={customOptions.importPath} />}\n {meta.fileTs && importedTypeNames.length > 0 && (\n <File.Import name={Array.from(new Set(importedTypeNames))} root={meta.file.path} path={meta.fileTs.path} isTypeOnly />\n )}\n\n <QueryKey\n name={queryKeyName}\n typeName={queryKeyTypeName}\n node={node}\n tsResolver={tsResolver}\n pathParamsType={pathParamsType}\n paramsCasing={paramsCasing}\n transformer={ctx.options.queryKey}\n />\n\n {!shouldUseClientPlugin && (\n <Client\n name={resolvedClientName}\n baseURL={clientOptions.baseURL}\n dataReturnType={clientOptions.dataReturnType || 'data'}\n paramsCasing={clientOptions.paramsCasing || paramsCasing}\n paramsType={paramsType}\n pathParamsType={pathParamsType}\n parser={parser}\n node={node}\n tsResolver={tsResolver}\n zodResolver={zodResolver}\n />\n )}\n\n <File.Import name={['InfiniteData']} isTypeOnly path={importPath} />\n <File.Import name={['infiniteQueryOptions']} path={importPath} />\n\n <InfiniteQueryOptions\n name={queryOptionsName}\n clientName={resolvedClientName}\n queryKeyName={queryKeyName}\n node={node}\n tsResolver={tsResolver}\n paramsCasing={paramsCasing}\n paramsType={paramsType}\n pathParamsType={pathParamsType}\n dataReturnType={clientOptions.dataReturnType || 'data'}\n cursorParam={infiniteOptions.cursorParam}\n nextParam={infiniteOptions.nextParam}\n previousParam={infiniteOptions.previousParam}\n initialPageParam={infiniteOptions.initialPageParam}\n queryParam={infiniteOptions.queryParam}\n />\n\n <File.Import name={['useInfiniteQuery']} path={importPath} />\n <File.Import name={['QueryKey', 'QueryClient', 'InfiniteQueryObserverOptions', 'UseInfiniteQueryResult']} path={importPath} isTypeOnly />\n\n <InfiniteQuery\n name={queryName}\n queryOptionsName={queryOptionsName}\n queryKeyName={queryKeyName}\n queryKeyTypeName={queryKeyTypeName}\n node={node}\n tsResolver={tsResolver}\n paramsCasing={paramsCasing}\n paramsType={paramsType}\n pathParamsType={pathParamsType}\n dataReturnType={clientOptions.dataReturnType || 'data'}\n initialPageParam={infiniteOptions.initialPageParam}\n queryParam={infiniteOptions.queryParam}\n customOptions={customOptions}\n />\n </File>\n )\n },\n})\n","import path from 'node:path'\nimport { resolveOperationTypeNames } from '@internals/shared'\nimport { resolveZodSchemaNames } from '@internals/tanstack-query'\nimport { defineGenerator } from '@kubb/core'\nimport { Client, pluginClientName } from '@kubb/plugin-client'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { pluginZodName } from '@kubb/plugin-zod'\nimport { File, jsxRendererSync } from '@kubb/renderer-jsx'\nimport { difference } from 'remeda'\nimport { Mutation, MutationKey, MutationOptions } from '../components'\nimport type { PluginReactQuery } from '../types'\n\n/**\n * Built-in generator for `useMutation` hooks. Emits one `useFooMutation` hook\n * per POST/PUT/DELETE operation (configurable via `mutation.methods`) plus\n * the matching `fooMutationKey` / `fooMutationOptions` helpers.\n */\nexport const mutationGenerator = defineGenerator<PluginReactQuery>({\n name: 'react-query-mutation',\n renderer: jsxRendererSync,\n operation(node, ctx) {\n const { config, driver, resolver, root } = ctx\n const { output, query, mutation, paramsCasing, paramsType, pathParamsType, parser, client: clientOptions, group, customOptions } = ctx.options\n\n const pluginTs = driver.getPlugin(pluginTsName)\n if (!pluginTs) return null\n const tsResolver = driver.getResolver(pluginTsName)\n\n const isQuery = query === false || (!!query && query.methods.some((method) => node.method.toLowerCase() === method.toLowerCase()))\n const isMutation =\n mutation !== false &&\n !isQuery &&\n difference(mutation ? mutation.methods : [], query ? query.methods : []).some((method) => node.method.toLowerCase() === method.toLowerCase())\n\n if (!isMutation) return null\n\n const importPath = mutation ? mutation.importPath : '@tanstack/react-query'\n\n const mutationHookName = resolver.resolveMutationName(node)\n const mutationTypeName = resolver.resolveMutationTypeName(node)\n const mutationOptionsName = resolver.resolveMutationOptionsName(node)\n const mutationKeyName = resolver.resolveMutationKeyName(node)\n const clientName = resolver.resolveClientName(node)\n\n const meta = {\n file: resolver.resolveFile(\n { name: mutationHookName, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n { root, output, group: group ?? undefined },\n ),\n fileTs: tsResolver.resolveFile(\n { name: node.operationId, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n { root, output: pluginTs.options?.output ?? output, group: pluginTs.options?.group ?? undefined },\n ),\n }\n\n const importedTypeNames = resolveOperationTypeNames(node, tsResolver, { paramsCasing, order: 'body-response-first' })\n\n const pluginZod = parser === 'zod' ? driver.getPlugin(pluginZodName) : null\n const zodResolver = pluginZod ? driver.getResolver(pluginZodName) : null\n const fileZod = zodResolver\n ? zodResolver.resolveFile(\n { name: node.operationId, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n { root, output: pluginZod?.options?.output ?? output, group: pluginZod?.options?.group ?? undefined },\n )\n : null\n const zodSchemaNames = resolveZodSchemaNames(node, zodResolver)\n\n const clientPlugin = driver.getPlugin(pluginClientName)\n const hasClientPlugin = clientPlugin?.name === pluginClientName\n const shouldUseClientPlugin = hasClientPlugin && clientOptions.clientType !== 'class'\n const clientResolver = shouldUseClientPlugin ? driver.getResolver(pluginClientName) : null\n\n const clientFile = shouldUseClientPlugin\n ? clientResolver?.resolveFile(\n { name: node.operationId, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n {\n root,\n output: clientPlugin?.options?.output ?? output,\n group: clientPlugin?.options?.group ?? undefined,\n },\n )\n : null\n\n const resolvedClientName = shouldUseClientPlugin ? (clientResolver?.resolveName(node.operationId) ?? clientName) : clientName\n\n return (\n <File\n baseName={meta.file.baseName}\n path={meta.file.path}\n meta={meta.file.meta}\n banner={resolver.resolveBanner(ctx.meta, { output, config, file: { path: meta.file.path, baseName: meta.file.baseName } })}\n footer={resolver.resolveFooter(ctx.meta, { output, config, file: { path: meta.file.path, baseName: meta.file.baseName } })}\n >\n {fileZod && zodSchemaNames.length > 0 && <File.Import name={zodSchemaNames} root={meta.file.path} path={fileZod.path} />}\n {clientOptions.importPath ? (\n <>\n {!shouldUseClientPlugin && <File.Import name={'client'} path={clientOptions.importPath} />}\n <File.Import name={['Client', 'RequestConfig', 'ResponseErrorConfig']} path={clientOptions.importPath} isTypeOnly />\n {clientOptions.dataReturnType === 'full' && <File.Import name={['ResponseConfig']} path={clientOptions.importPath} isTypeOnly />}\n </>\n ) : (\n <>\n {!shouldUseClientPlugin && <File.Import name={['client']} root={meta.file.path} path={path.resolve(root, '.kubb/client.ts')} />}\n <File.Import\n name={['Client', 'RequestConfig', 'ResponseErrorConfig']}\n root={meta.file.path}\n path={path.resolve(root, '.kubb/client.ts')}\n isTypeOnly\n />\n {clientOptions.dataReturnType === 'full' && (\n <File.Import name={['ResponseConfig']} root={meta.file.path} path={path.resolve(root, '.kubb/client.ts')} isTypeOnly />\n )}\n </>\n )}\n {shouldUseClientPlugin && clientFile && <File.Import name={[resolvedClientName]} root={meta.file.path} path={clientFile.path} />}\n {!shouldUseClientPlugin && node.requestBody?.content?.some((e) => e.contentType === 'multipart/form-data') && (\n <File.Import name={['buildFormData']} root={meta.file.path} path={path.resolve(root, '.kubb/config.ts')} />\n )}\n {customOptions && <File.Import name={[customOptions.name]} path={customOptions.importPath} />}\n {meta.fileTs && importedTypeNames.length > 0 && (\n <File.Import name={Array.from(new Set(importedTypeNames))} root={meta.file.path} path={meta.fileTs.path} isTypeOnly />\n )}\n\n <MutationKey name={mutationKeyName} node={node} pathParamsType={pathParamsType} paramsCasing={paramsCasing} transformer={ctx.options.mutationKey} />\n\n {!shouldUseClientPlugin && (\n <Client\n name={resolvedClientName}\n baseURL={clientOptions.baseURL}\n dataReturnType={clientOptions.dataReturnType || 'data'}\n paramsCasing={clientOptions.paramsCasing || paramsCasing}\n paramsType={paramsType}\n pathParamsType={pathParamsType}\n parser={parser}\n node={node}\n tsResolver={tsResolver}\n zodResolver={zodResolver}\n />\n )}\n\n <File.Import name={['mutationOptions']} path={importPath} />\n\n <MutationOptions\n name={mutationOptionsName}\n clientName={resolvedClientName}\n mutationKeyName={mutationKeyName}\n node={node}\n tsResolver={tsResolver}\n paramsCasing={paramsCasing}\n paramsType={paramsType}\n pathParamsType={pathParamsType}\n dataReturnType={clientOptions.dataReturnType || 'data'}\n />\n\n {mutation && (\n <>\n <File.Import name={['useMutation']} path={importPath} />\n <File.Import name={['UseMutationOptions', 'UseMutationResult', 'QueryClient']} path={importPath} isTypeOnly />\n <Mutation\n name={mutationHookName}\n typeName={mutationTypeName}\n mutationOptionsName={mutationOptionsName}\n mutationKeyName={mutationKeyName}\n node={node}\n tsResolver={tsResolver}\n dataReturnType={clientOptions.dataReturnType || 'data'}\n paramsCasing={paramsCasing}\n pathParamsType={pathParamsType}\n customOptions={customOptions}\n />\n </>\n )}\n </File>\n )\n },\n})\n","import path from 'node:path'\nimport { resolveOperationTypeNames } from '@internals/shared'\nimport { resolveZodSchemaNames } from '@internals/tanstack-query'\nimport { defineGenerator } from '@kubb/core'\nimport { Client, pluginClientName } from '@kubb/plugin-client'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { pluginZodName } from '@kubb/plugin-zod'\nimport { File, jsxRendererSync } from '@kubb/renderer-jsx'\nimport { difference } from 'remeda'\nimport { Query, QueryKey, QueryOptions } from '../components'\nimport type { PluginReactQuery } from '../types'\n\n/**\n * Built-in generator for `useQuery` hooks. Emits one `useFooQuery` hook per\n * GET operation (configurable via `query.methods`) plus the matching\n * `fooQueryKey` / `fooQueryOptions` helpers.\n */\nexport const queryGenerator = defineGenerator<PluginReactQuery>({\n name: 'react-query',\n renderer: jsxRendererSync,\n operation(node, ctx) {\n const { config, driver, resolver, root } = ctx\n const { output, query, mutation, paramsCasing, paramsType, pathParamsType, parser, client: clientOptions, group, customOptions } = ctx.options\n\n const pluginTs = driver.getPlugin(pluginTsName)\n if (!pluginTs) return null\n const tsResolver = driver.getResolver(pluginTsName)\n\n // query: false means \"this IS a query op, but skip the useQuery hook\"\n const isQuery = query === false || (!!query && query.methods.some((method) => node.method.toLowerCase() === method.toLowerCase()))\n const isMutation =\n mutation !== false &&\n !isQuery &&\n difference(mutation ? mutation.methods : [], query ? query.methods : []).some((method) => node.method.toLowerCase() === method.toLowerCase())\n\n if (!isQuery || isMutation) return null\n\n const importPath = query ? query.importPath : '@tanstack/react-query'\n\n const queryName = resolver.resolveQueryName(node)\n const queryOptionsName = resolver.resolveQueryOptionsName(node)\n const queryKeyName = resolver.resolveQueryKeyName(node)\n const queryKeyTypeName = resolver.resolveQueryKeyTypeName(node)\n const clientName = resolver.resolveClientName(node)\n\n const meta = {\n file: resolver.resolveFile(\n { name: queryName, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n { root, output, group: group ?? undefined },\n ),\n fileTs: tsResolver.resolveFile(\n { name: node.operationId, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n { root, output: pluginTs.options?.output ?? output, group: pluginTs.options?.group ?? undefined },\n ),\n }\n\n const importedTypeNames = resolveOperationTypeNames(node, tsResolver, {\n paramsCasing,\n exclude: [queryKeyTypeName],\n order: 'body-response-first',\n })\n\n const pluginZod = parser === 'zod' ? driver.getPlugin(pluginZodName) : null\n const zodResolver = pluginZod ? driver.getResolver(pluginZodName) : null\n const fileZod = zodResolver\n ? zodResolver.resolveFile(\n { name: node.operationId, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n { root, output: pluginZod?.options?.output ?? output, group: pluginZod?.options?.group ?? undefined },\n )\n : null\n const zodSchemaNames = resolveZodSchemaNames(node, zodResolver)\n\n const clientPlugin = driver.getPlugin(pluginClientName)\n const hasClientPlugin = clientPlugin?.name === pluginClientName\n const shouldUseClientPlugin = hasClientPlugin && clientOptions.clientType !== 'class'\n const clientResolver = shouldUseClientPlugin ? driver.getResolver(pluginClientName) : null\n\n const clientFile = shouldUseClientPlugin\n ? clientResolver?.resolveFile(\n { name: node.operationId, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n {\n root,\n output: clientPlugin?.options?.output ?? output,\n group: clientPlugin?.options?.group ?? undefined,\n },\n )\n : null\n\n const resolvedClientName = shouldUseClientPlugin ? (clientResolver?.resolveName(node.operationId) ?? clientName) : clientName\n\n return (\n <File\n baseName={meta.file.baseName}\n path={meta.file.path}\n meta={meta.file.meta}\n banner={resolver.resolveBanner(ctx.meta, { output, config, file: { path: meta.file.path, baseName: meta.file.baseName } })}\n footer={resolver.resolveFooter(ctx.meta, { output, config, file: { path: meta.file.path, baseName: meta.file.baseName } })}\n >\n {fileZod && zodSchemaNames.length > 0 && <File.Import name={zodSchemaNames} root={meta.file.path} path={fileZod.path} />}\n {clientOptions.importPath ? (\n <>\n {!shouldUseClientPlugin && <File.Import name={'client'} path={clientOptions.importPath} />}\n <File.Import name={['Client', 'RequestConfig', 'ResponseErrorConfig']} path={clientOptions.importPath} isTypeOnly />\n {clientOptions.dataReturnType === 'full' && <File.Import name={['ResponseConfig']} path={clientOptions.importPath} isTypeOnly />}\n </>\n ) : (\n <>\n {!shouldUseClientPlugin && <File.Import name={['client']} root={meta.file.path} path={path.resolve(root, '.kubb/client.ts')} />}\n <File.Import\n name={['Client', 'RequestConfig', 'ResponseErrorConfig']}\n root={meta.file.path}\n path={path.resolve(root, '.kubb/client.ts')}\n isTypeOnly\n />\n {clientOptions.dataReturnType === 'full' && (\n <File.Import name={['ResponseConfig']} root={meta.file.path} path={path.resolve(root, '.kubb/client.ts')} isTypeOnly />\n )}\n </>\n )}\n {shouldUseClientPlugin && clientFile && <File.Import name={[resolvedClientName]} root={meta.file.path} path={clientFile.path} />}\n {!shouldUseClientPlugin && <File.Import name={['buildFormData']} root={meta.file.path} path={path.resolve(root, '.kubb/config.ts')} />}\n {customOptions && <File.Import name={[customOptions.name]} path={customOptions.importPath} />}\n {meta.fileTs && importedTypeNames.length > 0 && (\n <File.Import name={Array.from(new Set(importedTypeNames))} root={meta.file.path} path={meta.fileTs.path} isTypeOnly />\n )}\n\n <QueryKey\n name={queryKeyName}\n typeName={queryKeyTypeName}\n node={node}\n tsResolver={tsResolver}\n pathParamsType={pathParamsType}\n paramsCasing={paramsCasing}\n transformer={ctx.options.queryKey}\n />\n\n {!shouldUseClientPlugin && (\n <Client\n name={resolvedClientName}\n baseURL={clientOptions.baseURL}\n dataReturnType={clientOptions.dataReturnType || 'data'}\n paramsCasing={clientOptions.paramsCasing || paramsCasing}\n paramsType={paramsType}\n pathParamsType={pathParamsType}\n parser={parser}\n node={node}\n tsResolver={tsResolver}\n zodResolver={zodResolver}\n />\n )}\n\n <File.Import name={['queryOptions']} path={importPath} />\n\n <QueryOptions\n name={queryOptionsName}\n clientName={resolvedClientName}\n queryKeyName={queryKeyName}\n node={node}\n tsResolver={tsResolver}\n paramsCasing={paramsCasing}\n paramsType={paramsType}\n pathParamsType={pathParamsType}\n dataReturnType={clientOptions.dataReturnType || 'data'}\n />\n\n {query && (\n <>\n <File.Import name={['useQuery']} path={importPath} />\n <File.Import name={['QueryKey', 'QueryClient', 'QueryObserverOptions', 'UseQueryResult']} path={importPath} isTypeOnly />\n <Query\n name={queryName}\n queryOptionsName={queryOptionsName}\n queryKeyName={queryKeyName}\n queryKeyTypeName={queryKeyTypeName}\n node={node}\n tsResolver={tsResolver}\n paramsCasing={paramsCasing}\n paramsType={paramsType}\n pathParamsType={pathParamsType}\n dataReturnType={clientOptions.dataReturnType || 'data'}\n customOptions={customOptions}\n />\n </>\n )}\n </File>\n )\n },\n})\n","import path from 'node:path'\nimport { getOperationParameters, resolveOperationTypeNames } from '@internals/shared'\nimport { resolveZodSchemaNames } from '@internals/tanstack-query'\nimport { defineGenerator } from '@kubb/core'\nimport { Client, pluginClientName } from '@kubb/plugin-client'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { pluginZodName } from '@kubb/plugin-zod'\nimport { File, jsxRendererSync } from '@kubb/renderer-jsx'\nimport { difference } from 'remeda'\nimport { QueryKey, SuspenseInfiniteQuery, SuspenseInfiniteQueryOptions } from '../components'\nimport type { PluginReactQuery } from '../types'\n\n/**\n * Built-in generator for `useSuspenseInfiniteQuery` hooks. Enabled when both\n * `suspense` and `infinite` are configured. Combines suspense semantics with\n * cursor-based pagination — handlers throw promises while loading and pull\n * additional pages on demand.\n */\nexport const suspenseInfiniteQueryGenerator = defineGenerator<PluginReactQuery>({\n name: 'react-suspense-infinite-query',\n renderer: jsxRendererSync,\n operation(node, ctx) {\n const { config, driver, resolver, root } = ctx\n const {\n output,\n query,\n mutation,\n infinite,\n suspense,\n paramsCasing,\n paramsType,\n pathParamsType,\n parser,\n client: clientOptions,\n group,\n customOptions,\n } = ctx.options\n\n const pluginTs = driver.getPlugin(pluginTsName)\n if (!pluginTs) return null\n const tsResolver = driver.getResolver(pluginTsName)\n\n const isQuery = query === false || (!!query && query.methods.some((method) => node.method.toLowerCase() === method.toLowerCase()))\n const isMutation =\n mutation !== false &&\n !isQuery &&\n difference(mutation ? mutation.methods : [], query ? query.methods : []).some((method) => node.method.toLowerCase() === method.toLowerCase())\n const isSuspense = !!suspense\n const infiniteOptions = infinite && typeof infinite === 'object' ? infinite : null\n\n if (!isQuery || isMutation || !isSuspense || !infiniteOptions) return null\n\n // Validate queryParam exists in operation's query parameters\n const normalizeKey = (key: string) => key.replace(/\\?$/, '')\n const queryParamKeys = getOperationParameters(node).query.map((p) => p.name)\n const hasQueryParam = infiniteOptions.queryParam ? queryParamKeys.some((k) => normalizeKey(k) === infiniteOptions.queryParam) : false\n const hasCursorParam = !infiniteOptions.cursorParam || true\n\n if (!hasQueryParam || !hasCursorParam) return null\n\n const importPath = query ? query.importPath : '@tanstack/react-query'\n\n const queryName = resolver.resolveSuspenseInfiniteQueryName(node)\n const queryOptionsName = resolver.resolveSuspenseInfiniteQueryOptionsName(node)\n const queryKeyName = resolver.resolveSuspenseInfiniteQueryKeyName(node)\n const queryKeyTypeName = resolver.resolveSuspenseInfiniteQueryKeyTypeName(node)\n const clientBaseName = resolver.resolveSuspenseInfiniteClientName(node)\n\n const meta = {\n file: resolver.resolveFile(\n { name: queryName, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n { root, output, group: group ?? undefined },\n ),\n fileTs: tsResolver.resolveFile(\n { name: node.operationId, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n { root, output: pluginTs.options?.output ?? output, group: pluginTs.options?.group ?? undefined },\n ),\n }\n\n const importedTypeNames = resolveOperationTypeNames(node, tsResolver, { paramsCasing, order: 'body-response-first' })\n\n const pluginZod = parser === 'zod' ? driver.getPlugin(pluginZodName) : null\n const zodResolver = pluginZod ? driver.getResolver(pluginZodName) : null\n const fileZod = zodResolver\n ? zodResolver.resolveFile(\n { name: node.operationId, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n { root, output: pluginZod?.options?.output ?? output, group: pluginZod?.options?.group ?? undefined },\n )\n : null\n const zodSchemaNames = resolveZodSchemaNames(node, zodResolver)\n\n const clientPlugin = driver.getPlugin(pluginClientName)\n const hasClientPlugin = clientPlugin?.name === pluginClientName\n const shouldUseClientPlugin = hasClientPlugin && clientOptions.clientType !== 'class'\n const clientResolver = shouldUseClientPlugin ? driver.getResolver(pluginClientName) : null\n\n const clientFile = shouldUseClientPlugin\n ? clientResolver?.resolveFile(\n { name: node.operationId, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n {\n root,\n output: clientPlugin?.options?.output ?? output,\n group: clientPlugin?.options?.group ?? undefined,\n },\n )\n : null\n\n const resolvedClientName = shouldUseClientPlugin ? (clientResolver?.resolveName(node.operationId) ?? clientBaseName) : clientBaseName\n\n return (\n <File\n baseName={meta.file.baseName}\n path={meta.file.path}\n meta={meta.file.meta}\n banner={resolver.resolveBanner(ctx.meta, { output, config, file: { path: meta.file.path, baseName: meta.file.baseName } })}\n footer={resolver.resolveFooter(ctx.meta, { output, config, file: { path: meta.file.path, baseName: meta.file.baseName } })}\n >\n {fileZod && zodSchemaNames.length > 0 && <File.Import name={zodSchemaNames} root={meta.file.path} path={fileZod.path} />}\n {clientOptions.importPath ? (\n <>\n {!shouldUseClientPlugin && <File.Import name={'client'} path={clientOptions.importPath} />}\n <File.Import name={['Client', 'RequestConfig', 'ResponseErrorConfig']} path={clientOptions.importPath} isTypeOnly />\n {clientOptions.dataReturnType === 'full' && <File.Import name={['ResponseConfig']} path={clientOptions.importPath} isTypeOnly />}\n </>\n ) : (\n <>\n {!shouldUseClientPlugin && <File.Import name={['client']} root={meta.file.path} path={path.resolve(root, '.kubb/client.ts')} />}\n <File.Import\n name={['Client', 'RequestConfig', 'ResponseErrorConfig']}\n root={meta.file.path}\n path={path.resolve(root, '.kubb/client.ts')}\n isTypeOnly\n />\n {clientOptions.dataReturnType === 'full' && (\n <File.Import name={['ResponseConfig']} root={meta.file.path} path={path.resolve(root, '.kubb/client.ts')} isTypeOnly />\n )}\n </>\n )}\n {shouldUseClientPlugin && clientFile && <File.Import name={[resolvedClientName]} root={meta.file.path} path={clientFile.path} />}\n {!shouldUseClientPlugin && <File.Import name={['buildFormData']} root={meta.file.path} path={path.resolve(root, '.kubb/config.ts')} />}\n {customOptions && <File.Import name={[customOptions.name]} path={customOptions.importPath} />}\n {meta.fileTs && importedTypeNames.length > 0 && (\n <File.Import name={Array.from(new Set(importedTypeNames))} root={meta.file.path} path={meta.fileTs.path} isTypeOnly />\n )}\n\n <QueryKey\n name={queryKeyName}\n typeName={queryKeyTypeName}\n node={node}\n tsResolver={tsResolver}\n pathParamsType={pathParamsType}\n paramsCasing={paramsCasing}\n transformer={ctx.options.queryKey}\n />\n\n {!shouldUseClientPlugin && (\n <Client\n name={resolvedClientName}\n baseURL={clientOptions.baseURL}\n dataReturnType={clientOptions.dataReturnType || 'data'}\n paramsCasing={clientOptions.paramsCasing || paramsCasing}\n paramsType={paramsType}\n pathParamsType={pathParamsType}\n parser={parser}\n node={node}\n tsResolver={tsResolver}\n zodResolver={zodResolver}\n />\n )}\n\n <File.Import name={['InfiniteData']} isTypeOnly path={importPath} />\n <File.Import name={['infiniteQueryOptions']} path={importPath} />\n\n <SuspenseInfiniteQueryOptions\n name={queryOptionsName}\n clientName={resolvedClientName}\n queryKeyName={queryKeyName}\n node={node}\n tsResolver={tsResolver}\n paramsCasing={paramsCasing}\n paramsType={paramsType}\n pathParamsType={pathParamsType}\n dataReturnType={clientOptions.dataReturnType || 'data'}\n cursorParam={infiniteOptions.cursorParam}\n nextParam={infiniteOptions.nextParam}\n previousParam={infiniteOptions.previousParam}\n initialPageParam={infiniteOptions.initialPageParam}\n queryParam={infiniteOptions.queryParam}\n />\n\n <File.Import name={['useSuspenseInfiniteQuery']} path={importPath} />\n <File.Import name={['QueryKey', 'QueryClient', 'UseSuspenseInfiniteQueryOptions', 'UseSuspenseInfiniteQueryResult']} path={importPath} isTypeOnly />\n\n <SuspenseInfiniteQuery\n name={queryName}\n queryOptionsName={queryOptionsName}\n queryKeyName={queryKeyName}\n queryKeyTypeName={queryKeyTypeName}\n node={node}\n tsResolver={tsResolver}\n paramsCasing={paramsCasing}\n paramsType={paramsType}\n pathParamsType={pathParamsType}\n dataReturnType={clientOptions.dataReturnType || 'data'}\n initialPageParam={infiniteOptions.initialPageParam}\n queryParam={infiniteOptions.queryParam}\n customOptions={customOptions}\n />\n </File>\n )\n },\n})\n","import path from 'node:path'\nimport { resolveOperationTypeNames } from '@internals/shared'\nimport { resolveZodSchemaNames } from '@internals/tanstack-query'\nimport { defineGenerator } from '@kubb/core'\nimport { Client, pluginClientName } from '@kubb/plugin-client'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { pluginZodName } from '@kubb/plugin-zod'\nimport { File, jsxRendererSync } from '@kubb/renderer-jsx'\nimport { difference } from 'remeda'\nimport { QueryKey, QueryOptions, SuspenseQuery } from '../components'\nimport type { PluginReactQuery } from '../types'\n\n/**\n * Built-in generator for `useSuspenseQuery` hooks. Enabled when\n * `pluginReactQuery({ suspense: {} })`. Emits one `useFooSuspenseQuery` hook\n * per query operation. Suspense queries throw promises while loading and\n * require a `<Suspense>` boundary in the React tree. TanStack Query v5+ only.\n */\nexport const suspenseQueryGenerator = defineGenerator<PluginReactQuery>({\n name: 'react-suspense-query',\n renderer: jsxRendererSync,\n operation(node, ctx) {\n const { config, driver, resolver, root } = ctx\n const { output, query, mutation, suspense, paramsCasing, paramsType, pathParamsType, parser, client: clientOptions, group, customOptions } = ctx.options\n\n const pluginTs = driver.getPlugin(pluginTsName)\n if (!pluginTs) return null\n const tsResolver = driver.getResolver(pluginTsName)\n\n // query: false means \"this IS a query op\" (suspense hooks still generate)\n const isQuery = query === false || (!!query && query.methods.some((method) => node.method.toLowerCase() === method.toLowerCase()))\n const isMutation =\n mutation !== false &&\n !isQuery &&\n difference(mutation ? mutation.methods : [], query ? query.methods : []).some((method) => node.method.toLowerCase() === method.toLowerCase())\n const isSuspense = !!suspense\n\n if (!isQuery || isMutation || !isSuspense) return null\n\n const importPath = query ? query.importPath : '@tanstack/react-query'\n\n const queryName = resolver.resolveSuspenseQueryName(node)\n const queryOptionsName = resolver.resolveSuspenseQueryOptionsName(node)\n const queryKeyName = resolver.resolveSuspenseQueryKeyName(node)\n const queryKeyTypeName = resolver.resolveSuspenseQueryKeyTypeName(node)\n const clientName = resolver.resolveSuspenseClientName(node)\n\n const meta = {\n file: resolver.resolveFile(\n { name: queryName, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n { root, output, group: group ?? undefined },\n ),\n fileTs: tsResolver.resolveFile(\n { name: node.operationId, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n { root, output: pluginTs.options?.output ?? output, group: pluginTs.options?.group ?? undefined },\n ),\n }\n\n const importedTypeNames = resolveOperationTypeNames(node, tsResolver, {\n paramsCasing,\n exclude: [queryKeyTypeName],\n order: 'body-response-first',\n })\n\n const pluginZod = parser === 'zod' ? driver.getPlugin(pluginZodName) : null\n const zodResolver = pluginZod ? driver.getResolver(pluginZodName) : null\n const fileZod = zodResolver\n ? zodResolver.resolveFile(\n { name: node.operationId, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n { root, output: pluginZod?.options?.output ?? output, group: pluginZod?.options?.group ?? undefined },\n )\n : null\n const zodSchemaNames = resolveZodSchemaNames(node, zodResolver)\n\n const clientPlugin = driver.getPlugin(pluginClientName)\n const hasClientPlugin = clientPlugin?.name === pluginClientName\n const shouldUseClientPlugin = hasClientPlugin && clientOptions.clientType !== 'class'\n const clientResolver = shouldUseClientPlugin ? driver.getResolver(pluginClientName) : null\n\n const clientFile = shouldUseClientPlugin\n ? clientResolver?.resolveFile(\n { name: node.operationId, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n {\n root,\n output: clientPlugin?.options?.output ?? output,\n group: clientPlugin?.options?.group ?? undefined,\n },\n )\n : null\n\n const resolvedClientName = shouldUseClientPlugin ? (clientResolver?.resolveName(node.operationId) ?? clientName) : clientName\n\n return (\n <File\n baseName={meta.file.baseName}\n path={meta.file.path}\n meta={meta.file.meta}\n banner={resolver.resolveBanner(ctx.meta, { output, config, file: { path: meta.file.path, baseName: meta.file.baseName } })}\n footer={resolver.resolveFooter(ctx.meta, { output, config, file: { path: meta.file.path, baseName: meta.file.baseName } })}\n >\n {fileZod && zodSchemaNames.length > 0 && <File.Import name={zodSchemaNames} root={meta.file.path} path={fileZod.path} />}\n {clientOptions.importPath ? (\n <>\n {!shouldUseClientPlugin && <File.Import name={'client'} path={clientOptions.importPath} />}\n <File.Import name={['Client', 'RequestConfig', 'ResponseErrorConfig']} path={clientOptions.importPath} isTypeOnly />\n {clientOptions.dataReturnType === 'full' && <File.Import name={['ResponseConfig']} path={clientOptions.importPath} isTypeOnly />}\n </>\n ) : (\n <>\n {!shouldUseClientPlugin && <File.Import name={['client']} root={meta.file.path} path={path.resolve(root, '.kubb/client.ts')} />}\n <File.Import\n name={['Client', 'RequestConfig', 'ResponseErrorConfig']}\n root={meta.file.path}\n path={path.resolve(root, '.kubb/client.ts')}\n isTypeOnly\n />\n {clientOptions.dataReturnType === 'full' && (\n <File.Import name={['ResponseConfig']} root={meta.file.path} path={path.resolve(root, '.kubb/client.ts')} isTypeOnly />\n )}\n </>\n )}\n {shouldUseClientPlugin && clientFile && <File.Import name={[resolvedClientName]} root={meta.file.path} path={clientFile.path} />}\n {!shouldUseClientPlugin && <File.Import name={['buildFormData']} root={meta.file.path} path={path.resolve(root, '.kubb/config.ts')} />}\n {customOptions && <File.Import name={[customOptions.name]} path={customOptions.importPath} />}\n {meta.fileTs && importedTypeNames.length > 0 && (\n <File.Import name={Array.from(new Set(importedTypeNames))} root={meta.file.path} path={meta.fileTs.path} isTypeOnly />\n )}\n\n <QueryKey\n name={queryKeyName}\n typeName={queryKeyTypeName}\n node={node}\n tsResolver={tsResolver}\n pathParamsType={pathParamsType}\n paramsCasing={paramsCasing}\n transformer={ctx.options.queryKey}\n />\n\n {!shouldUseClientPlugin && (\n <Client\n name={resolvedClientName}\n baseURL={clientOptions.baseURL}\n dataReturnType={clientOptions.dataReturnType || 'data'}\n paramsCasing={clientOptions.paramsCasing || paramsCasing}\n paramsType={paramsType}\n pathParamsType={pathParamsType}\n parser={parser}\n node={node}\n tsResolver={tsResolver}\n zodResolver={zodResolver}\n />\n )}\n\n <File.Import name={['queryOptions']} path={importPath} />\n\n <QueryOptions\n name={queryOptionsName}\n clientName={resolvedClientName}\n queryKeyName={queryKeyName}\n node={node}\n tsResolver={tsResolver}\n paramsCasing={paramsCasing}\n paramsType={paramsType}\n pathParamsType={pathParamsType}\n dataReturnType={clientOptions.dataReturnType || 'data'}\n />\n\n {suspense && (\n <>\n <File.Import name={['useSuspenseQuery']} path={importPath} />\n <File.Import name={['QueryKey', 'QueryClient', 'UseSuspenseQueryOptions', 'UseSuspenseQueryResult']} path={importPath} isTypeOnly />\n <SuspenseQuery\n name={queryName}\n queryOptionsName={queryOptionsName}\n queryKeyName={queryKeyName}\n queryKeyTypeName={queryKeyTypeName}\n node={node}\n tsResolver={tsResolver}\n paramsCasing={paramsCasing}\n paramsType={paramsType}\n pathParamsType={pathParamsType}\n dataReturnType={clientOptions.dataReturnType || 'data'}\n customOptions={customOptions}\n />\n </>\n )}\n </File>\n )\n },\n})\n"],"mappings":"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"}