UNPKG

14.4 kBTypeScriptView Raw
1import { GraphQLSchema, GraphQLField, GraphQLInputType, GraphQLNamedType, GraphQLResolveInfo, GraphQLScalarType, DocumentNode, FieldNode, GraphQLEnumValue, GraphQLEnumType, GraphQLUnionType, GraphQLArgument, GraphQLInputField, GraphQLInputObjectType, GraphQLInterfaceType, GraphQLObjectType, GraphQLDirective, FragmentDefinitionNode, SelectionNode, ExecutionResult as GraphQLExecutionResult, GraphQLOutputType, FieldDefinitionNode, GraphQLFieldConfig, GraphQLInputFieldConfig, GraphQLArgumentConfig, GraphQLEnumValueConfig, GraphQLScalarSerializer, GraphQLScalarValueParser, GraphQLScalarLiteralParser, ScalarTypeDefinitionNode, ScalarTypeExtensionNode, EnumTypeDefinitionNode, EnumTypeExtensionNode, GraphQLIsTypeOfFn, ObjectTypeDefinitionNode, ObjectTypeExtensionNode, InterfaceTypeExtensionNode, InterfaceTypeDefinitionNode, GraphQLTypeResolver, UnionTypeDefinitionNode, UnionTypeExtensionNode, InputObjectTypeExtensionNode, InputObjectTypeDefinitionNode, GraphQLType, Source, DefinitionNode, OperationTypeNode } from 'graphql';
2export declare type ExecutionResult<TData = Record<string, any>> = GraphQLExecutionResult & {
3 data?: TData | null;
4 extensions?: Record<string, any>;
5};
6export interface ExecutionRequest<TArgs extends Record<string, any> = Record<string, any>, TContext = any, TRootValue = any, TExtensions = Record<string, any>> {
7 document: DocumentNode;
8 variables?: TArgs;
9 operationType?: OperationTypeNode;
10 operationName?: string;
11 extensions?: TExtensions;
12 rootValue?: TRootValue;
13 context?: TContext;
14 info?: GraphQLResolveInfo;
15}
16export interface GraphQLParseOptions {
17 noLocation?: boolean;
18 allowLegacySDLEmptyFields?: boolean;
19 allowLegacySDLImplementsInterfaces?: boolean;
20 experimentalFragmentVariables?: boolean;
21 /**
22 * Set to `true` in order to convert all GraphQL comments (marked with # sign) to descriptions (""")
23 * GraphQL has built-in support for transforming descriptions to comments (with `print`), but not while
24 * parsing. Turning the flag on will support the other way as well (`parse`)
25 */
26 commentDescriptions?: boolean;
27}
28export declare type ValidatorBehavior = 'error' | 'warn' | 'ignore';
29/**
30 * Options for validating resolvers
31 */
32export interface IResolverValidationOptions {
33 /**
34 * Enable to require a resolver to be defined for any field that has
35 * arguments. Defaults to `ignore`.
36 */
37 requireResolversForArgs?: ValidatorBehavior;
38 /**
39 * Enable to require a resolver to be defined for any field which has
40 * a return type that isn't a scalar. Defaults to `ignore`.
41 */
42 requireResolversForNonScalar?: ValidatorBehavior;
43 /**
44 * Enable to require a resolver for be defined for all fields defined
45 * in the schema. Defaults to `ignore`.
46 */
47 requireResolversForAllFields?: ValidatorBehavior;
48 /**
49 * Enable to require a `resolveType()` for Interface and Union types.
50 * Defaults to `ignore`.
51 */
52 requireResolversForResolveType?: ValidatorBehavior;
53 /**
54 * Enable to require all defined resolvers to match fields that
55 * actually exist in the schema. Defaults to `error` to catch common errors.
56 */
57 requireResolversToMatchSchema?: ValidatorBehavior;
58}
59/**
60 * Configuration object for adding resolvers to a schema
61 */
62export interface IAddResolversToSchemaOptions {
63 /**
64 * The schema to which to add resolvers
65 */
66 schema: GraphQLSchema;
67 /**
68 * Object describing the field resolvers to add to the provided schema
69 */
70 resolvers: IResolvers;
71 /**
72 * Override the default field resolver provided by `graphql-js`
73 */
74 defaultFieldResolver?: IFieldResolver<any, any>;
75 /**
76 * Additional options for validating the provided resolvers
77 */
78 resolverValidationOptions?: IResolverValidationOptions;
79 /**
80 * GraphQL object types that implement interfaces will inherit any missing
81 * resolvers from their interface types defined in the `resolvers` object
82 */
83 inheritResolversFromInterfaces?: boolean;
84 /**
85 * Set to `true` to modify the existing schema instead of creating a new one
86 */
87 updateResolversInPlace?: boolean;
88}
89export declare type IScalarTypeResolver = GraphQLScalarType & {
90 __name?: string;
91 __description?: string;
92 __serialize?: GraphQLScalarSerializer<any>;
93 __parseValue?: GraphQLScalarValueParser<any>;
94 __parseLiteral?: GraphQLScalarLiteralParser<any>;
95 __extensions?: Record<string, any>;
96 __astNode?: ScalarTypeDefinitionNode;
97 __extensionASTNodes?: Array<ScalarTypeExtensionNode>;
98};
99export declare type IEnumTypeResolver = Record<string, any> & {
100 __name?: string;
101 __description?: string;
102 __extensions?: Record<string, any>;
103 __astNode?: EnumTypeDefinitionNode;
104 __extensionASTNodes?: Array<EnumTypeExtensionNode>;
105};
106export interface IFieldResolverOptions<TSource = any, TContext = any, TArgs = any> {
107 name?: string;
108 description?: string;
109 type?: GraphQLOutputType;
110 args?: Array<GraphQLArgument>;
111 resolve?: IFieldResolver<TSource, TContext, TArgs>;
112 subscribe?: IFieldResolver<TSource, TContext, TArgs>;
113 isDeprecated?: boolean;
114 deprecationReason?: string;
115 extensions?: Record<string, any>;
116 astNode?: FieldDefinitionNode;
117}
118export declare type FieldNodeMapper = (fieldNode: FieldNode, fragments: Record<string, FragmentDefinitionNode>, transformationContext: Record<string, any>) => SelectionNode | Array<SelectionNode>;
119export declare type FieldNodeMappers = Record<string, Record<string, FieldNodeMapper>>;
120export declare type InputFieldFilter = (typeName?: string, fieldName?: string, inputFieldConfig?: GraphQLInputFieldConfig) => boolean;
121export declare type FieldFilter = (typeName: string, fieldName: string, fieldConfig: GraphQLFieldConfig<any, any> | GraphQLInputFieldConfig) => boolean;
122export declare type ObjectFieldFilter = (typeName: string, fieldName: string, fieldConfig: GraphQLFieldConfig<any, any>) => boolean;
123export declare type RootFieldFilter = (operation: 'Query' | 'Mutation' | 'Subscription', rootFieldName: string, fieldConfig: GraphQLFieldConfig<any, any>) => boolean;
124export declare type TypeFilter = (typeName: string, type: GraphQLType) => boolean;
125export declare type ArgumentFilter = (typeName?: string, fieldName?: string, argName?: string, argConfig?: GraphQLArgumentConfig) => boolean;
126export declare type RenameTypesOptions = {
127 renameBuiltins: boolean;
128 renameScalars: boolean;
129};
130export declare type IFieldResolver<TSource, TContext, TArgs = Record<string, any>, TReturn = any> = (source: TSource, args: TArgs, context: TContext, info: GraphQLResolveInfo) => TReturn;
131export declare type TypeSource = string | Source | DocumentNode | GraphQLSchema | DefinitionNode | Array<TypeSource> | (() => TypeSource);
132export declare type IObjectTypeResolver<TSource = any, TContext = any, TArgs = any> = {
133 [key: string]: IFieldResolver<TSource, TContext, TArgs> | IFieldResolverOptions<TSource, TContext>;
134} & {
135 __name?: string;
136 __description?: string;
137 __isTypeOf?: GraphQLIsTypeOfFn<TSource, TContext>;
138 __extensions?: Record<string, any>;
139 __astNode?: ObjectTypeDefinitionNode;
140 __extensionASTNodes?: ObjectTypeExtensionNode;
141};
142export declare type IInterfaceTypeResolver<TSource = any, TContext = any, TArgs = any> = {
143 [key: string]: IFieldResolver<TSource, TContext, TArgs> | IFieldResolverOptions<TSource, TContext>;
144} & {
145 __name?: string;
146 __description?: string;
147 __resolveType?: GraphQLTypeResolver<any, any>;
148 __extensions?: Record<string, any>;
149 __astNode?: InterfaceTypeDefinitionNode;
150 __extensionASTNodes?: Array<InterfaceTypeExtensionNode>;
151};
152export declare type IUnionTypeResolver = {
153 __name?: string;
154 __description?: string;
155 __resolveType?: GraphQLTypeResolver<any, any>;
156 __extensions?: Record<string, any>;
157 __astNode?: UnionTypeDefinitionNode;
158 __extensionASTNodes?: Array<UnionTypeExtensionNode>;
159};
160export declare type IInputObjectTypeResolver = {
161 __name?: string;
162 __description?: string;
163 __extensions?: Record<string, any>;
164 __astNode?: InputObjectTypeDefinitionNode;
165 __extensionASTNodes?: Array<InputObjectTypeExtensionNode>;
166};
167export declare type ISchemaLevelResolver<TSource, TContext, TArgs = Record<string, any>, TReturn = any> = IFieldResolver<TSource, TContext, TArgs, TReturn>;
168export declare type IResolvers<TSource = any, TContext = any, TArgs = Record<string, any>, TReturn = any> = Record<string, ISchemaLevelResolver<TSource, TContext, TArgs, TReturn> | IObjectTypeResolver<TSource, TContext> | IInterfaceTypeResolver<TSource, TContext> | IUnionTypeResolver | IScalarTypeResolver | IEnumTypeResolver | IInputObjectTypeResolver>;
169export declare type IFieldIteratorFn = (fieldDef: GraphQLField<any, any>, typeName: string, fieldName: string) => void;
170export declare type IDefaultValueIteratorFn = (type: GraphQLInputType, value: any) => void;
171export declare type NextResolverFn = () => Promise<any>;
172export declare type VisitableSchemaType = GraphQLSchema | GraphQLObjectType | GraphQLInterfaceType | GraphQLInputObjectType | GraphQLNamedType | GraphQLScalarType | GraphQLField<any, any> | GraphQLInputField | GraphQLArgument | GraphQLUnionType | GraphQLEnumType | GraphQLEnumValue;
173export declare enum MapperKind {
174 TYPE = "MapperKind.TYPE",
175 SCALAR_TYPE = "MapperKind.SCALAR_TYPE",
176 ENUM_TYPE = "MapperKind.ENUM_TYPE",
177 COMPOSITE_TYPE = "MapperKind.COMPOSITE_TYPE",
178 OBJECT_TYPE = "MapperKind.OBJECT_TYPE",
179 INPUT_OBJECT_TYPE = "MapperKind.INPUT_OBJECT_TYPE",
180 ABSTRACT_TYPE = "MapperKind.ABSTRACT_TYPE",
181 UNION_TYPE = "MapperKind.UNION_TYPE",
182 INTERFACE_TYPE = "MapperKind.INTERFACE_TYPE",
183 ROOT_OBJECT = "MapperKind.ROOT_OBJECT",
184 QUERY = "MapperKind.QUERY",
185 MUTATION = "MapperKind.MUTATION",
186 SUBSCRIPTION = "MapperKind.SUBSCRIPTION",
187 DIRECTIVE = "MapperKind.DIRECTIVE",
188 FIELD = "MapperKind.FIELD",
189 COMPOSITE_FIELD = "MapperKind.COMPOSITE_FIELD",
190 OBJECT_FIELD = "MapperKind.OBJECT_FIELD",
191 ROOT_FIELD = "MapperKind.ROOT_FIELD",
192 QUERY_ROOT_FIELD = "MapperKind.QUERY_ROOT_FIELD",
193 MUTATION_ROOT_FIELD = "MapperKind.MUTATION_ROOT_FIELD",
194 SUBSCRIPTION_ROOT_FIELD = "MapperKind.SUBSCRIPTION_ROOT_FIELD",
195 INTERFACE_FIELD = "MapperKind.INTERFACE_FIELD",
196 INPUT_OBJECT_FIELD = "MapperKind.INPUT_OBJECT_FIELD",
197 ARGUMENT = "MapperKind.ARGUMENT",
198 ENUM_VALUE = "MapperKind.ENUM_VALUE"
199}
200export interface SchemaMapper {
201 [MapperKind.TYPE]?: NamedTypeMapper;
202 [MapperKind.SCALAR_TYPE]?: ScalarTypeMapper;
203 [MapperKind.ENUM_TYPE]?: EnumTypeMapper;
204 [MapperKind.COMPOSITE_TYPE]?: CompositeTypeMapper;
205 [MapperKind.OBJECT_TYPE]?: ObjectTypeMapper;
206 [MapperKind.INPUT_OBJECT_TYPE]?: InputObjectTypeMapper;
207 [MapperKind.ABSTRACT_TYPE]?: AbstractTypeMapper;
208 [MapperKind.UNION_TYPE]?: UnionTypeMapper;
209 [MapperKind.INTERFACE_TYPE]?: InterfaceTypeMapper;
210 [MapperKind.ROOT_OBJECT]?: ObjectTypeMapper;
211 [MapperKind.QUERY]?: ObjectTypeMapper;
212 [MapperKind.MUTATION]?: ObjectTypeMapper;
213 [MapperKind.SUBSCRIPTION]?: ObjectTypeMapper;
214 [MapperKind.ENUM_VALUE]?: EnumValueMapper;
215 [MapperKind.FIELD]?: GenericFieldMapper<GraphQLFieldConfig<any, any> | GraphQLInputFieldConfig>;
216 [MapperKind.OBJECT_FIELD]?: FieldMapper;
217 [MapperKind.ROOT_FIELD]?: FieldMapper;
218 [MapperKind.QUERY_ROOT_FIELD]?: FieldMapper;
219 [MapperKind.MUTATION_ROOT_FIELD]?: FieldMapper;
220 [MapperKind.SUBSCRIPTION_ROOT_FIELD]?: FieldMapper;
221 [MapperKind.INTERFACE_FIELD]?: FieldMapper;
222 [MapperKind.COMPOSITE_FIELD]?: FieldMapper;
223 [MapperKind.ARGUMENT]?: ArgumentMapper;
224 [MapperKind.INPUT_OBJECT_FIELD]?: InputFieldMapper;
225 [MapperKind.DIRECTIVE]?: DirectiveMapper;
226}
227export declare type SchemaFieldMapperTypes = Array<MapperKind.FIELD | MapperKind.COMPOSITE_FIELD | MapperKind.OBJECT_FIELD | MapperKind.ROOT_FIELD | MapperKind.QUERY_ROOT_FIELD | MapperKind.MUTATION_ROOT_FIELD | MapperKind.SUBSCRIPTION_ROOT_FIELD | MapperKind.INTERFACE_FIELD | MapperKind.INPUT_OBJECT_FIELD>;
228export declare type NamedTypeMapper = (type: GraphQLNamedType, schema: GraphQLSchema) => GraphQLNamedType | null | undefined;
229export declare type ScalarTypeMapper = (type: GraphQLScalarType, schema: GraphQLSchema) => GraphQLScalarType | null | undefined;
230export declare type EnumTypeMapper = (type: GraphQLEnumType, schema: GraphQLSchema) => GraphQLEnumType | null | undefined;
231export declare type EnumValueMapper = (valueConfig: GraphQLEnumValueConfig, typeName: string, schema: GraphQLSchema, externalValue: string) => GraphQLEnumValueConfig | [string, GraphQLEnumValueConfig] | null | undefined;
232export declare type CompositeTypeMapper = (type: GraphQLObjectType | GraphQLInterfaceType | GraphQLUnionType, schema: GraphQLSchema) => GraphQLObjectType | GraphQLInterfaceType | GraphQLUnionType | null | undefined;
233export declare type ObjectTypeMapper = (type: GraphQLObjectType, schema: GraphQLSchema) => GraphQLObjectType | null | undefined;
234export declare type InputObjectTypeMapper = (type: GraphQLInputObjectType, schema: GraphQLSchema) => GraphQLInputObjectType | null | undefined;
235export declare type AbstractTypeMapper = (type: GraphQLInterfaceType | GraphQLUnionType, schema: GraphQLSchema) => GraphQLInterfaceType | GraphQLUnionType | null | undefined;
236export declare type UnionTypeMapper = (type: GraphQLUnionType, schema: GraphQLSchema) => GraphQLUnionType | null | undefined;
237export declare type InterfaceTypeMapper = (type: GraphQLInterfaceType, schema: GraphQLSchema) => GraphQLInterfaceType | null | undefined;
238export declare type DirectiveMapper = (directive: GraphQLDirective, schema: GraphQLSchema) => GraphQLDirective | null | undefined;
239export declare type GenericFieldMapper<F extends GraphQLFieldConfig<any, any> | GraphQLInputFieldConfig> = (fieldConfig: F, fieldName: string, typeName: string, schema: GraphQLSchema) => F | [string, F] | null | undefined;
240export declare type FieldMapper = GenericFieldMapper<GraphQLFieldConfig<any, any>>;
241export declare type ArgumentMapper = (argumentConfig: GraphQLArgumentConfig, fieldName: string, typeName: string, schema: GraphQLSchema) => GraphQLArgumentConfig | [string, GraphQLArgumentConfig] | null | undefined;
242export declare type InputFieldMapper = GenericFieldMapper<GraphQLInputFieldConfig>;