t-graphql
Version:
typed GraphQL - end-to-end type-safe GraphQL for TypeScript. Think tRPC, but GraphQL
14 lines (13 loc) • 1.15 kB
TypeScript
import { AnySchemaType, EmptySchemaType } from '../SchemaType';
import { ObjectUnionToObjectIntersection } from '../types/ObjectUnionToObjectIntersection.type';
type FilterByKey<U, K extends string> = Extract<U, {
[key in K]: any;
}>;
export type MergePartialSchemaResolvers<Rs extends object, Schema extends AnySchemaType = EmptySchemaType> = Omit<ObjectUnionToObjectIntersection<Rs>, Schema['Query']['typename'] | Schema['Mutation']['typename'] | Schema['Subscription']['typename']> & ([FilterByKey<Rs, Schema['Query']['typename']>] extends [never] ? Record<never, any> : {
[typename in Schema['Query']['typename']]: ObjectUnionToObjectIntersection<FilterByKey<Rs, typename>[typename]>;
}) & ([FilterByKey<Rs, Schema['Mutation']['typename']>] extends [never] ? Record<never, any> : {
[typename in Schema['Mutation']['typename']]: ObjectUnionToObjectIntersection<FilterByKey<Rs, typename>[typename]>;
}) & ([FilterByKey<Rs, Schema['Subscription']['typename']>] extends [never] ? Record<never, any> : {
[typename in Schema['Subscription']['typename']]: ObjectUnionToObjectIntersection<FilterByKey<Rs, typename>[typename]>;
});
export {};