UNPKG

t-graphql

Version:

typed GraphQL - end-to-end type-safe GraphQL for TypeScript. Think tRPC, but GraphQL

20 lines (19 loc) 1.2 kB
import { AnyObjectType, ObjectType } from '../outputs/ObjectType'; import { AnyParamObjectType } from '../outputs/ParamObjectType'; import { UnionType } from '../outputs/UnionType'; import { AnyType } from '../types/AnyType.type'; import { Prettify } from '../types/Prettify.type'; import { Value } from '../types/Value.type'; type ResolvedObjectValue<S extends Record<string, { type: AnyType; optional: boolean; params: AnyParamObjectType | null; }>, Entities extends { [typename in string]?: object; }> = Prettify<{ [key in keyof S]: S[key]['optional'] extends true ? ResolvedValue<S[key]['type'], Entities> | null : ResolvedValue<S[key]['type'], Entities>; }>; export type ResolvedValue<T extends AnyType, Entities extends { [typename in string]?: object; }> = T extends ObjectType<infer N, infer S> ? N extends keyof Entities ? Entities[N] : ResolvedObjectValue<S, Entities> : T extends UnionType<any, infer I extends ReadonlyArray<AnyObjectType>> ? ResolvedValue<I[number], Entities> : T extends [infer I extends AnyType, null] ? Array<ResolvedValue<I, Entities> | null> : T extends [infer I extends AnyType] ? Array<ResolvedValue<I, Entities>> : Value<T>; export {};