UNPKG

3.56 kBTypeScriptView Raw
1import { GraphQLSchema, GraphQLField, ExecutionResult, GraphQLType, GraphQLFieldResolver, GraphQLResolveInfo, GraphQLIsTypeOfFn, GraphQLTypeResolver, GraphQLScalarType, DocumentNode } from 'graphql';
2export declare type UnitOrList<Type> = Type | Array<Type>;
3export interface IResolverValidationOptions {
4 requireResolversForArgs?: boolean;
5 requireResolversForNonScalar?: boolean;
6 requireResolversForAllFields?: boolean;
7 allowResolversNotInSchema?: boolean;
8}
9export interface IResolverOptions {
10 resolve?: IFieldResolver<any, any>;
11 subscribe?: IFieldResolver<any, any>;
12 __resolveType?: GraphQLTypeResolver<any, any>;
13 __isTypeOf?: GraphQLIsTypeOfFn<any, any>;
14}
15export declare type MergeInfo = {
16 delegate: (type: 'query' | 'mutation' | 'subscription', fieldName: string, args: {
17 [key: string]: any;
18 }, context: {
19 [key: string]: any;
20 }, info: GraphQLResolveInfo) => any;
21};
22export declare type IFieldResolver<TSource, TContext> = (source: TSource, args: {
23 [argument: string]: any;
24}, context: TContext, info: GraphQLResolveInfo & {
25 mergeInfo: MergeInfo;
26}) => any;
27export declare type ITypedef = (() => ITypedef[]) | string | DocumentNode;
28export declare type ITypeDefinitions = ITypedef | ITypedef[];
29export declare type IResolverObject = {
30 [key: string]: IFieldResolver<any, any> | IResolverOptions;
31};
32export declare type IEnumResolver = {
33 [key: string]: string | number;
34};
35export interface IResolvers {
36 [key: string]: (() => any) | IResolverObject | GraphQLScalarType | IEnumResolver;
37}
38export interface ILogger {
39 log: (message: string | Error) => void;
40}
41export interface IConnectorCls {
42 new (context?: any): any;
43}
44export declare type IConnectorFn = (context?: any) => any;
45export declare type IConnector = IConnectorCls | IConnectorFn;
46export declare type IConnectors = {
47 [key: string]: IConnector;
48};
49export interface IExecutableSchemaDefinition {
50 typeDefs: ITypeDefinitions;
51 resolvers?: IResolvers | Array<IResolvers>;
52 connectors?: IConnectors;
53 logger?: ILogger;
54 allowUndefinedInResolve?: boolean;
55 resolverValidationOptions?: IResolverValidationOptions;
56 directiveResolvers?: IDirectiveResolvers<any, any>;
57 parseOptions?: GraphQLParseOptions;
58}
59export declare type IFieldIteratorFn = (fieldDef: GraphQLField<any, any>, typeName: string, fieldName: string) => void;
60export declare type NextResolverFn = () => Promise<any>;
61export declare type DirectiveResolverFn<TSource, TContext> = (next: NextResolverFn, source: TSource, args: {
62 [argName: string]: any;
63}, context: TContext, info: GraphQLResolveInfo) => any;
64export interface IDirectiveResolvers<TSource, TContext> {
65 [directiveName: string]: DirectiveResolverFn<TSource, TContext>;
66}
67export declare type IMockFn = GraphQLFieldResolver<any, any>;
68export declare type IMocks = {
69 [key: string]: IMockFn;
70};
71export declare type IMockTypeFn = (type: GraphQLType, typeName?: string, fieldName?: string) => GraphQLFieldResolver<any, any>;
72export interface IMockOptions {
73 schema: GraphQLSchema;
74 mocks?: IMocks;
75 preserveResolvers?: boolean;
76}
77export interface IMockServer {
78 query: (query: string, vars?: {
79 [key: string]: any;
80 }) => Promise<ExecutionResult>;
81}
82export declare type ResolveType<T extends GraphQLType> = (type: T) => T;
83export declare type GraphQLParseOptions = {
84 noLocation?: boolean;
85 allowLegacySDLEmptyFields?: boolean;
86 allowLegacySDLImplementsInterfaces?: boolean;
87 experimentalFragmentVariables?: boolean;
88};