UNPKG

graphql-mocks

Version:

Tools for setting up graphql test resolvers

35 lines (34 loc) 1.66 kB
import { TypeResolver, FieldResolver, ObjectField, ResolverMap } from '../types'; import { WrapperFor } from './constants'; import { GraphQLObjectType, GraphQLAbstractType, GraphQLSchema } from 'graphql'; import { PackOptions } from '../pack/types'; export type BaseWrapperOptions = { schema: GraphQLSchema; resolverMap: ResolverMap; packOptions: PackOptions; type: GraphQLObjectType | GraphQLAbstractType; field?: ObjectField; }; export type FieldResolverWrapperOptions = BaseWrapperOptions & { type: GraphQLObjectType; field: ObjectField; }; export type TypeResolverWrapperOptions = BaseWrapperOptions & { type: GraphQLAbstractType; field: undefined; }; export type TypeWrapperFunction = (resolver: TypeResolver, options: TypeResolverWrapperOptions) => TypeResolver | Promise<TypeResolver>; export type FieldWrapperFunction = (resolver: FieldResolver, options: FieldResolverWrapperOptions) => FieldResolver | Promise<FieldResolver>; export type GenericWrapperFunction = (resolver: FieldResolver | TypeResolver, options: BaseWrapperOptions) => FieldResolver | TypeResolver | Promise<FieldResolver | TypeResolver>; export type WrapperForOptions = (typeof WrapperFor)[keyof typeof WrapperFor]; export type WrapperFnMapping = { [WrapperFor.FIELD]: FieldWrapperFunction; [WrapperFor.TYPE]: TypeWrapperFunction; [WrapperFor.ANY]: GenericWrapperFunction; }; export interface NamedWrapper<T extends WrapperForOptions> { name: string; wrap: WrapperFnMapping[T]; wrapperFor: T; } export type Wrapper = NamedWrapper<WrapperForOptions> | GenericWrapperFunction | FieldWrapperFunction | TypeWrapperFunction;