@kubb/plugin-vue-query 5.0.0-alpha.9 → 5.0.0-beta.4

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 (47) hide show
  1. package/LICENSE +17 -10
  2. package/README.md +1 -3
  3. package/dist/components-D1UhYFgY.js +1277 -0
  4. package/dist/components-D1UhYFgY.js.map +1 -0
  5. package/dist/components-qfOFRSoM.cjs +1367 -0
  6. package/dist/components-qfOFRSoM.cjs.map +1 -0
  7. package/dist/components.cjs +1 -1
  8. package/dist/components.d.ts +118 -109
  9. package/dist/components.js +1 -1
  10. package/dist/generators-C4gs_P1i.cjs +726 -0
  11. package/dist/generators-C4gs_P1i.cjs.map +1 -0
  12. package/dist/generators-CbnIVBgY.js +709 -0
  13. package/dist/generators-CbnIVBgY.js.map +1 -0
  14. package/dist/generators.cjs +1 -1
  15. package/dist/generators.d.ts +5 -501
  16. package/dist/generators.js +1 -1
  17. package/dist/index.cjs +106 -121
  18. package/dist/index.cjs.map +1 -1
  19. package/dist/index.d.ts +4 -4
  20. package/dist/index.js +102 -121
  21. package/dist/index.js.map +1 -1
  22. package/dist/types-nVDTfuS1.d.ts +194 -0
  23. package/extension.yaml +793 -0
  24. package/package.json +61 -64
  25. package/src/components/InfiniteQuery.tsx +104 -153
  26. package/src/components/InfiniteQueryOptions.tsx +122 -162
  27. package/src/components/Mutation.tsx +110 -136
  28. package/src/components/Query.tsx +102 -151
  29. package/src/components/QueryKey.tsx +68 -58
  30. package/src/components/QueryOptions.tsx +147 -139
  31. package/src/generators/infiniteQueryGenerator.tsx +165 -170
  32. package/src/generators/mutationGenerator.tsx +117 -124
  33. package/src/generators/queryGenerator.tsx +138 -136
  34. package/src/index.ts +1 -1
  35. package/src/plugin.ts +124 -175
  36. package/src/resolvers/resolverVueQuery.ts +19 -0
  37. package/src/types.ts +68 -48
  38. package/src/utils.ts +37 -0
  39. package/dist/components-Yjoe78Y7.cjs +0 -1119
  40. package/dist/components-Yjoe78Y7.cjs.map +0 -1
  41. package/dist/components-_AMBl0g-.js +0 -1029
  42. package/dist/components-_AMBl0g-.js.map +0 -1
  43. package/dist/generators-CR34GjVu.js +0 -661
  44. package/dist/generators-CR34GjVu.js.map +0 -1
  45. package/dist/generators-DH8VkK1q.cjs +0 -678
  46. package/dist/generators-DH8VkK1q.cjs.map +0 -1
  47. package/dist/types-CgDFUvfZ.d.ts +0 -211
@@ -1,139 +1,107 @@
1
- import { getDefaultValue, isOptional, type Operation } from '@kubb/oas'
2
- import type { OperationSchemas } from '@kubb/plugin-oas'
3
- import { getComments, getPathParams } from '@kubb/plugin-oas/utils'
4
- import { File, Function, FunctionParams } from '@kubb/react-fabric'
5
- import type { FabricReactNode } from '@kubb/react-fabric/types'
1
+ import { ast } from '@kubb/core'
2
+ import type { ResolverTs } from '@kubb/plugin-ts'
3
+ import { functionPrinter } from '@kubb/plugin-ts'
4
+ import { File, Function } from '@kubb/renderer-jsx'
5
+ import type { KubbReactNode } from '@kubb/renderer-jsx/types'
6
6
  import type { PluginVueQuery } from '../types.ts'
7
+ import { getComments, resolveErrorNames } from '../utils.ts'
7
8
  import { QueryKey } from './QueryKey.tsx'
8
- import { QueryOptions } from './QueryOptions.tsx'
9
+ import { getQueryOptionsParams } from './QueryOptions.tsx'
9
10
 
10
11
  type Props = {
11
- /**
12
- * Name of the function
13
- */
14
12
  name: string
15
13
  queryOptionsName: string
16
14
  queryKeyName: string
17
15
  queryKeyTypeName: string
18
- typeSchemas: OperationSchemas
19
- operation: Operation
16
+ node: ast.OperationNode
17
+ tsResolver: ResolverTs
20
18
  paramsCasing: PluginVueQuery['resolvedOptions']['paramsCasing']
21
19
  paramsType: PluginVueQuery['resolvedOptions']['paramsType']
22
20
  pathParamsType: PluginVueQuery['resolvedOptions']['pathParamsType']
23
21
  dataReturnType: PluginVueQuery['resolvedOptions']['client']['dataReturnType']
24
22
  }
25
23
 
26
- type GetParamsProps = {
27
- paramsCasing: PluginVueQuery['resolvedOptions']['paramsCasing']
28
- paramsType: PluginVueQuery['resolvedOptions']['paramsType']
29
- pathParamsType: PluginVueQuery['resolvedOptions']['pathParamsType']
30
- dataReturnType: PluginVueQuery['resolvedOptions']['client']['dataReturnType']
31
- typeSchemas: OperationSchemas
32
- }
24
+ const declarationPrinter = functionPrinter({ mode: 'declaration' })
25
+ const callPrinter = functionPrinter({ mode: 'call' })
33
26
 
34
- function getParams({ paramsCasing, paramsType, pathParamsType, dataReturnType, typeSchemas }: GetParamsProps) {
35
- const TData = dataReturnType === 'data' ? typeSchemas.response.name : `ResponseConfig<${typeSchemas.response.name}>`
36
- const TError = `ResponseErrorConfig<${typeSchemas.errors?.map((item) => item.name).join(' | ') || 'Error'}>`
37
-
38
- if (paramsType === 'object') {
39
- const pathParams = getPathParams(typeSchemas.pathParams, {
40
- typed: true,
41
- casing: paramsCasing,
42
- override(item) {
43
- return {
44
- ...item,
45
- type: `MaybeRefOrGetter<${item.type}>`,
46
- }
47
- },
48
- })
49
- const children = {
50
- ...pathParams,
51
- data: typeSchemas.request?.name
52
- ? {
53
- type: `MaybeRefOrGetter<${typeSchemas.request?.name}>`,
54
- optional: isOptional(typeSchemas.request?.schema),
55
- }
56
- : undefined,
57
- params: typeSchemas.queryParams?.name
58
- ? {
59
- type: `MaybeRefOrGetter<${typeSchemas.queryParams?.name}>`,
60
- optional: isOptional(typeSchemas.queryParams?.schema),
61
- }
62
- : undefined,
63
- headers: typeSchemas.headerParams?.name
64
- ? {
65
- type: `MaybeRefOrGetter<${typeSchemas.headerParams?.name}>`,
66
- optional: isOptional(typeSchemas.headerParams?.schema),
67
- }
68
- : undefined,
69
- }
27
+ function getParams(
28
+ node: ast.OperationNode,
29
+ options: {
30
+ paramsType: PluginVueQuery['resolvedOptions']['paramsType']
31
+ paramsCasing: PluginVueQuery['resolvedOptions']['paramsCasing']
32
+ pathParamsType: PluginVueQuery['resolvedOptions']['pathParamsType']
33
+ dataReturnType: PluginVueQuery['resolvedOptions']['client']['dataReturnType']
34
+ resolver: ResolverTs
35
+ },
36
+ ): ast.FunctionParametersNode {
37
+ const { paramsType, paramsCasing, pathParamsType, dataReturnType, resolver } = options
38
+ const responseName = resolver.resolveResponseName(node)
39
+ const requestName = node.requestBody?.content?.[0]?.schema ? resolver.resolveDataName(node) : undefined
40
+ const errorNames = resolveErrorNames(node, resolver)
70
41
 
71
- // Check if all children are optional or undefined
72
- const allChildrenAreOptional = Object.values(children).every((child) => !child || child.optional)
73
-
74
- return FunctionParams.factory({
75
- data: {
76
- mode: 'object',
77
- children,
78
- default: allChildrenAreOptional ? '{}' : undefined,
79
- },
80
- options: {
81
- type: `
82
- {
83
- query?: Partial<UseQueryOptions<${[TData, TError, 'TData', 'TQueryData', 'TQueryKey'].join(', ')}>> & { client?: QueryClient },
84
- client?: ${typeSchemas.request?.name ? `Partial<RequestConfig<${typeSchemas.request?.name}>> & { client?: Client }` : 'Partial<RequestConfig> & { client?: Client }'}
85
- }
86
- `,
87
- default: '{}',
88
- },
89
- })
90
- }
42
+ const TData = dataReturnType === 'data' ? responseName : `ResponseConfig<${responseName}>`
43
+ const TError = `ResponseErrorConfig<${errorNames.length > 0 ? errorNames.join(' | ') : 'Error'}>`
91
44
 
92
- return FunctionParams.factory({
93
- pathParams: typeSchemas.pathParams?.name
94
- ? {
95
- mode: pathParamsType === 'object' ? 'object' : 'inlineSpread',
96
- children: getPathParams(typeSchemas.pathParams, {
97
- typed: true,
98
- casing: paramsCasing,
99
- override(item) {
100
- return {
101
- ...item,
102
- type: `MaybeRefOrGetter<${item.type}>`,
103
- }
104
- },
105
- }),
106
- default: getDefaultValue(typeSchemas.pathParams?.schema),
107
- }
108
- : undefined,
109
- data: typeSchemas.request?.name
110
- ? {
111
- type: `MaybeRefOrGetter<${typeSchemas.request?.name}>`,
112
- optional: isOptional(typeSchemas.request?.schema),
113
- }
114
- : undefined,
115
- params: typeSchemas.queryParams?.name
116
- ? {
117
- type: `MaybeRefOrGetter<${typeSchemas.queryParams?.name}>`,
118
- optional: isOptional(typeSchemas.queryParams?.schema),
119
- }
120
- : undefined,
121
- headers: typeSchemas.headerParams?.name
122
- ? {
123
- type: `MaybeRefOrGetter<${typeSchemas.headerParams?.name}>`,
124
- optional: isOptional(typeSchemas.headerParams?.schema),
125
- }
126
- : undefined,
127
- options: {
128
- type: `
129
- {
45
+ const optionsParam = ast.createFunctionParameter({
46
+ name: 'options',
47
+ type: ast.createParamsType({
48
+ variant: 'reference',
49
+ name: `{
130
50
  query?: Partial<UseQueryOptions<${[TData, TError, 'TData', 'TQueryData', 'TQueryKey'].join(', ')}>> & { client?: QueryClient },
131
- client?: ${typeSchemas.request?.name ? `Partial<RequestConfig<${typeSchemas.request?.name}>> & { client?: Client }` : 'Partial<RequestConfig> & { client?: Client }'}
51
+ client?: ${requestName ? `Partial<RequestConfig<${requestName}>> & { client?: Client }` : 'Partial<RequestConfig> & { client?: Client }'}
52
+ }`,
53
+ }),
54
+ default: '{}',
55
+ })
56
+
57
+ // Vue-query wraps operation params with MaybeRefOrGetter
58
+ const baseParams = ast.createOperationParams(node, {
59
+ paramsType,
60
+ pathParamsType: paramsType === 'object' ? 'object' : pathParamsType === 'object' ? 'object' : 'inline',
61
+ paramsCasing,
62
+ resolver,
63
+ extraParams: [optionsParam],
64
+ })
65
+
66
+ return wrapOperationParamsWithMaybeRef(baseParams)
132
67
  }
133
- `,
134
- default: '{}',
135
- },
68
+
69
+ function wrapOperationParamsWithMaybeRef(paramsNode: ast.FunctionParametersNode): ast.FunctionParametersNode {
70
+ const wrappedParams = paramsNode.params.map((param) => {
71
+ if ('kind' in param && (param as ast.ParameterGroupNode).kind === 'ParameterGroup') {
72
+ const group = param as ast.ParameterGroupNode
73
+ return {
74
+ ...group,
75
+ properties: group.properties.map((p) => ({
76
+ ...p,
77
+ type: p.type ? ast.createParamsType({ variant: 'reference', name: `MaybeRefOrGetter<${printType(p.type)}>` }) : p.type,
78
+ })),
79
+ }
80
+ }
81
+ const fp = param as ast.FunctionParameterNode
82
+ // Don't wrap 'options' param — it's not a reactive value
83
+ if (fp.name === 'options') return fp
84
+ return {
85
+ ...fp,
86
+ type: fp.type ? ast.createParamsType({ variant: 'reference', name: `MaybeRefOrGetter<${printType(fp.type)}>` }) : fp.type,
87
+ }
136
88
  })
89
+ return ast.createFunctionParameters({ params: wrappedParams })
90
+ }
91
+
92
+ function printType(typeNode: ast.ParamsTypeNode | undefined): string {
93
+ if (!typeNode) return 'unknown'
94
+ if (typeNode.variant === 'reference') return typeNode.name
95
+ if (typeNode.variant === 'member') return `${typeNode.base}['${typeNode.key}']`
96
+ if (typeNode.variant === 'struct') {
97
+ const parts = typeNode.properties.map((p) => {
98
+ const typeStr = printType(p.type)
99
+ const key = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(p.name) ? p.name : JSON.stringify(p.name)
100
+ return p.optional ? `${key}?: ${typeStr}` : `${key}: ${typeStr}`
101
+ })
102
+ return `{ ${parts.join('; ')} }`
103
+ }
104
+ return 'unknown'
137
105
  }
138
106
 
139
107
  export function Query({
@@ -145,53 +113,36 @@ export function Query({
145
113
  paramsCasing,
146
114
  pathParamsType,
147
115
  dataReturnType,
148
- typeSchemas,
149
- operation,
150
- }: Props): FabricReactNode {
151
- const TData = dataReturnType === 'data' ? typeSchemas.response.name : `ResponseConfig<${typeSchemas.response.name}>`
152
- const TError = `ResponseErrorConfig<${typeSchemas.errors?.map((item) => item.name).join(' | ') || 'Error'}>`
116
+ node,
117
+ tsResolver,
118
+ }: Props): KubbReactNode {
119
+ const responseName = tsResolver.resolveResponseName(node)
120
+ const errorNames = resolveErrorNames(node, tsResolver)
121
+
122
+ const TData = dataReturnType === 'data' ? responseName : `ResponseConfig<${responseName}>`
123
+ const TError = `ResponseErrorConfig<${errorNames.length > 0 ? errorNames.join(' | ') : 'Error'}>`
153
124
  const returnType = `UseQueryReturnType<${['TData', TError].join(', ')}> & { queryKey: TQueryKey }`
154
125
  const generics = [`TData = ${TData}`, `TQueryData = ${TData}`, `TQueryKey extends QueryKey = ${queryKeyTypeName}`]
155
126
 
156
- const queryKeyParams = QueryKey.getParams({
157
- pathParamsType,
158
- typeSchemas,
159
- paramsCasing,
160
- })
161
- const queryOptionsParams = QueryOptions.getParams({
162
- paramsType,
163
- pathParamsType,
164
- typeSchemas,
165
- paramsCasing,
166
- })
167
- const params = getParams({
168
- paramsCasing,
169
- paramsType,
170
- pathParamsType,
171
- dataReturnType,
172
- typeSchemas,
173
- })
127
+ const queryKeyParamsNode = QueryKey.getParams(node, { pathParamsType, paramsCasing, resolver: tsResolver })
128
+ const queryKeyParamsCall = callPrinter.print(queryKeyParamsNode) ?? ''
129
+
130
+ const queryOptionsParamsNode = getQueryOptionsParams(node, { paramsType, paramsCasing, pathParamsType, resolver: tsResolver })
131
+ const queryOptionsParamsCall = callPrinter.print(queryOptionsParamsNode) ?? ''
174
132
 
175
- const queryOptions = `${queryOptionsName}(${queryOptionsParams.toCall()})`
133
+ const paramsNode = getParams(node, { paramsType, paramsCasing, pathParamsType, dataReturnType, resolver: tsResolver })
134
+ const paramsSignature = declarationPrinter.print(paramsNode) ?? ''
176
135
 
177
136
  return (
178
137
  <File.Source name={name} isExportable isIndexable>
179
- <Function
180
- name={name}
181
- export
182
- generics={generics.join(', ')}
183
- params={params.toConstructor()}
184
- JSDoc={{
185
- comments: getComments(operation),
186
- }}
187
- >
138
+ <Function name={name} export generics={generics.join(', ')} params={paramsSignature} JSDoc={{ comments: getComments(node) }}>
188
139
  {`
189
140
  const { query: queryConfig = {}, client: config = {} } = options ?? {}
190
141
  const { client: queryClient, ...resolvedOptions } = queryConfig
191
- const queryKey = (resolvedOptions && 'queryKey' in resolvedOptions ? toValue(resolvedOptions.queryKey) : undefined) ?? ${queryKeyName}(${queryKeyParams.toCall()})
142
+ const queryKey = (resolvedOptions && 'queryKey' in resolvedOptions ? toValue(resolvedOptions.queryKey) : undefined) ?? ${queryKeyName}(${queryKeyParamsCall})
192
143
 
193
144
  const query = useQuery({
194
- ...${queryOptions},
145
+ ...${queryOptionsName}(${queryOptionsParamsCall}),
195
146
  ...resolvedOptions,
196
147
  queryKey
197
148
  } as unknown as UseQueryOptions<${TData}, ${TError}, TData, ${TData}, TQueryKey>, toValue(queryClient)) as ${returnType}
@@ -1,83 +1,92 @@
1
1
  import { URLPath } from '@internals/utils'
2
- import { isOptional, type Operation } from '@kubb/oas'
3
- import type { OperationSchemas } from '@kubb/plugin-oas'
4
- import { getPathParams } from '@kubb/plugin-oas/utils'
5
- import { File, Function, FunctionParams, Type } from '@kubb/react-fabric'
6
- import type { FabricReactNode } from '@kubb/react-fabric/types'
7
- import type { PluginVueQuery, Transformer } from '../types'
2
+ import { ast } from '@kubb/core'
3
+ import type { ResolverTs } from '@kubb/plugin-ts'
4
+ import { functionPrinter } from '@kubb/plugin-ts'
5
+ import { File, Function, Type } from '@kubb/renderer-jsx'
6
+ import type { KubbReactNode } from '@kubb/renderer-jsx/types'
7
+ import type { Transformer } from '../types.ts'
8
+ import { buildQueryKeyParams } from '../utils.ts'
8
9
 
9
10
  type Props = {
10
11
  name: string
11
12
  typeName: string
12
- typeSchemas: OperationSchemas
13
- operation: Operation
14
- paramsCasing: PluginVueQuery['resolvedOptions']['paramsCasing']
15
- pathParamsType: PluginVueQuery['resolvedOptions']['pathParamsType']
13
+ node: ast.OperationNode
14
+ tsResolver: ResolverTs
15
+ paramsCasing: 'camelcase' | undefined
16
+ pathParamsType: 'object' | 'inline'
16
17
  transformer: Transformer | undefined
17
18
  }
18
19
 
19
- type GetParamsProps = {
20
- paramsCasing: PluginVueQuery['resolvedOptions']['paramsCasing']
21
- pathParamsType: PluginVueQuery['resolvedOptions']['pathParamsType']
22
- typeSchemas: OperationSchemas
23
- }
20
+ const declarationPrinter = functionPrinter({ mode: 'declaration' })
21
+ const callPrinter = functionPrinter({ mode: 'call' })
24
22
 
25
- function getParams({ pathParamsType, paramsCasing, typeSchemas }: GetParamsProps) {
26
- return FunctionParams.factory({
27
- pathParams: {
28
- mode: pathParamsType === 'object' ? 'object' : 'inlineSpread',
29
- children: getPathParams(typeSchemas.pathParams, {
30
- typed: true,
31
- casing: paramsCasing,
32
- override(item) {
33
- return {
34
- ...item,
35
- type: `MaybeRefOrGetter<${item.type}>`,
36
- }
37
- },
38
- }),
39
- },
40
- data: typeSchemas.request?.name
41
- ? {
42
- type: `MaybeRefOrGetter<${typeSchemas.request?.name}>`,
43
- optional: isOptional(typeSchemas.request?.schema),
44
- }
45
- : undefined,
46
- params: typeSchemas.queryParams?.name
47
- ? {
48
- type: `MaybeRefOrGetter<${typeSchemas.queryParams?.name}>`,
49
- optional: isOptional(typeSchemas.queryParams?.schema),
50
- }
51
- : undefined,
23
+ function wrapWithMaybeRefOrGetter(paramsNode: ast.FunctionParametersNode): ast.FunctionParametersNode {
24
+ const wrappedParams = paramsNode.params.map((param) => {
25
+ if ('kind' in param && (param as ast.ParameterGroupNode).kind === 'ParameterGroup') {
26
+ const group = param as ast.ParameterGroupNode
27
+ return {
28
+ ...group,
29
+ properties: group.properties.map((p) => ({
30
+ ...p,
31
+ type: p.type ? ast.createParamsType({ variant: 'reference', name: `MaybeRefOrGetter<${printType(p.type)}>` }) : p.type,
32
+ })),
33
+ }
34
+ }
35
+ const fp = param as ast.FunctionParameterNode
36
+ return {
37
+ ...fp,
38
+ type: fp.type ? ast.createParamsType({ variant: 'reference', name: `MaybeRefOrGetter<${printType(fp.type)}>` }) : fp.type,
39
+ }
52
40
  })
41
+ return ast.createFunctionParameters({ params: wrappedParams })
42
+ }
43
+
44
+ function printType(typeNode: ast.ParamsTypeNode | undefined): string {
45
+ if (!typeNode) return 'unknown'
46
+ if (typeNode.variant === 'reference') return typeNode.name
47
+ if (typeNode.variant === 'member') return `${typeNode.base}['${typeNode.key}']`
48
+ if (typeNode.variant === 'struct') {
49
+ const parts = typeNode.properties.map((p) => {
50
+ const typeStr = printType(p.type)
51
+ const key = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(p.name) ? p.name : JSON.stringify(p.name)
52
+ return p.optional ? `${key}?: ${typeStr}` : `${key}: ${typeStr}`
53
+ })
54
+ return `{ ${parts.join('; ')} }`
55
+ }
56
+ return 'unknown'
57
+ }
58
+
59
+ function getParams(
60
+ node: ast.OperationNode,
61
+ options: { pathParamsType: 'object' | 'inline'; paramsCasing: 'camelcase' | undefined; resolver: ResolverTs },
62
+ ): ast.FunctionParametersNode {
63
+ return wrapWithMaybeRefOrGetter(buildQueryKeyParams(node, options))
53
64
  }
54
65
 
55
- const getTransformer: Transformer = ({ operation, schemas, casing }) => {
56
- const path = new URLPath(operation.path, { casing })
57
- const keys = [
58
- path.toObject({
59
- type: 'path',
60
- stringify: true,
61
- }),
62
- schemas.queryParams?.name ? '...(params ? [params] : [])' : undefined,
63
- schemas.request?.name ? '...(data ? [data] : [])' : undefined,
64
- ].filter(Boolean)
66
+ const getTransformer: Transformer = ({ node, casing }) => {
67
+ const path = new URLPath(node.path, { casing })
68
+ const hasQueryParams = node.parameters.some((p) => p.in === 'query')
69
+ const hasRequestBody = !!node.requestBody?.content?.[0]?.schema
65
70
 
66
- return keys
71
+ return [
72
+ path.toObject({ type: 'path', stringify: true }),
73
+ hasQueryParams ? '...(params ? [params] : [])' : undefined,
74
+ hasRequestBody ? '...(data ? [data] : [])' : undefined,
75
+ ].filter(Boolean) as string[]
67
76
  }
68
77
 
69
- export function QueryKey({ name, typeSchemas, paramsCasing, pathParamsType, operation, typeName, transformer = getTransformer }: Props): FabricReactNode {
70
- const params = getParams({ pathParamsType, typeSchemas, paramsCasing })
78
+ export function QueryKey({ name, node, tsResolver, paramsCasing, pathParamsType, typeName, transformer = getTransformer }: Props): KubbReactNode {
79
+ const paramsNode = getParams(node, { pathParamsType, paramsCasing, resolver: tsResolver })
80
+ const paramsSignature = declarationPrinter.print(paramsNode) ?? ''
71
81
  const keys = transformer({
72
- operation,
73
- schemas: typeSchemas,
82
+ node,
74
83
  casing: paramsCasing,
75
84
  })
76
85
 
77
86
  return (
78
87
  <>
79
88
  <File.Source name={name} isExportable isIndexable>
80
- <Function.Arrow name={name} export params={params.toConstructor()} singleLine>
89
+ <Function.Arrow name={name} export params={paramsSignature} singleLine>
81
90
  {`[${keys.join(', ')}] as const`}
82
91
  </Function.Arrow>
83
92
  </File.Source>
@@ -92,3 +101,4 @@ export function QueryKey({ name, typeSchemas, paramsCasing, pathParamsType, oper
92
101
 
93
102
  QueryKey.getParams = getParams
94
103
  QueryKey.getTransformer = getTransformer
104
+ QueryKey.callPrinter = callPrinter