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

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 +2 -2
  2. package/dist/index.cjs +2521 -59
  3. package/dist/index.cjs.map +1 -1
  4. package/dist/index.d.ts +521 -3
  5. package/dist/index.js +2488 -49
  6. package/dist/index.js.map +1 -1
  7. package/package.json +10 -20
  8. package/dist/components-DL0Cai7l.js +0 -1507
  9. package/dist/components-DL0Cai7l.js.map +0 -1
  10. package/dist/components-yMQOuFmI.cjs +0 -1657
  11. package/dist/components-yMQOuFmI.cjs.map +0 -1
  12. package/dist/components.cjs +0 -13
  13. package/dist/components.d.ts +0 -270
  14. package/dist/components.js +0 -2
  15. package/dist/generators-BG-Vcvfg.js +0 -1307
  16. package/dist/generators-BG-Vcvfg.js.map +0 -1
  17. package/dist/generators-zGKP8yII.cjs +0 -1349
  18. package/dist/generators-zGKP8yII.cjs.map +0 -1
  19. package/dist/generators.cjs +0 -9
  20. package/dist/generators.d.ts +0 -66
  21. package/dist/generators.js +0 -2
  22. package/dist/types-X7D0NSvJ.d.ts +0 -396
  23. package/src/components/InfiniteQuery.tsx +0 -166
  24. package/src/components/InfiniteQueryOptions.tsx +0 -166
  25. package/src/components/Mutation.tsx +0 -122
  26. package/src/components/MutationKey.tsx +0 -1
  27. package/src/components/MutationOptions.tsx +0 -104
  28. package/src/components/Query.tsx +0 -124
  29. package/src/components/QueryKey.tsx +0 -1
  30. package/src/components/QueryOptions.tsx +0 -85
  31. package/src/components/SuspenseInfiniteQuery.tsx +0 -161
  32. package/src/components/SuspenseInfiniteQueryOptions.tsx +0 -162
  33. package/src/components/SuspenseQuery.tsx +0 -119
  34. package/src/components/index.ts +0 -11
  35. package/src/generators/customHookOptionsFileGenerator.tsx +0 -90
  36. package/src/generators/hookOptionsGenerator.tsx +0 -129
  37. package/src/generators/index.ts +0 -7
  38. package/src/generators/infiniteQueryGenerator.tsx +0 -196
  39. package/src/generators/mutationGenerator.tsx +0 -172
  40. package/src/generators/queryGenerator.tsx +0 -181
  41. package/src/generators/suspenseInfiniteQueryGenerator.tsx +0 -205
  42. package/src/generators/suspenseQueryGenerator.tsx +0 -184
  43. package/src/index.ts +0 -2
  44. package/src/plugin.ts +0 -203
  45. package/src/resolvers/resolverReactQuery.ts +0 -118
  46. package/src/types.ts +0 -361
  47. package/src/utils.ts +0 -18
  48. /package/dist/{chunk-C0LytTxp.js → rolldown-runtime-C0LytTxp.js} +0 -0
@@ -1,118 +0,0 @@
1
- import { camelCase, toFilePath } 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 type === 'file' ? toFilePath(name) : camelCase(name)
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,361 +0,0 @@
1
- import type { Transformer } from '@internals/tanstack-query'
2
- import type { ast, Exclude, Generator, Group, Include, Output, OutputOptions, 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
- /**
228
- * Where the generated hooks are written and how they are exported, plus the optional `group`
229
- * strategy. The `group` option organizes `output.mode: 'directory'` output into per-tag or per-path subdirectories.
230
- *
231
- * @default { path: 'hooks', barrel: { type: 'named' } }
232
- */
233
- export type Options = OutputOptions & {
234
- /**
235
- * HTTP client used inside every generated hook. Mirrors a subset of
236
- * `pluginClient` options.
237
- */
238
- client?: ClientImportPath & Pick<PluginClient['options'], 'clientType' | 'dataReturnType' | 'baseURL' | 'bundle' | 'paramsCasing'>
239
- /**
240
- * Skip operations matching at least one entry in the list.
241
- */
242
- exclude?: Array<Exclude>
243
- /**
244
- * Restrict generation to operations matching at least one entry in the list.
245
- */
246
- include?: Array<Include>
247
- /**
248
- * Apply a different options object to operations matching a pattern.
249
- */
250
- override?: Array<Override<ResolvedOptions>>
251
- /**
252
- * Rename parameter properties in the generated hooks.
253
- *
254
- * @note Must match the value of `paramsCasing` on `@kubb/plugin-ts`.
255
- */
256
- paramsCasing?: 'camelcase'
257
- /**
258
- * How operation parameters appear in the generated hook signature.
259
- * - `'inline'` — positional arguments.
260
- * - `'object'` — single destructured object argument.
261
- *
262
- * @default 'inline'
263
- */
264
- paramsType?: 'object' | 'inline'
265
- /**
266
- * How URL path parameters are arranged inside the inline argument list.
267
- *
268
- * @default 'inline'
269
- */
270
- pathParamsType?: PluginClient['options']['pathParamsType']
271
- /**
272
- * Enables `useInfiniteQuery` hooks for cursor- or page-based pagination.
273
- * Pass an object to configure how the cursor is read; pass `false` to skip.
274
- *
275
- * @default false
276
- */
277
- infinite?: Partial<Infinite> | false
278
- /**
279
- * Adds `useSuspenseQuery` hooks alongside the regular `useQuery` ones.
280
- * Pass an empty object (`{}`) to enable. TanStack Query v5+ only.
281
- */
282
- suspense?: Partial<Suspense> | false
283
- /**
284
- * Custom `queryKey` builder. Use to add a version namespace, swap to
285
- * operation IDs, or shape keys to match an existing invalidation strategy.
286
- */
287
- queryKey?: QueryKey
288
- /**
289
- * Configures query hooks. Set to `false` to skip generating hooks entirely
290
- * and emit only `queryOptions(...)` helpers.
291
- */
292
- query?: Partial<Query> | false
293
- /**
294
- * Custom `mutationKey` builder. Useful when you batch invalidations or read
295
- * mutation state via `useMutationState`.
296
- */
297
- mutationKey?: MutationKey
298
- /**
299
- * Configures mutation hooks. Set to `false` to skip mutation generation.
300
- */
301
- mutation?: Partial<Mutation> | false
302
- /**
303
- * Wires every generated hook through a user-supplied function that returns
304
- * extra options (`onSuccess`, `onError`, `select`, ...). Also emits a
305
- * `HookOptions` type so the wrapper stays in sync with generated hooks.
306
- */
307
- customOptions?: CustomOptions
308
- /**
309
- * Validator applied to response bodies before they reach the caller.
310
- * - `'client'` — no validation. Trusts the API.
311
- * - `'zod'` — pipes responses through schemas from `@kubb/plugin-zod`.
312
- */
313
- parser?: PluginClient['options']['parser']
314
- /**
315
- * Override how hook names and file paths are built. Methods you omit fall
316
- * back to the default `resolverReactQuery`.
317
- */
318
- resolver?: Partial<ResolverReactQuery> & ThisType<ResolverReactQuery>
319
- /**
320
- * AST visitor applied to each operation node before printing.
321
- */
322
- transformer?: ast.Visitor
323
- /**
324
- * Custom generators that run alongside the built-in React Query generators.
325
- */
326
- generators?: Array<Generator<PluginReactQuery>>
327
- }
328
-
329
- type ResolvedOptions = {
330
- output: Output
331
- group: Group | null
332
- exclude: NonNullable<Options['exclude']>
333
- include: Options['include']
334
- override: NonNullable<Options['override']>
335
- client: Pick<PluginClient['options'], 'client' | 'clientType' | 'dataReturnType' | 'importPath' | 'baseURL' | 'bundle' | 'paramsCasing'>
336
- parser: NonNullable<Options['parser']>
337
- pathParamsType: NonNullable<Options['pathParamsType']>
338
- paramsCasing: Options['paramsCasing']
339
- paramsType: NonNullable<Options['paramsType']>
340
- /**
341
- * Only used for infinite
342
- */
343
- infinite: NonNullable<Infinite> | false
344
- suspense: Suspense | false
345
- queryKey: QueryKey | null
346
- query: NonNullable<Required<Query>> | false
347
- mutationKey: MutationKey | null
348
- mutation: NonNullable<Required<Mutation>> | false
349
- customOptions: NonNullable<Required<CustomOptions>> | null
350
- resolver: ResolverReactQuery
351
- }
352
-
353
- export type PluginReactQuery = PluginFactoryOptions<'plugin-react-query', Options, ResolvedOptions, ResolverReactQuery>
354
-
355
- declare global {
356
- namespace Kubb {
357
- interface PluginRegistry {
358
- 'plugin-react-query': PluginReactQuery
359
- }
360
- }
361
- }
package/src/utils.ts DELETED
@@ -1,18 +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
- buildStatusUnionType,
14
- getContentTypeInfo,
15
- resolveErrorNames,
16
- resolveStatusCodeNames,
17
- resolveSuccessNames,
18
- } from '@internals/shared'