/** * Contains a range of UTF-8 character offsets and token references that * identify the region of the source from which the AST derived. */ export class Location { /** * The character offset at which this Node begins. */ /** * The character offset at which this Node ends. */ /** * The Token at which this Node begins. */ /** * The Token at which this Node ends. */ /** * The Source document the AST represents. */ constructor(startToken, endToken, source) { this.start = startToken.start; this.end = endToken.end; this.startToken = startToken; this.endToken = endToken; this.source = source; } get [Symbol.toStringTag]() { return 'Location'; } toJSON() { return { start: this.start, end: this.end, }; } } /** * Represents a range of characters represented by a lexical token * within a Source. */ export class Token { /** * The kind of Token. */ /** * The character offset at which this Node begins. */ /** * The character offset at which this Node ends. */ /** * The 1-indexed line number on which this Token appears. */ /** * The 1-indexed column number at which this Token begins. */ /** * For non-punctuation tokens, represents the interpreted value of the token. * * Note: is undefined for punctuation tokens, but typed as string for * convenience in the parser. */ /** * Tokens exist as nodes in a double-linked-list amongst all tokens * including ignored tokens. is always the first node and * the last. */ constructor(kind, start, end, line, column, value) { this.kind = kind; this.start = start; this.end = end; this.line = line; this.column = column; // eslint-disable-next-line @typescript-eslint/no-non-null-assertion this.value = value; this.prev = null; this.next = null; } get [Symbol.toStringTag]() { return 'Token'; } toJSON() { return { kind: this.kind, value: this.value, line: this.line, column: this.column, }; } } /** * The list of all possible AST node types. */ /** * @internal */ export const QueryDocumentKeys = { Name: [], Document: ['definitions'], OperationDefinition: [ 'name', 'variableDefinitions', 'directives', 'selectionSet', ], VariableDefinition: ['variable', 'type', 'defaultValue', 'directives'], Variable: ['name'], SelectionSet: ['selections'], Field: ['alias', 'name', 'arguments', 'directives', 'selectionSet'], Argument: ['name', 'value'], FragmentSpread: ['name', 'directives'], InlineFragment: ['typeCondition', 'directives', 'selectionSet'], FragmentDefinition: [ 'name', // Note: fragment variable definitions are deprecated and will removed in v17.0.0 'variableDefinitions', 'typeCondition', 'directives', 'selectionSet', ], IntValue: [], FloatValue: [], StringValue: [], BooleanValue: [], NullValue: [], EnumValue: [], ListValue: ['values'], ObjectValue: ['fields'], ObjectField: ['name', 'value'], Directive: ['name', 'arguments'], NamedType: ['name'], ListType: ['type'], NonNullType: ['type'], SchemaDefinition: ['description', 'directives', 'operationTypes'], OperationTypeDefinition: ['type'], ScalarTypeDefinition: ['description', 'name', 'directives'], ObjectTypeDefinition: [ 'description', 'name', 'interfaces', 'directives', 'fields', ], FieldDefinition: ['description', 'name', 'arguments', 'type', 'directives'], InputValueDefinition: [ 'description', 'name', 'type', 'defaultValue', 'directives', ], InterfaceTypeDefinition: [ 'description', 'name', 'interfaces', 'directives', 'fields', ], UnionTypeDefinition: ['description', 'name', 'directives', 'types'], EnumTypeDefinition: ['description', 'name', 'directives', 'values'], EnumValueDefinition: ['description', 'name', 'directives'], InputObjectTypeDefinition: ['description', 'name', 'directives', 'fields'], DirectiveDefinition: ['description', 'name', 'arguments', 'locations'], SchemaExtension: ['directives', 'operationTypes'], ScalarTypeExtension: ['name', 'directives'], ObjectTypeExtension: ['name', 'interfaces', 'directives', 'fields'], InterfaceTypeExtension: ['name', 'interfaces', 'directives', 'fields'], UnionTypeExtension: ['name', 'directives', 'types'], EnumTypeExtension: ['name', 'directives', 'values'], InputObjectTypeExtension: ['name', 'directives', 'fields'], }; const kindValues = new Set(Object.keys(QueryDocumentKeys)); /** * @internal */ export function isNode(maybeNode) { const maybeKind = maybeNode === null || maybeNode === void 0 ? void 0 : maybeNode.kind; return typeof maybeKind === 'string' && kindValues.has(maybeKind); } /** Name */ var OperationTypeNode; (function (OperationTypeNode) { OperationTypeNode['QUERY'] = 'query'; OperationTypeNode['MUTATION'] = 'mutation'; OperationTypeNode['SUBSCRIPTION'] = 'subscription'; })(OperationTypeNode || (OperationTypeNode = {})); export { OperationTypeNode };