Skip to content

Commit 6c5e43a

Browse files

File tree

2 files changed

+16
-10
lines changed

2 files changed

+16
-10
lines changed

src/postamble.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ export function ${op}<Sel extends Selection<$RootTypes.${op}>>(
88
): TypedDocumentNode<GetOutput<Sel>, GetVariables<Sel>>
99
export function ${op}<Sel extends Selection<$RootTypes.${op}>>(
1010
selectFn: (q: $RootTypes.${op}) => [...Sel]
11-
): TypedDocumentNode<GetOutput<Sel>, GetVariables<Sel>>
11+
): TypedDocumentNode<GetOutput<Sel>, Simplify<GetVariables<Sel>>>
1212
export function ${op}<Sel extends Selection<$RootTypes.query>>(name: any, selectFn?: any) {
1313
if (!selectFn) {
1414
selectFn = name

src/preamble.src.ts

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -144,16 +144,22 @@ type Selection<_any> = ReadonlyArray<$Field<any, any, any> | $UnionSelection<any
144144

145145
type NeverNever<T> = [T] extends [never] ? {} : T
146146

147-
export type GetOutput<X extends Selection<any>> = UnionToIntersection<
148-
{
149-
[I in keyof X]: X[I] extends $Field<infer Name, infer Type, any> ? { [K in Name]: Type } : never
150-
}[keyof X & number]
151-
> &
152-
NeverNever<
147+
type Simplify<T> = { [K in keyof T]: T[K] } & {}
148+
149+
export type GetOutput<X extends Selection<any>> = Simplify<
150+
UnionToIntersection<
153151
{
154-
[I in keyof X]: X[I] extends $UnionSelection<infer Type, any> ? Type : never
152+
[I in keyof X]: X[I] extends $Field<infer Name, infer Type, any>
153+
? { [K in Name]: Type }
154+
: never
155155
}[keyof X & number]
156-
>
156+
> &
157+
NeverNever<
158+
{
159+
[I in keyof X]: X[I] extends $UnionSelection<infer Type, any> ? Type : never
160+
}[keyof X & number]
161+
>
162+
>
157163

158164
type PossiblyOptionalVar<VName extends string, VType> = undefined extends VType
159165
? { [key in VName]?: VType }
@@ -247,7 +253,7 @@ function fieldToQuery(prefix: string, field: $Field<any, any, any>) {
247253
if (!argTypeForKey) {
248254
throw new Error(`Argument type for ${key} not found`)
249255
}
250-
const cleanType = argTypeForKey.replace('[', '').replace(']', '').replace('!', '')
256+
const cleanType = argTypeForKey.replace('[', '').replace(']', '').replace(/!/g, '')
251257
return (
252258
key +
253259
':' +

0 commit comments

Comments
 (0)