123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573 |
- import { Source } from './source';
- import { TokenKindEnum } from './tokenKind';
- /**
- * Contains a range of UTF-8 character offsets and token references that
- * identify the region of the source from which the AST derived.
- */
- export interface Location {
- /**
- * The character offset at which this Node begins.
- */
- readonly start: number;
- /**
- * The character offset at which this Node ends.
- */
- readonly end: number;
- /**
- * The Token at which this Node begins.
- */
- readonly startToken: Token;
- /**
- * The Token at which this Node ends.
- */
- readonly endToken: Token;
- /**
- * The Source document the AST represents.
- */
- readonly source: Source;
- }
- /**
- * Represents a range of characters represented by a lexical token
- * within a Source.
- */
- export interface Token {
- /**
- * The kind of Token.
- */
- readonly kind: TokenKindEnum;
- /**
- * The character offset at which this Node begins.
- */
- readonly start: number;
- /**
- * The character offset at which this Node ends.
- */
- readonly end: number;
- /**
- * The 1-indexed line number on which this Token appears.
- */
- readonly line: number;
- /**
- * The 1-indexed column number at which this Token begins.
- */
- readonly column: number;
- /**
- * For non-punctuation tokens, represents the interpreted value of the token.
- */
- readonly value: string | undefined;
- /**
- * Tokens exist as nodes in a double-linked-list amongst all tokens
- * including ignored tokens. <SOF> is always the first node and <EOF>
- * the last.
- */
- readonly prev: Token | null;
- readonly next: Token | null;
- }
- /**
- * The list of all possible AST node types.
- */
- export type ASTNode =
- | NameNode
- | DocumentNode
- | OperationDefinitionNode
- | VariableDefinitionNode
- | VariableNode
- | SelectionSetNode
- | FieldNode
- | ArgumentNode
- | FragmentSpreadNode
- | InlineFragmentNode
- | FragmentDefinitionNode
- | IntValueNode
- | FloatValueNode
- | StringValueNode
- | BooleanValueNode
- | NullValueNode
- | EnumValueNode
- | ListValueNode
- | ObjectValueNode
- | ObjectFieldNode
- | DirectiveNode
- | NamedTypeNode
- | ListTypeNode
- | NonNullTypeNode
- | SchemaDefinitionNode
- | OperationTypeDefinitionNode
- | ScalarTypeDefinitionNode
- | ObjectTypeDefinitionNode
- | FieldDefinitionNode
- | InputValueDefinitionNode
- | InterfaceTypeDefinitionNode
- | UnionTypeDefinitionNode
- | EnumTypeDefinitionNode
- | EnumValueDefinitionNode
- | InputObjectTypeDefinitionNode
- | DirectiveDefinitionNode
- | SchemaExtensionNode
- | ScalarTypeExtensionNode
- | ObjectTypeExtensionNode
- | InterfaceTypeExtensionNode
- | UnionTypeExtensionNode
- | EnumTypeExtensionNode
- | InputObjectTypeExtensionNode;
- /**
- * Utility type listing all nodes indexed by their kind.
- */
- export interface ASTKindToNode {
- Name: NameNode;
- Document: DocumentNode;
- OperationDefinition: OperationDefinitionNode;
- VariableDefinition: VariableDefinitionNode;
- Variable: VariableNode;
- SelectionSet: SelectionSetNode;
- Field: FieldNode;
- Argument: ArgumentNode;
- FragmentSpread: FragmentSpreadNode;
- InlineFragment: InlineFragmentNode;
- FragmentDefinition: FragmentDefinitionNode;
- IntValue: IntValueNode;
- FloatValue: FloatValueNode;
- StringValue: StringValueNode;
- BooleanValue: BooleanValueNode;
- NullValue: NullValueNode;
- EnumValue: EnumValueNode;
- ListValue: ListValueNode;
- ObjectValue: ObjectValueNode;
- ObjectField: ObjectFieldNode;
- Directive: DirectiveNode;
- NamedType: NamedTypeNode;
- ListType: ListTypeNode;
- NonNullType: NonNullTypeNode;
- SchemaDefinition: SchemaDefinitionNode;
- OperationTypeDefinition: OperationTypeDefinitionNode;
- ScalarTypeDefinition: ScalarTypeDefinitionNode;
- ObjectTypeDefinition: ObjectTypeDefinitionNode;
- FieldDefinition: FieldDefinitionNode;
- InputValueDefinition: InputValueDefinitionNode;
- InterfaceTypeDefinition: InterfaceTypeDefinitionNode;
- UnionTypeDefinition: UnionTypeDefinitionNode;
- EnumTypeDefinition: EnumTypeDefinitionNode;
- EnumValueDefinition: EnumValueDefinitionNode;
- InputObjectTypeDefinition: InputObjectTypeDefinitionNode;
- DirectiveDefinition: DirectiveDefinitionNode;
- SchemaExtension: SchemaExtensionNode;
- ScalarTypeExtension: ScalarTypeExtensionNode;
- ObjectTypeExtension: ObjectTypeExtensionNode;
- InterfaceTypeExtension: InterfaceTypeExtensionNode;
- UnionTypeExtension: UnionTypeExtensionNode;
- EnumTypeExtension: EnumTypeExtensionNode;
- InputObjectTypeExtension: InputObjectTypeExtensionNode;
- }
- // Name
- export interface NameNode {
- readonly kind: 'Name';
- readonly loc?: Location;
- readonly value: string;
- }
- // Document
- export interface DocumentNode {
- readonly kind: 'Document';
- readonly loc?: Location;
- readonly definitions: ReadonlyArray<DefinitionNode>;
- }
- export type DefinitionNode =
- | ExecutableDefinitionNode
- | TypeSystemDefinitionNode
- | TypeSystemExtensionNode;
- export type ExecutableDefinitionNode =
- | OperationDefinitionNode
- | FragmentDefinitionNode;
- export interface OperationDefinitionNode {
- readonly kind: 'OperationDefinition';
- readonly loc?: Location;
- readonly operation: OperationTypeNode;
- readonly name?: NameNode;
- readonly variableDefinitions?: ReadonlyArray<VariableDefinitionNode>;
- readonly directives?: ReadonlyArray<DirectiveNode>;
- readonly selectionSet: SelectionSetNode;
- }
- export type OperationTypeNode = 'query' | 'mutation' | 'subscription';
- export interface VariableDefinitionNode {
- readonly kind: 'VariableDefinition';
- readonly loc?: Location;
- readonly variable: VariableNode;
- readonly type: TypeNode;
- readonly defaultValue?: ValueNode;
- readonly directives?: ReadonlyArray<DirectiveNode>;
- }
- export interface VariableNode {
- readonly kind: 'Variable';
- readonly loc?: Location;
- readonly name: NameNode;
- }
- export interface SelectionSetNode {
- kind: 'SelectionSet';
- loc?: Location;
- selections: ReadonlyArray<SelectionNode>;
- }
- export type SelectionNode = FieldNode | FragmentSpreadNode | InlineFragmentNode;
- export interface FieldNode {
- readonly kind: 'Field';
- readonly loc?: Location;
- readonly alias?: NameNode;
- readonly name: NameNode;
- readonly arguments?: ReadonlyArray<ArgumentNode>;
- readonly directives?: ReadonlyArray<DirectiveNode>;
- readonly selectionSet?: SelectionSetNode;
- }
- export interface ArgumentNode {
- readonly kind: 'Argument';
- readonly loc?: Location;
- readonly name: NameNode;
- readonly value: ValueNode;
- }
- // Fragments
- export interface FragmentSpreadNode {
- readonly kind: 'FragmentSpread';
- readonly loc?: Location;
- readonly name: NameNode;
- readonly directives?: ReadonlyArray<DirectiveNode>;
- }
- export interface InlineFragmentNode {
- readonly kind: 'InlineFragment';
- readonly loc?: Location;
- readonly typeCondition?: NamedTypeNode;
- readonly directives?: ReadonlyArray<DirectiveNode>;
- readonly selectionSet: SelectionSetNode;
- }
- export interface FragmentDefinitionNode {
- readonly kind: 'FragmentDefinition';
- readonly loc?: Location;
- readonly name: NameNode;
- // Note: fragment variable definitions are experimental and may be changed
- // or removed in the future.
- readonly variableDefinitions?: ReadonlyArray<VariableDefinitionNode>;
- readonly typeCondition: NamedTypeNode;
- readonly directives?: ReadonlyArray<DirectiveNode>;
- readonly selectionSet: SelectionSetNode;
- }
- // Values
- export type ValueNode =
- | VariableNode
- | IntValueNode
- | FloatValueNode
- | StringValueNode
- | BooleanValueNode
- | NullValueNode
- | EnumValueNode
- | ListValueNode
- | ObjectValueNode;
- export interface IntValueNode {
- readonly kind: 'IntValue';
- readonly loc?: Location;
- readonly value: string;
- }
- export interface FloatValueNode {
- readonly kind: 'FloatValue';
- readonly loc?: Location;
- readonly value: string;
- }
- export interface StringValueNode {
- readonly kind: 'StringValue';
- readonly loc?: Location;
- readonly value: string;
- readonly block?: boolean;
- }
- export interface BooleanValueNode {
- readonly kind: 'BooleanValue';
- readonly loc?: Location;
- readonly value: boolean;
- }
- export interface NullValueNode {
- readonly kind: 'NullValue';
- readonly loc?: Location;
- }
- export interface EnumValueNode {
- readonly kind: 'EnumValue';
- readonly loc?: Location;
- readonly value: string;
- }
- export interface ListValueNode {
- readonly kind: 'ListValue';
- readonly loc?: Location;
- readonly values: ReadonlyArray<ValueNode>;
- }
- export interface ObjectValueNode {
- readonly kind: 'ObjectValue';
- readonly loc?: Location;
- readonly fields: ReadonlyArray<ObjectFieldNode>;
- }
- export interface ObjectFieldNode {
- readonly kind: 'ObjectField';
- readonly loc?: Location;
- readonly name: NameNode;
- readonly value: ValueNode;
- }
- // Directives
- export interface DirectiveNode {
- readonly kind: 'Directive';
- readonly loc?: Location;
- readonly name: NameNode;
- readonly arguments?: ReadonlyArray<ArgumentNode>;
- }
- // Type Reference
- export type TypeNode = NamedTypeNode | ListTypeNode | NonNullTypeNode;
- export interface NamedTypeNode {
- readonly kind: 'NamedType';
- readonly loc?: Location;
- readonly name: NameNode;
- }
- export interface ListTypeNode {
- readonly kind: 'ListType';
- readonly loc?: Location;
- readonly type: TypeNode;
- }
- export interface NonNullTypeNode {
- readonly kind: 'NonNullType';
- readonly loc?: Location;
- readonly type: NamedTypeNode | ListTypeNode;
- }
- // Type System Definition
- export type TypeSystemDefinitionNode =
- | SchemaDefinitionNode
- | TypeDefinitionNode
- | DirectiveDefinitionNode;
- export interface SchemaDefinitionNode {
- readonly kind: 'SchemaDefinition';
- readonly loc?: Location;
- readonly directives?: ReadonlyArray<DirectiveNode>;
- readonly operationTypes: ReadonlyArray<OperationTypeDefinitionNode>;
- }
- export interface OperationTypeDefinitionNode {
- readonly kind: 'OperationTypeDefinition';
- readonly loc?: Location;
- readonly operation: OperationTypeNode;
- readonly type: NamedTypeNode;
- }
- // Type Definition
- export type TypeDefinitionNode =
- | ScalarTypeDefinitionNode
- | ObjectTypeDefinitionNode
- | InterfaceTypeDefinitionNode
- | UnionTypeDefinitionNode
- | EnumTypeDefinitionNode
- | InputObjectTypeDefinitionNode;
- export interface ScalarTypeDefinitionNode {
- readonly kind: 'ScalarTypeDefinition';
- readonly loc?: Location;
- readonly description?: StringValueNode;
- readonly name: NameNode;
- readonly directives?: ReadonlyArray<DirectiveNode>;
- }
- export interface ObjectTypeDefinitionNode {
- readonly kind: 'ObjectTypeDefinition';
- readonly loc?: Location;
- readonly description?: StringValueNode;
- readonly name: NameNode;
- readonly interfaces?: ReadonlyArray<NamedTypeNode>;
- readonly directives?: ReadonlyArray<DirectiveNode>;
- readonly fields?: ReadonlyArray<FieldDefinitionNode>;
- }
- export interface FieldDefinitionNode {
- readonly kind: 'FieldDefinition';
- readonly loc?: Location;
- readonly description?: StringValueNode;
- readonly name: NameNode;
- readonly arguments?: ReadonlyArray<InputValueDefinitionNode>;
- readonly type: TypeNode;
- readonly directives?: ReadonlyArray<DirectiveNode>;
- }
- export interface InputValueDefinitionNode {
- readonly kind: 'InputValueDefinition';
- readonly loc?: Location;
- readonly description?: StringValueNode;
- readonly name: NameNode;
- readonly type: TypeNode;
- readonly defaultValue?: ValueNode;
- readonly directives?: ReadonlyArray<DirectiveNode>;
- }
- export interface InterfaceTypeDefinitionNode {
- readonly kind: 'InterfaceTypeDefinition';
- readonly loc?: Location;
- readonly description?: StringValueNode;
- readonly name: NameNode;
- readonly directives?: ReadonlyArray<DirectiveNode>;
- readonly fields?: ReadonlyArray<FieldDefinitionNode>;
- }
- export interface UnionTypeDefinitionNode {
- readonly kind: 'UnionTypeDefinition';
- readonly loc?: Location;
- readonly description?: StringValueNode;
- readonly name: NameNode;
- readonly directives?: ReadonlyArray<DirectiveNode>;
- readonly types?: ReadonlyArray<NamedTypeNode>;
- }
- export interface EnumTypeDefinitionNode {
- readonly kind: 'EnumTypeDefinition';
- readonly loc?: Location;
- readonly description?: StringValueNode;
- readonly name: NameNode;
- readonly directives?: ReadonlyArray<DirectiveNode>;
- readonly values?: ReadonlyArray<EnumValueDefinitionNode>;
- }
- export interface EnumValueDefinitionNode {
- readonly kind: 'EnumValueDefinition';
- readonly loc?: Location;
- readonly description?: StringValueNode;
- readonly name: NameNode;
- readonly directives?: ReadonlyArray<DirectiveNode>;
- }
- export interface InputObjectTypeDefinitionNode {
- readonly kind: 'InputObjectTypeDefinition';
- readonly loc?: Location;
- readonly description?: StringValueNode;
- readonly name: NameNode;
- readonly directives?: ReadonlyArray<DirectiveNode>;
- readonly fields?: ReadonlyArray<InputValueDefinitionNode>;
- }
- // Directive Definitions
- export interface DirectiveDefinitionNode {
- readonly kind: 'DirectiveDefinition';
- readonly loc?: Location;
- readonly description?: StringValueNode;
- readonly name: NameNode;
- readonly arguments?: ReadonlyArray<InputValueDefinitionNode>;
- readonly repeatable: boolean;
- readonly locations: ReadonlyArray<NameNode>;
- }
- // Type System Extensions
- export type TypeSystemExtensionNode = SchemaExtensionNode | TypeExtensionNode;
- export type SchemaExtensionNode = {
- readonly kind: 'SchemaExtension';
- readonly loc?: Location;
- readonly directives?: ReadonlyArray<DirectiveNode>;
- readonly operationTypes?: ReadonlyArray<OperationTypeDefinitionNode>;
- };
- // Type Extensions
- export type TypeExtensionNode =
- | ScalarTypeExtensionNode
- | ObjectTypeExtensionNode
- | InterfaceTypeExtensionNode
- | UnionTypeExtensionNode
- | EnumTypeExtensionNode
- | InputObjectTypeExtensionNode;
- export interface ScalarTypeExtensionNode {
- readonly kind: 'ScalarTypeExtension';
- readonly loc?: Location;
- readonly name: NameNode;
- readonly directives?: ReadonlyArray<DirectiveNode>;
- }
- export interface ObjectTypeExtensionNode {
- readonly kind: 'ObjectTypeExtension';
- readonly loc?: Location;
- readonly name: NameNode;
- readonly interfaces?: ReadonlyArray<NamedTypeNode>;
- readonly directives?: ReadonlyArray<DirectiveNode>;
- readonly fields?: ReadonlyArray<FieldDefinitionNode>;
- }
- export interface InterfaceTypeExtensionNode {
- readonly kind: 'InterfaceTypeExtension';
- readonly loc?: Location;
- readonly name: NameNode;
- readonly directives?: ReadonlyArray<DirectiveNode>;
- readonly fields?: ReadonlyArray<FieldDefinitionNode>;
- }
- export interface UnionTypeExtensionNode {
- readonly kind: 'UnionTypeExtension';
- readonly loc?: Location;
- readonly name: NameNode;
- readonly directives?: ReadonlyArray<DirectiveNode>;
- readonly types?: ReadonlyArray<NamedTypeNode>;
- }
- export interface EnumTypeExtensionNode {
- readonly kind: 'EnumTypeExtension';
- readonly loc?: Location;
- readonly name: NameNode;
- readonly directives?: ReadonlyArray<DirectiveNode>;
- readonly values?: ReadonlyArray<EnumValueDefinitionNode>;
- }
- export interface InputObjectTypeExtensionNode {
- readonly kind: 'InputObjectTypeExtension';
- readonly loc?: Location;
- readonly name: NameNode;
- readonly directives?: ReadonlyArray<DirectiveNode>;
- readonly fields?: ReadonlyArray<InputValueDefinitionNode>;
- }
|