UNPKG

4.36 kBTypeScriptView Raw
1import { GraphQLSchema, GraphQLField, ExecutionResult, GraphQLType, GraphQLFieldResolver, GraphQLResolveInfo, GraphQLIsTypeOfFn, GraphQLTypeResolver, GraphQLScalarType, GraphQLNamedType, 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: (schemaName: string, type: 'query' | 'mutation' | 'subscription', fieldName: string, args: {
17 [key: string]: any;
18 }, context: {
19 [key: string]: any;
20 }, info: GraphQLResolveInfo) => any;
21 getSubSchema: (schemaName: string) => GraphQLSchema;
22};
23export declare type IFieldResolver<TSource, TContext> = (source: TSource, args: {
24 [argument: string]: any;
25}, context: TContext, info: GraphQLResolveInfo & {
26 mergeInfo: MergeInfo;
27}) => any;
28export declare type ITypedef = (() => ITypedef[]) | string | DocumentNode;
29export declare type ITypeDefinitions = ITypedef | ITypedef[];
30export declare type IResolverObject = {
31 [key: string]: IFieldResolver<any, any> | IResolverOptions;
32};
33export declare type IEnumResolver = {
34 [key: string]: string | number;
35};
36export interface IResolvers {
37 [key: string]: (() => any) | IResolverObject | GraphQLScalarType | IEnumResolver;
38}
39export interface ILogger {
40 log: (message: string | Error) => void;
41}
42export interface IConnectorCls {
43 new (context?: any): any;
44}
45export declare type IConnectorFn = (context?: any) => any;
46export declare type IConnector = IConnectorCls | IConnectorFn;
47export declare type IConnectors = {
48 [key: string]: IConnector;
49};
50export interface IExecutableSchemaDefinition {
51 typeDefs: ITypeDefinitions;
52 resolvers?: IResolvers | Array<IResolvers>;
53 connectors?: IConnectors;
54 logger?: ILogger;
55 allowUndefinedInResolve?: boolean;
56 resolverValidationOptions?: IResolverValidationOptions;
57 directiveResolvers?: IDirectiveResolvers<any, any>;
58 parseOptions?: GraphQLParseOptions;
59}
60export declare type IFieldIteratorFn = (fieldDef: GraphQLField<any, any>, typeName: string, fieldName: string) => void;
61export declare type NextResolverFn = () => Promise<any>;
62export declare type DirectiveResolverFn<TSource, TContext> = (next: NextResolverFn, source: TSource, args: {
63 [argName: string]: any;
64}, context: TContext, info: GraphQLResolveInfo) => any;
65export interface IDirectiveResolvers<TSource, TContext> {
66 [directiveName: string]: DirectiveResolverFn<TSource, TContext>;
67}
68export declare type IMockFn = GraphQLFieldResolver<any, any>;
69export declare type IMocks = {
70 [key: string]: IMockFn;
71};
72export declare type IMockTypeFn = (type: GraphQLType, typeName?: string, fieldName?: string) => GraphQLFieldResolver<any, any>;
73export interface IMockOptions {
74 schema: GraphQLSchema;
75 mocks?: IMocks;
76 preserveResolvers?: boolean;
77}
78export interface IMockServer {
79 query: (query: string, vars?: {
80 [key: string]: any;
81 }) => Promise<ExecutionResult>;
82}
83export declare type MergeTypeCandidate = {
84 schemaName: string;
85 schema?: GraphQLSchema;
86 type: GraphQLNamedType;
87};
88export declare type TypeWithResolvers = {
89 type: GraphQLNamedType;
90 resolvers?: IResolvers;
91};
92export declare type VisitTypeResult = GraphQLNamedType | TypeWithResolvers | null;
93export declare type VisitType = (name: string, candidates: Array<MergeTypeCandidate>) => VisitTypeResult;
94export declare type Operation = 'query' | 'mutation' | 'subscription';
95export declare type Request = {
96 document: DocumentNode;
97 variables: Record<string, any>;
98 extensions?: Record<string, any>;
99};
100export declare type Result = ExecutionResult & {
101 extensions?: Record<string, any>;
102};
103export declare type ResolveType<T extends GraphQLType> = (type: T) => T;
104export declare type GraphQLParseOptions = {
105 noLocation?: boolean;
106 allowLegacySDLEmptyFields?: boolean;
107 allowLegacySDLImplementsInterfaces?: boolean;
108 experimentalFragmentVariables?: boolean;
109};