@kubb/plugin-react-query 5.0.0-beta.3 → 5.0.0-beta.30

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 (48) hide show
  1. package/README.md +34 -83
  2. package/dist/{components-DTGLu4UV.js → components-CDmg-RPi.js} +275 -255
  3. package/dist/components-CDmg-RPi.js.map +1 -0
  4. package/dist/{components-dAKJEn9b.cjs → components-MPBTffPl.cjs} +299 -255
  5. package/dist/components-MPBTffPl.cjs.map +1 -0
  6. package/dist/components.cjs +1 -1
  7. package/dist/components.d.ts +1 -75
  8. package/dist/components.js +1 -1
  9. package/dist/{generators-C_fbcjpG.js → generators-Bma51Uar.js} +301 -261
  10. package/dist/generators-Bma51Uar.js.map +1 -0
  11. package/dist/{generators-CWEQsdO9.cjs → generators-BtsWNz-6.cjs} +299 -259
  12. package/dist/generators-BtsWNz-6.cjs.map +1 -0
  13. package/dist/generators.cjs +1 -1
  14. package/dist/generators.d.ts +41 -1
  15. package/dist/generators.js +1 -1
  16. package/dist/index.cjs +143 -20
  17. package/dist/index.cjs.map +1 -1
  18. package/dist/index.d.ts +30 -1
  19. package/dist/index.js +143 -20
  20. package/dist/index.js.map +1 -1
  21. package/dist/types-DiZPLTXl.d.ts +400 -0
  22. package/extension.yaml +1507 -0
  23. package/package.json +16 -18
  24. package/src/components/InfiniteQuery.tsx +19 -13
  25. package/src/components/InfiniteQueryOptions.tsx +29 -47
  26. package/src/components/Mutation.tsx +35 -15
  27. package/src/components/MutationOptions.tsx +14 -13
  28. package/src/components/Query.tsx +9 -10
  29. package/src/components/QueryOptions.tsx +6 -27
  30. package/src/components/SuspenseInfiniteQuery.tsx +19 -13
  31. package/src/components/SuspenseInfiniteQueryOptions.tsx +29 -47
  32. package/src/components/SuspenseQuery.tsx +9 -10
  33. package/src/generators/customHookOptionsFileGenerator.tsx +18 -14
  34. package/src/generators/hookOptionsGenerator.tsx +36 -33
  35. package/src/generators/infiniteQueryGenerator.tsx +46 -64
  36. package/src/generators/mutationGenerator.tsx +42 -50
  37. package/src/generators/queryGenerator.tsx +43 -49
  38. package/src/generators/suspenseInfiniteQueryGenerator.tsx +41 -51
  39. package/src/generators/suspenseQueryGenerator.tsx +44 -62
  40. package/src/plugin.ts +42 -16
  41. package/src/resolvers/resolverReactQuery.ts +102 -6
  42. package/src/types.ts +199 -61
  43. package/src/utils.ts +10 -33
  44. package/dist/components-DTGLu4UV.js.map +0 -1
  45. package/dist/components-dAKJEn9b.cjs.map +0 -1
  46. package/dist/generators-CWEQsdO9.cjs.map +0 -1
  47. package/dist/generators-C_fbcjpG.js.map +0 -1
  48. package/dist/types-DfaFRSBf.d.ts +0 -284
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generators-BtsWNz-6.cjs","names":["jsxRendererSync","path","fs","File","Function","jsxRendererSync","resolveOperationOverrides","File","getOperationParameters","Type","jsxRendererSync","pluginTsName","getOperationParameters","resolveOperationTypeNames","pluginZodName","resolveZodSchemaNames","pluginClientName","File","path","QueryKey","Client","InfiniteQueryOptions","InfiniteQuery","jsxRendererSync","pluginTsName","resolveOperationTypeNames","pluginZodName","resolveZodSchemaNames","pluginClientName","File","path","MutationKey","Client","MutationOptions","Mutation","jsxRendererSync","pluginTsName","resolveOperationTypeNames","pluginZodName","resolveZodSchemaNames","pluginClientName","File","path","QueryKey","Client","QueryOptions","Query","jsxRendererSync","pluginTsName","getOperationParameters","resolveOperationTypeNames","pluginZodName","resolveZodSchemaNames","pluginClientName","File","path","QueryKey","Client","SuspenseInfiniteQueryOptions","SuspenseInfiniteQuery","jsxRendererSync","pluginTsName","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, jsxRendererSync } from '@kubb/renderer-jsx'\nimport type { PluginReactQuery } from '../types'\n\n/**\n * Scaffolds the user-editable `useCustomHookOptions` file when\n * `pluginReactQuery({ customOptions: { ... } })` is configured. The file is\n * only created when it does not already exist, so user edits persist across\n * regeneration.\n */\nexport const customHookOptionsFileGenerator = defineGenerator<PluginReactQuery>({\n name: 'react-query-custom-hook-options-file',\n renderer: jsxRendererSync,\n operations(nodes, ctx) {\n const { resolver, config, root } = ctx\n const { output, customOptions, query, group } = ctx.options\n\n if (!customOptions) return null\n\n const override = output.override ?? config.output.override ?? false\n const { importPath, name } = customOptions\n const hookOptionsName = resolver.resolveHookOptionsName()\n const customHookOptionsName = resolver.resolveCustomHookOptionsName()\n\n const reactQueryImportPath = query ? query.importPath : '@tanstack/react-query'\n\n let hookFilePath: string\n const firstNode = nodes[0]\n if (firstNode) {\n const hookName = resolver.resolveQueryName(firstNode)\n const hookFile = resolver.resolveFile(\n { name: hookName, extname: '.ts', tag: firstNode.tags[0] ?? 'default', path: firstNode.path },\n { root, output, group: group ?? undefined },\n )\n hookFilePath = hookFile.path\n } else {\n hookFilePath = path.resolve(root, 'index.ts')\n }\n\n const ensureExtension = (filePath: string, extname: string) => {\n if (path.extname(filePath) === '') return filePath + extname\n return filePath\n }\n\n const basePath = path.dirname(hookFilePath)\n const actualFilePath = ensureExtension(importPath, '.ts')\n const file = {\n baseName: path.basename(actualFilePath) as `${string}.${string}`,\n name: path.basename(actualFilePath, path.extname(actualFilePath)),\n path: path.resolve(basePath, actualFilePath),\n }\n\n if (fs.existsSync(file.path) && !override) return null\n\n return (\n <File baseName={file.baseName} path={file.path}>\n <File.Import name={['QueryClient']} path={reactQueryImportPath} isTypeOnly />\n <File.Import name={['useQueryClient']} path={reactQueryImportPath} />\n <File.Import name={[hookOptionsName]} root={file.path} path={path.resolve(root, './index.ts')} />\n <File.Source name={file.name} isExportable isIndexable>\n <Function name={customHookOptionsName} params=\"{ queryClient }: { queryClient: QueryClient }\" returnType={`Partial<${hookOptionsName}>`}>\n {`return {\n // TODO: Define custom hook options here\n // Example:\n // useUpdatePetHook: {\n // onSuccess: () => {\n // void queryClient.invalidateQueries({ queryKey: ['pet'] })\n // }\n // }\n }`}\n </Function>\n <Function\n name={name}\n generics={`T extends keyof ${hookOptionsName}`}\n params=\"{ hookName, operationId }: { hookName: T, operationId: string }\"\n returnType={`${hookOptionsName}[T]`}\n export\n >\n {`const queryClient = useQueryClient()\n const customOptions = ${customHookOptionsName}({ queryClient })\n return customOptions[hookName] ?? {}`}\n </Function>\n </File.Source>\n </File>\n )\n },\n})\n","import { getOperationParameters } from '@internals/shared'\nimport { defineGenerator } from '@kubb/core'\nimport { File, jsxRendererSync, Type } from '@kubb/renderer-jsx'\nimport type { KubbReactNode } from '@kubb/renderer-jsx/types'\nimport { difference } from 'remeda'\nimport type { PluginReactQuery } from '../types'\nimport { resolveOperationOverrides } from '../utils.ts'\n\ntype QueryOption = PluginReactQuery['resolvedOptions']['query']\ntype MutationOption = PluginReactQuery['resolvedOptions']['mutation']\n\n/**\n * Emits the `HookOptions` type used by `customOptions`. Enabled when\n * `pluginReactQuery({ customOptions: { ... } })`. The generated type lists\n * every hook keyed by name so user-supplied options stay in sync with the\n * generated hooks at compile time.\n */\nexport const hookOptionsGenerator = defineGenerator<PluginReactQuery>({\n name: 'react-query-hook-options',\n renderer: jsxRendererSync,\n operations(nodes, ctx) {\n const { resolver, config, root } = ctx\n const { output, customOptions, query, mutation, suspense, infinite, group, override } = ctx.options\n\n if (!customOptions) return null\n\n const name = resolver.resolveHookOptionsName()\n const resolvedFile = resolver.resolveFile({ name, extname: '.ts' }, { root, output, group: group ?? undefined })\n const hookOptionsFile = {\n ...resolvedFile,\n baseName: `${name}.ts` as const,\n path: resolvedFile.path.replace(/[^/\\\\]+\\.ts$/, `${name}.ts`),\n }\n\n const imports: Array<KubbReactNode> = []\n const hookOptions: Record<string, string> = {}\n\n for (const node of nodes) {\n const opOverrides = resolveOperationOverrides(node, override)\n const nodeQuery: QueryOption = 'query' in opOverrides ? (opOverrides.query as QueryOption) : query\n const nodeMutation: MutationOption = 'mutation' in opOverrides ? (opOverrides.mutation as MutationOption) : mutation\n const nodeInfinite = 'infinite' in opOverrides ? opOverrides.infinite : infinite\n const nodeInfiniteOptions = nodeInfinite && typeof nodeInfinite === 'object' ? nodeInfinite : null\n\n // query: false means \"still a query but skip the useQuery hook\"\n const isQueryOp =\n nodeQuery === false\n ? !!query && query.methods.some((m) => node.method.toLowerCase() === m.toLowerCase())\n : !!nodeQuery && nodeQuery.methods.some((m) => node.method.toLowerCase() === m.toLowerCase())\n const isMutationOp =\n nodeMutation !== false &&\n !isQueryOp &&\n difference(nodeMutation ? nodeMutation.methods : [], nodeQuery ? nodeQuery.methods : []).some((m) => node.method.toLowerCase() === m.toLowerCase())\n const isSuspenseOp = !!suspense\n const isInfiniteOp = !!nodeInfiniteOptions\n\n if (isQueryOp) {\n const queryOptionsName = resolver.resolveQueryOptionsName(node)\n const queryHookName = resolver.resolveQueryName(node)\n const queryHookFile = resolver.resolveFile(\n { name: queryHookName, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n { root, output, group: group ?? undefined },\n )\n imports.push(<File.Import name={[queryOptionsName]} root={hookOptionsFile.path} path={queryHookFile.path} />)\n hookOptions[queryHookName] = `Partial<ReturnType<typeof ${queryOptionsName}>>`\n\n if (isSuspenseOp) {\n const suspenseOptionsName = resolver.resolveSuspenseQueryOptionsName(node)\n const suspenseHookName = resolver.resolveSuspenseQueryName(node)\n const suspenseHookFile = resolver.resolveFile(\n { name: suspenseHookName, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n { root, output, group: group ?? undefined },\n )\n imports.push(<File.Import name={[suspenseOptionsName]} root={hookOptionsFile.path} path={suspenseHookFile.path} />)\n hookOptions[suspenseHookName] = `Partial<ReturnType<typeof ${suspenseOptionsName}>>`\n }\n\n if (isInfiniteOp) {\n // Validate queryParam\n const normalizeKey = (key: string) => key.replace(/\\?$/, '')\n const queryParamKeys = getOperationParameters(node).query.map((p) => p.name)\n const hasQueryParam = nodeInfiniteOptions!.queryParam ? queryParamKeys.some((k) => normalizeKey(k) === nodeInfiniteOptions!.queryParam) : false\n\n if (hasQueryParam) {\n const infiniteOptionsName = resolver.resolveInfiniteQueryOptionsName(node)\n const infiniteHookName = resolver.resolveInfiniteQueryName(node)\n const infiniteHookFile = resolver.resolveFile(\n { name: infiniteHookName, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n { root, output, group: group ?? undefined },\n )\n imports.push(<File.Import name={[infiniteOptionsName]} root={hookOptionsFile.path} path={infiniteHookFile.path} />)\n hookOptions[infiniteHookName] = `Partial<ReturnType<typeof ${infiniteOptionsName}>>`\n\n if (isSuspenseOp) {\n const suspenseInfiniteOptionsName = resolver.resolveSuspenseInfiniteQueryOptionsName(node)\n const suspenseInfiniteHookName = resolver.resolveSuspenseInfiniteQueryName(node)\n const suspenseInfiniteHookFile = resolver.resolveFile(\n { name: suspenseInfiniteHookName, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n { root, output, group: group ?? undefined },\n )\n imports.push(<File.Import name={[suspenseInfiniteOptionsName]} root={hookOptionsFile.path} path={suspenseInfiniteHookFile.path} />)\n hookOptions[suspenseInfiniteHookName] = `Partial<ReturnType<typeof ${suspenseInfiniteOptionsName}>>`\n }\n }\n }\n }\n\n if (isMutationOp) {\n const mutationOptionsName = resolver.resolveMutationOptionsName(node)\n const mutationHookName = resolver.resolveMutationName(node)\n const mutationHookFile = resolver.resolveFile(\n { name: mutationHookName, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n { root, output, group: group ?? undefined },\n )\n imports.push(<File.Import name={[mutationOptionsName]} root={hookOptionsFile.path} path={mutationHookFile.path} />)\n hookOptions[mutationHookName] = `Partial<ReturnType<typeof ${mutationOptionsName}>>`\n }\n }\n\n return (\n <File\n baseName={hookOptionsFile.baseName}\n path={hookOptionsFile.path}\n meta={hookOptionsFile.meta}\n banner={resolver.resolveBanner(ctx.meta, { output, config, file: { path: hookOptionsFile.path, baseName: hookOptionsFile.baseName } })}\n footer={resolver.resolveFooter(ctx.meta, { output, config, file: { path: hookOptionsFile.path, baseName: hookOptionsFile.baseName } })}\n >\n {imports}\n <File.Source name={name} isExportable isIndexable isTypeOnly>\n <Type export name={name}>\n {`{ ${Object.keys(hookOptions)\n .map((key) => `${JSON.stringify(key)}: ${hookOptions[key]}`)\n .join(', ')} }`}\n </Type>\n </File.Source>\n </File>\n )\n },\n})\n","import path from 'node:path'\nimport { getOperationParameters, resolveOperationTypeNames } from '@internals/shared'\nimport { resolveZodSchemaNames } from '@internals/tanstack-query'\nimport { defineGenerator } from '@kubb/core'\nimport { Client, pluginClientName } from '@kubb/plugin-client'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { pluginZodName } from '@kubb/plugin-zod'\nimport { File, jsxRendererSync } from '@kubb/renderer-jsx'\nimport { difference } from 'remeda'\nimport { InfiniteQuery, InfiniteQueryOptions, QueryKey } from '../components'\nimport type { PluginReactQuery } from '../types'\n\n/**\n * Built-in generator for `useInfiniteQuery` hooks. Enabled when\n * `pluginReactQuery({ infinite: { ... } })`. Emits one `useFooInfiniteQuery`\n * hook per query operation, wiring the configured `nextParam` /\n * `previousParam` paths into TanStack Query's cursor-based pagination.\n */\nexport const infiniteQueryGenerator = defineGenerator<PluginReactQuery>({\n name: 'react-infinite-query',\n renderer: jsxRendererSync,\n operation(node, ctx) {\n const { config, driver, resolver, root } = ctx\n const { output, query, mutation, infinite, paramsCasing, paramsType, pathParamsType, parser, client: clientOptions, group, customOptions } = ctx.options\n\n const pluginTs = driver.getPlugin(pluginTsName)\n if (!pluginTs) return null\n const tsResolver = driver.getResolver(pluginTsName)\n\n const isQuery = query === false || (!!query && query.methods.some((method) => node.method.toLowerCase() === method.toLowerCase()))\n const isMutation =\n mutation !== false &&\n !isQuery &&\n difference(mutation ? mutation.methods : [], query ? query.methods : []).some((method) => node.method.toLowerCase() === method.toLowerCase())\n const infiniteOptions = infinite && typeof infinite === 'object' ? infinite : null\n\n if (!isQuery || isMutation || !infiniteOptions) return null\n\n // Validate queryParam exists in operation's query parameters\n const normalizeKey = (key: string) => key.replace(/\\?$/, '')\n const queryParamKeys = getOperationParameters(node).query.map((p) => p.name)\n const hasQueryParam = infiniteOptions.queryParam ? queryParamKeys.some((k) => normalizeKey(k) === infiniteOptions.queryParam) : false\n // cursorParam validation against response schema keys is skipped in v5 (complex schema inspection)\n const hasCursorParam = !infiniteOptions.cursorParam || true\n\n if (!hasQueryParam || !hasCursorParam) return null\n\n const importPath = query ? query.importPath : '@tanstack/react-query'\n\n const queryName = resolver.resolveInfiniteQueryName(node)\n const queryOptionsName = resolver.resolveInfiniteQueryOptionsName(node)\n const queryKeyName = resolver.resolveInfiniteQueryKeyName(node)\n const queryKeyTypeName = resolver.resolveInfiniteQueryKeyTypeName(node)\n const clientBaseName = resolver.resolveInfiniteClientName(node)\n\n const meta = {\n file: resolver.resolveFile(\n { name: queryName, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n { root, output, group: group ?? undefined },\n ),\n fileTs: tsResolver.resolveFile(\n { name: node.operationId, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n { root, output: pluginTs.options?.output ?? output, group: pluginTs.options?.group ?? undefined },\n ),\n }\n\n const importedTypeNames = resolveOperationTypeNames(node, tsResolver, {\n paramsCasing,\n exclude: [queryKeyTypeName],\n order: 'body-response-first',\n })\n\n const pluginZod = parser === 'zod' ? driver.getPlugin(pluginZodName) : null\n const zodResolver = pluginZod ? driver.getResolver(pluginZodName) : null\n const fileZod = zodResolver\n ? zodResolver.resolveFile(\n { name: node.operationId, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n { root, output: pluginZod?.options?.output ?? output, group: pluginZod?.options?.group ?? undefined },\n )\n : null\n const zodSchemaNames = resolveZodSchemaNames(node, zodResolver)\n\n const clientPlugin = driver.getPlugin(pluginClientName)\n const hasClientPlugin = clientPlugin?.name === pluginClientName\n const shouldUseClientPlugin = hasClientPlugin && clientOptions.clientType !== 'class'\n const clientResolver = shouldUseClientPlugin ? driver.getResolver(pluginClientName) : null\n\n const clientFile = shouldUseClientPlugin\n ? clientResolver?.resolveFile(\n { name: node.operationId, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n {\n root,\n output: clientPlugin?.options?.output ?? output,\n group: clientPlugin?.options?.group ?? undefined,\n },\n )\n : null\n\n const resolvedClientName = shouldUseClientPlugin ? (clientResolver?.resolveName(node.operationId) ?? clientBaseName) : clientBaseName\n\n return (\n <File\n baseName={meta.file.baseName}\n path={meta.file.path}\n meta={meta.file.meta}\n banner={resolver.resolveBanner(ctx.meta, { output, config, file: { path: meta.file.path, baseName: meta.file.baseName } })}\n footer={resolver.resolveFooter(ctx.meta, { output, config, file: { path: meta.file.path, baseName: meta.file.baseName } })}\n >\n {fileZod && zodSchemaNames.length > 0 && <File.Import name={zodSchemaNames} root={meta.file.path} path={fileZod.path} />}\n {clientOptions.importPath ? (\n <>\n {!shouldUseClientPlugin && <File.Import name={'client'} path={clientOptions.importPath} />}\n <File.Import name={['Client', 'RequestConfig', 'ResponseErrorConfig']} path={clientOptions.importPath} isTypeOnly />\n {clientOptions.dataReturnType === 'full' && <File.Import name={['ResponseConfig']} path={clientOptions.importPath} isTypeOnly />}\n </>\n ) : (\n <>\n {!shouldUseClientPlugin && <File.Import name={['client']} root={meta.file.path} path={path.resolve(root, '.kubb/client.ts')} />}\n <File.Import\n name={['Client', 'RequestConfig', 'ResponseErrorConfig']}\n root={meta.file.path}\n path={path.resolve(root, '.kubb/client.ts')}\n isTypeOnly\n />\n {clientOptions.dataReturnType === 'full' && (\n <File.Import name={['ResponseConfig']} root={meta.file.path} path={path.resolve(root, '.kubb/client.ts')} isTypeOnly />\n )}\n </>\n )}\n {shouldUseClientPlugin && clientFile && <File.Import name={[resolvedClientName]} root={meta.file.path} path={clientFile.path} />}\n {!shouldUseClientPlugin && <File.Import name={['buildFormData']} root={meta.file.path} path={path.resolve(root, '.kubb/config.ts')} />}\n {customOptions && <File.Import name={[customOptions.name]} path={customOptions.importPath} />}\n {meta.fileTs && importedTypeNames.length > 0 && (\n <File.Import name={Array.from(new Set(importedTypeNames))} root={meta.file.path} path={meta.fileTs.path} isTypeOnly />\n )}\n\n <QueryKey\n name={queryKeyName}\n typeName={queryKeyTypeName}\n node={node}\n tsResolver={tsResolver}\n pathParamsType={pathParamsType}\n paramsCasing={paramsCasing}\n transformer={ctx.options.queryKey}\n />\n\n {!shouldUseClientPlugin && (\n <Client\n name={resolvedClientName}\n baseURL={clientOptions.baseURL}\n dataReturnType={clientOptions.dataReturnType || 'data'}\n paramsCasing={clientOptions.paramsCasing || paramsCasing}\n paramsType={paramsType}\n pathParamsType={pathParamsType}\n parser={parser}\n node={node}\n tsResolver={tsResolver}\n zodResolver={zodResolver}\n />\n )}\n\n <File.Import name={['InfiniteData']} isTypeOnly path={importPath} />\n <File.Import name={['infiniteQueryOptions']} path={importPath} />\n\n <InfiniteQueryOptions\n name={queryOptionsName}\n clientName={resolvedClientName}\n queryKeyName={queryKeyName}\n node={node}\n tsResolver={tsResolver}\n paramsCasing={paramsCasing}\n paramsType={paramsType}\n pathParamsType={pathParamsType}\n dataReturnType={clientOptions.dataReturnType || 'data'}\n cursorParam={infiniteOptions.cursorParam}\n nextParam={infiniteOptions.nextParam}\n previousParam={infiniteOptions.previousParam}\n initialPageParam={infiniteOptions.initialPageParam}\n queryParam={infiniteOptions.queryParam}\n />\n\n <File.Import name={['useInfiniteQuery']} path={importPath} />\n <File.Import name={['QueryKey', 'QueryClient', 'InfiniteQueryObserverOptions', 'UseInfiniteQueryResult']} path={importPath} isTypeOnly />\n\n <InfiniteQuery\n name={queryName}\n queryOptionsName={queryOptionsName}\n queryKeyName={queryKeyName}\n queryKeyTypeName={queryKeyTypeName}\n node={node}\n tsResolver={tsResolver}\n paramsCasing={paramsCasing}\n paramsType={paramsType}\n pathParamsType={pathParamsType}\n dataReturnType={clientOptions.dataReturnType || 'data'}\n initialPageParam={infiniteOptions.initialPageParam}\n queryParam={infiniteOptions.queryParam}\n customOptions={customOptions}\n />\n </File>\n )\n },\n})\n","import path from 'node:path'\nimport { resolveOperationTypeNames } from '@internals/shared'\nimport { resolveZodSchemaNames } from '@internals/tanstack-query'\nimport { defineGenerator } from '@kubb/core'\nimport { Client, pluginClientName } from '@kubb/plugin-client'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { pluginZodName } from '@kubb/plugin-zod'\nimport { File, jsxRendererSync } from '@kubb/renderer-jsx'\nimport { difference } from 'remeda'\nimport { Mutation, MutationKey, MutationOptions } from '../components'\nimport type { PluginReactQuery } from '../types'\n\n/**\n * Built-in generator for `useMutation` hooks. Emits one `useFooMutation` hook\n * per POST/PUT/DELETE operation (configurable via `mutation.methods`) plus\n * the matching `fooMutationKey` / `fooMutationOptions` helpers.\n */\nexport const mutationGenerator = defineGenerator<PluginReactQuery>({\n name: 'react-query-mutation',\n renderer: jsxRendererSync,\n operation(node, ctx) {\n const { config, driver, resolver, root } = ctx\n const { output, query, mutation, paramsCasing, paramsType, pathParamsType, parser, client: clientOptions, group, customOptions } = ctx.options\n\n const pluginTs = driver.getPlugin(pluginTsName)\n if (!pluginTs) return null\n const tsResolver = driver.getResolver(pluginTsName)\n\n const isQuery = query === false || (!!query && query.methods.some((method) => node.method.toLowerCase() === method.toLowerCase()))\n const isMutation =\n mutation !== false &&\n !isQuery &&\n difference(mutation ? mutation.methods : [], query ? query.methods : []).some((method) => node.method.toLowerCase() === method.toLowerCase())\n\n if (!isMutation) return null\n\n const importPath = mutation ? mutation.importPath : '@tanstack/react-query'\n\n const mutationHookName = resolver.resolveMutationName(node)\n const mutationTypeName = resolver.resolveMutationTypeName(node)\n const mutationOptionsName = resolver.resolveMutationOptionsName(node)\n const mutationKeyName = resolver.resolveMutationKeyName(node)\n const clientName = resolver.resolveClientName(node)\n\n const meta = {\n file: resolver.resolveFile(\n { name: mutationHookName, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n { root, output, group: group ?? undefined },\n ),\n fileTs: tsResolver.resolveFile(\n { name: node.operationId, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n { root, output: pluginTs.options?.output ?? output, group: pluginTs.options?.group ?? undefined },\n ),\n }\n\n const importedTypeNames = resolveOperationTypeNames(node, tsResolver, { paramsCasing, order: 'body-response-first' })\n\n const pluginZod = parser === 'zod' ? driver.getPlugin(pluginZodName) : null\n const zodResolver = pluginZod ? driver.getResolver(pluginZodName) : null\n const fileZod = zodResolver\n ? zodResolver.resolveFile(\n { name: node.operationId, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n { root, output: pluginZod?.options?.output ?? output, group: pluginZod?.options?.group ?? undefined },\n )\n : null\n const zodSchemaNames = resolveZodSchemaNames(node, zodResolver)\n\n const clientPlugin = driver.getPlugin(pluginClientName)\n const hasClientPlugin = clientPlugin?.name === pluginClientName\n const shouldUseClientPlugin = hasClientPlugin && clientOptions.clientType !== 'class'\n const clientResolver = shouldUseClientPlugin ? driver.getResolver(pluginClientName) : null\n\n const clientFile = shouldUseClientPlugin\n ? clientResolver?.resolveFile(\n { name: node.operationId, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n {\n root,\n output: clientPlugin?.options?.output ?? output,\n group: clientPlugin?.options?.group ?? undefined,\n },\n )\n : null\n\n const resolvedClientName = shouldUseClientPlugin ? (clientResolver?.resolveName(node.operationId) ?? clientName) : clientName\n\n return (\n <File\n baseName={meta.file.baseName}\n path={meta.file.path}\n meta={meta.file.meta}\n banner={resolver.resolveBanner(ctx.meta, { output, config, file: { path: meta.file.path, baseName: meta.file.baseName } })}\n footer={resolver.resolveFooter(ctx.meta, { output, config, file: { path: meta.file.path, baseName: meta.file.baseName } })}\n >\n {fileZod && zodSchemaNames.length > 0 && <File.Import name={zodSchemaNames} root={meta.file.path} path={fileZod.path} />}\n {clientOptions.importPath ? (\n <>\n {!shouldUseClientPlugin && <File.Import name={'client'} path={clientOptions.importPath} />}\n <File.Import name={['Client', 'RequestConfig', 'ResponseErrorConfig']} path={clientOptions.importPath} isTypeOnly />\n {clientOptions.dataReturnType === 'full' && <File.Import name={['ResponseConfig']} path={clientOptions.importPath} isTypeOnly />}\n </>\n ) : (\n <>\n {!shouldUseClientPlugin && <File.Import name={['client']} root={meta.file.path} path={path.resolve(root, '.kubb/client.ts')} />}\n <File.Import\n name={['Client', 'RequestConfig', 'ResponseErrorConfig']}\n root={meta.file.path}\n path={path.resolve(root, '.kubb/client.ts')}\n isTypeOnly\n />\n {clientOptions.dataReturnType === 'full' && (\n <File.Import name={['ResponseConfig']} root={meta.file.path} path={path.resolve(root, '.kubb/client.ts')} isTypeOnly />\n )}\n </>\n )}\n {shouldUseClientPlugin && clientFile && <File.Import name={[resolvedClientName]} root={meta.file.path} path={clientFile.path} />}\n {!shouldUseClientPlugin && node.requestBody?.content?.some((e) => e.contentType === 'multipart/form-data') && (\n <File.Import name={['buildFormData']} root={meta.file.path} path={path.resolve(root, '.kubb/config.ts')} />\n )}\n {customOptions && <File.Import name={[customOptions.name]} path={customOptions.importPath} />}\n {meta.fileTs && importedTypeNames.length > 0 && (\n <File.Import name={Array.from(new Set(importedTypeNames))} root={meta.file.path} path={meta.fileTs.path} isTypeOnly />\n )}\n\n <MutationKey name={mutationKeyName} node={node} pathParamsType={pathParamsType} paramsCasing={paramsCasing} transformer={ctx.options.mutationKey} />\n\n {!shouldUseClientPlugin && (\n <Client\n name={resolvedClientName}\n baseURL={clientOptions.baseURL}\n dataReturnType={clientOptions.dataReturnType || 'data'}\n paramsCasing={clientOptions.paramsCasing || paramsCasing}\n paramsType={paramsType}\n pathParamsType={pathParamsType}\n parser={parser}\n node={node}\n tsResolver={tsResolver}\n zodResolver={zodResolver}\n />\n )}\n\n <File.Import name={['mutationOptions']} path={importPath} />\n\n <MutationOptions\n name={mutationOptionsName}\n clientName={resolvedClientName}\n mutationKeyName={mutationKeyName}\n node={node}\n tsResolver={tsResolver}\n paramsCasing={paramsCasing}\n paramsType={paramsType}\n pathParamsType={pathParamsType}\n dataReturnType={clientOptions.dataReturnType || 'data'}\n />\n\n {mutation && (\n <>\n <File.Import name={['useMutation']} path={importPath} />\n <File.Import name={['UseMutationOptions', 'UseMutationResult', 'QueryClient']} path={importPath} isTypeOnly />\n <Mutation\n name={mutationHookName}\n typeName={mutationTypeName}\n mutationOptionsName={mutationOptionsName}\n mutationKeyName={mutationKeyName}\n node={node}\n tsResolver={tsResolver}\n dataReturnType={clientOptions.dataReturnType || 'data'}\n paramsCasing={paramsCasing}\n pathParamsType={pathParamsType}\n customOptions={customOptions}\n />\n </>\n )}\n </File>\n )\n },\n})\n","import path from 'node:path'\nimport { resolveOperationTypeNames } from '@internals/shared'\nimport { resolveZodSchemaNames } from '@internals/tanstack-query'\nimport { defineGenerator } from '@kubb/core'\nimport { Client, pluginClientName } from '@kubb/plugin-client'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { pluginZodName } from '@kubb/plugin-zod'\nimport { File, jsxRendererSync } from '@kubb/renderer-jsx'\nimport { difference } from 'remeda'\nimport { Query, QueryKey, QueryOptions } from '../components'\nimport type { PluginReactQuery } from '../types'\n\n/**\n * Built-in generator for `useQuery` hooks. Emits one `useFooQuery` hook per\n * GET operation (configurable via `query.methods`) plus the matching\n * `fooQueryKey` / `fooQueryOptions` helpers.\n */\nexport const queryGenerator = defineGenerator<PluginReactQuery>({\n name: 'react-query',\n renderer: jsxRendererSync,\n operation(node, ctx) {\n const { config, driver, resolver, root } = ctx\n const { output, query, mutation, paramsCasing, paramsType, pathParamsType, parser, client: clientOptions, group, customOptions } = ctx.options\n\n const pluginTs = driver.getPlugin(pluginTsName)\n if (!pluginTs) return null\n const tsResolver = driver.getResolver(pluginTsName)\n\n // query: false means \"this IS a query op, but skip the useQuery hook\"\n const isQuery = query === false || (!!query && query.methods.some((method) => node.method.toLowerCase() === method.toLowerCase()))\n const isMutation =\n mutation !== false &&\n !isQuery &&\n difference(mutation ? mutation.methods : [], query ? query.methods : []).some((method) => node.method.toLowerCase() === method.toLowerCase())\n\n if (!isQuery || isMutation) return null\n\n const importPath = query ? query.importPath : '@tanstack/react-query'\n\n const queryName = resolver.resolveQueryName(node)\n const queryOptionsName = resolver.resolveQueryOptionsName(node)\n const queryKeyName = resolver.resolveQueryKeyName(node)\n const queryKeyTypeName = resolver.resolveQueryKeyTypeName(node)\n const clientName = resolver.resolveClientName(node)\n\n const meta = {\n file: resolver.resolveFile(\n { name: queryName, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n { root, output, group: group ?? undefined },\n ),\n fileTs: tsResolver.resolveFile(\n { name: node.operationId, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n { root, output: pluginTs.options?.output ?? output, group: pluginTs.options?.group ?? undefined },\n ),\n }\n\n const importedTypeNames = resolveOperationTypeNames(node, tsResolver, {\n paramsCasing,\n exclude: [queryKeyTypeName],\n order: 'body-response-first',\n })\n\n const pluginZod = parser === 'zod' ? driver.getPlugin(pluginZodName) : null\n const zodResolver = pluginZod ? driver.getResolver(pluginZodName) : null\n const fileZod = zodResolver\n ? zodResolver.resolveFile(\n { name: node.operationId, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n { root, output: pluginZod?.options?.output ?? output, group: pluginZod?.options?.group ?? undefined },\n )\n : null\n const zodSchemaNames = resolveZodSchemaNames(node, zodResolver)\n\n const clientPlugin = driver.getPlugin(pluginClientName)\n const hasClientPlugin = clientPlugin?.name === pluginClientName\n const shouldUseClientPlugin = hasClientPlugin && clientOptions.clientType !== 'class'\n const clientResolver = shouldUseClientPlugin ? driver.getResolver(pluginClientName) : null\n\n const clientFile = shouldUseClientPlugin\n ? clientResolver?.resolveFile(\n { name: node.operationId, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n {\n root,\n output: clientPlugin?.options?.output ?? output,\n group: clientPlugin?.options?.group ?? undefined,\n },\n )\n : null\n\n const resolvedClientName = shouldUseClientPlugin ? (clientResolver?.resolveName(node.operationId) ?? clientName) : clientName\n\n return (\n <File\n baseName={meta.file.baseName}\n path={meta.file.path}\n meta={meta.file.meta}\n banner={resolver.resolveBanner(ctx.meta, { output, config, file: { path: meta.file.path, baseName: meta.file.baseName } })}\n footer={resolver.resolveFooter(ctx.meta, { output, config, file: { path: meta.file.path, baseName: meta.file.baseName } })}\n >\n {fileZod && zodSchemaNames.length > 0 && <File.Import name={zodSchemaNames} root={meta.file.path} path={fileZod.path} />}\n {clientOptions.importPath ? (\n <>\n {!shouldUseClientPlugin && <File.Import name={'client'} path={clientOptions.importPath} />}\n <File.Import name={['Client', 'RequestConfig', 'ResponseErrorConfig']} path={clientOptions.importPath} isTypeOnly />\n {clientOptions.dataReturnType === 'full' && <File.Import name={['ResponseConfig']} path={clientOptions.importPath} isTypeOnly />}\n </>\n ) : (\n <>\n {!shouldUseClientPlugin && <File.Import name={['client']} root={meta.file.path} path={path.resolve(root, '.kubb/client.ts')} />}\n <File.Import\n name={['Client', 'RequestConfig', 'ResponseErrorConfig']}\n root={meta.file.path}\n path={path.resolve(root, '.kubb/client.ts')}\n isTypeOnly\n />\n {clientOptions.dataReturnType === 'full' && (\n <File.Import name={['ResponseConfig']} root={meta.file.path} path={path.resolve(root, '.kubb/client.ts')} isTypeOnly />\n )}\n </>\n )}\n {shouldUseClientPlugin && clientFile && <File.Import name={[resolvedClientName]} root={meta.file.path} path={clientFile.path} />}\n {!shouldUseClientPlugin && <File.Import name={['buildFormData']} root={meta.file.path} path={path.resolve(root, '.kubb/config.ts')} />}\n {customOptions && <File.Import name={[customOptions.name]} path={customOptions.importPath} />}\n {meta.fileTs && importedTypeNames.length > 0 && (\n <File.Import name={Array.from(new Set(importedTypeNames))} root={meta.file.path} path={meta.fileTs.path} isTypeOnly />\n )}\n\n <QueryKey\n name={queryKeyName}\n typeName={queryKeyTypeName}\n node={node}\n tsResolver={tsResolver}\n pathParamsType={pathParamsType}\n paramsCasing={paramsCasing}\n transformer={ctx.options.queryKey}\n />\n\n {!shouldUseClientPlugin && (\n <Client\n name={resolvedClientName}\n baseURL={clientOptions.baseURL}\n dataReturnType={clientOptions.dataReturnType || 'data'}\n paramsCasing={clientOptions.paramsCasing || paramsCasing}\n paramsType={paramsType}\n pathParamsType={pathParamsType}\n parser={parser}\n node={node}\n tsResolver={tsResolver}\n zodResolver={zodResolver}\n />\n )}\n\n <File.Import name={['queryOptions']} path={importPath} />\n\n <QueryOptions\n name={queryOptionsName}\n clientName={resolvedClientName}\n queryKeyName={queryKeyName}\n node={node}\n tsResolver={tsResolver}\n paramsCasing={paramsCasing}\n paramsType={paramsType}\n pathParamsType={pathParamsType}\n dataReturnType={clientOptions.dataReturnType || 'data'}\n />\n\n {query && (\n <>\n <File.Import name={['useQuery']} path={importPath} />\n <File.Import name={['QueryKey', 'QueryClient', 'QueryObserverOptions', 'UseQueryResult']} path={importPath} isTypeOnly />\n <Query\n name={queryName}\n queryOptionsName={queryOptionsName}\n queryKeyName={queryKeyName}\n queryKeyTypeName={queryKeyTypeName}\n node={node}\n tsResolver={tsResolver}\n paramsCasing={paramsCasing}\n paramsType={paramsType}\n pathParamsType={pathParamsType}\n dataReturnType={clientOptions.dataReturnType || 'data'}\n customOptions={customOptions}\n />\n </>\n )}\n </File>\n )\n },\n})\n","import path from 'node:path'\nimport { getOperationParameters, resolveOperationTypeNames } from '@internals/shared'\nimport { resolveZodSchemaNames } from '@internals/tanstack-query'\nimport { defineGenerator } from '@kubb/core'\nimport { Client, pluginClientName } from '@kubb/plugin-client'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { pluginZodName } from '@kubb/plugin-zod'\nimport { File, jsxRendererSync } from '@kubb/renderer-jsx'\nimport { difference } from 'remeda'\nimport { QueryKey, SuspenseInfiniteQuery, SuspenseInfiniteQueryOptions } from '../components'\nimport type { PluginReactQuery } from '../types'\n\n/**\n * Built-in generator for `useSuspenseInfiniteQuery` hooks. Enabled when both\n * `suspense` and `infinite` are configured. Combines suspense semantics with\n * cursor-based pagination — handlers throw promises while loading and pull\n * additional pages on demand.\n */\nexport const suspenseInfiniteQueryGenerator = defineGenerator<PluginReactQuery>({\n name: 'react-suspense-infinite-query',\n renderer: jsxRendererSync,\n operation(node, ctx) {\n const { config, driver, resolver, root } = ctx\n const {\n output,\n query,\n mutation,\n infinite,\n suspense,\n paramsCasing,\n paramsType,\n pathParamsType,\n parser,\n client: clientOptions,\n group,\n customOptions,\n } = ctx.options\n\n const pluginTs = driver.getPlugin(pluginTsName)\n if (!pluginTs) return null\n const tsResolver = driver.getResolver(pluginTsName)\n\n const isQuery = query === false || (!!query && query.methods.some((method) => node.method.toLowerCase() === method.toLowerCase()))\n const isMutation =\n mutation !== false &&\n !isQuery &&\n difference(mutation ? mutation.methods : [], query ? query.methods : []).some((method) => node.method.toLowerCase() === method.toLowerCase())\n const isSuspense = !!suspense\n const infiniteOptions = infinite && typeof infinite === 'object' ? infinite : null\n\n if (!isQuery || isMutation || !isSuspense || !infiniteOptions) return null\n\n // Validate queryParam exists in operation's query parameters\n const normalizeKey = (key: string) => key.replace(/\\?$/, '')\n const queryParamKeys = getOperationParameters(node).query.map((p) => p.name)\n const hasQueryParam = infiniteOptions.queryParam ? queryParamKeys.some((k) => normalizeKey(k) === infiniteOptions.queryParam) : false\n const hasCursorParam = !infiniteOptions.cursorParam || true\n\n if (!hasQueryParam || !hasCursorParam) return null\n\n const importPath = query ? query.importPath : '@tanstack/react-query'\n\n const queryName = resolver.resolveSuspenseInfiniteQueryName(node)\n const queryOptionsName = resolver.resolveSuspenseInfiniteQueryOptionsName(node)\n const queryKeyName = resolver.resolveSuspenseInfiniteQueryKeyName(node)\n const queryKeyTypeName = resolver.resolveSuspenseInfiniteQueryKeyTypeName(node)\n const clientBaseName = resolver.resolveSuspenseInfiniteClientName(node)\n\n const meta = {\n file: resolver.resolveFile(\n { name: queryName, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n { root, output, group: group ?? undefined },\n ),\n fileTs: tsResolver.resolveFile(\n { name: node.operationId, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n { root, output: pluginTs.options?.output ?? output, group: pluginTs.options?.group ?? undefined },\n ),\n }\n\n const importedTypeNames = resolveOperationTypeNames(node, tsResolver, { paramsCasing, order: 'body-response-first' })\n\n const pluginZod = parser === 'zod' ? driver.getPlugin(pluginZodName) : null\n const zodResolver = pluginZod ? driver.getResolver(pluginZodName) : null\n const fileZod = zodResolver\n ? zodResolver.resolveFile(\n { name: node.operationId, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n { root, output: pluginZod?.options?.output ?? output, group: pluginZod?.options?.group ?? undefined },\n )\n : null\n const zodSchemaNames = resolveZodSchemaNames(node, zodResolver)\n\n const clientPlugin = driver.getPlugin(pluginClientName)\n const hasClientPlugin = clientPlugin?.name === pluginClientName\n const shouldUseClientPlugin = hasClientPlugin && clientOptions.clientType !== 'class'\n const clientResolver = shouldUseClientPlugin ? driver.getResolver(pluginClientName) : null\n\n const clientFile = shouldUseClientPlugin\n ? clientResolver?.resolveFile(\n { name: node.operationId, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n {\n root,\n output: clientPlugin?.options?.output ?? output,\n group: clientPlugin?.options?.group ?? undefined,\n },\n )\n : null\n\n const resolvedClientName = shouldUseClientPlugin ? (clientResolver?.resolveName(node.operationId) ?? clientBaseName) : clientBaseName\n\n return (\n <File\n baseName={meta.file.baseName}\n path={meta.file.path}\n meta={meta.file.meta}\n banner={resolver.resolveBanner(ctx.meta, { output, config, file: { path: meta.file.path, baseName: meta.file.baseName } })}\n footer={resolver.resolveFooter(ctx.meta, { output, config, file: { path: meta.file.path, baseName: meta.file.baseName } })}\n >\n {fileZod && zodSchemaNames.length > 0 && <File.Import name={zodSchemaNames} root={meta.file.path} path={fileZod.path} />}\n {clientOptions.importPath ? (\n <>\n {!shouldUseClientPlugin && <File.Import name={'client'} path={clientOptions.importPath} />}\n <File.Import name={['Client', 'RequestConfig', 'ResponseErrorConfig']} path={clientOptions.importPath} isTypeOnly />\n {clientOptions.dataReturnType === 'full' && <File.Import name={['ResponseConfig']} path={clientOptions.importPath} isTypeOnly />}\n </>\n ) : (\n <>\n {!shouldUseClientPlugin && <File.Import name={['client']} root={meta.file.path} path={path.resolve(root, '.kubb/client.ts')} />}\n <File.Import\n name={['Client', 'RequestConfig', 'ResponseErrorConfig']}\n root={meta.file.path}\n path={path.resolve(root, '.kubb/client.ts')}\n isTypeOnly\n />\n {clientOptions.dataReturnType === 'full' && (\n <File.Import name={['ResponseConfig']} root={meta.file.path} path={path.resolve(root, '.kubb/client.ts')} isTypeOnly />\n )}\n </>\n )}\n {shouldUseClientPlugin && clientFile && <File.Import name={[resolvedClientName]} root={meta.file.path} path={clientFile.path} />}\n {!shouldUseClientPlugin && <File.Import name={['buildFormData']} root={meta.file.path} path={path.resolve(root, '.kubb/config.ts')} />}\n {customOptions && <File.Import name={[customOptions.name]} path={customOptions.importPath} />}\n {meta.fileTs && importedTypeNames.length > 0 && (\n <File.Import name={Array.from(new Set(importedTypeNames))} root={meta.file.path} path={meta.fileTs.path} isTypeOnly />\n )}\n\n <QueryKey\n name={queryKeyName}\n typeName={queryKeyTypeName}\n node={node}\n tsResolver={tsResolver}\n pathParamsType={pathParamsType}\n paramsCasing={paramsCasing}\n transformer={ctx.options.queryKey}\n />\n\n {!shouldUseClientPlugin && (\n <Client\n name={resolvedClientName}\n baseURL={clientOptions.baseURL}\n dataReturnType={clientOptions.dataReturnType || 'data'}\n paramsCasing={clientOptions.paramsCasing || paramsCasing}\n paramsType={paramsType}\n pathParamsType={pathParamsType}\n parser={parser}\n node={node}\n tsResolver={tsResolver}\n zodResolver={zodResolver}\n />\n )}\n\n <File.Import name={['InfiniteData']} isTypeOnly path={importPath} />\n <File.Import name={['infiniteQueryOptions']} path={importPath} />\n\n <SuspenseInfiniteQueryOptions\n name={queryOptionsName}\n clientName={resolvedClientName}\n queryKeyName={queryKeyName}\n node={node}\n tsResolver={tsResolver}\n paramsCasing={paramsCasing}\n paramsType={paramsType}\n pathParamsType={pathParamsType}\n dataReturnType={clientOptions.dataReturnType || 'data'}\n cursorParam={infiniteOptions.cursorParam}\n nextParam={infiniteOptions.nextParam}\n previousParam={infiniteOptions.previousParam}\n initialPageParam={infiniteOptions.initialPageParam}\n queryParam={infiniteOptions.queryParam}\n />\n\n <File.Import name={['useSuspenseInfiniteQuery']} path={importPath} />\n <File.Import name={['QueryKey', 'QueryClient', 'UseSuspenseInfiniteQueryOptions', 'UseSuspenseInfiniteQueryResult']} path={importPath} isTypeOnly />\n\n <SuspenseInfiniteQuery\n name={queryName}\n queryOptionsName={queryOptionsName}\n queryKeyName={queryKeyName}\n queryKeyTypeName={queryKeyTypeName}\n node={node}\n tsResolver={tsResolver}\n paramsCasing={paramsCasing}\n paramsType={paramsType}\n pathParamsType={pathParamsType}\n dataReturnType={clientOptions.dataReturnType || 'data'}\n initialPageParam={infiniteOptions.initialPageParam}\n queryParam={infiniteOptions.queryParam}\n customOptions={customOptions}\n />\n </File>\n )\n },\n})\n","import path from 'node:path'\nimport { resolveOperationTypeNames } from '@internals/shared'\nimport { resolveZodSchemaNames } from '@internals/tanstack-query'\nimport { defineGenerator } from '@kubb/core'\nimport { Client, pluginClientName } from '@kubb/plugin-client'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { pluginZodName } from '@kubb/plugin-zod'\nimport { File, jsxRendererSync } from '@kubb/renderer-jsx'\nimport { difference } from 'remeda'\nimport { QueryKey, QueryOptions, SuspenseQuery } from '../components'\nimport type { PluginReactQuery } from '../types'\n\n/**\n * Built-in generator for `useSuspenseQuery` hooks. Enabled when\n * `pluginReactQuery({ suspense: {} })`. Emits one `useFooSuspenseQuery` hook\n * per query operation. Suspense queries throw promises while loading and\n * require a `<Suspense>` boundary in the React tree. TanStack Query v5+ only.\n */\nexport const suspenseQueryGenerator = defineGenerator<PluginReactQuery>({\n name: 'react-suspense-query',\n renderer: jsxRendererSync,\n operation(node, ctx) {\n const { config, driver, resolver, root } = ctx\n const { output, query, mutation, suspense, paramsCasing, paramsType, pathParamsType, parser, client: clientOptions, group, customOptions } = ctx.options\n\n const pluginTs = driver.getPlugin(pluginTsName)\n if (!pluginTs) return null\n const tsResolver = driver.getResolver(pluginTsName)\n\n // query: false means \"this IS a query op\" (suspense hooks still generate)\n const isQuery = query === false || (!!query && query.methods.some((method) => node.method.toLowerCase() === method.toLowerCase()))\n const isMutation =\n mutation !== false &&\n !isQuery &&\n difference(mutation ? mutation.methods : [], query ? query.methods : []).some((method) => node.method.toLowerCase() === method.toLowerCase())\n const isSuspense = !!suspense\n\n if (!isQuery || isMutation || !isSuspense) return null\n\n const importPath = query ? query.importPath : '@tanstack/react-query'\n\n const queryName = resolver.resolveSuspenseQueryName(node)\n const queryOptionsName = resolver.resolveSuspenseQueryOptionsName(node)\n const queryKeyName = resolver.resolveSuspenseQueryKeyName(node)\n const queryKeyTypeName = resolver.resolveSuspenseQueryKeyTypeName(node)\n const clientName = resolver.resolveSuspenseClientName(node)\n\n const meta = {\n file: resolver.resolveFile(\n { name: queryName, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n { root, output, group: group ?? undefined },\n ),\n fileTs: tsResolver.resolveFile(\n { name: node.operationId, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n { root, output: pluginTs.options?.output ?? output, group: pluginTs.options?.group ?? undefined },\n ),\n }\n\n const importedTypeNames = resolveOperationTypeNames(node, tsResolver, {\n paramsCasing,\n exclude: [queryKeyTypeName],\n order: 'body-response-first',\n })\n\n const pluginZod = parser === 'zod' ? driver.getPlugin(pluginZodName) : null\n const zodResolver = pluginZod ? driver.getResolver(pluginZodName) : null\n const fileZod = zodResolver\n ? zodResolver.resolveFile(\n { name: node.operationId, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n { root, output: pluginZod?.options?.output ?? output, group: pluginZod?.options?.group ?? undefined },\n )\n : null\n const zodSchemaNames = resolveZodSchemaNames(node, zodResolver)\n\n const clientPlugin = driver.getPlugin(pluginClientName)\n const hasClientPlugin = clientPlugin?.name === pluginClientName\n const shouldUseClientPlugin = hasClientPlugin && clientOptions.clientType !== 'class'\n const clientResolver = shouldUseClientPlugin ? driver.getResolver(pluginClientName) : null\n\n const clientFile = shouldUseClientPlugin\n ? clientResolver?.resolveFile(\n { name: node.operationId, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },\n {\n root,\n output: clientPlugin?.options?.output ?? output,\n group: clientPlugin?.options?.group ?? undefined,\n },\n )\n : null\n\n const resolvedClientName = shouldUseClientPlugin ? (clientResolver?.resolveName(node.operationId) ?? clientName) : clientName\n\n return (\n <File\n baseName={meta.file.baseName}\n path={meta.file.path}\n meta={meta.file.meta}\n banner={resolver.resolveBanner(ctx.meta, { output, config, file: { path: meta.file.path, baseName: meta.file.baseName } })}\n footer={resolver.resolveFooter(ctx.meta, { output, config, file: { path: meta.file.path, baseName: meta.file.baseName } })}\n >\n {fileZod && zodSchemaNames.length > 0 && <File.Import name={zodSchemaNames} root={meta.file.path} path={fileZod.path} />}\n {clientOptions.importPath ? (\n <>\n {!shouldUseClientPlugin && <File.Import name={'client'} path={clientOptions.importPath} />}\n <File.Import name={['Client', 'RequestConfig', 'ResponseErrorConfig']} path={clientOptions.importPath} isTypeOnly />\n {clientOptions.dataReturnType === 'full' && <File.Import name={['ResponseConfig']} path={clientOptions.importPath} isTypeOnly />}\n </>\n ) : (\n <>\n {!shouldUseClientPlugin && <File.Import name={['client']} root={meta.file.path} path={path.resolve(root, '.kubb/client.ts')} />}\n <File.Import\n name={['Client', 'RequestConfig', 'ResponseErrorConfig']}\n root={meta.file.path}\n path={path.resolve(root, '.kubb/client.ts')}\n isTypeOnly\n />\n {clientOptions.dataReturnType === 'full' && (\n <File.Import name={['ResponseConfig']} root={meta.file.path} path={path.resolve(root, '.kubb/client.ts')} isTypeOnly />\n )}\n </>\n )}\n {shouldUseClientPlugin && clientFile && <File.Import name={[resolvedClientName]} root={meta.file.path} path={clientFile.path} />}\n {!shouldUseClientPlugin && <File.Import name={['buildFormData']} root={meta.file.path} path={path.resolve(root, '.kubb/config.ts')} />}\n {customOptions && <File.Import name={[customOptions.name]} path={customOptions.importPath} />}\n {meta.fileTs && importedTypeNames.length > 0 && (\n <File.Import name={Array.from(new Set(importedTypeNames))} root={meta.file.path} path={meta.fileTs.path} isTypeOnly />\n )}\n\n <QueryKey\n name={queryKeyName}\n typeName={queryKeyTypeName}\n node={node}\n tsResolver={tsResolver}\n pathParamsType={pathParamsType}\n paramsCasing={paramsCasing}\n transformer={ctx.options.queryKey}\n />\n\n {!shouldUseClientPlugin && (\n <Client\n name={resolvedClientName}\n baseURL={clientOptions.baseURL}\n dataReturnType={clientOptions.dataReturnType || 'data'}\n paramsCasing={clientOptions.paramsCasing || paramsCasing}\n paramsType={paramsType}\n pathParamsType={pathParamsType}\n parser={parser}\n node={node}\n tsResolver={tsResolver}\n zodResolver={zodResolver}\n />\n )}\n\n <File.Import name={['queryOptions']} path={importPath} />\n\n <QueryOptions\n name={queryOptionsName}\n clientName={resolvedClientName}\n queryKeyName={queryKeyName}\n node={node}\n tsResolver={tsResolver}\n paramsCasing={paramsCasing}\n paramsType={paramsType}\n pathParamsType={pathParamsType}\n dataReturnType={clientOptions.dataReturnType || 'data'}\n />\n\n {suspense && (\n <>\n <File.Import name={['useSuspenseQuery']} path={importPath} />\n <File.Import name={['QueryKey', 'QueryClient', 'UseSuspenseQueryOptions', 'UseSuspenseQueryResult']} path={importPath} isTypeOnly />\n <SuspenseQuery\n name={queryName}\n queryOptionsName={queryOptionsName}\n queryKeyName={queryKeyName}\n queryKeyTypeName={queryKeyTypeName}\n node={node}\n tsResolver={tsResolver}\n paramsCasing={paramsCasing}\n paramsType={paramsType}\n pathParamsType={pathParamsType}\n dataReturnType={clientOptions.dataReturnType || 'data'}\n customOptions={customOptions}\n />\n </>\n )}\n </File>\n )\n },\n})\n"],"mappings":"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"}
@@ -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-BtsWNz-6.cjs");
3
3
  exports.customHookOptionsFileGenerator = require_generators.customHookOptionsFileGenerator;
4
4
  exports.hookOptionsGenerator = require_generators.hookOptionsGenerator;
5
5
  exports.infiniteQueryGenerator = require_generators.infiniteQueryGenerator;
@@ -1,26 +1,66 @@
1
1
  import { t as __name } from "./chunk--u3MIqq1.js";
2
- import { r as PluginReactQuery } from "./types-DfaFRSBf.js";
2
+ import { r as PluginReactQuery } from "./types-DiZPLTXl.js";
3
3
  import * as _$_kubb_core0 from "@kubb/core";
4
4
 
5
5
  //#region src/generators/customHookOptionsFileGenerator.d.ts
6
+ /**
7
+ * Scaffolds the user-editable `useCustomHookOptions` file when
8
+ * `pluginReactQuery({ customOptions: { ... } })` is configured. The file is
9
+ * only created when it does not already exist, so user edits persist across
10
+ * regeneration.
11
+ */
6
12
  declare const customHookOptionsFileGenerator: _$_kubb_core0.Generator<PluginReactQuery, unknown>;
7
13
  //#endregion
8
14
  //#region src/generators/hookOptionsGenerator.d.ts
15
+ /**
16
+ * Emits the `HookOptions` type used by `customOptions`. Enabled when
17
+ * `pluginReactQuery({ customOptions: { ... } })`. The generated type lists
18
+ * every hook keyed by name so user-supplied options stay in sync with the
19
+ * generated hooks at compile time.
20
+ */
9
21
  declare const hookOptionsGenerator: _$_kubb_core0.Generator<PluginReactQuery, unknown>;
10
22
  //#endregion
11
23
  //#region src/generators/infiniteQueryGenerator.d.ts
24
+ /**
25
+ * Built-in generator for `useInfiniteQuery` hooks. Enabled when
26
+ * `pluginReactQuery({ infinite: { ... } })`. Emits one `useFooInfiniteQuery`
27
+ * hook per query operation, wiring the configured `nextParam` /
28
+ * `previousParam` paths into TanStack Query's cursor-based pagination.
29
+ */
12
30
  declare const infiniteQueryGenerator: _$_kubb_core0.Generator<PluginReactQuery, unknown>;
13
31
  //#endregion
14
32
  //#region src/generators/mutationGenerator.d.ts
33
+ /**
34
+ * Built-in generator for `useMutation` hooks. Emits one `useFooMutation` hook
35
+ * per POST/PUT/DELETE operation (configurable via `mutation.methods`) plus
36
+ * the matching `fooMutationKey` / `fooMutationOptions` helpers.
37
+ */
15
38
  declare const mutationGenerator: _$_kubb_core0.Generator<PluginReactQuery, unknown>;
16
39
  //#endregion
17
40
  //#region src/generators/queryGenerator.d.ts
41
+ /**
42
+ * Built-in generator for `useQuery` hooks. Emits one `useFooQuery` hook per
43
+ * GET operation (configurable via `query.methods`) plus the matching
44
+ * `fooQueryKey` / `fooQueryOptions` helpers.
45
+ */
18
46
  declare const queryGenerator: _$_kubb_core0.Generator<PluginReactQuery, unknown>;
19
47
  //#endregion
20
48
  //#region src/generators/suspenseInfiniteQueryGenerator.d.ts
49
+ /**
50
+ * Built-in generator for `useSuspenseInfiniteQuery` hooks. Enabled when both
51
+ * `suspense` and `infinite` are configured. Combines suspense semantics with
52
+ * cursor-based pagination — handlers throw promises while loading and pull
53
+ * additional pages on demand.
54
+ */
21
55
  declare const suspenseInfiniteQueryGenerator: _$_kubb_core0.Generator<PluginReactQuery, unknown>;
22
56
  //#endregion
23
57
  //#region src/generators/suspenseQueryGenerator.d.ts
58
+ /**
59
+ * Built-in generator for `useSuspenseQuery` hooks. Enabled when
60
+ * `pluginReactQuery({ suspense: {} })`. Emits one `useFooSuspenseQuery` hook
61
+ * per query operation. Suspense queries throw promises while loading and
62
+ * require a `<Suspense>` boundary in the React tree. TanStack Query v5+ only.
63
+ */
24
64
  declare const suspenseQueryGenerator: _$_kubb_core0.Generator<PluginReactQuery, unknown>;
25
65
  //#endregion
26
66
  export { customHookOptionsFileGenerator, hookOptionsGenerator, infiniteQueryGenerator, mutationGenerator, queryGenerator, suspenseInfiniteQueryGenerator, suspenseQueryGenerator };
@@ -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-Bma51Uar.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-MPBTffPl.cjs");
6
+ const require_generators = require("./generators-BtsWNz-6.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");
@@ -14,32 +14,156 @@ let _kubb_plugin_client_templates_config_source = require("@kubb/plugin-client/t
14
14
  let _kubb_plugin_ts = require("@kubb/plugin-ts");
15
15
  let _kubb_plugin_zod = require("@kubb/plugin-zod");
16
16
  //#region src/resolvers/resolverReactQuery.ts
17
+ function capitalize(name) {
18
+ return `${name.charAt(0).toUpperCase()}${name.slice(1)}`;
19
+ }
17
20
  /**
18
- * Naming convention resolver for React Query plugin.
21
+ * Default resolver used by `@kubb/plugin-react-query`. Decides the names and
22
+ * file paths for every generated TanStack Query hook (`useFooQuery`,
23
+ * `useFooMutation`, `useFooInfiniteQuery`, ...) and its companion helpers
24
+ * (`fooQueryKey`, `fooQueryOptions`).
19
25
  *
20
- * Provides default naming helpers using camelCase for functions and file paths.
26
+ * Functions and files use camelCase; hooks get the `use` prefix; suspense and
27
+ * infinite variants are suffixed with `Suspense`/`Infinite`.
21
28
  *
22
- * @example
23
- * `resolverReactQuery.default('list pets', 'function') // → 'listPets'`
29
+ * @example Resolve hook and helper names
30
+ * ```ts
31
+ * import { resolverReactQuery } from '@kubb/plugin-react-query'
32
+ *
33
+ * resolverReactQuery.resolveQueryName(operationNode) // 'useGetPetById'
34
+ * resolverReactQuery.resolveMutationName(operationNode) // 'useUpdatePet'
35
+ * resolverReactQuery.resolveQueryKeyName(operationNode) // 'getPetByIdQueryKey'
36
+ * resolverReactQuery.resolveQueryOptionsName(operationNode) // 'getPetByIdQueryOptions'
37
+ * ```
24
38
  */
25
- const resolverReactQuery = (0, _kubb_core.defineResolver)((ctx) => ({
39
+ const resolverReactQuery = (0, _kubb_core.defineResolver)(() => ({
26
40
  name: "default",
27
41
  pluginName: "plugin-react-query",
28
42
  default(name, type) {
29
43
  return require_components.camelCase(name, { isFile: type === "file" });
30
44
  },
31
45
  resolveName(name) {
32
- return ctx.default(name, "function");
46
+ return this.default(name, "function");
47
+ },
48
+ resolvePathName(name, type) {
49
+ return this.default(name, type);
50
+ },
51
+ resolveQueryName(node) {
52
+ return `use${capitalize(this.resolveName(node.operationId))}`;
53
+ },
54
+ resolveSuspenseQueryName(node) {
55
+ return `use${capitalize(this.resolveName(node.operationId))}Suspense`;
56
+ },
57
+ resolveInfiniteQueryName(node) {
58
+ return `use${capitalize(this.resolveName(node.operationId))}Infinite`;
59
+ },
60
+ resolveSuspenseInfiniteQueryName(node) {
61
+ return `use${capitalize(this.resolveName(node.operationId))}SuspenseInfinite`;
62
+ },
63
+ resolveMutationName(node) {
64
+ return `use${capitalize(this.resolveName(node.operationId))}`;
65
+ },
66
+ resolveQueryOptionsName(node) {
67
+ return `${this.resolveName(node.operationId)}QueryOptions`;
68
+ },
69
+ resolveSuspenseQueryOptionsName(node) {
70
+ return `${this.resolveName(node.operationId)}SuspenseQueryOptions`;
71
+ },
72
+ resolveInfiniteQueryOptionsName(node) {
73
+ return `${this.resolveName(node.operationId)}InfiniteQueryOptions`;
74
+ },
75
+ resolveSuspenseInfiniteQueryOptionsName(node) {
76
+ return `${this.resolveName(node.operationId)}SuspenseInfiniteQueryOptions`;
77
+ },
78
+ resolveMutationOptionsName(node) {
79
+ return `${this.resolveName(node.operationId)}MutationOptions`;
80
+ },
81
+ resolveQueryKeyName(node) {
82
+ return `${this.resolveName(node.operationId)}QueryKey`;
83
+ },
84
+ resolveSuspenseQueryKeyName(node) {
85
+ return `${this.resolveName(node.operationId)}SuspenseQueryKey`;
86
+ },
87
+ resolveInfiniteQueryKeyName(node) {
88
+ return `${this.resolveName(node.operationId)}InfiniteQueryKey`;
89
+ },
90
+ resolveSuspenseInfiniteQueryKeyName(node) {
91
+ return `${this.resolveName(node.operationId)}SuspenseInfiniteQueryKey`;
92
+ },
93
+ resolveMutationKeyName(node) {
94
+ return `${this.resolveName(node.operationId)}MutationKey`;
95
+ },
96
+ resolveQueryKeyTypeName(node) {
97
+ return `${capitalize(this.resolveName(node.operationId))}QueryKey`;
98
+ },
99
+ resolveSuspenseQueryKeyTypeName(node) {
100
+ return `${capitalize(this.resolveName(node.operationId))}SuspenseQueryKey`;
101
+ },
102
+ resolveInfiniteQueryKeyTypeName(node) {
103
+ return `${capitalize(this.resolveName(node.operationId))}InfiniteQueryKey`;
104
+ },
105
+ resolveSuspenseInfiniteQueryKeyTypeName(node) {
106
+ return `${capitalize(this.resolveName(node.operationId))}SuspenseInfiniteQueryKey`;
107
+ },
108
+ resolveMutationTypeName(node) {
109
+ return capitalize(this.resolveName(node.operationId));
110
+ },
111
+ resolveClientName(node) {
112
+ return this.resolveName(node.operationId);
113
+ },
114
+ resolveSuspenseClientName(node) {
115
+ return `${this.resolveName(node.operationId)}Suspense`;
116
+ },
117
+ resolveInfiniteClientName(node) {
118
+ return `${this.resolveName(node.operationId)}Infinite`;
119
+ },
120
+ resolveSuspenseInfiniteClientName(node) {
121
+ return `${this.resolveName(node.operationId)}SuspenseInfinite`;
122
+ },
123
+ resolveHookOptionsName() {
124
+ return "HookOptions";
125
+ },
126
+ resolveCustomHookOptionsName() {
127
+ return "getCustomHookOptions";
33
128
  }
34
129
  }));
35
130
  //#endregion
36
131
  //#region src/plugin.ts
132
+ /**
133
+ * Canonical plugin name for `@kubb/plugin-react-query`. Used for driver lookups
134
+ * and cross-plugin dependency references.
135
+ */
37
136
  const pluginReactQueryName = "plugin-react-query";
137
+ /**
138
+ * Generates one TanStack Query hook per OpenAPI operation for React. Queries
139
+ * become `useFooQuery`/`useFooSuspenseQuery`/`useFooInfiniteQuery`; mutations
140
+ * become `useFooMutation`. Each hook is fully typed: query keys, input
141
+ * variables, response data, and error shape all come from the spec.
142
+ *
143
+ * @example
144
+ * ```ts
145
+ * import { defineConfig } from 'kubb'
146
+ * import { pluginTs } from '@kubb/plugin-ts'
147
+ * import { pluginReactQuery } from '@kubb/plugin-react-query'
148
+ *
149
+ * export default defineConfig({
150
+ * input: { path: './petStore.yaml' },
151
+ * output: { path: './src/gen' },
152
+ * plugins: [
153
+ * pluginTs(),
154
+ * pluginReactQuery({
155
+ * output: { path: './hooks' },
156
+ * suspense: {},
157
+ * }),
158
+ * ],
159
+ * })
160
+ * ```
161
+ */
38
162
  const pluginReactQuery = (0, _kubb_core.definePlugin)((options) => {
39
163
  const { output = {
40
164
  path: "hooks",
41
165
  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;
166
+ }, group, exclude = [], include, override = [], parser = "client", 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
167
  const clientName = client?.client ?? "axios";
44
168
  const clientImportPath = client?.importPath ?? (!client?.bundle ? `@kubb/plugin-client/clients/${clientName}` : void 0);
45
169
  const selectedGenerators = options.generators ?? [
@@ -50,18 +174,18 @@ const pluginReactQuery = (0, _kubb_core.definePlugin)((options) => {
50
174
  require_generators.mutationGenerator,
51
175
  require_generators.hookOptionsGenerator,
52
176
  require_generators.customHookOptionsFileGenerator
53
- ].filter(Boolean);
177
+ ].filter((generator) => Boolean(generator));
54
178
  const groupConfig = group ? {
55
179
  ...group,
56
180
  name: group.name ? group.name : (ctx) => {
57
181
  if (group.type === "path") return `${ctx.group.split("/")[1]}`;
58
182
  return `${require_components.camelCase(ctx.group)}Controller`;
59
183
  }
60
- } : void 0;
184
+ } : null;
61
185
  return {
62
186
  name: pluginReactQueryName,
63
187
  options,
64
- dependencies: [_kubb_plugin_ts.pluginTsName, parser === "zod" ? _kubb_plugin_zod.pluginZodName : void 0].filter(Boolean),
188
+ dependencies: [_kubb_plugin_ts.pluginTsName, parser === "zod" ? _kubb_plugin_zod.pluginZodName : void 0].filter((dependency) => Boolean(dependency)),
65
189
  hooks: { "kubb:plugin:setup"(ctx) {
66
190
  const resolver = userResolver ? {
67
191
  ...resolverReactQuery,
@@ -69,7 +193,6 @@ const pluginReactQuery = (0, _kubb_core.definePlugin)((options) => {
69
193
  } : resolverReactQuery;
70
194
  ctx.setOptions({
71
195
  output,
72
- transformers,
73
196
  client: {
74
197
  bundle: client?.bundle,
75
198
  baseURL: client?.baseURL,
@@ -99,16 +222,16 @@ const pluginReactQuery = (0, _kubb_core.definePlugin)((options) => {
99
222
  infinite: infinite ? {
100
223
  queryParam: "id",
101
224
  initialPageParam: 0,
102
- cursorParam: void 0,
103
- nextParam: void 0,
104
- previousParam: void 0,
225
+ cursorParam: null,
226
+ nextParam: null,
227
+ previousParam: null,
105
228
  ...infinite
106
229
  } : false,
107
230
  suspense,
108
231
  customOptions: customOptions ? {
109
232
  name: "useCustomHookOptions",
110
233
  ...customOptions
111
- } : void 0,
234
+ } : null,
112
235
  parser,
113
236
  paramsType,
114
237
  pathParamsType,
@@ -126,10 +249,10 @@ const pluginReactQuery = (0, _kubb_core.definePlugin)((options) => {
126
249
  const root = node_path.default.resolve(ctx.config.root, ctx.config.output.path);
127
250
  const hasClientPlugin = !!ctx.config.plugins?.some((p) => p.name === _kubb_plugin_client.pluginClientName);
128
251
  if (client?.bundle && !hasClientPlugin && !clientImportPath) ctx.injectFile({
129
- baseName: "fetch.ts",
130
- path: node_path.default.resolve(root, ".kubb/fetch.ts"),
252
+ baseName: "client.ts",
253
+ path: node_path.default.resolve(root, ".kubb/client.ts"),
131
254
  sources: [_kubb_core.ast.createSource({
132
- name: "fetch",
255
+ name: "client",
133
256
  nodes: [_kubb_core.ast.createText(clientName === "fetch" ? _kubb_plugin_client_templates_clients_fetch_source.source : _kubb_plugin_client_templates_clients_axios_source.source)],
134
257
  isExportable: true,
135
258
  isIndexable: true
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["camelCase","MutationKey","QueryKey","queryGenerator","suspenseQueryGenerator","infiniteQueryGenerator","suspenseInfiniteQueryGenerator","mutationGenerator","hookOptionsGenerator","customHookOptionsFileGenerator","camelCase","pluginTsName","pluginZodName","path","pluginClientName","ast","fetchClientSource","axiosClientSource","configSource"],"sources":["../src/resolvers/resolverReactQuery.ts","../src/plugin.ts"],"sourcesContent":["import { camelCase } from '@internals/utils'\nimport { defineResolver } from '@kubb/core'\nimport type { PluginReactQuery } from '../types.ts'\n\n/**\n * Naming convention resolver for React Query plugin.\n *\n * Provides default naming helpers using camelCase for functions and file paths.\n *\n * @example\n * `resolverReactQuery.default('list pets', 'function') // → 'listPets'`\n */\nexport const resolverReactQuery = defineResolver<PluginReactQuery>((ctx) => ({\n name: 'default',\n pluginName: 'plugin-react-query',\n default(name, type) {\n return camelCase(name, { isFile: type === 'file' })\n },\n resolveName(name) {\n return ctx.default(name, 'function')\n },\n}))\n","import path from 'node:path'\nimport { camelCase } from '@internals/utils'\nimport { ast, definePlugin, type Group } from '@kubb/core'\nimport { pluginClientName } from '@kubb/plugin-client'\nimport { source as axiosClientSource } from '@kubb/plugin-client/templates/clients/axios.source'\nimport { source as fetchClientSource } from '@kubb/plugin-client/templates/clients/fetch.source'\nimport { source as configSource } from '@kubb/plugin-client/templates/config.source'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { pluginZodName } from '@kubb/plugin-zod'\nimport { MutationKey } from './components/MutationKey.tsx'\nimport { QueryKey } from './components/QueryKey.tsx'\nimport {\n customHookOptionsFileGenerator,\n hookOptionsGenerator,\n infiniteQueryGenerator,\n mutationGenerator,\n queryGenerator,\n suspenseInfiniteQueryGenerator,\n suspenseQueryGenerator,\n} from './generators'\nimport { resolverReactQuery } from './resolvers/resolverReactQuery.ts'\nimport type { PluginReactQuery } from './types.ts'\n\nexport const pluginReactQueryName = 'plugin-react-query' satisfies PluginReactQuery['name']\n\nexport const pluginReactQuery = definePlugin<PluginReactQuery>((options) => {\n const {\n output = { path: 'hooks', barrelType: 'named' },\n group,\n exclude = [],\n include,\n override = [],\n parser = 'client',\n suspense = {},\n infinite = false,\n transformers = {},\n paramsType = 'inline',\n pathParamsType = paramsType === 'object' ? 'object' : options.pathParamsType || 'inline',\n mutation = {},\n query = {},\n mutationKey = MutationKey.getTransformer,\n queryKey = QueryKey.getTransformer,\n customOptions,\n paramsCasing,\n client,\n resolver: userResolver,\n transformer: userTransformer,\n generators: userGenerators = [],\n } = options\n\n const clientName = client?.client ?? 'axios'\n const clientImportPath = client?.importPath ?? (!client?.bundle ? `@kubb/plugin-client/clients/${clientName}` : undefined)\n\n const selectedGenerators =\n options.generators ??\n [\n queryGenerator,\n suspenseQueryGenerator,\n infiniteQueryGenerator,\n suspenseInfiniteQueryGenerator,\n mutationGenerator,\n hookOptionsGenerator,\n customHookOptionsFileGenerator,\n ].filter(Boolean)\n\n const groupConfig = group\n ? ({\n ...group,\n name: group.name\n ? group.name\n : (ctx: { group: string }) => {\n if (group.type === 'path') {\n return `${ctx.group.split('/')[1]}`\n }\n return `${camelCase(ctx.group)}Controller`\n },\n } satisfies Group)\n : undefined\n\n return {\n name: pluginReactQueryName,\n options,\n dependencies: [pluginTsName, parser === 'zod' ? pluginZodName : undefined].filter(Boolean),\n hooks: {\n 'kubb:plugin:setup'(ctx) {\n const resolver = userResolver ? { ...resolverReactQuery, ...userResolver } : resolverReactQuery\n\n ctx.setOptions({\n output,\n transformers,\n client: {\n bundle: client?.bundle,\n baseURL: client?.baseURL,\n client: clientName,\n clientType: client?.clientType ?? 'function',\n importPath: clientImportPath,\n dataReturnType: client?.dataReturnType ?? 'data',\n paramsCasing,\n },\n queryKey,\n query:\n query === false\n ? false\n : {\n importPath: '@tanstack/react-query',\n methods: ['get'],\n ...query,\n },\n mutationKey,\n mutation:\n mutation === false\n ? false\n : {\n importPath: '@tanstack/react-query',\n methods: ['post', 'put', 'patch', 'delete'],\n ...mutation,\n },\n infinite: infinite\n ? {\n queryParam: 'id',\n initialPageParam: 0,\n cursorParam: undefined,\n nextParam: undefined,\n previousParam: undefined,\n ...infinite,\n }\n : false,\n suspense,\n customOptions: customOptions ? { name: 'useCustomHookOptions', ...customOptions } : undefined,\n parser,\n paramsType,\n pathParamsType,\n paramsCasing,\n group: groupConfig,\n exclude,\n include,\n override,\n resolver,\n })\n ctx.setResolver(resolver)\n if (userTransformer) {\n ctx.setTransformer(userTransformer)\n }\n\n for (const gen of selectedGenerators) {\n ctx.addGenerator(gen)\n }\n for (const gen of userGenerators) {\n ctx.addGenerator(gen)\n }\n\n const root = path.resolve(ctx.config.root, ctx.config.output.path)\n const hasClientPlugin = !!ctx.config.plugins?.some((p) => (p as { name?: string }).name === pluginClientName)\n\n if (client?.bundle && !hasClientPlugin && !clientImportPath) {\n ctx.injectFile({\n baseName: 'fetch.ts',\n path: path.resolve(root, '.kubb/fetch.ts'),\n sources: [\n ast.createSource({\n name: 'fetch',\n nodes: [ast.createText(clientName === 'fetch' ? fetchClientSource : axiosClientSource)],\n isExportable: true,\n isIndexable: true,\n }),\n ],\n })\n }\n\n if (!hasClientPlugin) {\n ctx.injectFile({\n baseName: 'config.ts',\n path: path.resolve(root, '.kubb/config.ts'),\n sources: [\n ast.createSource({\n name: 'config',\n nodes: [ast.createText(configSource)],\n isExportable: false,\n isIndexable: false,\n }),\n ],\n })\n }\n },\n },\n }\n})\n\nexport default pluginReactQuery\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":["camelCase","mutationKeyTransformer","queryKeyTransformer","queryGenerator","suspenseQueryGenerator","infiniteQueryGenerator","suspenseInfiniteQueryGenerator","mutationGenerator","hookOptionsGenerator","customHookOptionsFileGenerator","camelCase","pluginTsName","pluginZodName","path","pluginClientName","ast","fetchClientSource","axiosClientSource","configSource"],"sources":["../src/resolvers/resolverReactQuery.ts","../src/plugin.ts"],"sourcesContent":["import { camelCase } from '@internals/utils'\nimport { defineResolver } from '@kubb/core'\nimport type { PluginReactQuery } from '../types.ts'\n\nfunction capitalize(name: string): string {\n return `${name.charAt(0).toUpperCase()}${name.slice(1)}`\n}\n\n/**\n * Default resolver used by `@kubb/plugin-react-query`. Decides the names and\n * file paths for every generated TanStack Query hook (`useFooQuery`,\n * `useFooMutation`, `useFooInfiniteQuery`, ...) and its companion helpers\n * (`fooQueryKey`, `fooQueryOptions`).\n *\n * Functions and files use camelCase; hooks get the `use` prefix; suspense and\n * infinite variants are suffixed with `Suspense`/`Infinite`.\n *\n * @example Resolve hook and helper names\n * ```ts\n * import { resolverReactQuery } from '@kubb/plugin-react-query'\n *\n * resolverReactQuery.resolveQueryName(operationNode) // 'useGetPetById'\n * resolverReactQuery.resolveMutationName(operationNode) // 'useUpdatePet'\n * resolverReactQuery.resolveQueryKeyName(operationNode) // 'getPetByIdQueryKey'\n * resolverReactQuery.resolveQueryOptionsName(operationNode) // 'getPetByIdQueryOptions'\n * ```\n */\nexport const resolverReactQuery = defineResolver<PluginReactQuery>(() => ({\n name: 'default',\n pluginName: 'plugin-react-query',\n default(name, type) {\n return camelCase(name, { isFile: type === 'file' })\n },\n resolveName(name) {\n return this.default(name, 'function')\n },\n resolvePathName(name, type) {\n return this.default(name, type)\n },\n resolveQueryName(node) {\n return `use${capitalize(this.resolveName(node.operationId))}`\n },\n resolveSuspenseQueryName(node) {\n return `use${capitalize(this.resolveName(node.operationId))}Suspense`\n },\n resolveInfiniteQueryName(node) {\n return `use${capitalize(this.resolveName(node.operationId))}Infinite`\n },\n resolveSuspenseInfiniteQueryName(node) {\n return `use${capitalize(this.resolveName(node.operationId))}SuspenseInfinite`\n },\n resolveMutationName(node) {\n return `use${capitalize(this.resolveName(node.operationId))}`\n },\n resolveQueryOptionsName(node) {\n return `${this.resolveName(node.operationId)}QueryOptions`\n },\n resolveSuspenseQueryOptionsName(node) {\n return `${this.resolveName(node.operationId)}SuspenseQueryOptions`\n },\n resolveInfiniteQueryOptionsName(node) {\n return `${this.resolveName(node.operationId)}InfiniteQueryOptions`\n },\n resolveSuspenseInfiniteQueryOptionsName(node) {\n return `${this.resolveName(node.operationId)}SuspenseInfiniteQueryOptions`\n },\n resolveMutationOptionsName(node) {\n return `${this.resolveName(node.operationId)}MutationOptions`\n },\n resolveQueryKeyName(node) {\n return `${this.resolveName(node.operationId)}QueryKey`\n },\n resolveSuspenseQueryKeyName(node) {\n return `${this.resolveName(node.operationId)}SuspenseQueryKey`\n },\n resolveInfiniteQueryKeyName(node) {\n return `${this.resolveName(node.operationId)}InfiniteQueryKey`\n },\n resolveSuspenseInfiniteQueryKeyName(node) {\n return `${this.resolveName(node.operationId)}SuspenseInfiniteQueryKey`\n },\n resolveMutationKeyName(node) {\n return `${this.resolveName(node.operationId)}MutationKey`\n },\n resolveQueryKeyTypeName(node) {\n return `${capitalize(this.resolveName(node.operationId))}QueryKey`\n },\n resolveSuspenseQueryKeyTypeName(node) {\n return `${capitalize(this.resolveName(node.operationId))}SuspenseQueryKey`\n },\n resolveInfiniteQueryKeyTypeName(node) {\n return `${capitalize(this.resolveName(node.operationId))}InfiniteQueryKey`\n },\n resolveSuspenseInfiniteQueryKeyTypeName(node) {\n return `${capitalize(this.resolveName(node.operationId))}SuspenseInfiniteQueryKey`\n },\n resolveMutationTypeName(node) {\n return capitalize(this.resolveName(node.operationId))\n },\n resolveClientName(node) {\n return this.resolveName(node.operationId)\n },\n resolveSuspenseClientName(node) {\n return `${this.resolveName(node.operationId)}Suspense`\n },\n resolveInfiniteClientName(node) {\n return `${this.resolveName(node.operationId)}Infinite`\n },\n resolveSuspenseInfiniteClientName(node) {\n return `${this.resolveName(node.operationId)}SuspenseInfinite`\n },\n resolveHookOptionsName() {\n return 'HookOptions'\n },\n resolveCustomHookOptionsName() {\n return 'getCustomHookOptions'\n },\n}))\n","import path from 'node:path'\nimport { camelCase } from '@internals/utils'\nimport { ast, definePlugin, type Group } from '@kubb/core'\nimport { pluginClientName } from '@kubb/plugin-client'\nimport { source as axiosClientSource } from '@kubb/plugin-client/templates/clients/axios.source'\nimport { source as fetchClientSource } from '@kubb/plugin-client/templates/clients/fetch.source'\nimport { source as configSource } from '@kubb/plugin-client/templates/config.source'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { pluginZodName } from '@kubb/plugin-zod'\nimport { mutationKeyTransformer, queryKeyTransformer } from '@internals/tanstack-query'\nimport {\n customHookOptionsFileGenerator,\n hookOptionsGenerator,\n infiniteQueryGenerator,\n mutationGenerator,\n queryGenerator,\n suspenseInfiniteQueryGenerator,\n suspenseQueryGenerator,\n} from './generators'\nimport { resolverReactQuery } from './resolvers/resolverReactQuery.ts'\nimport type { PluginReactQuery } from './types.ts'\n\n/**\n * Canonical plugin name for `@kubb/plugin-react-query`. Used for driver lookups\n * and cross-plugin dependency references.\n */\nexport const pluginReactQueryName = 'plugin-react-query' satisfies PluginReactQuery['name']\n\n/**\n * Generates one TanStack Query hook per OpenAPI operation for React. Queries\n * become `useFooQuery`/`useFooSuspenseQuery`/`useFooInfiniteQuery`; mutations\n * become `useFooMutation`. Each hook is fully typed: query keys, input\n * variables, response data, and error shape all come from the spec.\n *\n * @example\n * ```ts\n * import { defineConfig } from 'kubb'\n * import { pluginTs } from '@kubb/plugin-ts'\n * import { pluginReactQuery } from '@kubb/plugin-react-query'\n *\n * export default defineConfig({\n * input: { path: './petStore.yaml' },\n * output: { path: './src/gen' },\n * plugins: [\n * pluginTs(),\n * pluginReactQuery({\n * output: { path: './hooks' },\n * suspense: {},\n * }),\n * ],\n * })\n * ```\n */\nexport const pluginReactQuery = definePlugin<PluginReactQuery>((options) => {\n const {\n output = { path: 'hooks', barrelType: 'named' },\n group,\n exclude = [],\n include,\n override = [],\n parser = 'client',\n suspense = {},\n infinite = false,\n paramsType = 'inline',\n pathParamsType = paramsType === 'object' ? 'object' : options.pathParamsType || 'inline',\n mutation = {},\n query = {},\n mutationKey = mutationKeyTransformer,\n queryKey = queryKeyTransformer,\n customOptions,\n paramsCasing,\n client,\n resolver: userResolver,\n transformer: userTransformer,\n generators: userGenerators = [],\n } = options\n\n const clientName = client?.client ?? 'axios'\n const clientImportPath = client?.importPath ?? (!client?.bundle ? `@kubb/plugin-client/clients/${clientName}` : undefined)\n\n const selectedGenerators =\n options.generators ??\n [\n queryGenerator,\n suspenseQueryGenerator,\n infiniteQueryGenerator,\n suspenseInfiniteQueryGenerator,\n mutationGenerator,\n hookOptionsGenerator,\n customHookOptionsFileGenerator,\n ].filter((generator): generator is NonNullable<typeof generator> => Boolean(generator))\n\n const groupConfig = group\n ? ({\n ...group,\n name: group.name\n ? group.name\n : (ctx: { group: string }) => {\n if (group.type === 'path') {\n return `${ctx.group.split('/')[1]}`\n }\n return `${camelCase(ctx.group)}Controller`\n },\n } satisfies Group)\n : null\n\n return {\n name: pluginReactQueryName,\n options,\n dependencies: [pluginTsName, parser === 'zod' ? pluginZodName : undefined].filter((dependency): dependency is string => Boolean(dependency)),\n hooks: {\n 'kubb:plugin:setup'(ctx) {\n const resolver = userResolver ? { ...resolverReactQuery, ...userResolver } : resolverReactQuery\n\n ctx.setOptions({\n output,\n client: {\n bundle: client?.bundle,\n baseURL: client?.baseURL,\n client: clientName,\n clientType: client?.clientType ?? 'function',\n importPath: clientImportPath,\n dataReturnType: client?.dataReturnType ?? 'data',\n paramsCasing,\n },\n queryKey,\n query:\n query === false\n ? false\n : {\n importPath: '@tanstack/react-query',\n methods: ['get'],\n ...query,\n },\n mutationKey,\n mutation:\n mutation === false\n ? false\n : {\n importPath: '@tanstack/react-query',\n methods: ['post', 'put', 'patch', 'delete'],\n ...mutation,\n },\n infinite: infinite\n ? {\n queryParam: 'id',\n initialPageParam: 0,\n cursorParam: null,\n nextParam: null,\n previousParam: null,\n ...infinite,\n }\n : false,\n suspense,\n customOptions: customOptions ? { name: 'useCustomHookOptions', ...customOptions } : null,\n parser,\n paramsType,\n pathParamsType,\n paramsCasing,\n group: groupConfig,\n exclude,\n include,\n override,\n resolver,\n })\n ctx.setResolver(resolver)\n if (userTransformer) {\n ctx.setTransformer(userTransformer)\n }\n\n for (const gen of selectedGenerators) {\n ctx.addGenerator(gen)\n }\n for (const gen of userGenerators) {\n ctx.addGenerator(gen)\n }\n\n const root = path.resolve(ctx.config.root, ctx.config.output.path)\n const hasClientPlugin = !!ctx.config.plugins?.some((p) => (p as { name?: string }).name === pluginClientName)\n\n if (client?.bundle && !hasClientPlugin && !clientImportPath) {\n ctx.injectFile({\n baseName: 'client.ts',\n path: path.resolve(root, '.kubb/client.ts'),\n sources: [\n ast.createSource({\n name: 'client',\n nodes: [ast.createText(clientName === 'fetch' ? fetchClientSource : axiosClientSource)],\n isExportable: true,\n isIndexable: true,\n }),\n ],\n })\n }\n\n if (!hasClientPlugin) {\n ctx.injectFile({\n baseName: 'config.ts',\n path: path.resolve(root, '.kubb/config.ts'),\n sources: [\n ast.createSource({\n name: 'config',\n nodes: [ast.createText(configSource)],\n isExportable: false,\n isIndexable: false,\n }),\n ],\n })\n }\n },\n },\n }\n})\n\nexport default pluginReactQuery\n"],"mappings":"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"}