UNPKG

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