Skip to content

Commit 29a5a68

Browse files
pasibaSainteddeee888
authored
fix(urql-graphcache): use Scalars['X']['output'] instead of Scalars['X'] in generated types (#1367)
* fix(urql-graphcache): use Scalars['X']['output'] instead of Scalars['X'] in generated types The constructType() function emits Scalars['TypeName'] for scalar fields, which resolves to { input: T; output: T } instead of just T. This causes type mismatches in GraphCacheUpdaters, GraphCacheOptimisticUpdaters, and GraphCacheResolvers, requiring `as unknown as string` workarounds. Append ['output'] to scalar type references so they resolve to the correct output type, consistent with @graphql-codegen/typescript. * add changeset * fix(urql-graphcache): update dev-test snapshot for Scalars['X']['output'] change * Fix unit test --------- Co-authored-by: Saint <[email protected]> Co-authored-by: Eddy Nguyen <[email protected]>
1 parent 1a24ab9 commit 29a5a68

4 files changed

Lines changed: 67 additions & 50 deletions

File tree

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@graphql-codegen/typescript-urql-graphcache": patch
3+
---
4+
5+
Fix scalar types in generated `GraphCacheUpdaters`, `GraphCacheOptimisticUpdaters`, and `GraphCacheResolvers` to use `Scalars['X']['output']` instead of `Scalars['X']`.

dev-test/githunt/types.urql.tsx

Lines changed: 31 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1100,14 +1100,18 @@ export type GraphCacheResolvers = {
11001100
content?: GraphCacheResolver<
11011101
WithTypename<Comment>,
11021102
Record<string, never>,
1103-
Scalars['String'] | string
1103+
Scalars['String']['output'] | string
11041104
>;
11051105
createdAt?: GraphCacheResolver<
11061106
WithTypename<Comment>,
11071107
Record<string, never>,
1108-
Scalars['Float'] | string
1108+
Scalars['Float']['output'] | string
1109+
>;
1110+
id?: GraphCacheResolver<
1111+
WithTypename<Comment>,
1112+
Record<string, never>,
1113+
Scalars['Int']['output'] | string
11091114
>;
1110-
id?: GraphCacheResolver<WithTypename<Comment>, Record<string, never>, Scalars['Int'] | string>;
11111115
postedBy?: GraphCacheResolver<
11121116
WithTypename<Comment>,
11131117
Record<string, never>,
@@ -1116,14 +1120,14 @@ export type GraphCacheResolvers = {
11161120
repoName?: GraphCacheResolver<
11171121
WithTypename<Comment>,
11181122
Record<string, never>,
1119-
Scalars['String'] | string
1123+
Scalars['String']['output'] | string
11201124
>;
11211125
};
11221126
Entry?: {
11231127
commentCount?: GraphCacheResolver<
11241128
WithTypename<Entry>,
11251129
Record<string, never>,
1126-
Scalars['Int'] | string
1130+
Scalars['Int']['output'] | string
11271131
>;
11281132
comments?: GraphCacheResolver<
11291133
WithTypename<Entry>,
@@ -1133,14 +1137,18 @@ export type GraphCacheResolvers = {
11331137
createdAt?: GraphCacheResolver<
11341138
WithTypename<Entry>,
11351139
Record<string, never>,
1136-
Scalars['Float'] | string
1140+
Scalars['Float']['output'] | string
11371141
>;
11381142
hotScore?: GraphCacheResolver<
11391143
WithTypename<Entry>,
11401144
Record<string, never>,
1141-
Scalars['Float'] | string
1145+
Scalars['Float']['output'] | string
1146+
>;
1147+
id?: GraphCacheResolver<
1148+
WithTypename<Entry>,
1149+
Record<string, never>,
1150+
Scalars['Int']['output'] | string
11421151
>;
1143-
id?: GraphCacheResolver<WithTypename<Entry>, Record<string, never>, Scalars['Int'] | string>;
11441152
postedBy?: GraphCacheResolver<
11451153
WithTypename<Entry>,
11461154
Record<string, never>,
@@ -1151,7 +1159,11 @@ export type GraphCacheResolvers = {
11511159
Record<string, never>,
11521160
WithTypename<Repository> | string
11531161
>;
1154-
score?: GraphCacheResolver<WithTypename<Entry>, Record<string, never>, Scalars['Int'] | string>;
1162+
score?: GraphCacheResolver<
1163+
WithTypename<Entry>,
1164+
Record<string, never>,
1165+
Scalars['Int']['output'] | string
1166+
>;
11551167
vote?: GraphCacheResolver<
11561168
WithTypename<Entry>,
11571169
Record<string, never>,
@@ -1162,27 +1174,27 @@ export type GraphCacheResolvers = {
11621174
description?: GraphCacheResolver<
11631175
WithTypename<Repository>,
11641176
Record<string, never>,
1165-
Scalars['String'] | string
1177+
Scalars['String']['output'] | string
11661178
>;
11671179
full_name?: GraphCacheResolver<
11681180
WithTypename<Repository>,
11691181
Record<string, never>,
1170-
Scalars['String'] | string
1182+
Scalars['String']['output'] | string
11711183
>;
11721184
html_url?: GraphCacheResolver<
11731185
WithTypename<Repository>,
11741186
Record<string, never>,
1175-
Scalars['String'] | string
1187+
Scalars['String']['output'] | string
11761188
>;
11771189
name?: GraphCacheResolver<
11781190
WithTypename<Repository>,
11791191
Record<string, never>,
1180-
Scalars['String'] | string
1192+
Scalars['String']['output'] | string
11811193
>;
11821194
open_issues_count?: GraphCacheResolver<
11831195
WithTypename<Repository>,
11841196
Record<string, never>,
1185-
Scalars['Int'] | string
1197+
Scalars['Int']['output'] | string
11861198
>;
11871199
owner?: GraphCacheResolver<
11881200
WithTypename<Repository>,
@@ -1192,31 +1204,31 @@ export type GraphCacheResolvers = {
11921204
stargazers_count?: GraphCacheResolver<
11931205
WithTypename<Repository>,
11941206
Record<string, never>,
1195-
Scalars['Int'] | string
1207+
Scalars['Int']['output'] | string
11961208
>;
11971209
};
11981210
User?: {
11991211
avatar_url?: GraphCacheResolver<
12001212
WithTypename<User>,
12011213
Record<string, never>,
1202-
Scalars['String'] | string
1214+
Scalars['String']['output'] | string
12031215
>;
12041216
html_url?: GraphCacheResolver<
12051217
WithTypename<User>,
12061218
Record<string, never>,
1207-
Scalars['String'] | string
1219+
Scalars['String']['output'] | string
12081220
>;
12091221
login?: GraphCacheResolver<
12101222
WithTypename<User>,
12111223
Record<string, never>,
1212-
Scalars['String'] | string
1224+
Scalars['String']['output'] | string
12131225
>;
12141226
};
12151227
Vote?: {
12161228
vote_value?: GraphCacheResolver<
12171229
WithTypename<Vote>,
12181230
Record<string, never>,
1219-
Scalars['Int'] | string
1231+
Scalars['Int']['output'] | string
12201232
>;
12211233
};
12221234
};

packages/plugins/typescript/urql-graphcache/src/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,8 @@ function constructType(
8585
const type = schema.getType(typeNode.name);
8686
if (isScalarType(type)) {
8787
return nullable
88-
? `Maybe<Scalars['${type.name}']${allowString ? ' | string' : ''}>`
89-
: `Scalars['${type.name}']${allowString ? ' | string' : ''}`;
88+
? `Maybe<Scalars['${type.name}']['output']${allowString ? ' | string' : ''}>`
89+
: `Scalars['${type.name}']['output']${allowString ? ' | string' : ''}`;
9090
}
9191

9292
const tsTypeName = convertName(typeNode.name, {

packages/plugins/typescript/urql-graphcache/tests/__snapshots__/urql.spec.ts.snap

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ export type GraphCacheResolvers = {
1515
todos?: GraphCacheResolver<WithTypename<Query_Root>, Record<string, never>, Array<WithTypename<Todo> | string>>
1616
},
1717
Todo?: {
18-
id?: GraphCacheResolver<WithTypename<Todo>, Record<string, never>, Scalars['ID'] | string>,
19-
text?: GraphCacheResolver<WithTypename<Todo>, Record<string, never>, Scalars['String'] | string>,
20-
complete?: GraphCacheResolver<WithTypename<Todo>, Record<string, never>, Scalars['Boolean'] | string>
18+
id?: GraphCacheResolver<WithTypename<Todo>, Record<string, never>, Scalars['ID']['output'] | string>,
19+
text?: GraphCacheResolver<WithTypename<Todo>, Record<string, never>, Scalars['String']['output'] | string>,
20+
complete?: GraphCacheResolver<WithTypename<Todo>, Record<string, never>, Scalars['Boolean']['output'] | string>
2121
}
2222
};
2323
@@ -63,9 +63,9 @@ export type GraphCacheResolvers = {
6363
todos?: GraphCacheResolver<WithTypename<Query_Root>, Record<string, never>, Array<WithTypename<Todo> | string>>
6464
},
6565
Todo?: {
66-
id?: GraphCacheResolver<WithTypename<Todo>, Record<string, never>, Scalars['ID'] | string>,
67-
text?: GraphCacheResolver<WithTypename<Todo>, Record<string, never>, Scalars['String'] | string>,
68-
complete?: GraphCacheResolver<WithTypename<Todo>, Record<string, never>, Scalars['Boolean'] | string>
66+
id?: GraphCacheResolver<WithTypename<Todo>, Record<string, never>, Scalars['ID']['output'] | string>,
67+
text?: GraphCacheResolver<WithTypename<Todo>, Record<string, never>, Scalars['String']['output'] | string>,
68+
complete?: GraphCacheResolver<WithTypename<Todo>, Record<string, never>, Scalars['Boolean']['output'] | string>
6969
}
7070
};
7171
@@ -109,20 +109,20 @@ export type GraphCacheResolvers = {
109109
schoolBooks?: GraphCacheResolver<WithTypename<Query>, Record<string, never>, Array<WithTypename<Textbook> | string>>
110110
},
111111
Author?: {
112-
id?: GraphCacheResolver<WithTypename<Author>, Record<string, never>, Scalars['ID'] | string>,
113-
name?: GraphCacheResolver<WithTypename<Author>, Record<string, never>, Scalars['String'] | string>,
112+
id?: GraphCacheResolver<WithTypename<Author>, Record<string, never>, Scalars['ID']['output'] | string>,
113+
name?: GraphCacheResolver<WithTypename<Author>, Record<string, never>, Scalars['String']['output'] | string>,
114114
friends?: GraphCacheResolver<WithTypename<Author>, Record<string, never>, Array<WithTypename<Author> | string>>,
115115
friendsPaginated?: GraphCacheResolver<WithTypename<Author>, AuthorFriendsPaginatedArgs, Array<WithTypename<Author> | string>>
116116
},
117117
Todo?: {
118-
id?: GraphCacheResolver<WithTypename<Todo>, Record<string, never>, Scalars['ID'] | string>,
119-
text?: GraphCacheResolver<WithTypename<Todo>, Record<string, never>, Scalars['String'] | string>,
120-
complete?: GraphCacheResolver<WithTypename<Todo>, Record<string, never>, Scalars['Boolean'] | string>,
118+
id?: GraphCacheResolver<WithTypename<Todo>, Record<string, never>, Scalars['ID']['output'] | string>,
119+
text?: GraphCacheResolver<WithTypename<Todo>, Record<string, never>, Scalars['String']['output'] | string>,
120+
complete?: GraphCacheResolver<WithTypename<Todo>, Record<string, never>, Scalars['Boolean']['output'] | string>,
121121
author?: GraphCacheResolver<WithTypename<Todo>, Record<string, never>, WithTypename<Author> | string>
122122
},
123123
Textbook?: {
124-
id?: GraphCacheResolver<WithTypename<Textbook>, Record<string, never>, Scalars['ID'] | string>,
125-
title?: GraphCacheResolver<WithTypename<Textbook>, Record<string, never>, Scalars['String'] | string>,
124+
id?: GraphCacheResolver<WithTypename<Textbook>, Record<string, never>, Scalars['ID']['output'] | string>,
125+
title?: GraphCacheResolver<WithTypename<Textbook>, Record<string, never>, Scalars['String']['output'] | string>,
126126
author?: GraphCacheResolver<WithTypename<Textbook>, Record<string, never>, WithTypename<Author> | string>,
127127
todo?: GraphCacheResolver<WithTypename<Textbook>, Record<string, never>, WithTypename<Todo> | string>
128128
}
@@ -180,15 +180,15 @@ export type GraphCacheResolvers = {
180180
todos?: GraphCacheResolver<WithTypename<PrefixQuerySuffix>, Record<string, never>, Array<WithTypename<PrefixTodoSuffix> | string>>
181181
},
182182
Author?: {
183-
id?: GraphCacheResolver<WithTypename<PrefixAuthorSuffix>, Record<string, never>, Scalars['ID'] | string>,
184-
name?: GraphCacheResolver<WithTypename<PrefixAuthorSuffix>, Record<string, never>, Scalars['String'] | string>,
183+
id?: GraphCacheResolver<WithTypename<PrefixAuthorSuffix>, Record<string, never>, Scalars['ID']['output'] | string>,
184+
name?: GraphCacheResolver<WithTypename<PrefixAuthorSuffix>, Record<string, never>, Scalars['String']['output'] | string>,
185185
friends?: GraphCacheResolver<WithTypename<PrefixAuthorSuffix>, Record<string, never>, Array<WithTypename<PrefixAuthorSuffix> | string>>,
186186
friendsPaginated?: GraphCacheResolver<WithTypename<PrefixAuthorSuffix>, PrefixAuthorFriendsPaginatedArgsSuffix, Array<WithTypename<PrefixAuthorSuffix> | string>>
187187
},
188188
Todo?: {
189-
id?: GraphCacheResolver<WithTypename<PrefixTodoSuffix>, Record<string, never>, Scalars['ID'] | string>,
190-
text?: GraphCacheResolver<WithTypename<PrefixTodoSuffix>, Record<string, never>, Scalars['String'] | string>,
191-
complete?: GraphCacheResolver<WithTypename<PrefixTodoSuffix>, Record<string, never>, Scalars['Boolean'] | string>,
189+
id?: GraphCacheResolver<WithTypename<PrefixTodoSuffix>, Record<string, never>, Scalars['ID']['output'] | string>,
190+
text?: GraphCacheResolver<WithTypename<PrefixTodoSuffix>, Record<string, never>, Scalars['String']['output'] | string>,
191+
complete?: GraphCacheResolver<WithTypename<PrefixTodoSuffix>, Record<string, never>, Scalars['Boolean']['output'] | string>,
192192
author?: GraphCacheResolver<WithTypename<PrefixTodoSuffix>, Record<string, never>, WithTypename<PrefixAuthorSuffix> | string>
193193
}
194194
};
@@ -251,14 +251,14 @@ export type GraphCacheResolvers = {
251251
media?: GraphCacheResolver<WithTypename<Query>, Record<string, never>, Array<WithTypename<Media> | string>>
252252
},
253253
Book?: {
254-
id?: GraphCacheResolver<WithTypename<Book>, Record<string, never>, Scalars['ID'] | string>,
255-
title?: GraphCacheResolver<WithTypename<Book>, Record<string, never>, Scalars['String'] | string>,
256-
pages?: GraphCacheResolver<WithTypename<Book>, Record<string, never>, Scalars['Int'] | string>
254+
id?: GraphCacheResolver<WithTypename<Book>, Record<string, never>, Scalars['ID']['output'] | string>,
255+
title?: GraphCacheResolver<WithTypename<Book>, Record<string, never>, Scalars['String']['output'] | string>,
256+
pages?: GraphCacheResolver<WithTypename<Book>, Record<string, never>, Scalars['Int']['output'] | string>
257257
},
258258
Movie?: {
259-
id?: GraphCacheResolver<WithTypename<Movie>, Record<string, never>, Scalars['ID'] | string>,
260-
title?: GraphCacheResolver<WithTypename<Movie>, Record<string, never>, Scalars['String'] | string>,
261-
duration?: GraphCacheResolver<WithTypename<Movie>, Record<string, never>, Scalars['Int'] | string>
259+
id?: GraphCacheResolver<WithTypename<Movie>, Record<string, never>, Scalars['ID']['output'] | string>,
260+
title?: GraphCacheResolver<WithTypename<Movie>, Record<string, never>, Scalars['String']['output'] | string>,
261+
duration?: GraphCacheResolver<WithTypename<Movie>, Record<string, never>, Scalars['Int']['output'] | string>
262262
}
263263
};
264264
@@ -310,15 +310,15 @@ export type GraphCacheResolvers = {
310310
todos?: GraphCacheResolver<WithTypename<Query>, Record<string, never>, Array<WithTypename<Todo> | string>>
311311
},
312312
Author?: {
313-
id?: GraphCacheResolver<WithTypename<Author>, Record<string, never>, Scalars['ID'] | string>,
314-
name?: GraphCacheResolver<WithTypename<Author>, Record<string, never>, Scalars['String'] | string>,
313+
id?: GraphCacheResolver<WithTypename<Author>, Record<string, never>, Scalars['ID']['output'] | string>,
314+
name?: GraphCacheResolver<WithTypename<Author>, Record<string, never>, Scalars['String']['output'] | string>,
315315
friends?: GraphCacheResolver<WithTypename<Author>, Record<string, never>, Array<WithTypename<Author> | string>>,
316316
friendsPaginated?: GraphCacheResolver<WithTypename<Author>, AuthorFriendsPaginatedArgs, Array<WithTypename<Author> | string>>
317317
},
318318
Todo?: {
319-
id?: GraphCacheResolver<WithTypename<Todo>, Record<string, never>, Scalars['ID'] | string>,
320-
text?: GraphCacheResolver<WithTypename<Todo>, Record<string, never>, Scalars['String'] | string>,
321-
complete?: GraphCacheResolver<WithTypename<Todo>, Record<string, never>, Scalars['Boolean'] | string>,
319+
id?: GraphCacheResolver<WithTypename<Todo>, Record<string, never>, Scalars['ID']['output'] | string>,
320+
text?: GraphCacheResolver<WithTypename<Todo>, Record<string, never>, Scalars['String']['output'] | string>,
321+
complete?: GraphCacheResolver<WithTypename<Todo>, Record<string, never>, Scalars['Boolean']['output'] | string>,
322322
author?: GraphCacheResolver<WithTypename<Todo>, Record<string, never>, WithTypename<Author> | string>
323323
}
324324
};

0 commit comments

Comments
 (0)