123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264 |
- import Maybe from '../tsutils/Maybe';
- import { TypeInfo } from '../utilities/TypeInfo';
- import { ASTNode, ASTKindToNode } from './ast';
- export type ASTVisitor = Visitor<ASTKindToNode>;
- export type Visitor<KindToNode, Nodes = KindToNode[keyof KindToNode]> =
- | EnterLeaveVisitor<KindToNode, Nodes>
- | ShapeMapVisitor<KindToNode, Nodes>;
- interface EnterLeave<T> {
- readonly enter?: T;
- readonly leave?: T;
- }
- type EnterLeaveVisitor<KindToNode, Nodes> = EnterLeave<
- VisitFn<Nodes> | { [K in keyof KindToNode]?: VisitFn<Nodes, KindToNode[K]> }
- >;
- type ShapeMapVisitor<KindToNode, Nodes> = {
- [K in keyof KindToNode]?:
- | VisitFn<Nodes, KindToNode[K]>
- | EnterLeave<VisitFn<Nodes, KindToNode[K]>>;
- };
- export type VisitFn<TAnyNode, TVisitedNode = TAnyNode> = (
-
- node: TVisitedNode,
-
- key: string | number | undefined,
-
- parent: TAnyNode | ReadonlyArray<TAnyNode> | undefined,
-
- path: ReadonlyArray<string | number>,
-
- ancestors: ReadonlyArray<TAnyNode | ReadonlyArray<TAnyNode>>,
- ) => any;
- export type VisitorKeyMap<T> = { [P in keyof T]: ReadonlyArray<keyof T[P]> };
- type EmptyTuple = never[];
- export const QueryDocumentKeys: {
- Name: EmptyTuple;
- Document: ['definitions'];
-
-
- OperationDefinition: [
- 'name',
- 'variableDefinitions',
- 'directives',
- 'selectionSet'
- ];
- VariableDefinition: ['variable', 'type', 'defaultValue', 'directives'];
- Variable: ['name'];
- SelectionSet: ['selections'];
- Field: ['alias', 'name', 'arguments', 'directives', 'selectionSet'];
- Argument: ['name', 'value'];
- FragmentSpread: ['name', 'directives'];
- InlineFragment: ['typeCondition', 'directives', 'selectionSet'];
-
- FragmentDefinition: [
- 'name',
-
-
- 'variableDefinitions',
- 'typeCondition',
- 'directives',
- 'selectionSet'
- ];
- IntValue: EmptyTuple;
- FloatValue: EmptyTuple;
- StringValue: EmptyTuple;
- BooleanValue: EmptyTuple;
- NullValue: EmptyTuple;
- EnumValue: EmptyTuple;
- ListValue: ['values'];
- ObjectValue: ['fields'];
- ObjectField: ['name', 'value'];
- Directive: ['name', 'arguments'];
- NamedType: ['name'];
- ListType: ['type'];
- NonNullType: ['type'];
- SchemaDefinition: ['directives', 'operationTypes'];
- OperationTypeDefinition: ['type'];
- ScalarTypeDefinition: ['description', 'name', 'directives'];
-
- ObjectTypeDefinition: [
- 'description',
- 'name',
- 'interfaces',
- 'directives',
- 'fields'
- ];
- FieldDefinition: ['description', 'name', 'arguments', 'type', 'directives'];
-
- InputValueDefinition: [
- 'description',
- 'name',
- 'type',
- 'defaultValue',
- 'directives'
- ];
- InterfaceTypeDefinition: ['description', 'name', 'directives', 'fields'];
- UnionTypeDefinition: ['description', 'name', 'directives', 'types'];
- EnumTypeDefinition: ['description', 'name', 'directives', 'values'];
- EnumValueDefinition: ['description', 'name', 'directives'];
- InputObjectTypeDefinition: ['description', 'name', 'directives', 'fields'];
- DirectiveDefinition: ['description', 'name', 'arguments', 'locations'];
- SchemaExtension: ['directives', 'operationTypes'];
- ScalarTypeExtension: ['name', 'directives'];
- ObjectTypeExtension: ['name', 'interfaces', 'directives', 'fields'];
- InterfaceTypeExtension: ['name', 'directives', 'fields'];
- UnionTypeExtension: ['name', 'directives', 'types'];
- EnumTypeExtension: ['name', 'directives', 'values'];
- InputObjectTypeExtension: ['name', 'directives', 'fields'];
- };
- export const BREAK: any;
- export function visit(
- root: ASTNode,
- visitor: Visitor<ASTKindToNode>,
- visitorKeys?: VisitorKeyMap<ASTKindToNode>,
- ): any;
- export function visitInParallel(
- visitors: ReadonlyArray<Visitor<ASTKindToNode>>,
- ): Visitor<ASTKindToNode>;
- export function visitWithTypeInfo(
- typeInfo: TypeInfo,
- visitor: Visitor<ASTKindToNode>,
- ): Visitor<ASTKindToNode>;
- export function getVisitFn(
- visitor: Visitor<any>,
- kind: string,
- isLeaving: boolean,
- ): Maybe<VisitFn<any>>;
|