@@ -39,7 +39,10 @@ export const createUseQuery = (
39
39
}
40
40
41
41
const customHookName = `use${ className } ${ capitalizeFirstLetter ( methodName ) } ` ;
42
- const queryKey = `${ customHookName } Key`
42
+ const queryKey = `${ customHookName } Key` ;
43
+
44
+ const queryKeyGenericType = ts . factory . createTypeReferenceNode ( 'TQueryKey' , undefined ) ;
45
+ const queryKeyConstraint = ts . factory . createTypeReferenceNode ( 'Array' , [ ts . factory . createKeywordTypeNode ( ts . SyntaxKind . UnknownKeyword ) ] ) ;
43
46
44
47
return [
45
48
ts . factory . createVariableStatement (
@@ -66,19 +69,22 @@ export const createUseQuery = (
66
69
undefined ,
67
70
ts . factory . createArrowFunction (
68
71
undefined ,
69
- undefined ,
72
+ ts . factory . createNodeArray ( [
73
+ ts . factory . createTypeParameterDeclaration (
74
+ undefined ,
75
+ 'TQueryKey' ,
76
+ queryKeyConstraint ,
77
+ ts . factory . createArrayTypeNode ( ts . factory . createKeywordTypeNode ( ts . SyntaxKind . UnknownKeyword ) ) ,
78
+ ) ,
79
+ ] ) ,
70
80
[
71
81
...requestParam ,
72
82
ts . factory . createParameterDeclaration (
73
83
undefined ,
74
84
undefined ,
75
85
ts . factory . createIdentifier ( "queryKey" ) ,
76
- undefined ,
77
- ts . factory . createArrayTypeNode ( ts . factory . createKeywordTypeNode ( ts . SyntaxKind . StringKeyword ) ) ,
78
- ts . factory . createArrayLiteralExpression (
79
- [ ] ,
80
- false
81
- )
86
+ ts . factory . createToken ( ts . SyntaxKind . QuestionToken ) ,
87
+ queryKeyGenericType ,
82
88
) ,
83
89
ts . factory . createParameterDeclaration (
84
90
undefined ,
@@ -130,7 +136,7 @@ export const createUseQuery = (
130
136
) ,
131
137
ts . factory . createArrayTypeNode (
132
138
ts . factory . createKeywordTypeNode (
133
- ts . SyntaxKind . StringKeyword
139
+ ts . SyntaxKind . UnknownKeyword ,
134
140
)
135
141
) ,
136
142
]
@@ -159,7 +165,19 @@ export const createUseQuery = (
159
165
ts . factory . createArrayLiteralExpression (
160
166
[
161
167
ts . factory . createIdentifier ( queryKey ) ,
162
- ts . factory . createSpreadElement ( ts . factory . createIdentifier ( "queryKey" ) )
168
+ ts . factory . createSpreadElement ( ts . factory . createParenthesizedExpression ( ts . factory . createBinaryExpression (
169
+ ts . factory . createIdentifier ( "queryKey" ) ,
170
+ ts . factory . createToken ( ts . SyntaxKind . QuestionQuestionToken ) ,
171
+ method . parameters . length ? ts . factory . createArrayLiteralExpression ( [
172
+ ts . factory . createObjectLiteralExpression (
173
+ method . parameters . map ( ( param ) =>
174
+ ts . factory . createShorthandPropertyAssignment (
175
+ ts . factory . createIdentifier ( param . name . getText ( node ) ) ,
176
+ ) ,
177
+ ) ,
178
+ ) ,
179
+ ] ) : ts . factory . createArrayLiteralExpression ( [ ] ) ,
180
+ ) ) ) ,
163
181
] ,
164
182
false
165
183
) ,
0 commit comments