@kubb/plugin-react-query 5.0.0-beta.36 → 5.0.0-beta.42

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.
package/README.md CHANGED
@@ -5,9 +5,9 @@
5
5
 
6
6
  [![npm version][npm-version-src]][npm-version-href]
7
7
  [![npm downloads][npm-downloads-src]][npm-downloads-href]
8
- [![Coverage][coverage-src]][coverage-href]
8
+ [![Stars][stars-src]][stars-href]
9
9
  [![License][license-src]][license-href]
10
- [![Sponsors][sponsors-src]][sponsors-href]
10
+ [![Node][node-src]][node-href]
11
11
 
12
12
  <h4>
13
13
  <a href="https://kubb.dev/plugins/react-query" target="_blank">Documentation</a>
@@ -58,17 +58,13 @@ Kubb is an open source project, and its development is funded entirely by sponso
58
58
 
59
59
  <!-- Badges -->
60
60
 
61
- [npm-version-src]: https://img.shields.io/npm/v/@kubb/plugin-react-query?flat&colorA=18181B&colorB=f58517
62
- [npm-version-href]: https://npmjs.com/package/@kubb/plugin-react-query
63
- [npm-downloads-src]: https://img.shields.io/npm/dm/@kubb/plugin-react-query?flat&colorA=18181B&colorB=f58517
64
- [npm-downloads-href]: https://npmjs.com/package/@kubb/plugin-react-query
65
- [license-src]: https://img.shields.io/github/license/kubb-labs/kubb.svg?flat&colorA=18181B&colorB=f58517
61
+ [npm-version-src]: https://shieldcn.dev/npm/v/@kubb/plugin-react-query.svg?variant=secondary&size=xs&theme=zinc&mode=dark
62
+ [npm-version-href]: https://npmx.dev/package/@kubb/plugin-react-query
63
+ [npm-downloads-src]: https://shieldcn.dev/npm/dm/@kubb/plugin-react-query.svg?variant=secondary&size=xs&theme=zinc&mode=dark
64
+ [npm-downloads-href]: https://npmx.dev/package/@kubb/plugin-react-query
65
+ [stars-src]: https://shieldcn.dev/github/stars/kubb-labs/kubb.svg?variant=secondary&size=xs&theme=zinc&mode=dark
66
+ [stars-href]: https://github.com/kubb-labs/kubb
67
+ [license-src]: https://shieldcn.dev/npm/license/@kubb/plugin-react-query.svg?variant=secondary&size=xs&theme=zinc
66
68
  [license-href]: https://github.com/kubb-labs/kubb/blob/main/LICENSE
67
- [build-src]: https://img.shields.io/github/actions/workflow/status/kubb-labs/kubb/ci.yaml?style=flat&colorA=18181B&colorB=f58517
68
- [build-href]: https://www.npmjs.com/package/@kubb/plugin-react-query
69
- [minified-src]: https://img.shields.io/bundlephobia/min/@kubb/plugin-react-query?style=flat&colorA=18181B&colorB=f58517
70
- [minified-href]: https://www.npmjs.com/package/@kubb/plugin-react-query
71
- [coverage-src]: https://img.shields.io/codecov/c/github/kubb-labs/kubb?style=flat&colorA=18181B&colorB=f58517
72
- [coverage-href]: https://www.npmjs.com/package/@kubb/plugin-react-query
73
- [sponsors-src]: https://img.shields.io/github/sponsors/stijnvanhulle?style=flat&colorA=18181B&colorB=f58517
74
- [sponsors-href]: https://github.com/sponsors/stijnvanhulle/
69
+ [node-src]: https://shieldcn.dev/npm/node/@kubb/plugin-react-query.svg?variant=secondary&size=xs&theme=zinc&mode=dark
70
+ [node-href]: https://npmx.dev/package/@kubb/plugin-react-query
@@ -8,7 +8,6 @@ import { pluginZodName } from "@kubb/plugin-zod";
8
8
  import { File, Function, Type, jsxRendererSync } from "@kubb/renderer-jsx";
9
9
  import { Fragment, jsx, jsxs } from "@kubb/renderer-jsx/jsx-runtime";
10
10
  import fs from "node:fs";
11
- import { difference } from "remeda";
12
11
  //#region src/generators/customHookOptionsFileGenerator.tsx
13
12
  /**
14
13
  * Scaffolds the user-editable `useCustomHookOptions` file when
@@ -144,7 +143,8 @@ const hookOptionsGenerator = defineGenerator({
144
143
  const nodeInfinite = "infinite" in opOverrides ? opOverrides.infinite : infinite;
145
144
  const nodeInfiniteOptions = nodeInfinite && typeof nodeInfinite === "object" ? nodeInfinite : null;
146
145
  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 isMutationOp = nodeMutation !== false && !isQueryOp && difference(nodeMutation ? nodeMutation.methods : [], nodeQuery ? nodeQuery.methods : []).some((m) => node.method.toLowerCase() === m.toLowerCase());
146
+ const nodeQueryMethods = new Set(nodeQuery ? nodeQuery.methods : []);
147
+ const isMutationOp = nodeMutation !== false && !isQueryOp && (nodeMutation ? nodeMutation.methods : []).some((m) => !nodeQueryMethods.has(m) && node.method.toLowerCase() === m.toLowerCase());
148
148
  const isSuspenseOp = !!suspense;
149
149
  const isInfiniteOp = !!nodeInfiniteOptions;
150
150
  if (isQueryOp) {
@@ -280,7 +280,8 @@ const infiniteQueryGenerator = defineGenerator({
280
280
  if (!pluginTs) return null;
281
281
  const tsResolver = driver.getResolver(pluginTsName);
282
282
  const isQuery = query === false || !!query && query.methods.some((method) => node.method.toLowerCase() === method.toLowerCase());
283
- const isMutation = mutation !== false && !isQuery && difference(mutation ? mutation.methods : [], query ? query.methods : []).some((method) => node.method.toLowerCase() === method.toLowerCase());
283
+ const queryMethods = new Set(query ? query.methods : []);
284
+ const isMutation = mutation !== false && !isQuery && (mutation ? mutation.methods : []).some((method) => !queryMethods.has(method) && node.method.toLowerCase() === method.toLowerCase());
284
285
  const infiniteOptions = infinite && typeof infinite === "object" ? infinite : null;
285
286
  if (!isQuery || isMutation || !infiniteOptions) return null;
286
287
  const normalizeKey = (key) => key.replace(/\?$/, "");
@@ -513,7 +514,8 @@ const mutationGenerator = defineGenerator({
513
514
  if (!pluginTs) return null;
514
515
  const tsResolver = driver.getResolver(pluginTsName);
515
516
  const isQuery = query === false || !!query && query.methods.some((method) => node.method.toLowerCase() === method.toLowerCase());
516
- if (!(mutation !== false && !isQuery && difference(mutation ? mutation.methods : [], query ? query.methods : []).some((method) => node.method.toLowerCase() === method.toLowerCase()))) return null;
517
+ const queryMethods = new Set(query ? query.methods : []);
518
+ if (!(mutation !== false && !isQuery && (mutation ? mutation.methods : []).some((method) => !queryMethods.has(method) && node.method.toLowerCase() === method.toLowerCase()))) return null;
517
519
  const importPath = mutation ? mutation.importPath : "@tanstack/react-query";
518
520
  const mutationHookName = resolver.resolveMutationName(node);
519
521
  const mutationTypeName = resolver.resolveMutationTypeName(node);
@@ -724,7 +726,8 @@ const queryGenerator = defineGenerator({
724
726
  if (!pluginTs) return null;
725
727
  const tsResolver = driver.getResolver(pluginTsName);
726
728
  const isQuery = query === false || !!query && query.methods.some((method) => node.method.toLowerCase() === method.toLowerCase());
727
- const isMutation = mutation !== false && !isQuery && difference(mutation ? mutation.methods : [], query ? query.methods : []).some((method) => node.method.toLowerCase() === method.toLowerCase());
729
+ const queryMethods = new Set(query ? query.methods : []);
730
+ const isMutation = mutation !== false && !isQuery && (mutation ? mutation.methods : []).some((method) => !queryMethods.has(method) && node.method.toLowerCase() === method.toLowerCase());
728
731
  if (!isQuery || isMutation) return null;
729
732
  const importPath = query ? query.importPath : "@tanstack/react-query";
730
733
  const queryName = resolver.resolveQueryName(node);
@@ -942,7 +945,8 @@ const suspenseInfiniteQueryGenerator = defineGenerator({
942
945
  if (!pluginTs) return null;
943
946
  const tsResolver = driver.getResolver(pluginTsName);
944
947
  const isQuery = query === false || !!query && query.methods.some((method) => node.method.toLowerCase() === method.toLowerCase());
945
- const isMutation = mutation !== false && !isQuery && difference(mutation ? mutation.methods : [], query ? query.methods : []).some((method) => node.method.toLowerCase() === method.toLowerCase());
948
+ const queryMethods = new Set(query ? query.methods : []);
949
+ const isMutation = mutation !== false && !isQuery && (mutation ? mutation.methods : []).some((method) => !queryMethods.has(method) && node.method.toLowerCase() === method.toLowerCase());
946
950
  const isSuspense = !!suspense;
947
951
  const infiniteOptions = infinite && typeof infinite === "object" ? infinite : null;
948
952
  if (!isQuery || isMutation || !isSuspense || !infiniteOptions) return null;
@@ -1176,7 +1180,8 @@ const suspenseQueryGenerator = defineGenerator({
1176
1180
  if (!pluginTs) return null;
1177
1181
  const tsResolver = driver.getResolver(pluginTsName);
1178
1182
  const isQuery = query === false || !!query && query.methods.some((method) => node.method.toLowerCase() === method.toLowerCase());
1179
- const isMutation = mutation !== false && !isQuery && difference(mutation ? mutation.methods : [], query ? query.methods : []).some((method) => node.method.toLowerCase() === method.toLowerCase());
1183
+ const queryMethods = new Set(query ? query.methods : []);
1184
+ const isMutation = mutation !== false && !isQuery && (mutation ? mutation.methods : []).some((method) => !queryMethods.has(method) && node.method.toLowerCase() === method.toLowerCase());
1180
1185
  if (!isQuery || isMutation || !!!suspense) return null;
1181
1186
  const importPath = query ? query.importPath : "@tanstack/react-query";
1182
1187
  const queryName = resolver.resolveSuspenseQueryName(node);
@@ -1379,4 +1384,4 @@ const suspenseQueryGenerator = defineGenerator({
1379
1384
  //#endregion
1380
1385
  export { infiniteQueryGenerator as a, mutationGenerator as i, suspenseInfiniteQueryGenerator as n, hookOptionsGenerator as o, queryGenerator as r, customHookOptionsFileGenerator as s, suspenseQueryGenerator as t };
1381
1386
 
1382
- //# sourceMappingURL=generators-BXapgG_2.js.map
1387
+ //# sourceMappingURL=generators-B86BJkmW.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generators-B86BJkmW.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, operationFileEntry } from '@internals/shared'\nimport { ast, defineGenerator } from '@kubb/core'\nimport { File, jsxRendererSync, Type } from '@kubb/renderer-jsx'\nimport type { KubbReactNode } from '@kubb/renderer-jsx/types'\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 if (!ast.isHttpOperationNode(node)) continue\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 nodeQueryMethods = new Set(nodeQuery ? nodeQuery.methods : [])\n const isMutationOp =\n nodeMutation !== false &&\n !isQueryOp &&\n (nodeMutation ? nodeMutation.methods : []).some((m) => !nodeQueryMethods.has(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(operationFileEntry(node, queryHookName), { root, output, group: group ?? undefined })\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(operationFileEntry(node, suspenseHookName), { root, output, group: group ?? undefined })\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(operationFileEntry(node, infiniteHookName), { root, output, group: group ?? undefined })\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(operationFileEntry(node, suspenseInfiniteHookName), {\n root,\n output,\n 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(operationFileEntry(node, mutationHookName), { root, output, group: group ?? undefined })\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, operationFileEntry, resolveOperationTypeNames } from '@internals/shared'\nimport { resolveZodSchemaNames } from '@internals/tanstack-query'\nimport { ast, 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 { 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 if (!ast.isHttpOperationNode(node)) return null\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 queryMethods = new Set(query ? query.methods : [])\n const isMutation =\n mutation !== false &&\n !isQuery &&\n (mutation ? mutation.methods : []).some((method) => !queryMethods.has(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(operationFileEntry(node, queryName), { root, output, group: group ?? undefined }),\n fileTs: tsResolver.resolveFile(operationFileEntry(node, node.operationId), {\n root,\n output: pluginTs.options?.output ?? output,\n 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(operationFileEntry(node, node.operationId), {\n root,\n output: pluginZod?.options?.output ?? output,\n 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(operationFileEntry(node, node.operationId), {\n root,\n output: clientPlugin?.options?.output ?? output,\n group: clientPlugin?.options?.group ?? undefined,\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 { operationFileEntry, resolveOperationTypeNames } from '@internals/shared'\nimport { resolveZodSchemaNames } from '@internals/tanstack-query'\nimport { ast, 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 { 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 if (!ast.isHttpOperationNode(node)) return null\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 queryMethods = new Set(query ? query.methods : [])\n const isMutation =\n mutation !== false &&\n !isQuery &&\n (mutation ? mutation.methods : []).some((method) => !queryMethods.has(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(operationFileEntry(node, mutationHookName), { root, output, group: group ?? undefined }),\n fileTs: tsResolver.resolveFile(operationFileEntry(node, node.operationId), {\n root,\n output: pluginTs.options?.output ?? output,\n 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(operationFileEntry(node, node.operationId), {\n root,\n output: pluginZod?.options?.output ?? output,\n 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(operationFileEntry(node, node.operationId), {\n root,\n output: clientPlugin?.options?.output ?? output,\n group: clientPlugin?.options?.group ?? undefined,\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 { operationFileEntry, resolveOperationTypeNames } from '@internals/shared'\nimport { resolveZodSchemaNames } from '@internals/tanstack-query'\nimport { ast, 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 { 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 if (!ast.isHttpOperationNode(node)) return null\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 queryMethods = new Set(query ? query.methods : [])\n const isMutation =\n mutation !== false &&\n !isQuery &&\n (mutation ? mutation.methods : []).some((method) => !queryMethods.has(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(operationFileEntry(node, queryName), { root, output, group: group ?? undefined }),\n fileTs: tsResolver.resolveFile(operationFileEntry(node, node.operationId), {\n root,\n output: pluginTs.options?.output ?? output,\n 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(operationFileEntry(node, node.operationId), {\n root,\n output: pluginZod?.options?.output ?? output,\n 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(operationFileEntry(node, node.operationId), {\n root,\n output: clientPlugin?.options?.output ?? output,\n group: clientPlugin?.options?.group ?? undefined,\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, operationFileEntry, resolveOperationTypeNames } from '@internals/shared'\nimport { resolveZodSchemaNames } from '@internals/tanstack-query'\nimport { ast, 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 { 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 if (!ast.isHttpOperationNode(node)) return null\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 queryMethods = new Set(query ? query.methods : [])\n const isMutation =\n mutation !== false &&\n !isQuery &&\n (mutation ? mutation.methods : []).some((method) => !queryMethods.has(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(operationFileEntry(node, queryName), { root, output, group: group ?? undefined }),\n fileTs: tsResolver.resolveFile(operationFileEntry(node, node.operationId), {\n root,\n output: pluginTs.options?.output ?? output,\n 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(operationFileEntry(node, node.operationId), {\n root,\n output: pluginZod?.options?.output ?? output,\n 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(operationFileEntry(node, node.operationId), {\n root,\n output: clientPlugin?.options?.output ?? output,\n group: clientPlugin?.options?.group ?? undefined,\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 { operationFileEntry, resolveOperationTypeNames } from '@internals/shared'\nimport { resolveZodSchemaNames } from '@internals/tanstack-query'\nimport { ast, 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 { 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 if (!ast.isHttpOperationNode(node)) return null\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 queryMethods = new Set(query ? query.methods : [])\n const isMutation =\n mutation !== false &&\n !isQuery &&\n (mutation ? mutation.methods : []).some((method) => !queryMethods.has(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(operationFileEntry(node, queryName), { root, output, group: group ?? undefined }),\n fileTs: tsResolver.resolveFile(operationFileEntry(node, node.operationId), {\n root,\n output: pluginTs.options?.output ?? output,\n 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(operationFileEntry(node, node.operationId), {\n root,\n output: pluginZod?.options?.output ?? output,\n 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(operationFileEntry(node, node.operationId), {\n root,\n output: clientPlugin?.options?.output ?? output,\n group: clientPlugin?.options?.group ?? undefined,\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 suspense\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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"}
@@ -9,7 +9,6 @@ let _kubb_renderer_jsx = require("@kubb/renderer-jsx");
9
9
  let _kubb_renderer_jsx_jsx_runtime = require("@kubb/renderer-jsx/jsx-runtime");
10
10
  let node_fs = require("node:fs");
11
11
  node_fs = require_components.__toESM(node_fs);
12
- let remeda = require("remeda");
13
12
  //#region src/generators/customHookOptionsFileGenerator.tsx
14
13
  /**
15
14
  * Scaffolds the user-editable `useCustomHookOptions` file when
@@ -145,7 +144,8 @@ const hookOptionsGenerator = (0, _kubb_core.defineGenerator)({
145
144
  const nodeInfinite = "infinite" in opOverrides ? opOverrides.infinite : infinite;
146
145
  const nodeInfiniteOptions = nodeInfinite && typeof nodeInfinite === "object" ? nodeInfinite : null;
147
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());
148
- const isMutationOp = nodeMutation !== false && !isQueryOp && (0, remeda.difference)(nodeMutation ? nodeMutation.methods : [], 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
149
  const isSuspenseOp = !!suspense;
150
150
  const isInfiniteOp = !!nodeInfiniteOptions;
151
151
  if (isQueryOp) {
@@ -281,7 +281,8 @@ const infiniteQueryGenerator = (0, _kubb_core.defineGenerator)({
281
281
  if (!pluginTs) return null;
282
282
  const tsResolver = driver.getResolver(_kubb_plugin_ts.pluginTsName);
283
283
  const isQuery = query === false || !!query && query.methods.some((method) => node.method.toLowerCase() === method.toLowerCase());
284
- const isMutation = mutation !== false && !isQuery && (0, remeda.difference)(mutation ? mutation.methods : [], 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());
285
286
  const infiniteOptions = infinite && typeof infinite === "object" ? infinite : null;
286
287
  if (!isQuery || isMutation || !infiniteOptions) return null;
287
288
  const normalizeKey = (key) => key.replace(/\?$/, "");
@@ -514,7 +515,8 @@ const mutationGenerator = (0, _kubb_core.defineGenerator)({
514
515
  if (!pluginTs) return null;
515
516
  const tsResolver = driver.getResolver(_kubb_plugin_ts.pluginTsName);
516
517
  const isQuery = query === false || !!query && query.methods.some((method) => node.method.toLowerCase() === method.toLowerCase());
517
- if (!(mutation !== false && !isQuery && (0, remeda.difference)(mutation ? mutation.methods : [], query ? query.methods : []).some((method) => node.method.toLowerCase() === method.toLowerCase()))) return null;
518
+ const queryMethods = new Set(query ? query.methods : []);
519
+ if (!(mutation !== false && !isQuery && (mutation ? mutation.methods : []).some((method) => !queryMethods.has(method) && node.method.toLowerCase() === method.toLowerCase()))) return null;
518
520
  const importPath = mutation ? mutation.importPath : "@tanstack/react-query";
519
521
  const mutationHookName = resolver.resolveMutationName(node);
520
522
  const mutationTypeName = resolver.resolveMutationTypeName(node);
@@ -725,7 +727,8 @@ const queryGenerator = (0, _kubb_core.defineGenerator)({
725
727
  if (!pluginTs) return null;
726
728
  const tsResolver = driver.getResolver(_kubb_plugin_ts.pluginTsName);
727
729
  const isQuery = query === false || !!query && query.methods.some((method) => node.method.toLowerCase() === method.toLowerCase());
728
- const isMutation = mutation !== false && !isQuery && (0, remeda.difference)(mutation ? mutation.methods : [], query ? query.methods : []).some((method) => node.method.toLowerCase() === method.toLowerCase());
730
+ const queryMethods = new Set(query ? query.methods : []);
731
+ const isMutation = mutation !== false && !isQuery && (mutation ? mutation.methods : []).some((method) => !queryMethods.has(method) && node.method.toLowerCase() === method.toLowerCase());
729
732
  if (!isQuery || isMutation) return null;
730
733
  const importPath = query ? query.importPath : "@tanstack/react-query";
731
734
  const queryName = resolver.resolveQueryName(node);
@@ -943,7 +946,8 @@ const suspenseInfiniteQueryGenerator = (0, _kubb_core.defineGenerator)({
943
946
  if (!pluginTs) return null;
944
947
  const tsResolver = driver.getResolver(_kubb_plugin_ts.pluginTsName);
945
948
  const isQuery = query === false || !!query && query.methods.some((method) => node.method.toLowerCase() === method.toLowerCase());
946
- const isMutation = mutation !== false && !isQuery && (0, remeda.difference)(mutation ? mutation.methods : [], query ? query.methods : []).some((method) => node.method.toLowerCase() === method.toLowerCase());
949
+ const queryMethods = new Set(query ? query.methods : []);
950
+ const isMutation = mutation !== false && !isQuery && (mutation ? mutation.methods : []).some((method) => !queryMethods.has(method) && node.method.toLowerCase() === method.toLowerCase());
947
951
  const isSuspense = !!suspense;
948
952
  const infiniteOptions = infinite && typeof infinite === "object" ? infinite : null;
949
953
  if (!isQuery || isMutation || !isSuspense || !infiniteOptions) return null;
@@ -1177,7 +1181,8 @@ const suspenseQueryGenerator = (0, _kubb_core.defineGenerator)({
1177
1181
  if (!pluginTs) return null;
1178
1182
  const tsResolver = driver.getResolver(_kubb_plugin_ts.pluginTsName);
1179
1183
  const isQuery = query === false || !!query && query.methods.some((method) => node.method.toLowerCase() === method.toLowerCase());
1180
- const isMutation = mutation !== false && !isQuery && (0, remeda.difference)(mutation ? mutation.methods : [], query ? query.methods : []).some((method) => node.method.toLowerCase() === method.toLowerCase());
1184
+ const queryMethods = new Set(query ? query.methods : []);
1185
+ const isMutation = mutation !== false && !isQuery && (mutation ? mutation.methods : []).some((method) => !queryMethods.has(method) && node.method.toLowerCase() === method.toLowerCase());
1181
1186
  if (!isQuery || isMutation || !!!suspense) return null;
1182
1187
  const importPath = query ? query.importPath : "@tanstack/react-query";
1183
1188
  const queryName = resolver.resolveSuspenseQueryName(node);
@@ -1421,4 +1426,4 @@ Object.defineProperty(exports, "suspenseQueryGenerator", {
1421
1426
  }
1422
1427
  });
1423
1428
 
1424
- //# sourceMappingURL=generators-Miad-8AB.cjs.map
1429
+ //# sourceMappingURL=generators-BqGaMUH6.cjs.map