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

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 (51) hide show
  1. package/dist/{components-DQAYLQW0.cjs → components-B0j2b6y8.cjs} +298 -416
  2. package/dist/components-B0j2b6y8.cjs.map +1 -0
  3. package/dist/{components-IArDg-DO.js → components-Ds-e_nnK.js} +294 -412
  4. package/dist/components-Ds-e_nnK.js.map +1 -0
  5. package/dist/components.cjs +1 -1
  6. package/dist/components.d.ts +1 -1
  7. package/dist/components.js +1 -1
  8. package/dist/{generators-BqGaMUH6.cjs → generators-CU6zfet7.cjs} +149 -229
  9. package/dist/generators-CU6zfet7.cjs.map +1 -0
  10. package/dist/{generators-B86BJkmW.js → generators-nnZhtlrk.js} +151 -231
  11. package/dist/generators-nnZhtlrk.js.map +1 -0
  12. package/dist/generators.cjs +1 -1
  13. package/dist/generators.d.ts +1 -1
  14. package/dist/generators.js +1 -1
  15. package/dist/index.cjs +41 -18
  16. package/dist/index.cjs.map +1 -1
  17. package/dist/index.d.ts +1 -1
  18. package/dist/index.js +42 -19
  19. package/dist/index.js.map +1 -1
  20. package/dist/{types-Dh4HNR9K.d.ts → types-ANQXv7Gr.d.ts} +13 -17
  21. package/package.json +10 -18
  22. package/dist/components-DQAYLQW0.cjs.map +0 -1
  23. package/dist/components-IArDg-DO.js.map +0 -1
  24. package/dist/generators-B86BJkmW.js.map +0 -1
  25. package/dist/generators-BqGaMUH6.cjs.map +0 -1
  26. package/extension.yaml +0 -1484
  27. package/src/components/InfiniteQuery.tsx +0 -167
  28. package/src/components/InfiniteQueryOptions.tsx +0 -169
  29. package/src/components/Mutation.tsx +0 -123
  30. package/src/components/MutationKey.tsx +0 -1
  31. package/src/components/MutationOptions.tsx +0 -104
  32. package/src/components/Query.tsx +0 -125
  33. package/src/components/QueryKey.tsx +0 -1
  34. package/src/components/QueryOptions.tsx +0 -104
  35. package/src/components/SuspenseInfiniteQuery.tsx +0 -162
  36. package/src/components/SuspenseInfiniteQueryOptions.tsx +0 -163
  37. package/src/components/SuspenseQuery.tsx +0 -120
  38. package/src/components/index.ts +0 -11
  39. package/src/generators/customHookOptionsFileGenerator.tsx +0 -90
  40. package/src/generators/hookOptionsGenerator.tsx +0 -129
  41. package/src/generators/index.ts +0 -7
  42. package/src/generators/infiniteQueryGenerator.tsx +0 -200
  43. package/src/generators/mutationGenerator.tsx +0 -173
  44. package/src/generators/queryGenerator.tsx +0 -185
  45. package/src/generators/suspenseInfiniteQueryGenerator.tsx +0 -209
  46. package/src/generators/suspenseQueryGenerator.tsx +0 -188
  47. package/src/index.ts +0 -2
  48. package/src/plugin.ts +0 -203
  49. package/src/resolvers/resolverReactQuery.ts +0 -118
  50. package/src/types.ts +0 -365
  51. package/src/utils.ts +0 -17
package/src/plugin.ts DELETED
@@ -1,203 +0,0 @@
1
- import path from 'node:path'
2
- import { createGroupConfig } from '@internals/shared'
3
- import { ast, definePlugin } from '@kubb/core'
4
- import { pluginClientName } from '@kubb/plugin-client'
5
- import { source as axiosClientSource } from '@kubb/plugin-client/templates/clients/axios.source'
6
- import { source as fetchClientSource } from '@kubb/plugin-client/templates/clients/fetch.source'
7
- import { source as configSource } from '@kubb/plugin-client/templates/config.source'
8
- import { pluginTsName } from '@kubb/plugin-ts'
9
- import { pluginZodName } from '@kubb/plugin-zod'
10
- import { mutationKeyTransformer, queryKeyTransformer } from '@internals/tanstack-query'
11
- import {
12
- customHookOptionsFileGenerator,
13
- hookOptionsGenerator,
14
- infiniteQueryGenerator,
15
- mutationGenerator,
16
- queryGenerator,
17
- suspenseInfiniteQueryGenerator,
18
- suspenseQueryGenerator,
19
- } from './generators'
20
- import { resolverReactQuery } from './resolvers/resolverReactQuery.ts'
21
- import type { PluginReactQuery } from './types.ts'
22
-
23
- /**
24
- * Canonical plugin name for `@kubb/plugin-react-query`. Used for driver lookups
25
- * and cross-plugin dependency references.
26
- */
27
- export const pluginReactQueryName = 'plugin-react-query' satisfies PluginReactQuery['name']
28
-
29
- /**
30
- * Generates one TanStack Query hook per OpenAPI operation for React. Queries
31
- * become `useFooQuery`/`useFooSuspenseQuery`/`useFooInfiniteQuery`; mutations
32
- * become `useFooMutation`. Each hook is fully typed: query keys, input
33
- * variables, response data, and error shape all come from the spec.
34
- *
35
- * @example
36
- * ```ts
37
- * import { defineConfig } from 'kubb'
38
- * import { pluginTs } from '@kubb/plugin-ts'
39
- * import { pluginReactQuery } from '@kubb/plugin-react-query'
40
- *
41
- * export default defineConfig({
42
- * input: { path: './petStore.yaml' },
43
- * output: { path: './src/gen' },
44
- * plugins: [
45
- * pluginTs(),
46
- * pluginReactQuery({
47
- * output: { path: './hooks' },
48
- * suspense: {},
49
- * }),
50
- * ],
51
- * })
52
- * ```
53
- */
54
- export const pluginReactQuery = definePlugin<PluginReactQuery>((options) => {
55
- const {
56
- output = { path: 'hooks', barrelType: 'named' },
57
- group,
58
- exclude = [],
59
- include,
60
- override = [],
61
- parser = false,
62
- suspense = {},
63
- infinite = false,
64
- paramsType = 'inline',
65
- pathParamsType = paramsType === 'object' ? 'object' : options.pathParamsType || 'inline',
66
- mutation = {},
67
- query = {},
68
- mutationKey = mutationKeyTransformer,
69
- queryKey = queryKeyTransformer,
70
- customOptions,
71
- paramsCasing,
72
- client,
73
- resolver: userResolver,
74
- transformer: userTransformer,
75
- generators: userGenerators = [],
76
- } = options
77
-
78
- const clientName = client?.client ?? 'axios'
79
- const clientImportPath = client?.importPath ?? (!client?.bundle ? `@kubb/plugin-client/clients/${clientName}` : undefined)
80
-
81
- const selectedGenerators =
82
- options.generators ??
83
- [
84
- queryGenerator,
85
- suspenseQueryGenerator,
86
- infiniteQueryGenerator,
87
- suspenseInfiniteQueryGenerator,
88
- mutationGenerator,
89
- hookOptionsGenerator,
90
- customHookOptionsFileGenerator,
91
- ].filter((generator): generator is NonNullable<typeof generator> => Boolean(generator))
92
-
93
- const groupConfig = createGroupConfig(group, { suffix: 'Controller' })
94
-
95
- return {
96
- name: pluginReactQueryName,
97
- options,
98
- dependencies: [pluginTsName, parser === 'zod' ? pluginZodName : undefined].filter((dependency): dependency is string => Boolean(dependency)),
99
- hooks: {
100
- 'kubb:plugin:setup'(ctx) {
101
- const resolver = userResolver ? { ...resolverReactQuery, ...userResolver } : resolverReactQuery
102
-
103
- ctx.setOptions({
104
- output,
105
- client: {
106
- bundle: client?.bundle,
107
- baseURL: client?.baseURL,
108
- client: clientName,
109
- clientType: client?.clientType ?? 'function',
110
- importPath: clientImportPath,
111
- dataReturnType: client?.dataReturnType ?? 'data',
112
- paramsCasing,
113
- },
114
- queryKey,
115
- query:
116
- query === false
117
- ? false
118
- : {
119
- importPath: '@tanstack/react-query',
120
- methods: ['get'],
121
- ...query,
122
- },
123
- mutationKey,
124
- mutation:
125
- mutation === false
126
- ? false
127
- : {
128
- importPath: '@tanstack/react-query',
129
- methods: ['post', 'put', 'patch', 'delete'],
130
- ...mutation,
131
- },
132
- infinite: infinite
133
- ? {
134
- queryParam: 'id',
135
- initialPageParam: 0,
136
- cursorParam: null,
137
- nextParam: null,
138
- previousParam: null,
139
- ...infinite,
140
- }
141
- : false,
142
- suspense,
143
- customOptions: customOptions ? { name: 'useCustomHookOptions', ...customOptions } : null,
144
- parser,
145
- paramsType,
146
- pathParamsType,
147
- paramsCasing,
148
- group: groupConfig,
149
- exclude,
150
- include,
151
- override,
152
- resolver,
153
- })
154
- ctx.setResolver(resolver)
155
- if (userTransformer) {
156
- ctx.setTransformer(userTransformer)
157
- }
158
-
159
- for (const gen of selectedGenerators) {
160
- ctx.addGenerator(gen)
161
- }
162
- for (const gen of userGenerators) {
163
- ctx.addGenerator(gen)
164
- }
165
-
166
- const root = path.resolve(ctx.config.root, ctx.config.output.path)
167
- const hasClientPlugin = !!ctx.config.plugins?.some((p) => (p as { name?: string }).name === pluginClientName)
168
-
169
- if (client?.bundle && !hasClientPlugin && !clientImportPath) {
170
- ctx.injectFile({
171
- baseName: 'client.ts',
172
- path: path.resolve(root, '.kubb/client.ts'),
173
- sources: [
174
- ast.createSource({
175
- name: 'client',
176
- nodes: [ast.createText(clientName === 'fetch' ? fetchClientSource : axiosClientSource)],
177
- isExportable: true,
178
- isIndexable: true,
179
- }),
180
- ],
181
- })
182
- }
183
-
184
- if (!hasClientPlugin) {
185
- ctx.injectFile({
186
- baseName: 'config.ts',
187
- path: path.resolve(root, '.kubb/config.ts'),
188
- sources: [
189
- ast.createSource({
190
- name: 'config',
191
- nodes: [ast.createText(configSource)],
192
- isExportable: false,
193
- isIndexable: false,
194
- }),
195
- ],
196
- })
197
- }
198
- },
199
- },
200
- }
201
- })
202
-
203
- export default pluginReactQuery
@@ -1,118 +0,0 @@
1
- import { camelCase } from '@internals/utils'
2
- import { defineResolver } from '@kubb/core'
3
- import type { PluginReactQuery } from '../types.ts'
4
-
5
- function capitalize(name: string): string {
6
- return `${name.charAt(0).toUpperCase()}${name.slice(1)}`
7
- }
8
-
9
- /**
10
- * Default resolver used by `@kubb/plugin-react-query`. Decides the names and
11
- * file paths for every generated TanStack Query hook (`useFooQuery`,
12
- * `useFooMutation`, `useFooInfiniteQuery`, ...) and its companion helpers
13
- * (`fooQueryKey`, `fooQueryOptions`).
14
- *
15
- * Functions and files use camelCase; hooks get the `use` prefix; suspense and
16
- * infinite variants are suffixed with `Suspense`/`Infinite`.
17
- *
18
- * @example Resolve hook and helper names
19
- * ```ts
20
- * import { resolverReactQuery } from '@kubb/plugin-react-query'
21
- *
22
- * resolverReactQuery.resolveQueryName(operationNode) // 'useGetPetById'
23
- * resolverReactQuery.resolveMutationName(operationNode) // 'useUpdatePet'
24
- * resolverReactQuery.resolveQueryKeyName(operationNode) // 'getPetByIdQueryKey'
25
- * resolverReactQuery.resolveQueryOptionsName(operationNode) // 'getPetByIdQueryOptions'
26
- * ```
27
- */
28
- export const resolverReactQuery = defineResolver<PluginReactQuery>(() => ({
29
- name: 'default',
30
- pluginName: 'plugin-react-query',
31
- default(name, type) {
32
- return camelCase(name, { isFile: type === 'file' })
33
- },
34
- resolveName(name) {
35
- return this.default(name, 'function')
36
- },
37
- resolvePathName(name, type) {
38
- return this.default(name, type)
39
- },
40
- resolveQueryName(node) {
41
- return `use${capitalize(this.resolveName(node.operationId))}`
42
- },
43
- resolveSuspenseQueryName(node) {
44
- return `use${capitalize(this.resolveName(node.operationId))}Suspense`
45
- },
46
- resolveInfiniteQueryName(node) {
47
- return `use${capitalize(this.resolveName(node.operationId))}Infinite`
48
- },
49
- resolveSuspenseInfiniteQueryName(node) {
50
- return `use${capitalize(this.resolveName(node.operationId))}SuspenseInfinite`
51
- },
52
- resolveMutationName(node) {
53
- return `use${capitalize(this.resolveName(node.operationId))}`
54
- },
55
- resolveQueryOptionsName(node) {
56
- return `${this.resolveName(node.operationId)}QueryOptions`
57
- },
58
- resolveSuspenseQueryOptionsName(node) {
59
- return `${this.resolveName(node.operationId)}SuspenseQueryOptions`
60
- },
61
- resolveInfiniteQueryOptionsName(node) {
62
- return `${this.resolveName(node.operationId)}InfiniteQueryOptions`
63
- },
64
- resolveSuspenseInfiniteQueryOptionsName(node) {
65
- return `${this.resolveName(node.operationId)}SuspenseInfiniteQueryOptions`
66
- },
67
- resolveMutationOptionsName(node) {
68
- return `${this.resolveName(node.operationId)}MutationOptions`
69
- },
70
- resolveQueryKeyName(node) {
71
- return `${this.resolveName(node.operationId)}QueryKey`
72
- },
73
- resolveSuspenseQueryKeyName(node) {
74
- return `${this.resolveName(node.operationId)}SuspenseQueryKey`
75
- },
76
- resolveInfiniteQueryKeyName(node) {
77
- return `${this.resolveName(node.operationId)}InfiniteQueryKey`
78
- },
79
- resolveSuspenseInfiniteQueryKeyName(node) {
80
- return `${this.resolveName(node.operationId)}SuspenseInfiniteQueryKey`
81
- },
82
- resolveMutationKeyName(node) {
83
- return `${this.resolveName(node.operationId)}MutationKey`
84
- },
85
- resolveQueryKeyTypeName(node) {
86
- return `${capitalize(this.resolveName(node.operationId))}QueryKey`
87
- },
88
- resolveSuspenseQueryKeyTypeName(node) {
89
- return `${capitalize(this.resolveName(node.operationId))}SuspenseQueryKey`
90
- },
91
- resolveInfiniteQueryKeyTypeName(node) {
92
- return `${capitalize(this.resolveName(node.operationId))}InfiniteQueryKey`
93
- },
94
- resolveSuspenseInfiniteQueryKeyTypeName(node) {
95
- return `${capitalize(this.resolveName(node.operationId))}SuspenseInfiniteQueryKey`
96
- },
97
- resolveMutationTypeName(node) {
98
- return capitalize(this.resolveName(node.operationId))
99
- },
100
- resolveClientName(node) {
101
- return this.resolveName(node.operationId)
102
- },
103
- resolveSuspenseClientName(node) {
104
- return `${this.resolveName(node.operationId)}Suspense`
105
- },
106
- resolveInfiniteClientName(node) {
107
- return `${this.resolveName(node.operationId)}Infinite`
108
- },
109
- resolveSuspenseInfiniteClientName(node) {
110
- return `${this.resolveName(node.operationId)}SuspenseInfinite`
111
- },
112
- resolveHookOptionsName() {
113
- return 'HookOptions'
114
- },
115
- resolveCustomHookOptionsName() {
116
- return 'getCustomHookOptions'
117
- },
118
- }))
package/src/types.ts DELETED
@@ -1,365 +0,0 @@
1
- import type { Transformer } from '@internals/tanstack-query'
2
- import type { ast, Exclude, Generator, Group, Include, Output, Override, PluginFactoryOptions, Resolver } from '@kubb/core'
3
- import type { ClientImportPath, PluginClient } from '@kubb/plugin-client'
4
-
5
- export type { Transformer } from '@internals/tanstack-query'
6
-
7
- /**
8
- * Resolver for React Query that provides naming methods for hook functions.
9
- */
10
- export type ResolverReactQuery = Resolver & {
11
- /**
12
- * Resolves the base function name for an operation.
13
- *
14
- * @example Resolving base operation names
15
- * `resolver.resolveName('show pet by id') // -> 'showPetById'`
16
- */
17
- resolveName(this: ResolverReactQuery, name: string): string
18
- /**
19
- * Resolves the output file name for a hook module.
20
- */
21
- resolvePathName(this: ResolverReactQuery, name: string, type?: 'file' | 'function' | 'type' | 'const'): string
22
- /**
23
- * Resolves a query hook function name.
24
- */
25
- resolveQueryName(this: ResolverReactQuery, node: ast.OperationNode): string
26
- /**
27
- * Resolves a suspense query hook function name.
28
- */
29
- resolveSuspenseQueryName(this: ResolverReactQuery, node: ast.OperationNode): string
30
- /**
31
- * Resolves an infinite query hook function name.
32
- */
33
- resolveInfiniteQueryName(this: ResolverReactQuery, node: ast.OperationNode): string
34
- /**
35
- * Resolves a suspense infinite query hook function name.
36
- */
37
- resolveSuspenseInfiniteQueryName(this: ResolverReactQuery, node: ast.OperationNode): string
38
- /**
39
- * Resolves a mutation hook function name.
40
- */
41
- resolveMutationName(this: ResolverReactQuery, node: ast.OperationNode): string
42
- /**
43
- * Resolves the query options helper name.
44
- */
45
- resolveQueryOptionsName(this: ResolverReactQuery, node: ast.OperationNode): string
46
- /**
47
- * Resolves the suspense query options helper name.
48
- */
49
- resolveSuspenseQueryOptionsName(this: ResolverReactQuery, node: ast.OperationNode): string
50
- /**
51
- * Resolves the infinite query options helper name.
52
- */
53
- resolveInfiniteQueryOptionsName(this: ResolverReactQuery, node: ast.OperationNode): string
54
- /**
55
- * Resolves the suspense infinite query options helper name.
56
- */
57
- resolveSuspenseInfiniteQueryOptionsName(this: ResolverReactQuery, node: ast.OperationNode): string
58
- /**
59
- * Resolves the mutation options helper name.
60
- */
61
- resolveMutationOptionsName(this: ResolverReactQuery, node: ast.OperationNode): string
62
- /**
63
- * Resolves the query key helper name.
64
- */
65
- resolveQueryKeyName(this: ResolverReactQuery, node: ast.OperationNode): string
66
- /**
67
- * Resolves the suspense query key helper name.
68
- */
69
- resolveSuspenseQueryKeyName(this: ResolverReactQuery, node: ast.OperationNode): string
70
- /**
71
- * Resolves the infinite query key helper name.
72
- */
73
- resolveInfiniteQueryKeyName(this: ResolverReactQuery, node: ast.OperationNode): string
74
- /**
75
- * Resolves the suspense infinite query key helper name.
76
- */
77
- resolveSuspenseInfiniteQueryKeyName(this: ResolverReactQuery, node: ast.OperationNode): string
78
- /**
79
- * Resolves the mutation key helper name.
80
- */
81
- resolveMutationKeyName(this: ResolverReactQuery, node: ast.OperationNode): string
82
- /**
83
- * Resolves the query key type name.
84
- */
85
- resolveQueryKeyTypeName(this: ResolverReactQuery, node: ast.OperationNode): string
86
- /**
87
- * Resolves the suspense query key type name.
88
- */
89
- resolveSuspenseQueryKeyTypeName(this: ResolverReactQuery, node: ast.OperationNode): string
90
- /**
91
- * Resolves the infinite query key type name.
92
- */
93
- resolveInfiniteQueryKeyTypeName(this: ResolverReactQuery, node: ast.OperationNode): string
94
- /**
95
- * Resolves the suspense infinite query key type name.
96
- */
97
- resolveSuspenseInfiniteQueryKeyTypeName(this: ResolverReactQuery, node: ast.OperationNode): string
98
- /**
99
- * Resolves the mutation type name.
100
- */
101
- resolveMutationTypeName(this: ResolverReactQuery, node: ast.OperationNode): string
102
- /**
103
- * Resolves the client function name generated inline by query hooks.
104
- */
105
- resolveClientName(this: ResolverReactQuery, node: ast.OperationNode): string
106
- /**
107
- * Resolves the client function name generated inline by suspense query hooks.
108
- */
109
- resolveSuspenseClientName(this: ResolverReactQuery, node: ast.OperationNode): string
110
- /**
111
- * Resolves the client function name generated inline by infinite query hooks.
112
- */
113
- resolveInfiniteClientName(this: ResolverReactQuery, node: ast.OperationNode): string
114
- /**
115
- * Resolves the client function name generated inline by suspense infinite query hooks.
116
- */
117
- resolveSuspenseInfiniteClientName(this: ResolverReactQuery, node: ast.OperationNode): string
118
- /**
119
- * Resolves the generated custom hook options map type name.
120
- */
121
- resolveHookOptionsName(this: ResolverReactQuery): string
122
- /**
123
- * Resolves the helper function name used inside the custom hook options file.
124
- */
125
- resolveCustomHookOptionsName(this: ResolverReactQuery): string
126
- }
127
-
128
- type Suspense = object
129
-
130
- /**
131
- * Builds the `queryKey` used by each generated query hook.
132
- *
133
- * @note String values are inlined verbatim into generated code. Wrap literal
134
- * strings in `JSON.stringify(...)`.
135
- */
136
- type QueryKey = Transformer
137
-
138
- /**
139
- * Builds the `mutationKey` used by each generated mutation hook.
140
- *
141
- * @note String values are inlined verbatim into generated code. Wrap literal
142
- * strings in `JSON.stringify(...)`.
143
- */
144
- type MutationKey = Transformer
145
-
146
- type Query = {
147
- /**
148
- * HTTP methods treated as queries. Operations using these methods produce
149
- * `useQuery`-style hooks.
150
- *
151
- * @default ['get']
152
- */
153
- methods?: Array<string>
154
- /**
155
- * Module specifier used in the `import { useQuery } from '...'` statement at
156
- * the top of every generated hook file. Useful for routing through a wrapper
157
- * that injects a default `queryClient`.
158
- *
159
- * @default '@tanstack/react-query'
160
- */
161
- importPath?: string
162
- }
163
-
164
- type Mutation = {
165
- /**
166
- * HTTP methods treated as mutations. Operations using these methods produce
167
- * `useMutation`-style hooks.
168
- *
169
- * @default ['post', 'put', 'delete']
170
- */
171
- methods?: Array<string>
172
- /**
173
- * Module specifier used in the `import { useMutation } from '...'` statement
174
- * at the top of every generated hook file.
175
- *
176
- * @default '@tanstack/react-query'
177
- */
178
- importPath?: string
179
- }
180
-
181
- export type Infinite = {
182
- /**
183
- * Name of the query parameter that holds the page cursor.
184
- *
185
- * @default 'id'
186
- */
187
- queryParam?: string
188
- /**
189
- * Path to the cursor field on the response. Leave undefined when the cursor
190
- * is not known.
191
- *
192
- * @deprecated Use `nextParam` and `previousParam` for richer pagination control.
193
- */
194
- cursorParam?: string | null
195
- /**
196
- * Path to the next-page cursor on the response. Supports dot notation
197
- * (`'pagination.next.id'`) or array form (`['pagination', 'next', 'id']`).
198
- */
199
- nextParam?: string | Array<string> | null
200
- /**
201
- * Path to the previous-page cursor on the response. Supports dot notation
202
- * or array form.
203
- */
204
- previousParam?: string | Array<string> | null
205
- /**
206
- * Initial value for `pageParam` on the first fetch.
207
- *
208
- * @default 0
209
- */
210
- initialPageParam?: unknown
211
- }
212
-
213
- type CustomOptions = {
214
- /**
215
- * Module specifier of your custom-options hook. Imported as
216
- * `import ${name} from '${importPath}'`.
217
- */
218
- importPath: string
219
- /**
220
- * Exported function name of your custom-options hook.
221
- *
222
- * @default 'useCustomHookOptions'
223
- */
224
- name?: string
225
- }
226
-
227
- export type Options = {
228
- /**
229
- * Where the generated hooks are written and how they are exported.
230
- *
231
- * @default { path: 'hooks', barrel: { type: 'named' } }
232
- */
233
- output?: Output
234
- /**
235
- * Split generated files into subfolders based on the operation's tag.
236
- */
237
- group?: Group
238
- /**
239
- * HTTP client used inside every generated hook. Mirrors a subset of
240
- * `pluginClient` options.
241
- */
242
- client?: ClientImportPath & Pick<PluginClient['options'], 'clientType' | 'dataReturnType' | 'baseURL' | 'bundle' | 'paramsCasing'>
243
- /**
244
- * Skip operations matching at least one entry in the list.
245
- */
246
- exclude?: Array<Exclude>
247
- /**
248
- * Restrict generation to operations matching at least one entry in the list.
249
- */
250
- include?: Array<Include>
251
- /**
252
- * Apply a different options object to operations matching a pattern.
253
- */
254
- override?: Array<Override<ResolvedOptions>>
255
- /**
256
- * Rename parameter properties in the generated hooks.
257
- *
258
- * @note Must match the value of `paramsCasing` on `@kubb/plugin-ts`.
259
- */
260
- paramsCasing?: 'camelcase'
261
- /**
262
- * How operation parameters appear in the generated hook signature.
263
- * - `'inline'` — positional arguments.
264
- * - `'object'` — single destructured object argument.
265
- *
266
- * @default 'inline'
267
- */
268
- paramsType?: 'object' | 'inline'
269
- /**
270
- * How URL path parameters are arranged inside the inline argument list.
271
- *
272
- * @default 'inline'
273
- */
274
- pathParamsType?: PluginClient['options']['pathParamsType']
275
- /**
276
- * Enables `useInfiniteQuery` hooks for cursor- or page-based pagination.
277
- * Pass an object to configure how the cursor is read; pass `false` to skip.
278
- *
279
- * @default false
280
- */
281
- infinite?: Partial<Infinite> | false
282
- /**
283
- * Adds `useSuspenseQuery` hooks alongside the regular `useQuery` ones.
284
- * Pass an empty object (`{}`) to enable. TanStack Query v5+ only.
285
- */
286
- suspense?: Partial<Suspense> | false
287
- /**
288
- * Custom `queryKey` builder. Use to add a version namespace, swap to
289
- * operation IDs, or shape keys to match an existing invalidation strategy.
290
- */
291
- queryKey?: QueryKey
292
- /**
293
- * Configures query hooks. Set to `false` to skip generating hooks entirely
294
- * and emit only `queryOptions(...)` helpers.
295
- */
296
- query?: Partial<Query> | false
297
- /**
298
- * Custom `mutationKey` builder. Useful when you batch invalidations or read
299
- * mutation state via `useMutationState`.
300
- */
301
- mutationKey?: MutationKey
302
- /**
303
- * Configures mutation hooks. Set to `false` to skip mutation generation.
304
- */
305
- mutation?: Partial<Mutation> | false
306
- /**
307
- * Wires every generated hook through a user-supplied function that returns
308
- * extra options (`onSuccess`, `onError`, `select`, ...). Also emits a
309
- * `HookOptions` type so the wrapper stays in sync with generated hooks.
310
- */
311
- customOptions?: CustomOptions
312
- /**
313
- * Validator applied to response bodies before they reach the caller.
314
- * - `'client'` — no validation. Trusts the API.
315
- * - `'zod'` — pipes responses through schemas from `@kubb/plugin-zod`.
316
- */
317
- parser?: PluginClient['options']['parser']
318
- /**
319
- * Override how hook names and file paths are built. Methods you omit fall
320
- * back to the default `resolverReactQuery`.
321
- */
322
- resolver?: Partial<ResolverReactQuery> & ThisType<ResolverReactQuery>
323
- /**
324
- * AST visitor applied to each operation node before printing.
325
- */
326
- transformer?: ast.Visitor
327
- /**
328
- * Custom generators that run alongside the built-in React Query generators.
329
- */
330
- generators?: Array<Generator<PluginReactQuery>>
331
- }
332
-
333
- type ResolvedOptions = {
334
- output: Output
335
- group: Group | null
336
- exclude: NonNullable<Options['exclude']>
337
- include: Options['include']
338
- override: NonNullable<Options['override']>
339
- client: Pick<PluginClient['options'], 'client' | 'clientType' | 'dataReturnType' | 'importPath' | 'baseURL' | 'bundle' | 'paramsCasing'>
340
- parser: Required<NonNullable<Options['parser']>>
341
- pathParamsType: NonNullable<Options['pathParamsType']>
342
- paramsCasing: Options['paramsCasing']
343
- paramsType: NonNullable<Options['paramsType']>
344
- /**
345
- * Only used for infinite
346
- */
347
- infinite: NonNullable<Infinite> | false
348
- suspense: Suspense | false
349
- queryKey: QueryKey | null
350
- query: NonNullable<Required<Query>> | false
351
- mutationKey: MutationKey | null
352
- mutation: NonNullable<Required<Mutation>> | false
353
- customOptions: NonNullable<Required<CustomOptions>> | null
354
- resolver: ResolverReactQuery
355
- }
356
-
357
- export type PluginReactQuery = PluginFactoryOptions<'plugin-react-query', Options, ResolvedOptions, ResolverReactQuery>
358
-
359
- declare global {
360
- namespace Kubb {
361
- interface PluginRegistry {
362
- 'plugin-react-query': PluginReactQuery
363
- }
364
- }
365
- }
package/src/utils.ts DELETED
@@ -1,17 +0,0 @@
1
- export {
2
- buildGroupParam,
3
- buildQueryKeyParams,
4
- resolveHeaderGroupType,
5
- resolveOperationOverrides,
6
- resolvePathParamType,
7
- resolveQueryGroupType,
8
- resolveZodSchemaNames,
9
- } from '@internals/tanstack-query'
10
- export {
11
- buildOperationComments as getComments,
12
- buildRequestConfigType,
13
- getContentTypeInfo,
14
- resolveErrorNames,
15
- resolveStatusCodeNames,
16
- resolveSuccessNames,
17
- } from '@internals/shared'