{"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 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// Schema Coordinates\n\n/** Any AST node representing a GraphQL schema coordinate. */\nexport type SchemaCoordinateNode =\n  | TypeCoordinateNode\n  | MemberCoordinateNode\n  | ArgumentCoordinateNode\n  | DirectiveCoordinateNode\n  | DirectiveArgumentCoordinateNode;\n\n/** A schema coordinate that refers to a named type. */\nexport interface TypeCoordinateNode {\n  /** The discriminator identifying the concrete AST or introspection kind. */\n  readonly kind: KindTypeMap['TYPE_COORDINATE'];\n  /** The source location for this AST node, if location tracking was enabled. */\n  readonly loc?: Location;\n  /** Name node identifying this AST node. */\n  readonly name: NameNode;\n}\n\n/** A schema coordinate that refers to a member of a named type. */\nexport interface MemberCoordinateNode {\n  /** The discriminator identifying the concrete AST or introspection kind. */\n  readonly kind: KindTypeMap['MEMBER_COORDINATE'];\n  /** The source location for this AST node, if location tracking was enabled. */\n  readonly loc?: Location;\n  /** Name node identifying this AST node. */\n  readonly name: NameNode;\n  /** The member name referenced by this schema coordinate. */\n  readonly memberName: NameNode;\n}\n\n/** A schema coordinate that refers to a field or directive argument. */\nexport interface ArgumentCoordinateNode {\n  /** The discriminator identifying the concrete AST or introspection kind. */\n  readonly kind: KindTypeMap['ARGUMENT_COORDINATE'];\n  /** The source location for this AST node, if location tracking was enabled. */\n  readonly loc?: Location;\n  /** Name node identifying this AST node. */\n  readonly name: NameNode;\n  /** The field name referenced by this schema coordinate. */\n  readonly fieldName: NameNode;\n  /** The argument name referenced by this schema coordinate. */\n  readonly argumentName: NameNode;\n}\n\n/** A schema coordinate that refers to a directive. */\nexport interface DirectiveCoordinateNode {\n  /** The discriminator identifying the concrete AST or introspection kind. */\n  readonly kind: KindTypeMap['DIRECTIVE_COORDINATE'];\n  /** The source location for this AST node, if location tracking was enabled. */\n  readonly loc?: Location;\n  /** Name node identifying this AST node. */\n  readonly name: NameNode;\n}\n\n/** A schema coordinate that refers to a directive argument. */\nexport interface DirectiveArgumentCoordinateNode {\n  /** The discriminator identifying the concrete AST or introspection kind. */\n  readonly kind: KindTypeMap['DIRECTIVE_ARGUMENT_COORDINATE'];\n  /** The source location for this AST node, if location tracking was enabled. */\n  readonly loc?: Location;\n  /** Name node identifying this AST node. */\n  readonly name: NameNode;\n  /** The argument name referenced by this schema coordinate. */\n  readonly argumentName: NameNode;\n}\n"]}