Spaces:
Running
Running
| /** | |
| * 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. <SOF> is always the first node and <EOF> | |
| * 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 }; | |