Table of Contents
Source
Source
Represents the input string to the GraphQL server
export class Source {
constructor(body: string, name?: string)
}
getLocation
Converts a character offset to a row and column in the Source
function getLocation(source: Source, position: number): SourceLocation
type SourceLocation = {
line: number;
column: number;
}
Lexer
lex
Lexes a GraphQL Source according to the GraphQL Gramma
function lex(source: Source): Lexer;
type Lexer = (resetPosition?: number) => Token;
export type Token = {
kind: number;
start: number;
end: number;
value: ?string;
};
Parser
parse
Parses a GraphQL Source according to the GraphQL Grammar
export function parse( source: Source | string, options?: ParseOptions ): Document
parseValue
Parses a value according to the GraphQL Grammar
export function parseValue( source: Source | string, options?: ParseOptions ): Value
Visitor
visit
A general-purpose visitor to traverse a parsed GraphQL AST
function visit(root, visitor, keyMap)
Alternatively to providing enter() and leave() functions, a visitor can instead provide functions named the same as the kinds of AST nodes, or enter/leave visitors at a named key, leading to four permutations of visitor API:
- Named visitors triggered when entering a node a specific kind.
visit(ast, {
Kind(node) {
// enter the "Kind" node
}
})
- Named visitors that trigger upon entering and leaving a node of a specific kind.
visit(ast, {
Kind: {
enter(node) {
// enter the "Kind" node
}
leave(node) {
// leave the "Kind" node
}
}
})
- Generic visitors that trigger upon entering and leaving any node.
visit(ast, {
enter(node) {
// enter any node
},
leave(node) {
// leave any node
}
})
- Parallel visitors for entering and leaving nodes of a specific kind.
visit(ast, {
enter: {
Kind(node) {
// enter the "Kind" node
}
},
leave: {
Kind(node) {
// leave the "Kind" node
}
}
})
Printer
print
Prints an AST in a standard format.
function print(ast): string