UNPKG

graphql

Version:

A Query Language and Runtime which can target any service.

1 lines 53.1 kB
{"version":3,"file":"ast.js","sourceRoot":"","sources":["../../src/language/ast.ts"],"names":[],"mappings":"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","sourcesContent":["/** @category AST */\n\nimport type { KindTypeMap } from './KindTypeMap.ts';\nimport type { Source } from './source.ts';\nimport type { TokenKind } from './tokenKind.ts';\n\n/**\n * Contains a range of UTF-8 character offsets and token references that\n * identify the region of the source from which the AST derived.\n */\nexport class Location {\n /** The character offset at which this Node begins. */\n readonly start: number;\n\n /** The character offset at which this Node ends. */\n readonly end: number;\n\n /** The Token at which this Node begins. */\n readonly startToken: Token;\n\n /** The Token at which this Node ends. */\n readonly endToken: Token;\n\n /** The Source document the AST represents. */\n readonly source: Source;\n\n /**\n * Creates a Location instance.\n * @param startToken - The start token.\n * @param endToken - The end token.\n * @param source - Source document used to derive error locations.\n * @example\n * ```ts\n * import { Location, Source, Token, TokenKind } from 'graphql/language';\n *\n * const source = new Source('{ hello }');\n * const startToken = new Token(TokenKind.BRACE_L, 0, 1, 1, 1);\n * const endToken = new Token(TokenKind.BRACE_R, 8, 9, 1, 9);\n * const location = new Location(startToken, endToken, source);\n *\n * location.start; // => 0\n * location.end; // => 9\n * location.source.body; // => '{ hello }'\n * ```\n */\n constructor(startToken: Token, endToken: Token, source: Source) {\n this.start = startToken.start;\n this.end = endToken.end;\n this.startToken = startToken;\n this.endToken = endToken;\n this.source = source;\n }\n\n /**\n * Returns the value used by `Object.prototype.toString`.\n * @returns The built-in string tag for this object.\n */\n get [Symbol.toStringTag](): string {\n return 'Location';\n }\n\n /**\n * Returns a JSON representation of this location.\n * @returns The JSON-serializable representation.\n * @example\n * ```ts\n * import { parse } from 'graphql/language';\n *\n * const document = parse('{ hello }');\n * const location = document.loc?.toJSON();\n *\n * location; // => { start: 0, end: 9 }\n * ```\n */\n toJSON(): { start: number; end: number } {\n return { start: this.start, end: this.end };\n }\n}\n\n/**\n * Represents a range of characters represented by a lexical token\n * within a Source.\n */\nexport class Token {\n /** The kind of Token. */\n readonly kind: TokenKind;\n\n /** The character offset at which this Node begins. */\n readonly start: number;\n\n /** The character offset at which this Node ends. */\n readonly end: number;\n\n /** The 1-indexed line number on which this Token appears. */\n readonly line: number;\n\n /** The 1-indexed column number at which this Token begins. */\n readonly column: number;\n\n /**\n * For non-punctuation tokens, represents the interpreted value of the token.\n *\n * Note: is undefined for punctuation tokens, but typed as string for\n * convenience in the parser.\n */\n readonly value: string;\n\n /**\n * Tokens exist as nodes in a double-linked-list amongst all tokens\n * including ignored tokens. <SOF> is always the first node and <EOF>\n * the last.\n */\n readonly prev: Token | null;\n /** Next token in the token stream, including ignored tokens. */\n readonly next: Token | null;\n\n /**\n * Creates a Token instance.\n * @param kind - Token kind produced by lexical analysis.\n * @param start - Character offset where this token begins.\n * @param end - Character offset where this token ends.\n * @param line - One-indexed line number where this token begins.\n * @param column - One-indexed column number where this token begins.\n * @param value - Interpreted value for non-punctuation tokens.\n * @example\n * ```ts\n * import { Token, TokenKind } from 'graphql/language';\n *\n * const token = new Token(TokenKind.NAME, 2, 7, 1, 3, 'hello');\n *\n * token.kind; // => TokenKind.NAME\n * token.value; // => 'hello'\n * token.toJSON(); // => { kind: 'Name', value: 'hello', line: 1, column: 3 }\n * ```\n */\n // eslint-disable-next-line max-params\n constructor(\n kind: TokenKind,\n start: number,\n end: number,\n line: number,\n column: number,\n value?: string,\n ) {\n this.kind = kind;\n this.start = start;\n this.end = end;\n this.line = line;\n this.column = column;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.value = value!;\n this.prev = null;\n this.next = null;\n }\n\n /**\n * Returns the value used by `Object.prototype.toString`.\n * @returns The built-in string tag for this object.\n */\n get [Symbol.toStringTag](): string {\n return 'Token';\n }\n\n /**\n * Returns a JSON representation of this token.\n * @returns The JSON-serializable representation.\n * @example\n * ```ts\n * import { Lexer, Source } from 'graphql/language';\n *\n * const lexer = new Lexer(new Source('{ hello }'));\n * const token = lexer.advance().toJSON();\n *\n * token; // => { kind: '{', value: undefined, line: 1, column: 1 }\n * ```\n */\n toJSON(): {\n kind: TokenKind;\n value?: string;\n line: number;\n column: number;\n } {\n return {\n kind: this.kind,\n value: this.value,\n line: this.line,\n column: this.column,\n };\n }\n}\n\n/** The list of all possible AST node types. */\nexport type ASTNode =\n | NameNode\n | DocumentNode\n | OperationDefinitionNode\n | VariableDefinitionNode\n | VariableNode\n | SelectionSetNode\n | FieldNode\n | ArgumentNode\n | FragmentArgumentNode\n | FragmentSpreadNode\n | InlineFragmentNode\n | FragmentDefinitionNode\n | IntValueNode\n | FloatValueNode\n | StringValueNode\n | BooleanValueNode\n | NullValueNode\n | EnumValueNode\n | ListValueNode\n | ObjectValueNode\n | ObjectFieldNode\n | DirectiveNode\n | NamedTypeNode\n | ListTypeNode\n | NonNullTypeNode\n | SchemaDefinitionNode\n | OperationTypeDefinitionNode\n | ScalarTypeDefinitionNode\n | ObjectTypeDefinitionNode\n | FieldDefinitionNode\n | InputValueDefinitionNode\n | InterfaceTypeDefinitionNode\n | UnionTypeDefinitionNode\n | EnumTypeDefinitionNode\n | EnumValueDefinitionNode\n | InputObjectTypeDefinitionNode\n | DirectiveDefinitionNode\n | SchemaExtensionNode\n | ScalarTypeExtensionNode\n | ObjectTypeExtensionNode\n | InterfaceTypeExtensionNode\n | UnionTypeExtensionNode\n | EnumTypeExtensionNode\n | InputObjectTypeExtensionNode\n | DirectiveExtensionNode\n | TypeCoordinateNode\n | MemberCoordinateNode\n | ArgumentCoordinateNode\n | DirectiveCoordinateNode\n | DirectiveArgumentCoordinateNode;\n\n/** Utility type listing all nodes indexed by their kind. */\nexport type ASTKindToNode = {\n [NodeT in ASTNode as NodeT['kind']]: NodeT;\n};\n\n/** @internal */\nexport const QueryDocumentKeys: {\n [NodeT in ASTNode as NodeT['kind']]: ReadonlyArray<keyof NodeT>;\n} = {\n Name: [],\n\n Document: ['definitions'],\n OperationDefinition: [\n 'description',\n 'name',\n 'variableDefinitions',\n 'directives',\n 'selectionSet',\n ],\n VariableDefinition: [\n 'description',\n 'variable',\n 'type',\n 'defaultValue',\n 'directives',\n ],\n Variable: ['name'],\n SelectionSet: ['selections'],\n Field: ['alias', 'name', 'arguments', 'directives', 'selectionSet'],\n Argument: ['name', 'value'],\n FragmentArgument: ['name', 'value'],\n\n FragmentSpread: [\n 'name',\n // Note: Fragment arguments are experimental and may be changed or removed\n // in the future.\n 'arguments',\n 'directives',\n ],\n InlineFragment: ['typeCondition', 'directives', 'selectionSet'],\n FragmentDefinition: [\n 'description',\n 'name',\n // Note: Fragment variables are experimental and may be changed or removed\n // in the future.\n 'variableDefinitions',\n 'typeCondition',\n 'directives',\n 'selectionSet',\n ],\n\n IntValue: [],\n FloatValue: [],\n StringValue: [],\n BooleanValue: [],\n NullValue: [],\n EnumValue: [],\n ListValue: ['values'],\n ObjectValue: ['fields'],\n ObjectField: ['name', 'value'],\n\n Directive: ['name', 'arguments'],\n\n NamedType: ['name'],\n ListType: ['type'],\n NonNullType: ['type'],\n\n SchemaDefinition: ['description', 'directives', 'operationTypes'],\n OperationTypeDefinition: ['type'],\n\n ScalarTypeDefinition: ['description', 'name', 'directives'],\n ObjectTypeDefinition: [\n 'description',\n 'name',\n 'interfaces',\n 'directives',\n 'fields',\n ],\n FieldDefinition: ['description', 'name', 'arguments', 'type', 'directives'],\n InputValueDefinition: [\n 'description',\n 'name',\n 'type',\n 'defaultValue',\n 'directives',\n ],\n InterfaceTypeDefinition: [\n 'description',\n 'name',\n 'interfaces',\n 'directives',\n 'fields',\n ],\n UnionTypeDefinition: ['description', 'name', 'directives', 'types'],\n EnumTypeDefinition: ['description', 'name', 'directives', 'values'],\n EnumValueDefinition: ['description', 'name', 'directives'],\n InputObjectTypeDefinition: ['description', 'name', 'directives', 'fields'],\n\n DirectiveDefinition: [\n 'description',\n 'name',\n 'arguments',\n 'directives',\n 'locations',\n ],\n\n SchemaExtension: ['directives', 'operationTypes'],\n DirectiveExtension: ['name', 'directives'],\n\n ScalarTypeExtension: ['name', 'directives'],\n ObjectTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n InterfaceTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n UnionTypeExtension: ['name', 'directives', 'types'],\n EnumTypeExtension: ['name', 'directives', 'values'],\n InputObjectTypeExtension: ['name', 'directives', 'fields'],\n\n TypeCoordinate: ['name'],\n MemberCoordinate: ['name', 'memberName'],\n ArgumentCoordinate: ['name', 'fieldName', 'argumentName'],\n DirectiveCoordinate: ['name'],\n DirectiveArgumentCoordinate: ['name', 'argumentName'],\n};\n\nconst kindValues = new Set<string>(Object.keys(QueryDocumentKeys));\n/** @internal */\nexport function isNode(maybeNode: any): maybeNode is ASTNode {\n const maybeKind = maybeNode?.kind;\n return typeof maybeKind === 'string' && kindValues.has(maybeKind);\n}\n\n/** An identifier in a GraphQL document. */\nexport interface NameNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['NAME'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** Parsed value represented by this node. */\n readonly value: string;\n}\n\n/** The root AST node for a parsed GraphQL document. */\n\nexport interface DocumentNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['DOCUMENT'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** Top-level executable and type-system definitions in this document. */\n readonly definitions: ReadonlyArray<DefinitionNode>;\n /** The number of lexical tokens parsed for this document, if token counting was enabled. */\n readonly tokenCount?: number | undefined;\n}\n\n/** Any top-level definition that may appear in a GraphQL document. */\nexport type DefinitionNode =\n | ExecutableDefinitionNode\n | TypeSystemDefinitionNode\n | TypeSystemExtensionNode;\n\n/** Any executable definition that may appear in an operation document. */\nexport type ExecutableDefinitionNode =\n | OperationDefinitionNode\n | FragmentDefinitionNode;\n\n/** A query, mutation, or subscription operation definition. */\nexport interface OperationDefinitionNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['OPERATION_DEFINITION'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** The optional GraphQL description associated with this definition. */\n readonly description?: StringValueNode | undefined;\n /** The operation selected for execution. */\n readonly operation: OperationTypeNode;\n /** Name node identifying this AST node. */\n readonly name?: NameNode | undefined;\n /** Variable definitions declared by this operation or fragment. */\n readonly variableDefinitions?:\n | ReadonlyArray<VariableDefinitionNode>\n | undefined;\n /** Directives available in this schema or applied to this AST node. */\n readonly directives?: ReadonlyArray<DirectiveNode> | undefined;\n /** Selections made by this operation, field, or fragment. */\n readonly selectionSet: SelectionSetNode;\n}\n\n/**\n * A narrowed OperationDefinitionNode for subscription operations.\n * Subscription operations go through a distinct execution pipeline\n * (source event stream + per-event execution), so narrowing the operation\n * type allows functions in that pipeline to accept only valid input.\n */\nexport interface SubscriptionOperationDefinitionNode extends OperationDefinitionNode {\n /** Subscription operation kind for this definition. */\n readonly operation: (typeof OperationTypeNode)['SUBSCRIPTION'];\n}\n\n/**\n * The operation types supported by GraphQL executable definitions.\n * @category Kinds\n */\nexport const OperationTypeNode = {\n QUERY: 'query' as const,\n MUTATION: 'mutation' as const,\n SUBSCRIPTION: 'subscription' as const,\n} as const;\n\n/**\n * The operation types supported by GraphQL executable definitions.\n * @category Kinds\n */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type OperationTypeNode =\n (typeof OperationTypeNode)[keyof typeof OperationTypeNode];\n\n/** A variable declaration in an operation or experimental fragment definition. */\nexport interface VariableDefinitionNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['VARIABLE_DEFINITION'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** The optional GraphQL description associated with this definition. */\n readonly description?: StringValueNode | undefined;\n /** The variable being defined or referenced. */\n readonly variable: VariableNode;\n /** The GraphQL type reference or runtime type for this element. */\n readonly type: TypeNode;\n /** Default value used when no explicit value is supplied. */\n readonly defaultValue?: ConstValueNode | undefined;\n /** Directives available in this schema or applied to this AST node. */\n readonly directives?: ReadonlyArray<ConstDirectiveNode> | undefined;\n}\n\n/** A variable reference, such as `$id`. */\nexport interface VariableNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['VARIABLE'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** Name node identifying this AST node. */\n readonly name: NameNode;\n}\n\n/** A set of fields and fragments selected from an object, interface, or union. */\nexport interface SelectionSetNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n kind: KindTypeMap['SELECTION_SET'];\n /** The source location for this AST node, if location tracking was enabled. */\n loc?: Location | undefined;\n /** Fields and fragments contained in this selection set. */\n selections: ReadonlyArray<SelectionNode>;\n}\n\n/** Any selection that may appear inside a selection set. */\nexport type SelectionNode = FieldNode | FragmentSpreadNode | InlineFragmentNode;\n\n/** A field selected in an executable GraphQL document. */\nexport interface FieldNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['FIELD'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** The response-key alias for this field, if one was supplied. */\n readonly alias?: NameNode | undefined;\n /** Name node identifying this AST node. */\n readonly name: NameNode;\n /** Arguments supplied to this field, directive, or coordinate. */\n readonly arguments?: ReadonlyArray<ArgumentNode> | undefined;\n /** Directives available in this schema or applied to this AST node. */\n readonly directives?: ReadonlyArray<DirectiveNode> | undefined;\n /** Selections made by this operation, field, or fragment. */\n readonly selectionSet?: SelectionSetNode | undefined;\n}\n\n/** An argument supplied to a field or directive. */\nexport interface ArgumentNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['ARGUMENT'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** Name node identifying this AST node. */\n readonly name: NameNode;\n /** Parsed value represented by this node. */\n readonly value: ValueNode;\n}\n\n/** An argument node whose value is guaranteed to be constant. */\nexport interface ConstArgumentNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['ARGUMENT'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** Name node identifying this AST node. */\n readonly name: NameNode;\n /** Parsed value represented by this node. */\n readonly value: ConstValueNode;\n}\n\n/** Variable definition declared by a fragment argument. */\nexport interface FragmentArgumentNode {\n /** AST node kind for a fragment argument. */\n readonly kind: KindTypeMap['FRAGMENT_ARGUMENT'];\n /** Source location for this fragment argument. */\n readonly loc?: Location | undefined;\n /** Variable name declared by this fragment argument. */\n readonly name: NameNode;\n /** Default value literal for this fragment argument, if provided. */\n readonly value: ValueNode;\n}\n\n/** A named fragment spread, such as `...userFields`. */\nexport interface FragmentSpreadNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['FRAGMENT_SPREAD'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** Name node identifying this AST node. */\n readonly name: NameNode;\n /** Argument values supplied to the referenced fragment. */\n readonly arguments?: ReadonlyArray<FragmentArgumentNode> | undefined;\n /** Directives available in this schema or applied to this AST node. */\n readonly directives?: ReadonlyArray<DirectiveNode> | undefined;\n}\n\n/** An inline fragment spread with an optional type condition. */\nexport interface InlineFragmentNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['INLINE_FRAGMENT'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** The type condition that limits where this fragment applies. */\n readonly typeCondition?: NamedTypeNode | undefined;\n /** Directives available in this schema or applied to this AST node. */\n readonly directives?: ReadonlyArray<DirectiveNode> | undefined;\n /** Selections made by this operation, field, or fragment. */\n readonly selectionSet: SelectionSetNode;\n}\n\n/** A reusable fragment definition declared in an executable document. */\nexport interface FragmentDefinitionNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['FRAGMENT_DEFINITION'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** The optional GraphQL description associated with this definition. */\n readonly description?: StringValueNode | undefined;\n /** Name node identifying this AST node. */\n readonly name: NameNode;\n /** Experimental variable definitions declared by this fragment definition. */\n readonly variableDefinitions?:\n | ReadonlyArray<VariableDefinitionNode>\n | undefined;\n /** The type condition that limits where this fragment applies. */\n readonly typeCondition: NamedTypeNode;\n /** Directives available in this schema or applied to this AST node. */\n readonly directives?: ReadonlyArray<DirectiveNode> | undefined;\n /** Selections made by this operation, field, or fragment. */\n readonly selectionSet: SelectionSetNode;\n}\n\n/** Any value literal that may appear in an executable GraphQL document. */\nexport type ValueNode =\n | VariableNode\n | IntValueNode\n | FloatValueNode\n | StringValueNode\n | BooleanValueNode\n | NullValueNode\n | EnumValueNode\n | ListValueNode\n | ObjectValueNode;\n\n/** Any value literal that is guaranteed not to contain a variable reference. */\nexport type ConstValueNode =\n | IntValueNode\n | FloatValueNode\n | StringValueNode\n | BooleanValueNode\n | NullValueNode\n | EnumValueNode\n | ConstListValueNode\n | ConstObjectValueNode;\n\n/** An integer value literal. */\nexport interface IntValueNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['INT'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** Parsed value represented by this node. */\n readonly value: string;\n}\n\n/** A floating-point value literal. */\nexport interface FloatValueNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['FLOAT'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** Parsed value represented by this node. */\n readonly value: string;\n}\n\n/** A string value literal. */\nexport interface StringValueNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['STRING'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** Parsed value represented by this node. */\n readonly value: string;\n /** Whether this string was parsed from block string syntax. */\n readonly block?: boolean | undefined;\n}\n\n/** A boolean value literal. */\nexport interface BooleanValueNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['BOOLEAN'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** Parsed value represented by this node. */\n readonly value: boolean;\n}\n\n/** A null value literal. */\nexport interface NullValueNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['NULL'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n}\n\n/** An enum value literal. */\nexport interface EnumValueNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['ENUM'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** Parsed value represented by this node. */\n readonly value: string;\n}\n\n/** A list value literal. */\nexport interface ListValueNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['LIST'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** Values contained in this enum, list, or input-object definition. */\n readonly values: ReadonlyArray<ValueNode>;\n}\n\n/** A list value literal whose elements are all constant values. */\nexport interface ConstListValueNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['LIST'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** Values contained in this enum, list, or input-object definition. */\n readonly values: ReadonlyArray<ConstValueNode>;\n}\n\n/** An input object value literal. */\nexport interface ObjectValueNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['OBJECT'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** Fields declared by this object, interface, input object, or literal. */\n readonly fields: ReadonlyArray<ObjectFieldNode>;\n}\n\n/** An input object value literal whose fields are all constant values. */\nexport interface ConstObjectValueNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['OBJECT'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** Fields declared by this object, interface, input object, or literal. */\n readonly fields: ReadonlyArray<ConstObjectFieldNode>;\n}\n\n/** A field inside an input object value literal. */\nexport interface ObjectFieldNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['OBJECT_FIELD'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** Name node identifying this AST node. */\n readonly name: NameNode;\n /** Parsed value represented by this node. */\n readonly value: ValueNode;\n}\n\n/** A field inside a constant input object value literal. */\nexport interface ConstObjectFieldNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['OBJECT_FIELD'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** Name node identifying this AST node. */\n readonly name: NameNode;\n /** Parsed value represented by this node. */\n readonly value: ConstValueNode;\n}\n\n/** A directive applied to an executable or type-system location. */\nexport interface DirectiveNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['DIRECTIVE'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** Name node identifying this AST node. */\n readonly name: NameNode;\n /** Arguments supplied to this field, directive, or coordinate. */\n readonly arguments?: ReadonlyArray<ArgumentNode> | undefined;\n}\n\n/** A directive whose arguments are all constant values. */\nexport interface ConstDirectiveNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['DIRECTIVE'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** Name node identifying this AST node. */\n readonly name: NameNode;\n /** Arguments supplied to this field, directive, or coordinate. */\n readonly arguments?: ReadonlyArray<ConstArgumentNode> | undefined;\n}\n\n// Type Reference\n\n/** Any GraphQL type reference AST node. */\nexport type TypeNode = NamedTypeNode | ListTypeNode | NonNullTypeNode;\n\n/** A named type reference. */\nexport interface NamedTypeNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['NAMED_TYPE'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** Name node identifying this AST node. */\n readonly name: NameNode;\n}\n\n/** A list type reference. */\nexport interface ListTypeNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['LIST_TYPE'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** The GraphQL type reference or runtime type for this element. */\n readonly type: TypeNode;\n}\n\n/** A non-null type reference. */\nexport interface NonNullTypeNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['NON_NULL_TYPE'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** The GraphQL type reference or runtime type for this element. */\n readonly type: NamedTypeNode | ListTypeNode;\n}\n\n// Type System Definition\n\n/** Any type-system definition that may appear in a schema document. */\nexport type TypeSystemDefinitionNode =\n | SchemaDefinitionNode\n | TypeDefinitionNode\n | DirectiveDefinitionNode;\n\n/** A schema definition in a type-system document. */\nexport interface SchemaDefinitionNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['SCHEMA_DEFINITION'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** The optional GraphQL description associated with this definition. */\n readonly description?: StringValueNode | undefined;\n /** Directives available in this schema or applied to this AST node. */\n readonly directives?: ReadonlyArray<ConstDirectiveNode> | undefined;\n /** Root operation types declared by this schema definition or extension. */\n readonly operationTypes: ReadonlyArray<OperationTypeDefinitionNode>;\n}\n\n/** A root operation type declaration inside a schema definition or extension. */\nexport interface OperationTypeDefinitionNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['OPERATION_TYPE_DEFINITION'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** The operation selected for execution. */\n readonly operation: OperationTypeNode;\n /** The GraphQL type reference or runtime type for this element. */\n readonly type: NamedTypeNode;\n}\n\n// Type Definition\n\n/** Any named type definition that may appear in a schema document. */\nexport type TypeDefinitionNode =\n | ScalarTypeDefinitionNode\n | ObjectTypeDefinitionNode\n | InterfaceTypeDefinitionNode\n | UnionTypeDefinitionNode\n | EnumTypeDefinitionNode\n | InputObjectTypeDefinitionNode;\n\n/** A scalar type definition in a type-system document. */\nexport interface ScalarTypeDefinitionNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['SCALAR_TYPE_DEFINITION'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** The optional GraphQL description associated with this definition. */\n readonly description?: StringValueNode | undefined;\n /** Name node identifying this AST node. */\n readonly name: NameNode;\n /** Directives available in this schema or applied to this AST node. */\n readonly directives?: ReadonlyArray<ConstDirectiveNode> | undefined;\n}\n\n/** An object type definition in a type-system document. */\nexport interface ObjectTypeDefinitionNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['OBJECT_TYPE_DEFINITION'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** The optional GraphQL description associated with this definition. */\n readonly description?: StringValueNode | undefined;\n /** Name node identifying this AST node. */\n readonly name: NameNode;\n /** Interfaces implemented by this object or interface type. */\n readonly interfaces?: ReadonlyArray<NamedTypeNode> | undefined;\n /** Directives available in this schema or applied to this AST node. */\n readonly directives?: ReadonlyArray<ConstDirectiveNode> | undefined;\n /** Fields declared by this object, interface, input object, or literal. */\n readonly fields?: ReadonlyArray<FieldDefinitionNode> | undefined;\n}\n\n/** A field definition declared by an object or interface type. */\nexport interface FieldDefinitionNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['FIELD_DEFINITION'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** The optional GraphQL description associated with this definition. */\n readonly description?: StringValueNode | undefined;\n /** Name node identifying this AST node. */\n readonly name: NameNode;\n /** Arguments supplied to this field, directive, or coordinate. */\n readonly arguments?: ReadonlyArray<InputValueDefinitionNode> | undefined;\n /** The GraphQL type reference or runtime type for this element. */\n readonly type: TypeNode;\n /** Directives available in this schema or applied to this AST node. */\n readonly directives?: ReadonlyArray<ConstDirectiveNode> | undefined;\n}\n\n/** An argument or input-field definition. */\nexport interface InputValueDefinitionNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['INPUT_VALUE_DEFINITION'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** The optional GraphQL description associated with this definition. */\n readonly description?: StringValueNode | undefined;\n /** Name node identifying this AST node. */\n readonly name: NameNode;\n /** The GraphQL type reference or runtime type for this element. */\n readonly type: TypeNode;\n /** Default value used when no explicit value is supplied. */\n readonly defaultValue?: ConstValueNode | undefined;\n /** Directives available in this schema or applied to this AST node. */\n readonly directives?: ReadonlyArray<ConstDirectiveNode> | undefined;\n}\n\n/** An interface type definition in a type-system document. */\nexport interface InterfaceTypeDefinitionNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['INTERFACE_TYPE_DEFINITION'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** The optional GraphQL description associated with this definition. */\n readonly description?: StringValueNode | undefined;\n /** Name node identifying this AST node. */\n readonly name: NameNode;\n /** Interfaces implemented by this object or interface type. */\n readonly interfaces?: ReadonlyArray<NamedTypeNode> | undefined;\n /** Directives available in this schema or applied to this AST node. */\n readonly directives?: ReadonlyArray<ConstDirectiveNode> | undefined;\n /** Fields declared by this object, interface, input object, or literal. */\n readonly fields?: ReadonlyArray<FieldDefinitionNode> | undefined;\n}\n\n/** A union type definition in a type-system document. */\nexport interface UnionTypeDefinitionNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['UNION_TYPE_DEFINITION'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** The optional GraphQL description associated with this definition. */\n readonly description?: StringValueNode | undefined;\n /** Name node identifying this AST node. */\n readonly name: NameNode;\n /** Directives available in this schema or applied to this AST node. */\n readonly directives?: ReadonlyArray<ConstDirectiveNode> | undefined;\n /** Object types that belong to this union type. */\n readonly types?: ReadonlyArray<NamedTypeNode> | undefined;\n}\n\n/** An enum type definition in a type-system document. */\nexport interface EnumTypeDefinitionNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['ENUM_TYPE_DEFINITION'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** The optional GraphQL description associated with this definition. */\n readonly description?: StringValueNode | undefined;\n /** Name node identifying this AST node. */\n readonly name: NameNode;\n /** Directives available in this schema or applied to this AST node. */\n readonly directives?: ReadonlyArray<ConstDirectiveNode> | undefined;\n /** Values contained in this enum, list, or input-object definition. */\n readonly values?: ReadonlyArray<EnumValueDefinitionNode> | undefined;\n}\n\n/** An enum value definition. */\nexport interface EnumValueDefinitionNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['ENUM_VALUE_DEFINITION'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** The optional GraphQL description associated with this definition. */\n readonly description?: StringValueNode | undefined;\n /** Name node identifying this AST node. */\n readonly name: NameNode;\n /** Directives available in this schema or applied to this AST node. */\n readonly directives?: ReadonlyArray<ConstDirectiveNode> | undefined;\n}\n\n/** An input object type definition in a type-system document. */\nexport interface InputObjectTypeDefinitionNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['INPUT_OBJECT_TYPE_DEFINITION'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** The optional GraphQL description associated with this definition. */\n readonly description?: StringValueNode | undefined;\n /** Name node identifying this AST node. */\n readonly name: NameNode;\n /** Directives available in this schema or applied to this AST node. */\n readonly directives?: ReadonlyArray<ConstDirectiveNode> | undefined;\n /** Fields declared by this object, interface, input object, or literal. */\n readonly fields?: ReadonlyArray<InputValueDefinitionNode> | undefined;\n}\n\n// Directive Definitions\n\n/** A directive definition in a type-system document. */\nexport interface DirectiveDefinitionNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['DIRECTIVE_DEFINITION'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** The optional GraphQL description associated with this definition. */\n readonly description?: StringValueNode | undefined;\n /** Name node identifying this AST node. */\n readonly name: NameNode;\n /** Arguments supplied to this field, directive, or coordinate. */\n readonly arguments?: ReadonlyArray<InputValueDefinitionNode> | undefined;\n /** Directives available in this schema or applied to this AST node. */\n readonly directives?: ReadonlyArray<ConstDirectiveNode> | undefined;\n /** Whether this directive may appear more than once at the same location. */\n readonly repeatable: boolean;\n /** Locations where this directive may be applied. */\n readonly locations: ReadonlyArray<NameNode>;\n}\n\n// Type System Extensions\n\n/** Any type-system extension that may appear in a schema extension document. */\nexport type TypeSystemExtensionNode =\n | SchemaExtensionNode\n | TypeExtensionNode\n | DirectiveExtensionNode;\n\n/** A schema extension in a type-system document. */\nexport interface SchemaExtensionNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['SCHEMA_EXTENSION'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** Directives available in this schema or applied to this AST node. */\n readonly directives?: ReadonlyArray<ConstDirectiveNode> | undefined;\n /** Root operation types declared by this schema definition or extension. */\n readonly operationTypes?:\n | ReadonlyArray<OperationTypeDefinitionNode>\n | undefined;\n}\n\n// Type Extensions\n\n/** Any named type extension that may appear in a schema extension document. */\nexport type TypeExtensionNode =\n | ScalarTypeExtensionNode\n | ObjectTypeExtensionNode\n | InterfaceTypeExtensionNode\n | UnionTypeExtensionNode\n | EnumTypeExtensionNode\n | InputObjectTypeExtensionNode;\n\n/** A scalar type extension. */\nexport interface ScalarTypeExtensionNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['SCALAR_TYPE_EXTENSION'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** Name node identifying this AST node. */\n readonly name: NameNode;\n /** Directives available in this schema or applied to this AST node. */\n readonly directives?: ReadonlyArray<ConstDirectiveNode> | undefined;\n}\n\n/** An object type extension. */\nexport interface ObjectTypeExtensionNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['OBJECT_TYPE_EXTENSION'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** Name node identifying this AST node. */\n readonly name: NameNode;\n /** Interfaces implemented by this object or interface type. */\n readonly interfaces?: ReadonlyArray<NamedTypeNode> | undefined;\n /** Directives available in this schema or applied to this AST node. */\n readonly directives?: ReadonlyArray<ConstDirectiveNode> | undefined;\n /** Fields declared by this object, interface, input object, or literal. */\n readonly fields?: ReadonlyArray<FieldDefinitionNode> | undefined;\n}\n\n/** An interface type extension. */\nexport interface InterfaceTypeExtensionNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['INTERFACE_TYPE_EXTENSION'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** Name node identifying this AST node. */\n readonly name: NameNode;\n /** Interfaces implemented by this object or interface type. */\n readonly interfaces?: ReadonlyArray<NamedTypeNode> | undefined;\n /** Directives available in this schema or applied to this AST node. */\n readonly directives?: ReadonlyArray<ConstDirectiveNode> | undefined;\n /** Fields declared by this object, interface, input object, or literal. */\n readonly fields?: ReadonlyArray<FieldDefinitionNode> | undefined;\n}\n\n/** A union type extension. */\nexport interface UnionTypeExtensionNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['UNION_TYPE_EXTENSION'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** Name node identifying this AST node. */\n readonly name: NameNode;\n /** Directives available in this schema or applied to this AST node. */\n readonly directives?: ReadonlyArray<ConstDirectiveNode> | undefined;\n /** Object types that belong to this union type. */\n readonly types?: ReadonlyArray<NamedTypeNode> | undefined;\n}\n\n/** An enum type extension. */\nexport interface EnumTypeExtensionNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['ENUM_TYPE_EXTENSION'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** Name node identifying this AST node. */\n readonly name: NameNode;\n /** Directives available in this schema or applied to this AST node. */\n readonly directives?: ReadonlyArray<ConstDirectiveNode> | undefined;\n /** Values contained in this enum, list, or input-object definition. */\n readonly values?: ReadonlyArray<EnumValueDefinitionNode> | undefined;\n}\n\n/** An input object type extension. */\nexport interface InputObjectTypeExtensionNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['INPUT_OBJECT_TYPE_EXTENSION'];\n /** The source location for this AST node, if location tracking was enabled. */\n readonly loc?: Location | undefined;\n /** Name node identifying this AST node. */\n readonly name: NameNode;\n /** Directives available in this schema or applied to this AST node. */\n readonly directives?: ReadonlyArray<ConstDirectiveNode> | undefined;\n /** Fields declared by this object, interface, input object, or literal. */\n readonly fields?: ReadonlyArray<InputValueDefinitionNode> | undefined;\n}\n\n/** A directive extension. */\nexport interface DirectiveExtensionNode {\n /** The discriminator identifying the concrete AST or introspection kind. */\n readonly kind: KindTypeMap['DIRECTIVE_EXTENSION'];\n /** The source location for this AST node, if location tracking w