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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/README.md +38 -91
  2. package/dist/{components-DTGLu4UV.js → components-DL0Cai7l.js} +570 -514
  3. package/dist/components-DL0Cai7l.js.map +1 -0
  4. package/dist/{components-dAKJEn9b.cjs → components-yMQOuFmI.cjs} +600 -514
  5. package/dist/components-yMQOuFmI.cjs.map +1 -0
  6. package/dist/components.cjs +1 -1
  7. package/dist/components.d.ts +5 -77
  8. package/dist/components.js +1 -1
  9. package/dist/{generators-C_fbcjpG.js → generators-BG-Vcvfg.js} +444 -597
  10. package/dist/generators-BG-Vcvfg.js.map +1 -0
  11. package/dist/{generators-CWEQsdO9.cjs → generators-zGKP8yII.cjs} +442 -595
  12. package/dist/generators-zGKP8yII.cjs.map +1 -0
  13. package/dist/generators.cjs +1 -1
  14. package/dist/generators.d.ts +49 -10
  15. package/dist/generators.js +1 -1
  16. package/dist/index.cjs +201 -28
  17. package/dist/index.cjs.map +1 -1
  18. package/dist/index.d.ts +32 -4
  19. package/dist/index.js +203 -30
  20. package/dist/index.js.map +1 -1
  21. package/dist/types-X7D0NSvJ.d.ts +396 -0
  22. package/package.json +18 -27
  23. package/src/components/InfiniteQuery.tsx +27 -17
  24. package/src/components/InfiniteQueryOptions.tsx +60 -81
  25. package/src/components/Mutation.tsx +39 -20
  26. package/src/components/MutationOptions.tsx +15 -14
  27. package/src/components/Query.tsx +18 -15
  28. package/src/components/QueryOptions.tsx +20 -56
  29. package/src/components/SuspenseInfiniteQuery.tsx +22 -17
  30. package/src/components/SuspenseInfiniteQueryOptions.tsx +51 -76
  31. package/src/components/SuspenseQuery.tsx +13 -15
  32. package/src/generators/customHookOptionsFileGenerator.tsx +16 -12
  33. package/src/generators/hookOptionsGenerator.tsx +42 -49
  34. package/src/generators/infiniteQueryGenerator.tsx +55 -80
  35. package/src/generators/mutationGenerator.tsx +54 -66
  36. package/src/generators/queryGenerator.tsx +52 -65
  37. package/src/generators/suspenseInfiniteQueryGenerator.tsx +50 -67
  38. package/src/generators/suspenseQueryGenerator.tsx +54 -78
  39. package/src/plugin.ts +47 -33
  40. package/src/resolvers/resolverReactQuery.ts +104 -8
  41. package/src/types.ts +202 -68
  42. package/src/utils.ts +11 -33
  43. package/dist/components-DTGLu4UV.js.map +0 -1
  44. package/dist/components-dAKJEn9b.cjs.map +0 -1
  45. package/dist/generators-CWEQsdO9.cjs.map +0 -1
  46. package/dist/generators-C_fbcjpG.js.map +0 -1
  47. package/dist/types-DfaFRSBf.d.ts +0 -284
  48. package/extension.yaml +0 -938
  49. /package/dist/{chunk--u3MIqq1.js → chunk-C0LytTxp.js} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generators-zGKP8yII.cjs","names":["jsxRenderer","path","fs","File","Function","jsxRenderer","ast","resolveOperationOverrides","operationFileEntry","File","getOperationParameters","Type","jsxRenderer","ast","pluginTsName","getOperationParameters","operationFileEntry","resolveOperationTypeNames","pluginZodName","resolveZodSchemaNames","pluginClientName","File","path","QueryKey","Client","InfiniteQueryOptions","InfiniteQuery","jsxRenderer","ast","pluginTsName","operationFileEntry","resolveOperationTypeNames","pluginZodName","resolveZodSchemaNames","pluginClientName","File","path","MutationKey","Client","MutationOptions","Mutation","jsxRenderer","ast","pluginTsName","operationFileEntry","resolveOperationTypeNames","pluginZodName","resolveZodSchemaNames","pluginClientName","File","path","QueryKey","Client","QueryOptions","Query","jsxRenderer","ast","pluginTsName","getOperationParameters","operationFileEntry","resolveOperationTypeNames","pluginZodName","resolveZodSchemaNames","pluginClientName","File","path","QueryKey","Client","SuspenseInfiniteQueryOptions","SuspenseInfiniteQuery","jsxRenderer","ast","pluginTsName","operationFileEntry","resolveOperationTypeNames","pluginZodName","resolveZodSchemaNames","pluginClientName","File","path","QueryKey","Client","QueryOptions","SuspenseQuery"],"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, jsxRenderer } 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: jsxRenderer,\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, jsxRenderer, 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: jsxRenderer,\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, isParserEnabled, pluginClientName } from '@kubb/plugin-client'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { pluginZodName } from '@kubb/plugin-zod'\nimport { File, jsxRenderer } 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: jsxRenderer,\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 = isParserEnabled(parser) ? 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, parser)\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 </>\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 </>\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, isParserEnabled, pluginClientName } from '@kubb/plugin-client'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { pluginZodName } from '@kubb/plugin-zod'\nimport { File, jsxRenderer } 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: jsxRenderer,\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 = isParserEnabled(parser) ? 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, parser)\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 </>\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 </>\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 {!shouldUseClientPlugin && parser === 'zod' && zodResolver && node.requestBody?.content?.[0]?.schema && (\n <File.Import name={['z']} path=\"zod\" isTypeOnly />\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, isParserEnabled, pluginClientName } from '@kubb/plugin-client'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { pluginZodName } from '@kubb/plugin-zod'\nimport { File, jsxRenderer } 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: jsxRenderer,\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 = isParserEnabled(parser) ? 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, parser)\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 </>\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 </>\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, isParserEnabled, pluginClientName } from '@kubb/plugin-client'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { pluginZodName } from '@kubb/plugin-zod'\nimport { File, jsxRenderer } 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: jsxRenderer,\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 = isParserEnabled(parser) ? 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, parser)\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 </>\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 </>\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, isParserEnabled, pluginClientName } from '@kubb/plugin-client'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { pluginZodName } from '@kubb/plugin-zod'\nimport { File, jsxRenderer } 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: jsxRenderer,\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 = isParserEnabled(parser) ? 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, parser)\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 </>\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 </>\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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"}
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_generators = require("./generators-CWEQsdO9.cjs");
2
+ const require_generators = require("./generators-zGKP8yII.cjs");
3
3
  exports.customHookOptionsFileGenerator = require_generators.customHookOptionsFileGenerator;
4
4
  exports.hookOptionsGenerator = require_generators.hookOptionsGenerator;
5
5
  exports.infiniteQueryGenerator = require_generators.infiniteQueryGenerator;
@@ -1,27 +1,66 @@
1
- import { t as __name } from "./chunk--u3MIqq1.js";
2
- import { r as PluginReactQuery } from "./types-DfaFRSBf.js";
3
- import * as _$_kubb_core0 from "@kubb/core";
1
+ import { t as __name } from "./chunk-C0LytTxp.js";
2
+ import { r as PluginReactQuery } from "./types-X7D0NSvJ.js";
4
3
 
5
4
  //#region src/generators/customHookOptionsFileGenerator.d.ts
6
- declare const customHookOptionsFileGenerator: _$_kubb_core0.Generator<PluginReactQuery, unknown>;
5
+ /**
6
+ * Scaffolds the user-editable `useCustomHookOptions` file when
7
+ * `pluginReactQuery({ customOptions: { ... } })` is configured. The file is
8
+ * only created when it does not already exist, so user edits persist across
9
+ * regeneration.
10
+ */
11
+ declare const customHookOptionsFileGenerator: import("@kubb/core").Generator<PluginReactQuery, unknown>;
7
12
  //#endregion
8
13
  //#region src/generators/hookOptionsGenerator.d.ts
9
- declare const hookOptionsGenerator: _$_kubb_core0.Generator<PluginReactQuery, unknown>;
14
+ /**
15
+ * Emits the `HookOptions` type used by `customOptions`. Enabled when
16
+ * `pluginReactQuery({ customOptions: { ... } })`. The generated type lists
17
+ * every hook keyed by name so user-supplied options stay in sync with the
18
+ * generated hooks at compile time.
19
+ */
20
+ declare const hookOptionsGenerator: import("@kubb/core").Generator<PluginReactQuery, unknown>;
10
21
  //#endregion
11
22
  //#region src/generators/infiniteQueryGenerator.d.ts
12
- declare const infiniteQueryGenerator: _$_kubb_core0.Generator<PluginReactQuery, unknown>;
23
+ /**
24
+ * Built-in generator for `useInfiniteQuery` hooks. Enabled when
25
+ * `pluginReactQuery({ infinite: { ... } })`. Emits one `useFooInfiniteQuery`
26
+ * hook per query operation, wiring the configured `nextParam` /
27
+ * `previousParam` paths into TanStack Query's cursor-based pagination.
28
+ */
29
+ declare const infiniteQueryGenerator: import("@kubb/core").Generator<PluginReactQuery, unknown>;
13
30
  //#endregion
14
31
  //#region src/generators/mutationGenerator.d.ts
15
- declare const mutationGenerator: _$_kubb_core0.Generator<PluginReactQuery, unknown>;
32
+ /**
33
+ * Built-in generator for `useMutation` hooks. Emits one `useFooMutation` hook
34
+ * per POST/PUT/DELETE operation (configurable via `mutation.methods`) plus
35
+ * the matching `fooMutationKey` / `fooMutationOptions` helpers.
36
+ */
37
+ declare const mutationGenerator: import("@kubb/core").Generator<PluginReactQuery, unknown>;
16
38
  //#endregion
17
39
  //#region src/generators/queryGenerator.d.ts
18
- declare const queryGenerator: _$_kubb_core0.Generator<PluginReactQuery, unknown>;
40
+ /**
41
+ * Built-in generator for `useQuery` hooks. Emits one `useFooQuery` hook per
42
+ * GET operation (configurable via `query.methods`) plus the matching
43
+ * `fooQueryKey` / `fooQueryOptions` helpers.
44
+ */
45
+ declare const queryGenerator: import("@kubb/core").Generator<PluginReactQuery, unknown>;
19
46
  //#endregion
20
47
  //#region src/generators/suspenseInfiniteQueryGenerator.d.ts
21
- declare const suspenseInfiniteQueryGenerator: _$_kubb_core0.Generator<PluginReactQuery, unknown>;
48
+ /**
49
+ * Built-in generator for `useSuspenseInfiniteQuery` hooks. Enabled when both
50
+ * `suspense` and `infinite` are configured. Combines suspense semantics with
51
+ * cursor-based pagination — handlers throw promises while loading and pull
52
+ * additional pages on demand.
53
+ */
54
+ declare const suspenseInfiniteQueryGenerator: import("@kubb/core").Generator<PluginReactQuery, unknown>;
22
55
  //#endregion
23
56
  //#region src/generators/suspenseQueryGenerator.d.ts
24
- declare const suspenseQueryGenerator: _$_kubb_core0.Generator<PluginReactQuery, unknown>;
57
+ /**
58
+ * Built-in generator for `useSuspenseQuery` hooks. Enabled when
59
+ * `pluginReactQuery({ suspense: {} })`. Emits one `useFooSuspenseQuery` hook
60
+ * per query operation. Suspense queries throw promises while loading and
61
+ * require a `<Suspense>` boundary in the React tree. TanStack Query v5+ only.
62
+ */
63
+ declare const suspenseQueryGenerator: import("@kubb/core").Generator<PluginReactQuery, unknown>;
25
64
  //#endregion
26
65
  export { customHookOptionsFileGenerator, hookOptionsGenerator, infiniteQueryGenerator, mutationGenerator, queryGenerator, suspenseInfiniteQueryGenerator, suspenseQueryGenerator };
27
66
  //# sourceMappingURL=generators.d.ts.map
@@ -1,2 +1,2 @@
1
- import { a as infiniteQueryGenerator, i as mutationGenerator, n as suspenseInfiniteQueryGenerator, o as hookOptionsGenerator, r as queryGenerator, s as customHookOptionsFileGenerator, t as suspenseQueryGenerator } from "./generators-C_fbcjpG.js";
1
+ import { a as infiniteQueryGenerator, i as mutationGenerator, n as suspenseInfiniteQueryGenerator, o as hookOptionsGenerator, r as queryGenerator, s as customHookOptionsFileGenerator, t as suspenseQueryGenerator } from "./generators-BG-Vcvfg.js";
2
2
  export { customHookOptionsFileGenerator, hookOptionsGenerator, infiniteQueryGenerator, mutationGenerator, queryGenerator, suspenseInfiniteQueryGenerator, suspenseQueryGenerator };
package/dist/index.cjs CHANGED
@@ -2,8 +2,8 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_components = require("./components-dAKJEn9b.cjs");
6
- const require_generators = require("./generators-CWEQsdO9.cjs");
5
+ const require_components = require("./components-yMQOuFmI.cjs");
6
+ const require_generators = require("./generators-zGKP8yII.cjs");
7
7
  let node_path = require("node:path");
8
8
  node_path = require_components.__toESM(node_path, 1);
9
9
  let _kubb_core = require("@kubb/core");
@@ -13,33 +13,213 @@ let _kubb_plugin_client_templates_clients_fetch_source = require("@kubb/plugin-c
13
13
  let _kubb_plugin_client_templates_config_source = require("@kubb/plugin-client/templates/config.source");
14
14
  let _kubb_plugin_ts = require("@kubb/plugin-ts");
15
15
  let _kubb_plugin_zod = require("@kubb/plugin-zod");
16
- //#region src/resolvers/resolverReactQuery.ts
16
+ //#region ../../internals/utils/src/fs.ts
17
+ /**
18
+ * Builds a nested file path from a dotted name. Splits on dots that precede a letter
19
+ * (so version numbers embedded in operationIds like `v2025.0` stay intact), camelCases
20
+ * every earlier segment, applies `caseLast` to the final segment, and joins with `/`.
21
+ *
22
+ * Empty segments are dropped before joining. They arise when the name starts with a dot
23
+ * followed by a letter (e.g. `..Schema` splits into `['..', 'Schema']` and `'..'` cases to
24
+ * an empty string). Without this a leading `/` would form, which `path.resolve` reads as an
25
+ * absolute path, letting generated files escape the configured output directory.
26
+ *
27
+ * @example Nested path from a dotted name
28
+ * `toFilePath('pet.petId') // 'pet/petId'`
29
+ *
30
+ * @example PascalCase the final segment
31
+ * `toFilePath('pet.Pet', pascalCase) // 'pet/Pet'`
32
+ *
33
+ * @example Suffix applied to the final segment only
34
+ * `toFilePath('tag.tag', (part) => camelCase(part, { suffix: 'schema' })) // 'tag/tagSchema'`
35
+ */
36
+ function toFilePath(name, caseLast = require_components.camelCase) {
37
+ const parts = name.split(/\.(?=[a-zA-Z])/);
38
+ return parts.map((part, i) => i === parts.length - 1 ? caseLast(part) : require_components.camelCase(part)).filter(Boolean).join("/");
39
+ }
40
+ //#endregion
41
+ //#region ../../internals/shared/src/group.ts
17
42
  /**
18
- * Naming convention resolver for React Query plugin.
43
+ * Builds the `group` config a Kubb plugin passes to `ctx.setOptions`, applying the
44
+ * shared default naming so every plugin groups output consistently:
45
+ *
46
+ * - `path` groups use the second path segment (`/pet/findByStatus` → `pet`).
47
+ * - other groups use the camelCased group (`pet store` → `petStore`).
19
48
  *
20
- * Provides default naming helpers using camelCase for functions and file paths.
49
+ * A user-provided `group.name` always wins over the default namer, so callers stay in
50
+ * control of their output folders. Returns `null` when grouping is disabled, matching the
51
+ * per-plugin convention.
52
+ *
53
+ * @param group - The user-supplied group option, or `undefined` to disable grouping.
21
54
  *
22
55
  * @example
23
- * `resolverReactQuery.default('list pets', 'function') // → 'listPets'`
56
+ * ```ts
57
+ * createGroupConfig(group) // shared across every plugin
58
+ * ```
59
+ */
60
+ function createGroupConfig(group) {
61
+ if (!group) return null;
62
+ const defaultName = (ctx) => {
63
+ if (group.type === "path") return `${ctx.group.split("/")[1]}`;
64
+ return require_components.camelCase(ctx.group);
65
+ };
66
+ return {
67
+ ...group,
68
+ name: group.name ? group.name : defaultName
69
+ };
70
+ }
71
+ //#endregion
72
+ //#region src/resolvers/resolverReactQuery.ts
73
+ function capitalize(name) {
74
+ return `${name.charAt(0).toUpperCase()}${name.slice(1)}`;
75
+ }
76
+ /**
77
+ * Default resolver used by `@kubb/plugin-react-query`. Decides the names and
78
+ * file paths for every generated TanStack Query hook (`useFooQuery`,
79
+ * `useFooMutation`, `useFooInfiniteQuery`, ...) and its companion helpers
80
+ * (`fooQueryKey`, `fooQueryOptions`).
81
+ *
82
+ * Functions and files use camelCase; hooks get the `use` prefix; suspense and
83
+ * infinite variants are suffixed with `Suspense`/`Infinite`.
84
+ *
85
+ * @example Resolve hook and helper names
86
+ * ```ts
87
+ * import { resolverReactQuery } from '@kubb/plugin-react-query'
88
+ *
89
+ * resolverReactQuery.resolveQueryName(operationNode) // 'useGetPetById'
90
+ * resolverReactQuery.resolveMutationName(operationNode) // 'useUpdatePet'
91
+ * resolverReactQuery.resolveQueryKeyName(operationNode) // 'getPetByIdQueryKey'
92
+ * resolverReactQuery.resolveQueryOptionsName(operationNode) // 'getPetByIdQueryOptions'
93
+ * ```
24
94
  */
25
- const resolverReactQuery = (0, _kubb_core.defineResolver)((ctx) => ({
95
+ const resolverReactQuery = (0, _kubb_core.defineResolver)(() => ({
26
96
  name: "default",
27
97
  pluginName: "plugin-react-query",
28
98
  default(name, type) {
29
- return require_components.camelCase(name, { isFile: type === "file" });
99
+ return type === "file" ? toFilePath(name) : require_components.camelCase(name);
30
100
  },
31
101
  resolveName(name) {
32
- return ctx.default(name, "function");
102
+ return this.default(name, "function");
103
+ },
104
+ resolvePathName(name, type) {
105
+ return this.default(name, type);
106
+ },
107
+ resolveQueryName(node) {
108
+ return `use${capitalize(this.resolveName(node.operationId))}`;
109
+ },
110
+ resolveSuspenseQueryName(node) {
111
+ return `use${capitalize(this.resolveName(node.operationId))}Suspense`;
112
+ },
113
+ resolveInfiniteQueryName(node) {
114
+ return `use${capitalize(this.resolveName(node.operationId))}Infinite`;
115
+ },
116
+ resolveSuspenseInfiniteQueryName(node) {
117
+ return `use${capitalize(this.resolveName(node.operationId))}SuspenseInfinite`;
118
+ },
119
+ resolveMutationName(node) {
120
+ return `use${capitalize(this.resolveName(node.operationId))}`;
121
+ },
122
+ resolveQueryOptionsName(node) {
123
+ return `${this.resolveName(node.operationId)}QueryOptions`;
124
+ },
125
+ resolveSuspenseQueryOptionsName(node) {
126
+ return `${this.resolveName(node.operationId)}SuspenseQueryOptions`;
127
+ },
128
+ resolveInfiniteQueryOptionsName(node) {
129
+ return `${this.resolveName(node.operationId)}InfiniteQueryOptions`;
130
+ },
131
+ resolveSuspenseInfiniteQueryOptionsName(node) {
132
+ return `${this.resolveName(node.operationId)}SuspenseInfiniteQueryOptions`;
133
+ },
134
+ resolveMutationOptionsName(node) {
135
+ return `${this.resolveName(node.operationId)}MutationOptions`;
136
+ },
137
+ resolveQueryKeyName(node) {
138
+ return `${this.resolveName(node.operationId)}QueryKey`;
139
+ },
140
+ resolveSuspenseQueryKeyName(node) {
141
+ return `${this.resolveName(node.operationId)}SuspenseQueryKey`;
142
+ },
143
+ resolveInfiniteQueryKeyName(node) {
144
+ return `${this.resolveName(node.operationId)}InfiniteQueryKey`;
145
+ },
146
+ resolveSuspenseInfiniteQueryKeyName(node) {
147
+ return `${this.resolveName(node.operationId)}SuspenseInfiniteQueryKey`;
148
+ },
149
+ resolveMutationKeyName(node) {
150
+ return `${this.resolveName(node.operationId)}MutationKey`;
151
+ },
152
+ resolveQueryKeyTypeName(node) {
153
+ return `${capitalize(this.resolveName(node.operationId))}QueryKey`;
154
+ },
155
+ resolveSuspenseQueryKeyTypeName(node) {
156
+ return `${capitalize(this.resolveName(node.operationId))}SuspenseQueryKey`;
157
+ },
158
+ resolveInfiniteQueryKeyTypeName(node) {
159
+ return `${capitalize(this.resolveName(node.operationId))}InfiniteQueryKey`;
160
+ },
161
+ resolveSuspenseInfiniteQueryKeyTypeName(node) {
162
+ return `${capitalize(this.resolveName(node.operationId))}SuspenseInfiniteQueryKey`;
163
+ },
164
+ resolveMutationTypeName(node) {
165
+ return capitalize(this.resolveName(node.operationId));
166
+ },
167
+ resolveClientName(node) {
168
+ return this.resolveName(node.operationId);
169
+ },
170
+ resolveSuspenseClientName(node) {
171
+ return `${this.resolveName(node.operationId)}Suspense`;
172
+ },
173
+ resolveInfiniteClientName(node) {
174
+ return `${this.resolveName(node.operationId)}Infinite`;
175
+ },
176
+ resolveSuspenseInfiniteClientName(node) {
177
+ return `${this.resolveName(node.operationId)}SuspenseInfinite`;
178
+ },
179
+ resolveHookOptionsName() {
180
+ return "HookOptions";
181
+ },
182
+ resolveCustomHookOptionsName() {
183
+ return "getCustomHookOptions";
33
184
  }
34
185
  }));
35
186
  //#endregion
36
187
  //#region src/plugin.ts
188
+ /**
189
+ * Canonical plugin name for `@kubb/plugin-react-query`. Used for driver lookups
190
+ * and cross-plugin dependency references.
191
+ */
37
192
  const pluginReactQueryName = "plugin-react-query";
193
+ /**
194
+ * Generates one TanStack Query hook per OpenAPI operation for React. Queries
195
+ * become `useFooQuery`/`useFooSuspenseQuery`/`useFooInfiniteQuery`; mutations
196
+ * become `useFooMutation`. Each hook is fully typed: query keys, input
197
+ * variables, response data, and error shape all come from the spec.
198
+ *
199
+ * @example
200
+ * ```ts
201
+ * import { defineConfig } from 'kubb'
202
+ * import { pluginTs } from '@kubb/plugin-ts'
203
+ * import { pluginReactQuery } from '@kubb/plugin-react-query'
204
+ *
205
+ * export default defineConfig({
206
+ * input: { path: './petStore.yaml' },
207
+ * output: { path: './src/gen' },
208
+ * plugins: [
209
+ * pluginTs(),
210
+ * pluginReactQuery({
211
+ * output: { path: './hooks' },
212
+ * suspense: {},
213
+ * }),
214
+ * ],
215
+ * })
216
+ * ```
217
+ */
38
218
  const pluginReactQuery = (0, _kubb_core.definePlugin)((options) => {
39
219
  const { output = {
40
220
  path: "hooks",
41
- barrelType: "named"
42
- }, group, exclude = [], include, override = [], parser = "client", suspense = {}, infinite = false, transformers = {}, paramsType = "inline", pathParamsType = paramsType === "object" ? "object" : options.pathParamsType || "inline", mutation = {}, query = {}, mutationKey = require_components.MutationKey.getTransformer, queryKey = require_components.QueryKey.getTransformer, customOptions, paramsCasing, client, resolver: userResolver, transformer: userTransformer, generators: userGenerators = [] } = options;
221
+ barrel: { type: "named" }
222
+ }, group, exclude = [], include, override = [], parser = false, suspense = {}, infinite = false, paramsType = "inline", pathParamsType = paramsType === "object" ? "object" : options.pathParamsType || "inline", mutation = {}, query = {}, mutationKey = require_components.mutationKeyTransformer, queryKey = require_components.queryKeyTransformer, customOptions, paramsCasing, client, resolver: userResolver, transformer: userTransformer, generators: userGenerators = [] } = options;
43
223
  const clientName = client?.client ?? "axios";
44
224
  const clientImportPath = client?.importPath ?? (!client?.bundle ? `@kubb/plugin-client/clients/${clientName}` : void 0);
45
225
  const selectedGenerators = options.generators ?? [
@@ -50,18 +230,12 @@ const pluginReactQuery = (0, _kubb_core.definePlugin)((options) => {
50
230
  require_generators.mutationGenerator,
51
231
  require_generators.hookOptionsGenerator,
52
232
  require_generators.customHookOptionsFileGenerator
53
- ].filter(Boolean);
54
- const groupConfig = group ? {
55
- ...group,
56
- name: group.name ? group.name : (ctx) => {
57
- if (group.type === "path") return `${ctx.group.split("/")[1]}`;
58
- return `${require_components.camelCase(ctx.group)}Controller`;
59
- }
60
- } : void 0;
233
+ ].filter((generator) => Boolean(generator));
234
+ const groupConfig = createGroupConfig(group);
61
235
  return {
62
236
  name: pluginReactQueryName,
63
237
  options,
64
- dependencies: [_kubb_plugin_ts.pluginTsName, parser === "zod" ? _kubb_plugin_zod.pluginZodName : void 0].filter(Boolean),
238
+ dependencies: [_kubb_plugin_ts.pluginTsName, (0, _kubb_plugin_client.isParserEnabled)(parser) ? _kubb_plugin_zod.pluginZodName : void 0].filter((dependency) => Boolean(dependency)),
65
239
  hooks: { "kubb:plugin:setup"(ctx) {
66
240
  const resolver = userResolver ? {
67
241
  ...resolverReactQuery,
@@ -69,7 +243,6 @@ const pluginReactQuery = (0, _kubb_core.definePlugin)((options) => {
69
243
  } : resolverReactQuery;
70
244
  ctx.setOptions({
71
245
  output,
72
- transformers,
73
246
  client: {
74
247
  bundle: client?.bundle,
75
248
  baseURL: client?.baseURL,
@@ -99,16 +272,16 @@ const pluginReactQuery = (0, _kubb_core.definePlugin)((options) => {
99
272
  infinite: infinite ? {
100
273
  queryParam: "id",
101
274
  initialPageParam: 0,
102
- cursorParam: void 0,
103
- nextParam: void 0,
104
- previousParam: void 0,
275
+ cursorParam: null,
276
+ nextParam: null,
277
+ previousParam: null,
105
278
  ...infinite
106
279
  } : false,
107
280
  suspense,
108
281
  customOptions: customOptions ? {
109
282
  name: "useCustomHookOptions",
110
283
  ...customOptions
111
- } : void 0,
284
+ } : null,
112
285
  parser,
113
286
  paramsType,
114
287
  pathParamsType,
@@ -126,10 +299,10 @@ const pluginReactQuery = (0, _kubb_core.definePlugin)((options) => {
126
299
  const root = node_path.default.resolve(ctx.config.root, ctx.config.output.path);
127
300
  const hasClientPlugin = !!ctx.config.plugins?.some((p) => p.name === _kubb_plugin_client.pluginClientName);
128
301
  if (client?.bundle && !hasClientPlugin && !clientImportPath) ctx.injectFile({
129
- baseName: "fetch.ts",
130
- path: node_path.default.resolve(root, ".kubb/fetch.ts"),
302
+ baseName: "client.ts",
303
+ path: node_path.default.resolve(root, ".kubb/client.ts"),
131
304
  sources: [_kubb_core.ast.createSource({
132
- name: "fetch",
305
+ name: "client",
133
306
  nodes: [_kubb_core.ast.createText(clientName === "fetch" ? _kubb_plugin_client_templates_clients_fetch_source.source : _kubb_plugin_client_templates_clients_axios_source.source)],
134
307
  isExportable: true,
135
308
  isIndexable: true