@0no-co/graphql.web 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"graphql.web.js","sources":["../src/ast.ts","../src/kind.ts","../src/error.ts","../src/parser.ts","../src/visitor.ts","../src/printer.ts"],"sourcesContent":["import type { Kind } from './kind';\n\nexport interface Location {\n readonly start: number;\n readonly end: number;\n readonly source: Source;\n}\n\nexport interface Source {\n body: string;\n name: string;\n locationOffset: {\n line: number;\n column: number;\n };\n}\n\nexport declare type ASTNode =\n | NameNode\n | DocumentNode\n | OperationDefinitionNode\n | VariableDefinitionNode\n | VariableNode\n | SelectionSetNode\n | FieldNode\n | ArgumentNode\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\nexport interface NameNode {\n readonly kind: Kind.NAME;\n readonly value: string;\n}\n\nexport interface DocumentNode {\n readonly kind: Kind.DOCUMENT;\n readonly definitions: ReadonlyArray<ExecutableDefinitionNode>;\n readonly loc?: Location;\n}\n\nexport type DefinitionNode =\n | OperationDefinitionNode\n | FragmentDefinitionNode;\nexport type ExecutableDefinitionNode =\n | OperationDefinitionNode\n | FragmentDefinitionNode;\n\nexport interface OperationDefinitionNode {\n readonly kind: Kind.OPERATION_DEFINITION;\n readonly operation: OperationTypeNode;\n readonly name?: NameNode;\n readonly variableDefinitions?: ReadonlyArray<VariableDefinitionNode>;\n readonly directives?: ReadonlyArray<DirectiveNode>;\n readonly selectionSet: SelectionSetNode;\n}\n\nexport const enum OperationTypeNode {\n QUERY = 'query',\n MUTATION = 'mutation',\n SUBSCRIPTION = 'subscription',\n}\n\nexport interface VariableDefinitionNode {\n readonly kind: Kind.VARIABLE_DEFINITION;\n readonly variable: VariableNode;\n readonly type: TypeNode;\n readonly defaultValue?: ConstValueNode;\n readonly directives?: ReadonlyArray<ConstDirectiveNode>;\n}\n\nexport interface VariableNode {\n readonly kind: Kind.VARIABLE;\n readonly name: NameNode;\n}\n\nexport interface SelectionSetNode {\n kind: Kind.SELECTION_SET;\n selections: ReadonlyArray<SelectionNode>;\n}\n\nexport declare type SelectionNode =\n | FieldNode\n | FragmentSpreadNode\n | InlineFragmentNode;\n\nexport interface FieldNode {\n readonly kind: Kind.FIELD;\n readonly alias?: NameNode;\n readonly name: NameNode;\n readonly arguments?: ReadonlyArray<ArgumentNode>;\n readonly directives?: ReadonlyArray<DirectiveNode>;\n readonly selectionSet?: SelectionSetNode;\n}\n\nexport interface ArgumentNode {\n readonly kind: Kind.ARGUMENT;\n readonly name: NameNode;\n readonly value: ValueNode;\n}\n\nexport interface ConstArgumentNode {\n readonly kind: Kind.ARGUMENT;\n readonly name: NameNode;\n readonly value: ConstValueNode;\n}\n\nexport interface FragmentSpreadNode {\n readonly kind: Kind.FRAGMENT_SPREAD;\n readonly name: NameNode;\n readonly directives?: ReadonlyArray<DirectiveNode>;\n}\n\nexport interface InlineFragmentNode {\n readonly kind: Kind.INLINE_FRAGMENT;\n readonly typeCondition?: NamedTypeNode;\n readonly directives?: ReadonlyArray<DirectiveNode>;\n readonly selectionSet: SelectionSetNode;\n}\n\nexport interface FragmentDefinitionNode {\n readonly kind: Kind.FRAGMENT_DEFINITION;\n readonly name: NameNode;\n readonly typeCondition: NamedTypeNode;\n readonly directives?: ReadonlyArray<DirectiveNode>;\n readonly selectionSet: SelectionSetNode;\n}\n\nexport type ValueNode =\n | VariableNode\n | IntValueNode\n | FloatValueNode\n | StringValueNode\n | BooleanValueNode\n | NullValueNode\n | EnumValueNode\n | ListValueNode\n | ObjectValueNode;\n\nexport type ConstValueNode =\n | IntValueNode\n | FloatValueNode\n | StringValueNode\n | BooleanValueNode\n | NullValueNode\n | EnumValueNode\n | ConstListValueNode\n | ConstObjectValueNode;\n\nexport interface IntValueNode {\n readonly kind: Kind.INT;\n readonly value: string;\n}\n\nexport interface FloatValueNode {\n readonly kind: Kind.FLOAT;\n readonly value: string;\n}\nexport interface StringValueNode {\n readonly kind: Kind.STRING;\n readonly value: string;\n readonly block?: boolean;\n}\n\nexport interface BooleanValueNode {\n readonly kind: Kind.BOOLEAN;\n readonly value: boolean;\n}\n\nexport interface NullValueNode {\n readonly kind: Kind.NULL;\n}\n\nexport interface EnumValueNode {\n readonly kind: Kind.ENUM;\n readonly value: string;\n}\n\nexport interface ListValueNode {\n readonly kind: Kind.LIST;\n readonly values: ReadonlyArray<ValueNode>;\n}\n\nexport interface ConstListValueNode {\n readonly kind: Kind.LIST;\n readonly values: ReadonlyArray<ConstValueNode>;\n}\n\nexport interface ObjectValueNode {\n readonly kind: Kind.OBJECT;\n readonly fields: ReadonlyArray<ObjectFieldNode>;\n}\n\nexport interface ConstObjectValueNode {\n readonly kind: Kind.OBJECT;\n readonly fields: ReadonlyArray<ConstObjectFieldNode>;\n}\n\nexport interface ObjectFieldNode {\n readonly kind: Kind.OBJECT_FIELD;\n readonly name: NameNode;\n readonly value: ValueNode;\n}\n\nexport interface ConstObjectFieldNode {\n readonly kind: Kind.OBJECT_FIELD;\n readonly name: NameNode;\n readonly value: ConstValueNode;\n}\n\nexport interface DirectiveNode {\n readonly kind: Kind.DIRECTIVE;\n readonly name: NameNode;\n readonly arguments?: ReadonlyArray<ArgumentNode>;\n}\n\nexport interface ConstDirectiveNode {\n readonly kind: Kind.DIRECTIVE;\n readonly name: NameNode;\n readonly arguments?: ReadonlyArray<ConstArgumentNode>;\n}\n\nexport declare type TypeNode = NamedTypeNode | ListTypeNode | NonNullTypeNode;\n\nexport interface NamedTypeNode {\n readonly kind: Kind.NAMED_TYPE;\n readonly name: NameNode;\n}\n\nexport interface ListTypeNode {\n readonly kind: Kind.LIST_TYPE;\n readonly type: TypeNode;\n}\n\nexport interface NonNullTypeNode {\n readonly kind: Kind.NON_NULL_TYPE;\n readonly type: NamedTypeNode | ListTypeNode;\n}\n","export enum Kind {\n /** Name */\n NAME = 'Name',\n /** Document */\n DOCUMENT = 'Document',\n OPERATION_DEFINITION = 'OperationDefinition',\n VARIABLE_DEFINITION = 'VariableDefinition',\n SELECTION_SET = 'SelectionSet',\n FIELD = 'Field',\n ARGUMENT = 'Argument',\n /** Fragments */\n FRAGMENT_SPREAD = 'FragmentSpread',\n INLINE_FRAGMENT = 'InlineFragment',\n FRAGMENT_DEFINITION = 'FragmentDefinition',\n /** Values */\n VARIABLE = 'Variable',\n INT = 'IntValue',\n FLOAT = 'FloatValue',\n STRING = 'StringValue',\n BOOLEAN = 'BooleanValue',\n NULL = 'NullValue',\n ENUM = 'EnumValue',\n LIST = 'ListValue',\n OBJECT = 'ObjectValue',\n OBJECT_FIELD = 'ObjectField',\n /** Directives */\n DIRECTIVE = 'Directive',\n /** Types */\n NAMED_TYPE = 'NamedType',\n LIST_TYPE = 'ListType',\n NON_NULL_TYPE = 'NonNullType',\n}\n","import { Maybe, Extensions } from './types';\nimport { ASTNode, Source } from './ast';\n\nexport class GraphQLError extends Error {\n readonly locations: undefined;\n readonly path: ReadonlyArray<string | number> | undefined;\n readonly nodes: ReadonlyArray<ASTNode> | undefined;\n readonly source: Source | undefined;\n readonly positions: ReadonlyArray<number> | undefined;\n readonly originalError: Error | undefined;\n readonly extensions: Extensions;\n\n constructor(\n message: string,\n nodes?: ReadonlyArray<ASTNode> | ASTNode | null,\n source?: Maybe<Source>,\n positions?: Maybe<ReadonlyArray<number>>,\n path?: Maybe<ReadonlyArray<string | number>>,\n originalError?: Maybe<Error>,\n extensions?: Maybe<Extensions>,\n ) {\n super(message);\n\n this.name = 'GraphQLError';\n this.message = message;\n\n if (path) this.path = path;\n if (nodes) this.nodes = (Array.isArray(nodes) ? nodes : [nodes]) as ASTNode[];\n if (source) this.source = source;\n if (positions) this.positions = positions;\n if (originalError) this.originalError = originalError;\n\n let _extensions = extensions;\n if (!_extensions && originalError) {\n const originalExtensions = (originalError as any).extensions;\n if (originalExtensions && typeof originalExtensions === 'object') {\n _extensions = originalExtensions;\n }\n }\n\n this.extensions = extensions || {};\n }\n\n toJSON() {\n return { ...this };\n }\n\n toString() {\n return this.message;\n }\n}\n","/**\n * This is a spec-compliant implementation of a GraphQL query language parser,\n * up-to-date with the October 2021 Edition. Unlike the reference implementation\n * in graphql.js it will only parse the query language, but not the schema\n * language.\n */\nimport { Kind } from './kind';\nimport { GraphQLError } from './error';\nimport type * as ast from './ast';\n\nlet input: string;\nlet idx: number;\n\nfunction error(kind: Kind) {\n return new GraphQLError(`Syntax Error: Unexpected token at ${idx} in ${kind}`);\n}\n\nfunction advance(pattern: RegExp) {\n pattern.lastIndex = idx;\n if (pattern.test(input)) {\n const match = input.slice(idx, idx = pattern.lastIndex);\n return match;\n }\n}\n\nconst leadingRe = / +(?=[^\\s])/y;\nexport function blockString(string: string) {\n let out = '';\n let commonIndent = 0;\n let firstNonEmptyLine = 0;\n let lastNonEmptyLine = -1;\n const lines = string.split('\\n');\n for (let i = 0; i < lines.length; i++) {\n leadingRe.lastIndex = 0;\n if (leadingRe.test(lines[i])) {\n if (i && (!commonIndent || leadingRe.lastIndex < commonIndent))\n commonIndent = leadingRe.lastIndex;\n firstNonEmptyLine = firstNonEmptyLine || i;\n lastNonEmptyLine = i;\n }\n }\n for (let i = firstNonEmptyLine; i <= lastNonEmptyLine; i++) {\n if (i !== firstNonEmptyLine) out += '\\n';\n out += lines[i].slice(commonIndent).replace(/\\\\\"\"\"/g, '\"\"\"');\n }\n return out;\n}\n\nconst ignoredRe = /(?:[\\s,]*|#[^\\n\\r]*)*/y;\nfunction ignored() {\n ignoredRe.lastIndex = idx;\n ignoredRe.test(input);\n idx = ignoredRe.lastIndex;\n}\n\nconst nameRe = /[_\\w][_\\d\\w]*/y;\nfunction name(): ast.NameNode | undefined {\n let match: string | undefined;\n if (match = advance(nameRe)) {\n return {\n kind: Kind.NAME,\n value: match,\n };\n }\n}\n\nconst nullRe = /null/y;\nconst boolRe = /true|false/y;\nconst variableRe = /\\$[_\\w][_\\d\\w]*/y;\nconst intRe = /[-]?\\d+/y;\nconst floatRe = /(?:[-]?\\d+)?(?:\\.\\d+)(?:[eE][+-]?\\d+)?/y;\nconst complexStringRe = /\\\\/g;\nconst blockStringRe = /\"\"\"(?:[\\s\\S]+(?=\"\"\"))?\"\"\"/y;\nconst stringRe = /\"(?:[^\"\\r\\n]+)?\"/y;\n\nfunction value(constant: true): ast.ConstValueNode;\nfunction value(constant: boolean): ast.ValueNode;\n\nfunction value(constant: boolean): ast.ValueNode | undefined {\n let out: ast.ValueNode | undefined;\n let match: string | undefined;\n if (advance(nullRe)) {\n out = { kind: Kind.NULL };\n } else if (match = advance(boolRe)) {\n out = {\n kind: Kind.BOOLEAN,\n value: match === 'true',\n };\n } else if (!constant && (match = advance(variableRe))) {\n out = {\n kind: Kind.VARIABLE,\n name: {\n kind: Kind.NAME,\n value: match.slice(1),\n },\n };\n } else if (match = advance(floatRe)) {\n out = {\n kind: Kind.FLOAT,\n value: match,\n };\n } else if (match = advance(intRe)) {\n out = {\n kind: Kind.INT,\n value: match,\n };\n } else if (match = advance(nameRe)) {\n out = {\n kind: Kind.ENUM,\n value: match,\n };\n } else if (match = advance(blockStringRe)) {\n out = {\n kind: Kind.STRING,\n value: blockString(match.slice(3, -3)),\n block: true,\n };\n } else if (match = advance(stringRe)) {\n out = {\n kind: Kind.STRING,\n value: complexStringRe.test(match)\n ? JSON.parse(match) as string\n : match.slice(1, -1),\n block: false,\n };\n } else if (out = list(constant) || object(constant)) {\n return out;\n }\n\n ignored();\n return out;\n}\n\nfunction list(constant: boolean): ast.ListValueNode | undefined {\n let match: ast.ValueNode | undefined;\n if (input.charCodeAt(idx) === 91 /*'['*/) {\n idx++;\n ignored();\n const values: ast.ValueNode[] = [];\n while (match = value(constant))\n values.push(match);\n if (input.charCodeAt(idx++) !== 93 /*']'*/)\n throw error(Kind.LIST);\n ignored();\n return {\n kind: Kind.LIST,\n values,\n };\n }\n}\n\nfunction object(constant: boolean): ast.ObjectValueNode | undefined {\n if (input.charCodeAt(idx) === 123 /*'{'*/) {\n idx++;\n ignored();\n const fields: ast.ObjectFieldNode[] = [];\n let _name: ast.NameNode | undefined;\n while (_name = name()) {\n ignored();\n if (input.charCodeAt(idx++) !== 58 /*':'*/)\n throw error(Kind.OBJECT_FIELD);\n ignored();\n const _value = value(constant);\n if (!_value)\n throw error(Kind.OBJECT_FIELD);\n fields.push({\n kind: Kind.OBJECT_FIELD,\n name: _name,\n value: _value,\n });\n }\n if (input.charCodeAt(idx++) !== 125 /*'}'*/)\n throw error(Kind.OBJECT);\n ignored();\n return {\n kind: Kind.OBJECT,\n fields,\n };\n }\n}\n\nfunction arguments_(constant: boolean): ast.ArgumentNode[] {\n const args: ast.ArgumentNode[] = [];\n ignored();\n if (input.charCodeAt(idx) === 40 /*'('*/) {\n idx++;\n ignored();\n let _name: ast.NameNode | undefined;\n while (_name = name()) {\n ignored();\n if (input.charCodeAt(idx++) !== 58 /*':'*/)\n throw error(Kind.ARGUMENT);\n ignored();\n const _value = value(constant);\n if (!_value)\n throw error(Kind.ARGUMENT);\n args.push({\n kind: Kind.ARGUMENT,\n name: _name,\n value: _value,\n });\n }\n if (!args.length || input.charCodeAt(idx++) !== 41 /*')'*/)\n throw error(Kind.ARGUMENT);\n ignored();\n }\n return args;\n}\n\nfunction directives(constant: true): ast.ConstDirectiveNode[];\nfunction directives(constant: boolean): ast.DirectiveNode[];\n\nfunction directives(constant: boolean): ast.DirectiveNode[] {\n const directives: ast.DirectiveNode[] = [];\n ignored();\n while (input.charCodeAt(idx) === 64 /*'@'*/) {\n idx++;\n const _name = name();\n if (!_name)\n throw error(Kind.DIRECTIVE);\n ignored();\n directives.push({\n kind: Kind.DIRECTIVE,\n name: _name,\n arguments: arguments_(constant),\n });\n }\n return directives;\n}\n\nfunction field(): ast.FieldNode | undefined {\n ignored();\n let _name = name();\n if (_name) {\n ignored();\n let _alias: ast.NameNode | undefined;\n if (input.charCodeAt(idx) === 58 /*':'*/) {\n idx++;\n ignored();\n _alias = _name;\n _name = name();\n if (!_name)\n throw error(Kind.FIELD);\n ignored();\n }\n return {\n kind: Kind.FIELD,\n alias: _alias,\n name: _name,\n arguments: arguments_(false),\n directives: directives(false),\n selectionSet: selectionSet(),\n };\n }\n}\n\nfunction type(): ast.TypeNode | undefined {\n let match: ast.NameNode | ast.TypeNode | undefined;\n ignored();\n if (input.charCodeAt(idx) === 91 /*'['*/) {\n idx++;\n ignored();\n const _type = type();\n if (!_type || input.charCodeAt(idx++) !== 93 /*']'*/)\n throw error(Kind.LIST_TYPE);\n match = {\n kind: Kind.LIST_TYPE,\n type: _type,\n };\n } else if (match = name()) {\n match = {\n kind: Kind.NAMED_TYPE,\n name: match,\n };\n } else {\n throw error(Kind.NAMED_TYPE);\n }\n\n ignored();\n if (input.charCodeAt(idx) === 33 /*'!'*/) {\n idx++;\n ignored();\n return {\n kind: Kind.NON_NULL_TYPE,\n type: match,\n };\n } else {\n return match;\n }\n}\n\nconst typeConditionRe = /on/y;\nfunction typeCondition(): ast.NamedTypeNode | undefined {\n if (advance(typeConditionRe)) {\n ignored();\n const _name = name();\n if (!_name)\n throw error(Kind.NAMED_TYPE);\n ignored();\n return {\n kind: Kind.NAMED_TYPE,\n name: _name,\n };\n }\n}\n\nconst fragmentSpreadRe = /\\.\\.\\./y;\n\nfunction fragmentSpread(): ast.FragmentSpreadNode | ast.InlineFragmentNode | undefined {\n ignored();\n if (advance(fragmentSpreadRe)) {\n ignored();\n const _idx = idx;\n let _name: ast.NameNode | undefined;\n if ((_name = name()) && _name.value !== 'on') {\n return {\n kind: Kind.FRAGMENT_SPREAD,\n name: _name,\n directives: directives(false),\n };\n } else {\n idx = _idx;\n const _typeCondition = typeCondition();\n const _directives = directives(false);\n const _selectionSet = selectionSet();\n if (!_selectionSet)\n throw error(Kind.INLINE_FRAGMENT);\n return {\n kind: Kind.INLINE_FRAGMENT,\n typeCondition: _typeCondition,\n directives: _directives,\n selectionSet: _selectionSet,\n };\n }\n }\n}\n\nfunction selectionSet(): ast.SelectionSetNode | undefined {\n let match: ast.SelectionNode | undefined;\n ignored();\n if (input.charCodeAt(idx) === 123 /*'{'*/) {\n idx++;\n ignored();\n const selections: ast.SelectionNode[] = [];\n while (match = fragmentSpread() || field())\n selections.push(match);\n if (!selections.length || input.charCodeAt(idx++) !== 125 /*'}'*/)\n throw error(Kind.SELECTION_SET);\n ignored();\n return {\n kind: Kind.SELECTION_SET,\n selections,\n };\n }\n}\n\nfunction variableDefinitions(): ast.VariableDefinitionNode[] {\n let match: string | undefined;\n const vars: ast.VariableDefinitionNode[] = [];\n ignored();\n if (input.charCodeAt(idx) === 40 /*'('*/) {\n idx++;\n ignored();\n while (match = advance(variableRe)) {\n ignored();\n if (input.charCodeAt(idx++) !== 58 /*':'*/)\n throw error(Kind.VARIABLE_DEFINITION);\n const _type = type();\n if (!_type)\n throw error(Kind.VARIABLE_DEFINITION);\n let _defaultValue: ast.ValueNode | undefined;\n if (input.charCodeAt(idx) === 61 /*'='*/) {\n idx++;\n ignored();\n _defaultValue = value(true);\n if (!_defaultValue)\n throw error(Kind.VARIABLE_DEFINITION);\n }\n ignored();\n vars.push({\n kind: Kind.VARIABLE_DEFINITION,\n variable: {\n kind: Kind.VARIABLE,\n name: {\n kind: Kind.NAME,\n value: match.slice(1),\n },\n },\n type: _type,\n defaultValue: _defaultValue as ast.ConstValueNode,\n directives: directives(true),\n });\n }\n if (input.charCodeAt(idx++) !== 41 /*')'*/)\n throw error(Kind.VARIABLE_DEFINITION);\n ignored();\n }\n return vars;\n}\n\nconst fragmentDefinitionRe = /fragment/y;\nfunction fragmentDefinition(): ast.FragmentDefinitionNode | undefined {\n if (advance(fragmentDefinitionRe)) {\n ignored();\n const _name = name();\n if (!_name)\n throw error(Kind.FRAGMENT_DEFINITION);\n ignored();\n const _typeCondition = typeCondition();\n if (!_typeCondition)\n throw error(Kind.FRAGMENT_DEFINITION);\n const _directives = directives(false);\n const _selectionSet = selectionSet();\n if (!_selectionSet)\n throw error(Kind.FRAGMENT_DEFINITION);\n return {\n kind: Kind.FRAGMENT_DEFINITION,\n name: _name,\n typeCondition: _typeCondition,\n directives: _directives,\n selectionSet: _selectionSet,\n };\n }\n}\n\nconst operationDefinitionRe = /query|mutation|subscription/y;\nfunction operationDefinition(): ast.OperationDefinitionNode | undefined {\n let _operation: string | undefined;\n let _name: ast.NameNode | undefined;\n let _variableDefinitions: ast.VariableDefinitionNode[] = [];\n let _directives: ast.DirectiveNode[] = [];\n if (_operation = advance(operationDefinitionRe)) {\n ignored();\n _name = name();\n _variableDefinitions = variableDefinitions();\n _directives = directives(false);\n }\n const _selectionSet = selectionSet();\n if (_selectionSet) {\n return {\n kind: Kind.OPERATION_DEFINITION,\n operation: (_operation || 'query') as ast.OperationTypeNode,\n name: _name,\n variableDefinitions: _variableDefinitions,\n directives: _directives,\n selectionSet: _selectionSet,\n };\n }\n}\n\nfunction document(): ast.DocumentNode {\n let match: ast.DefinitionNode | void;\n ignored();\n const definitions: ast.DefinitionNode[] = [];\n while (match = fragmentDefinition() || operationDefinition())\n definitions.push(match);\n if (idx !== input.length)\n throw error(Kind.DOCUMENT);\n return {\n kind: Kind.DOCUMENT,\n definitions,\n };\n}\n\nexport function parse(string: string): ast.DocumentNode {\n input = string;\n idx = 0;\n return document();\n}\n\nexport function parseValue(string: string): ast.ValueNode | undefined {\n input = string;\n idx = 0;\n ignored();\n return value(false);\n}\n\nexport function parseType(string: string): ast.TypeNode | undefined {\n input = string;\n idx = 0;\n return type();\n}\n","import { ASTNode } from './ast';\n\nexport const BREAK = {};\n\nexport function visit<N extends ASTNode>(root: N, visitor: ASTVisitor): N;\nexport function visit<R>(root: ASTNode, visitor: ASTReducer<R>): R;\n\nexport function visit(node: ASTNode, visitor: ASTVisitor | ASTReducer<any>) {\n const ancestors: Array<ASTNode | ReadonlyArray<ASTNode>>= [];\n const path: Array<string | number> = [];\n\n function traverse(\n node: ASTNode,\n key?: string | number | undefined,\n parent?: ASTNode | ReadonlyArray<ASTNode> | undefined,\n ) {\n let hasEdited = false;\n\n const enter = visitor[node.kind] && visitor[node.kind].enter || visitor[node.kind];\n const resultEnter =\n enter && enter.call(visitor, node, key, parent, path, ancestors);\n if (resultEnter === false) {\n return node;\n } else if (resultEnter === null) {\n return null;\n } else if (resultEnter === BREAK) {\n throw BREAK;\n } else if (resultEnter && typeof resultEnter.kind === 'string') {\n hasEdited = resultEnter !== node;\n node = resultEnter;\n }\n\n if (parent) ancestors.push(parent);\n\n let result: any;\n const copy = { ...node };\n for (const nodeKey in node) {\n path.push(nodeKey);\n let value = node[nodeKey];\n if (Array.isArray(value)) {\n const newValue: any[] = [];\n for (let index = 0; index < value.length; index++) {\n if (value[index] != null && typeof value[index].kind === 'string') {\n ancestors.push(node);\n path.push(index);\n result = traverse(value[index], index, value);\n path.pop();\n ancestors.pop();\n if (result === undefined) {\n newValue.push(value[index]);\n } else if (result === null) {\n hasEdited = true;\n } else {\n hasEdited = hasEdited || result !== value[index];\n newValue.push(result);\n }\n }\n }\n value = newValue;\n } else if (value != null && typeof value.kind === 'string') {\n result = traverse(value, nodeKey, node);\n if (result !== undefined) {\n hasEdited = hasEdited || value !== result;\n value = result;\n }\n }\n\n path.pop();\n if (hasEdited) copy[nodeKey] = value;\n }\n\n if (parent) ancestors.pop();\n const leave = visitor[node.kind] && visitor[node.kind].leave;\n const resultLeave =\n leave && leave.call(visitor, node, key, parent, path, ancestors);\n if (resultLeave === BREAK) {\n throw BREAK;\n } else if (resultLeave !== undefined) {\n return resultLeave;\n } else if (resultEnter !== undefined) {\n return hasEdited ? copy : resultEnter;\n } else {\n return hasEdited ? copy : node;\n }\n }\n\n try {\n const result = traverse(node);\n return result !== undefined && result !== false ? result : node;\n } catch (error) {\n if (error !== BREAK) throw error;\n return node;\n }\n}\n\nexport type ASTVisitor = EnterLeaveVisitor<ASTNode> | KindVisitor;\n\ntype KindVisitor = {\n readonly [NodeT in ASTNode as NodeT['kind']]?:\n | ASTVisitFn<NodeT>\n | EnterLeaveVisitor<NodeT>;\n};\n\ninterface EnterLeaveVisitor<TVisitedNode extends ASTNode> {\n readonly enter?: ASTVisitFn<TVisitedNode> | undefined;\n readonly leave?: ASTVisitFn<TVisitedNode> | undefined;\n}\n\nexport type ASTVisitFn<Node extends ASTNode> = (\n node: Node,\n key: string | number | undefined,\n parent: ASTNode | ReadonlyArray<ASTNode> | undefined,\n path: ReadonlyArray<string | number>,\n ancestors: ReadonlyArray<ASTNode | ReadonlyArray<ASTNode>>,\n) => any;\n\nexport type ASTReducer<R> = {\n readonly [NodeT in ASTNode as NodeT['kind']]?: {\n readonly enter?: ASTVisitFn<NodeT>;\n readonly leave: ASTReducerFn<NodeT, R>;\n };\n};\n\ntype ASTReducerFn<TReducedNode extends ASTNode, R> = (\n node: { [K in keyof TReducedNode]: ReducedField<TReducedNode[K], R> },\n key: string | number | undefined,\n parent: ASTNode | ReadonlyArray<ASTNode> | undefined,\n path: ReadonlyArray<string | number>,\n ancestors: ReadonlyArray<ASTNode | ReadonlyArray<ASTNode>>,\n) => R;\n\ntype ReducedField<T, R> = T extends null | undefined\n ? T\n : T extends ReadonlyArray<any>\n ? ReadonlyArray<R>\n : R;\n","import { Kind } from './kind';\nimport { ASTNode } from './ast';\n\nexport function printString(string: string) {\n return JSON.stringify(string);\n}\n\nexport function printBlockString(string: string) {\n return '\"\"\"\\n' + string.replace(/\"\"\"/g, '\\\\\"\"\"') + '\\n\"\"\"';\n}\n\nconst hasItems = <T>(\n array: ReadonlyArray<T> | undefined | null\n): array is ReadonlyArray<T> => !!(array && array.length);\n\nconst MAX_LINE_LENGTH = 80;\n\nexport function print(node: ASTNode): string {\n let out: string;\n switch (node.kind) {\n case Kind.OPERATION_DEFINITION:\n if (node.operation === 'query' && !node.name && !hasItems(node.variableDefinitions) && !hasItems(node.directives)) {\n return print(node.selectionSet);\n }\n out = node.operation;\n if (node.name)\n out += ' ' + node.name.value;\n if (hasItems(node.variableDefinitions)) {\n if (!node.name) out += ' ';\n out += '(' + node.variableDefinitions.map(print).join(', ') + ')';\n }\n if (hasItems(node.directives))\n out += ' ' + node.directives.map(print).join(' ');\n return out + ' ' + print(node.selectionSet);\n\n case Kind.VARIABLE_DEFINITION:\n out = print(node.variable) +\n ': ' +\n print(node.type);\n if (node.defaultValue)\n out += ' = ' + print(node.defaultValue);\n if (hasItems(node.directives))\n out += ' ' + node.directives.map(print).join(' ');\n return out;\n\n case Kind.FIELD:\n out = (node.alias ? print(node.alias) + ': ' : '') + node.name.value\n if (hasItems(node.arguments)) {\n const args = node.arguments.map(print);\n const argsLine = out + '(' + args.join(', ') + ')';\n out = argsLine.length > MAX_LINE_LENGTH\n ? out + '(\\n ' + args.join('\\n').replace(/\\n/g, '\\n ') + '\\n)'\n : argsLine;\n }\n if (hasItems(node.directives))\n out += ' ' + node.directives.map(print).join(' ');\n return node.selectionSet\n ? out + ' ' + print(node.selectionSet)\n : out;\n\n case Kind.STRING:\n return node.block\n ? printBlockString(node.value)\n : printString(node.value);\n\n case Kind.BOOLEAN:\n return '' + node.value;\n\n case Kind.NULL:\n return 'null';\n\n case Kind.INT:\n case Kind.FLOAT:\n case Kind.ENUM:\n case Kind.NAME:\n return node.value;\n\n case Kind.LIST:\n return '[' + node.values.map(print).join(', ') + ']';\n\n case Kind.OBJECT:\n return '{' + node.fields.map(print).join(', ') + '}';\n\n case Kind.OBJECT_FIELD:\n return node.name.value + ': ' + print(node.value);\n\n case Kind.VARIABLE:\n return '$' + node.name.value;\n\n case Kind.DOCUMENT:\n return hasItems(node.definitions)\n ? node.definitions.map(print).join('\\n\\n')\n : '';\n\n case Kind.SELECTION_SET:\n return '{\\n ' +\n node.selections.map(print).join('\\n').replace(/\\n/g, '\\n ') +\n '\\n}';\n\n case Kind.ARGUMENT:\n return node.name.value + ': ' + print(node.value);\n\n case Kind.FRAGMENT_SPREAD:\n out = '...' + node.name.value;\n if (hasItems(node.directives))\n out += ' ' + node.directives.map(print).join(' ');\n return out;\n\n case Kind.INLINE_FRAGMENT:\n out = '...';\n if (node.typeCondition)\n out += ' on ' + node.typeCondition.name.value;\n if (hasItems(node.directives))\n out += ' ' + node.directives.map(print).join(' ');\n return out + ' ' + print(node.selectionSet);\n\n case Kind.FRAGMENT_DEFINITION:\n out = 'fragment ' + node.name.value;\n out += ' on ' + node.typeCondition.name.value;\n if (hasItems(node.directives))\n out += ' ' + node.directives.map(print).join(' ');\n return out + ' ' + print(node.selectionSet);\n \n case Kind.DIRECTIVE:\n out = '@' + node.name.value;\n if (hasItems(node.arguments))\n out += '(' + node.arguments.map(print).join(', ') + ')';\n return out;\n\n case Kind.NAMED_TYPE:\n return node.name.value;\n\n case Kind.LIST_TYPE:\n return '[' + print(node.type) + ']';\n\n case Kind.NON_NULL_TYPE:\n return print(node.type) + '!';\n }\n}\n"],"names":["OperationTypeNode","Kind","GraphQLError","Error","constructor","message","nodes","source","positions","path","originalError","extensions","super","this","name","Array","isArray","const","originalExtensions","toJSON","toString","let","input","idx","error","kind","advance","pattern","lastIndex","test","slice","leadingRe","blockString","string","out","commonIndent","firstNonEmptyLine","lastNonEmptyLine","lines","split","i","length","replace","ignoredRe","ignored","nameRe","match","NAME","value","nullRe","boolRe","variableRe","intRe","floatRe","complexStringRe","blockStringRe","stringRe","constant","NULL","BOOLEAN","VARIABLE","FLOAT","INT","ENUM","STRING","block","JSON","parse","list","charCodeAt","values","push","LIST","object","fields","_name","OBJECT_FIELD","_value","OBJECT","arguments_","args","ARGUMENT","directives","DIRECTIVE","arguments","field","_alias","FIELD","alias","selectionSet","type","_type","LIST_TYPE","NAMED_TYPE","NON_NULL_TYPE","typeConditionRe","typeCondition","fragmentSpreadRe","fragmentSpread","_idx","FRAGMENT_SPREAD","_typeCondition","_directives","_selectionSet","INLINE_FRAGMENT","selections","SELECTION_SET","fragmentDefinitionRe","fragmentDefinition","FRAGMENT_DEFINITION","operationDefinitionRe","operationDefinition","_operation","_variableDefinitions","variableDefinitions","vars","VARIABLE_DEFINITION","_defaultValue","variable","defaultValue","OPERATION_DEFINITION","operation","BREAK","printString","stringify","printBlockString","hasItems","array","MAX_LINE_LENGTH","document","definitions","DOCUMENT","parseType","parseValue","print","node","map","join","argsLine","visit","visitor","ancestors","result","traverse","key","parent","hasEdited","enter","resultEnter","call","copy","nodeKey","newValue","index","pop","undefined","leave","resultLeave"],"mappings":"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"}
1
+ {"version":3,"file":"graphql.web.js","sources":["../src/ast.ts","../src/kind.ts","../src/error.ts","../src/parser.ts","../src/visitor.ts","../src/printer.ts","../src/values.ts"],"sourcesContent":["import type { Kind } from './kind';\n\nexport interface Location {\n readonly start: number;\n readonly end: number;\n readonly source: Source;\n}\n\nexport interface Source {\n body: string;\n name: string;\n locationOffset: {\n line: number;\n column: number;\n };\n}\n\nexport declare type ASTNode =\n | NameNode\n | DocumentNode\n | OperationDefinitionNode\n | VariableDefinitionNode\n | VariableNode\n | SelectionSetNode\n | FieldNode\n | ArgumentNode\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\nexport interface NameNode {\n readonly kind: Kind.NAME;\n readonly value: string;\n}\n\nexport interface DocumentNode {\n readonly kind: Kind.DOCUMENT;\n readonly definitions: ReadonlyArray<ExecutableDefinitionNode>;\n readonly loc?: Location;\n}\n\nexport type DefinitionNode =\n | OperationDefinitionNode\n | FragmentDefinitionNode;\nexport type ExecutableDefinitionNode =\n | OperationDefinitionNode\n | FragmentDefinitionNode;\n\nexport interface OperationDefinitionNode {\n readonly kind: Kind.OPERATION_DEFINITION;\n readonly operation: OperationTypeNode;\n readonly name?: NameNode;\n readonly variableDefinitions?: ReadonlyArray<VariableDefinitionNode>;\n readonly directives?: ReadonlyArray<DirectiveNode>;\n readonly selectionSet: SelectionSetNode;\n}\n\nexport const enum OperationTypeNode {\n QUERY = 'query',\n MUTATION = 'mutation',\n SUBSCRIPTION = 'subscription',\n}\n\nexport interface VariableDefinitionNode {\n readonly kind: Kind.VARIABLE_DEFINITION;\n readonly variable: VariableNode;\n readonly type: TypeNode;\n readonly defaultValue?: ConstValueNode;\n readonly directives?: ReadonlyArray<ConstDirectiveNode>;\n}\n\nexport interface VariableNode {\n readonly kind: Kind.VARIABLE;\n readonly name: NameNode;\n}\n\nexport interface SelectionSetNode {\n kind: Kind.SELECTION_SET;\n selections: ReadonlyArray<SelectionNode>;\n}\n\nexport declare type SelectionNode =\n | FieldNode\n | FragmentSpreadNode\n | InlineFragmentNode;\n\nexport interface FieldNode {\n readonly kind: Kind.FIELD;\n readonly alias?: NameNode;\n readonly name: NameNode;\n readonly arguments?: ReadonlyArray<ArgumentNode>;\n readonly directives?: ReadonlyArray<DirectiveNode>;\n readonly selectionSet?: SelectionSetNode;\n}\n\nexport interface ArgumentNode {\n readonly kind: Kind.ARGUMENT;\n readonly name: NameNode;\n readonly value: ValueNode;\n}\n\nexport interface ConstArgumentNode {\n readonly kind: Kind.ARGUMENT;\n readonly name: NameNode;\n readonly value: ConstValueNode;\n}\n\nexport interface FragmentSpreadNode {\n readonly kind: Kind.FRAGMENT_SPREAD;\n readonly name: NameNode;\n readonly directives?: ReadonlyArray<DirectiveNode>;\n}\n\nexport interface InlineFragmentNode {\n readonly kind: Kind.INLINE_FRAGMENT;\n readonly typeCondition?: NamedTypeNode;\n readonly directives?: ReadonlyArray<DirectiveNode>;\n readonly selectionSet: SelectionSetNode;\n}\n\nexport interface FragmentDefinitionNode {\n readonly kind: Kind.FRAGMENT_DEFINITION;\n readonly name: NameNode;\n readonly typeCondition: NamedTypeNode;\n readonly directives?: ReadonlyArray<DirectiveNode>;\n readonly selectionSet: SelectionSetNode;\n}\n\nexport type ValueNode =\n | VariableNode\n | IntValueNode\n | FloatValueNode\n | StringValueNode\n | BooleanValueNode\n | NullValueNode\n | EnumValueNode\n | ListValueNode\n | ObjectValueNode;\n\nexport type ConstValueNode =\n | IntValueNode\n | FloatValueNode\n | StringValueNode\n | BooleanValueNode\n | NullValueNode\n | EnumValueNode\n | ConstListValueNode\n | ConstObjectValueNode;\n\nexport interface IntValueNode {\n readonly kind: Kind.INT;\n readonly value: string;\n}\n\nexport interface FloatValueNode {\n readonly kind: Kind.FLOAT;\n readonly value: string;\n}\nexport interface StringValueNode {\n readonly kind: Kind.STRING;\n readonly value: string;\n readonly block?: boolean;\n}\n\nexport interface BooleanValueNode {\n readonly kind: Kind.BOOLEAN;\n readonly value: boolean;\n}\n\nexport interface NullValueNode {\n readonly kind: Kind.NULL;\n}\n\nexport interface EnumValueNode {\n readonly kind: Kind.ENUM;\n readonly value: string;\n}\n\nexport interface ListValueNode {\n readonly kind: Kind.LIST;\n readonly values: ReadonlyArray<ValueNode>;\n}\n\nexport interface ConstListValueNode {\n readonly kind: Kind.LIST;\n readonly values: ReadonlyArray<ConstValueNode>;\n}\n\nexport interface ObjectValueNode {\n readonly kind: Kind.OBJECT;\n readonly fields: ReadonlyArray<ObjectFieldNode>;\n}\n\nexport interface ConstObjectValueNode {\n readonly kind: Kind.OBJECT;\n readonly fields: ReadonlyArray<ConstObjectFieldNode>;\n}\n\nexport interface ObjectFieldNode {\n readonly kind: Kind.OBJECT_FIELD;\n readonly name: NameNode;\n readonly value: ValueNode;\n}\n\nexport interface ConstObjectFieldNode {\n readonly kind: Kind.OBJECT_FIELD;\n readonly name: NameNode;\n readonly value: ConstValueNode;\n}\n\nexport interface DirectiveNode {\n readonly kind: Kind.DIRECTIVE;\n readonly name: NameNode;\n readonly arguments?: ReadonlyArray<ArgumentNode>;\n}\n\nexport interface ConstDirectiveNode {\n readonly kind: Kind.DIRECTIVE;\n readonly name: NameNode;\n readonly arguments?: ReadonlyArray<ConstArgumentNode>;\n}\n\nexport declare type TypeNode = NamedTypeNode | ListTypeNode | NonNullTypeNode;\n\nexport interface NamedTypeNode {\n readonly kind: Kind.NAMED_TYPE;\n readonly name: NameNode;\n}\n\nexport interface ListTypeNode {\n readonly kind: Kind.LIST_TYPE;\n readonly type: TypeNode;\n}\n\nexport interface NonNullTypeNode {\n readonly kind: Kind.NON_NULL_TYPE;\n readonly type: NamedTypeNode | ListTypeNode;\n}\n","export enum Kind {\n /** Name */\n NAME = 'Name',\n /** Document */\n DOCUMENT = 'Document',\n OPERATION_DEFINITION = 'OperationDefinition',\n VARIABLE_DEFINITION = 'VariableDefinition',\n SELECTION_SET = 'SelectionSet',\n FIELD = 'Field',\n ARGUMENT = 'Argument',\n /** Fragments */\n FRAGMENT_SPREAD = 'FragmentSpread',\n INLINE_FRAGMENT = 'InlineFragment',\n FRAGMENT_DEFINITION = 'FragmentDefinition',\n /** Values */\n VARIABLE = 'Variable',\n INT = 'IntValue',\n FLOAT = 'FloatValue',\n STRING = 'StringValue',\n BOOLEAN = 'BooleanValue',\n NULL = 'NullValue',\n ENUM = 'EnumValue',\n LIST = 'ListValue',\n OBJECT = 'ObjectValue',\n OBJECT_FIELD = 'ObjectField',\n /** Directives */\n DIRECTIVE = 'Directive',\n /** Types */\n NAMED_TYPE = 'NamedType',\n LIST_TYPE = 'ListType',\n NON_NULL_TYPE = 'NonNullType',\n}\n","import { Maybe, Extensions } from './types';\nimport { ASTNode, Source } from './ast';\n\nexport class GraphQLError extends Error {\n readonly locations: undefined;\n readonly path: ReadonlyArray<string | number> | undefined;\n readonly nodes: ReadonlyArray<ASTNode> | undefined;\n readonly source: Source | undefined;\n readonly positions: ReadonlyArray<number> | undefined;\n readonly originalError: Error | undefined;\n readonly extensions: Extensions;\n\n constructor(\n message: string,\n nodes?: ReadonlyArray<ASTNode> | ASTNode | null,\n source?: Maybe<Source>,\n positions?: Maybe<ReadonlyArray<number>>,\n path?: Maybe<ReadonlyArray<string | number>>,\n originalError?: Maybe<Error>,\n extensions?: Maybe<Extensions>,\n ) {\n super(message);\n\n this.name = 'GraphQLError';\n this.message = message;\n\n if (path) this.path = path;\n if (nodes) this.nodes = (Array.isArray(nodes) ? nodes : [nodes]) as ASTNode[];\n if (source) this.source = source;\n if (positions) this.positions = positions;\n if (originalError) this.originalError = originalError;\n\n let _extensions = extensions;\n if (!_extensions && originalError) {\n const originalExtensions = (originalError as any).extensions;\n if (originalExtensions && typeof originalExtensions === 'object') {\n _extensions = originalExtensions;\n }\n }\n\n this.extensions = extensions || {};\n }\n\n toJSON() {\n return { ...this };\n }\n\n toString() {\n return this.message;\n }\n}\n","/**\n * This is a spec-compliant implementation of a GraphQL query language parser,\n * up-to-date with the October 2021 Edition. Unlike the reference implementation\n * in graphql.js it will only parse the query language, but not the schema\n * language.\n */\nimport { Kind } from './kind';\nimport { GraphQLError } from './error';\nimport type * as ast from './ast';\n\nlet input: string;\nlet idx: number;\n\nfunction error(kind: Kind) {\n return new GraphQLError(`Syntax Error: Unexpected token at ${idx} in ${kind}`);\n}\n\nfunction advance(pattern: RegExp) {\n pattern.lastIndex = idx;\n if (pattern.test(input)) {\n const match = input.slice(idx, idx = pattern.lastIndex);\n return match;\n }\n}\n\nconst leadingRe = / +(?=[^\\s])/y;\nexport function blockString(string: string) {\n let out = '';\n let commonIndent = 0;\n let firstNonEmptyLine = 0;\n let lastNonEmptyLine = -1;\n const lines = string.split('\\n');\n for (let i = 0; i < lines.length; i++) {\n leadingRe.lastIndex = 0;\n if (leadingRe.test(lines[i])) {\n if (i && (!commonIndent || leadingRe.lastIndex < commonIndent))\n commonIndent = leadingRe.lastIndex;\n firstNonEmptyLine = firstNonEmptyLine || i;\n lastNonEmptyLine = i;\n }\n }\n for (let i = firstNonEmptyLine; i <= lastNonEmptyLine; i++) {\n if (i !== firstNonEmptyLine) out += '\\n';\n out += lines[i].slice(commonIndent).replace(/\\\\\"\"\"/g, '\"\"\"');\n }\n return out;\n}\n\nconst ignoredRe = /(?:[\\s,]*|#[^\\n\\r]*)*/y;\nfunction ignored() {\n ignoredRe.lastIndex = idx;\n ignoredRe.test(input);\n idx = ignoredRe.lastIndex;\n}\n\nconst nameRe = /[_\\w][_\\d\\w]*/y;\nfunction name(): ast.NameNode | undefined {\n let match: string | undefined;\n if (match = advance(nameRe)) {\n return {\n kind: Kind.NAME,\n value: match,\n };\n }\n}\n\nconst nullRe = /null/y;\nconst boolRe = /true|false/y;\nconst variableRe = /\\$[_\\w][_\\d\\w]*/y;\nconst intRe = /[-]?\\d+/y;\nconst floatRe = /(?:[-]?\\d+)?(?:\\.\\d+)(?:[eE][+-]?\\d+)?/y;\nconst complexStringRe = /\\\\/g;\nconst blockStringRe = /\"\"\"(?:[\\s\\S]+(?=\"\"\"))?\"\"\"/y;\nconst stringRe = /\"(?:[^\"\\r\\n]+)?\"/y;\n\nfunction value(constant: true): ast.ConstValueNode;\nfunction value(constant: boolean): ast.ValueNode;\n\nfunction value(constant: boolean): ast.ValueNode | undefined {\n let out: ast.ValueNode | undefined;\n let match: string | undefined;\n if (advance(nullRe)) {\n out = { kind: Kind.NULL };\n } else if (match = advance(boolRe)) {\n out = {\n kind: Kind.BOOLEAN,\n value: match === 'true',\n };\n } else if (!constant && (match = advance(variableRe))) {\n out = {\n kind: Kind.VARIABLE,\n name: {\n kind: Kind.NAME,\n value: match.slice(1),\n },\n };\n } else if (match = advance(floatRe)) {\n out = {\n kind: Kind.FLOAT,\n value: match,\n };\n } else if (match = advance(intRe)) {\n out = {\n kind: Kind.INT,\n value: match,\n };\n } else if (match = advance(nameRe)) {\n out = {\n kind: Kind.ENUM,\n value: match,\n };\n } else if (match = advance(blockStringRe)) {\n out = {\n kind: Kind.STRING,\n value: blockString(match.slice(3, -3)),\n block: true,\n };\n } else if (match = advance(stringRe)) {\n out = {\n kind: Kind.STRING,\n value: complexStringRe.test(match)\n ? JSON.parse(match) as string\n : match.slice(1, -1),\n block: false,\n };\n } else if (out = list(constant) || object(constant)) {\n return out;\n }\n\n ignored();\n return out;\n}\n\nfunction list(constant: boolean): ast.ListValueNode | undefined {\n let match: ast.ValueNode | undefined;\n if (input.charCodeAt(idx) === 91 /*'['*/) {\n idx++;\n ignored();\n const values: ast.ValueNode[] = [];\n while (match = value(constant))\n values.push(match);\n if (input.charCodeAt(idx++) !== 93 /*']'*/)\n throw error(Kind.LIST);\n ignored();\n return {\n kind: Kind.LIST,\n values,\n };\n }\n}\n\nfunction object(constant: boolean): ast.ObjectValueNode | undefined {\n if (input.charCodeAt(idx) === 123 /*'{'*/) {\n idx++;\n ignored();\n const fields: ast.ObjectFieldNode[] = [];\n let _name: ast.NameNode | undefined;\n while (_name = name()) {\n ignored();\n if (input.charCodeAt(idx++) !== 58 /*':'*/)\n throw error(Kind.OBJECT_FIELD);\n ignored();\n const _value = value(constant);\n if (!_value)\n throw error(Kind.OBJECT_FIELD);\n fields.push({\n kind: Kind.OBJECT_FIELD,\n name: _name,\n value: _value,\n });\n }\n if (input.charCodeAt(idx++) !== 125 /*'}'*/)\n throw error(Kind.OBJECT);\n ignored();\n return {\n kind: Kind.OBJECT,\n fields,\n };\n }\n}\n\nfunction arguments_(constant: boolean): ast.ArgumentNode[] {\n const args: ast.ArgumentNode[] = [];\n ignored();\n if (input.charCodeAt(idx) === 40 /*'('*/) {\n idx++;\n ignored();\n let _name: ast.NameNode | undefined;\n while (_name = name()) {\n ignored();\n if (input.charCodeAt(idx++) !== 58 /*':'*/)\n throw error(Kind.ARGUMENT);\n ignored();\n const _value = value(constant);\n if (!_value)\n throw error(Kind.ARGUMENT);\n args.push({\n kind: Kind.ARGUMENT,\n name: _name,\n value: _value,\n });\n }\n if (!args.length || input.charCodeAt(idx++) !== 41 /*')'*/)\n throw error(Kind.ARGUMENT);\n ignored();\n }\n return args;\n}\n\nfunction directives(constant: true): ast.ConstDirectiveNode[];\nfunction directives(constant: boolean): ast.DirectiveNode[];\n\nfunction directives(constant: boolean): ast.DirectiveNode[] {\n const directives: ast.DirectiveNode[] = [];\n ignored();\n while (input.charCodeAt(idx) === 64 /*'@'*/) {\n idx++;\n const _name = name();\n if (!_name)\n throw error(Kind.DIRECTIVE);\n ignored();\n directives.push({\n kind: Kind.DIRECTIVE,\n name: _name,\n arguments: arguments_(constant),\n });\n }\n return directives;\n}\n\nfunction field(): ast.FieldNode | undefined {\n ignored();\n let _name = name();\n if (_name) {\n ignored();\n let _alias: ast.NameNode | undefined;\n if (input.charCodeAt(idx) === 58 /*':'*/) {\n idx++;\n ignored();\n _alias = _name;\n _name = name();\n if (!_name)\n throw error(Kind.FIELD);\n ignored();\n }\n return {\n kind: Kind.FIELD,\n alias: _alias,\n name: _name,\n arguments: arguments_(false),\n directives: directives(false),\n selectionSet: selectionSet(),\n };\n }\n}\n\nfunction type(): ast.TypeNode | undefined {\n let match: ast.NameNode | ast.TypeNode | undefined;\n ignored();\n if (input.charCodeAt(idx) === 91 /*'['*/) {\n idx++;\n ignored();\n const _type = type();\n if (!_type || input.charCodeAt(idx++) !== 93 /*']'*/)\n throw error(Kind.LIST_TYPE);\n match = {\n kind: Kind.LIST_TYPE,\n type: _type,\n };\n } else if (match = name()) {\n match = {\n kind: Kind.NAMED_TYPE,\n name: match,\n };\n } else {\n throw error(Kind.NAMED_TYPE);\n }\n\n ignored();\n if (input.charCodeAt(idx) === 33 /*'!'*/) {\n idx++;\n ignored();\n return {\n kind: Kind.NON_NULL_TYPE,\n type: match,\n };\n } else {\n return match;\n }\n}\n\nconst typeConditionRe = /on/y;\nfunction typeCondition(): ast.NamedTypeNode | undefined {\n if (advance(typeConditionRe)) {\n ignored();\n const _name = name();\n if (!_name)\n throw error(Kind.NAMED_TYPE);\n ignored();\n return {\n kind: Kind.NAMED_TYPE,\n name: _name,\n };\n }\n}\n\nconst fragmentSpreadRe = /\\.\\.\\./y;\n\nfunction fragmentSpread(): ast.FragmentSpreadNode | ast.InlineFragmentNode | undefined {\n ignored();\n if (advance(fragmentSpreadRe)) {\n ignored();\n const _idx = idx;\n let _name: ast.NameNode | undefined;\n if ((_name = name()) && _name.value !== 'on') {\n return {\n kind: Kind.FRAGMENT_SPREAD,\n name: _name,\n directives: directives(false),\n };\n } else {\n idx = _idx;\n const _typeCondition = typeCondition();\n const _directives = directives(false);\n const _selectionSet = selectionSet();\n if (!_selectionSet)\n throw error(Kind.INLINE_FRAGMENT);\n return {\n kind: Kind.INLINE_FRAGMENT,\n typeCondition: _typeCondition,\n directives: _directives,\n selectionSet: _selectionSet,\n };\n }\n }\n}\n\nfunction selectionSet(): ast.SelectionSetNode | undefined {\n let match: ast.SelectionNode | undefined;\n ignored();\n if (input.charCodeAt(idx) === 123 /*'{'*/) {\n idx++;\n ignored();\n const selections: ast.SelectionNode[] = [];\n while (match = fragmentSpread() || field())\n selections.push(match);\n if (!selections.length || input.charCodeAt(idx++) !== 125 /*'}'*/)\n throw error(Kind.SELECTION_SET);\n ignored();\n return {\n kind: Kind.SELECTION_SET,\n selections,\n };\n }\n}\n\nfunction variableDefinitions(): ast.VariableDefinitionNode[] {\n let match: string | undefined;\n const vars: ast.VariableDefinitionNode[] = [];\n ignored();\n if (input.charCodeAt(idx) === 40 /*'('*/) {\n idx++;\n ignored();\n while (match = advance(variableRe)) {\n ignored();\n if (input.charCodeAt(idx++) !== 58 /*':'*/)\n throw error(Kind.VARIABLE_DEFINITION);\n const _type = type();\n if (!_type)\n throw error(Kind.VARIABLE_DEFINITION);\n let _defaultValue: ast.ValueNode | undefined;\n if (input.charCodeAt(idx) === 61 /*'='*/) {\n idx++;\n ignored();\n _defaultValue = value(true);\n if (!_defaultValue)\n throw error(Kind.VARIABLE_DEFINITION);\n }\n ignored();\n vars.push({\n kind: Kind.VARIABLE_DEFINITION,\n variable: {\n kind: Kind.VARIABLE,\n name: {\n kind: Kind.NAME,\n value: match.slice(1),\n },\n },\n type: _type,\n defaultValue: _defaultValue as ast.ConstValueNode,\n directives: directives(true),\n });\n }\n if (input.charCodeAt(idx++) !== 41 /*')'*/)\n throw error(Kind.VARIABLE_DEFINITION);\n ignored();\n }\n return vars;\n}\n\nconst fragmentDefinitionRe = /fragment/y;\nfunction fragmentDefinition(): ast.FragmentDefinitionNode | undefined {\n if (advance(fragmentDefinitionRe)) {\n ignored();\n const _name = name();\n if (!_name)\n throw error(Kind.FRAGMENT_DEFINITION);\n ignored();\n const _typeCondition = typeCondition();\n if (!_typeCondition)\n throw error(Kind.FRAGMENT_DEFINITION);\n const _directives = directives(false);\n const _selectionSet = selectionSet();\n if (!_selectionSet)\n throw error(Kind.FRAGMENT_DEFINITION);\n return {\n kind: Kind.FRAGMENT_DEFINITION,\n name: _name,\n typeCondition: _typeCondition,\n directives: _directives,\n selectionSet: _selectionSet,\n };\n }\n}\n\nconst operationDefinitionRe = /query|mutation|subscription/y;\nfunction operationDefinition(): ast.OperationDefinitionNode | undefined {\n let _operation: string | undefined;\n let _name: ast.NameNode | undefined;\n let _variableDefinitions: ast.VariableDefinitionNode[] = [];\n let _directives: ast.DirectiveNode[] = [];\n if (_operation = advance(operationDefinitionRe)) {\n ignored();\n _name = name();\n _variableDefinitions = variableDefinitions();\n _directives = directives(false);\n }\n const _selectionSet = selectionSet();\n if (_selectionSet) {\n return {\n kind: Kind.OPERATION_DEFINITION,\n operation: (_operation || 'query') as ast.OperationTypeNode,\n name: _name,\n variableDefinitions: _variableDefinitions,\n directives: _directives,\n selectionSet: _selectionSet,\n };\n }\n}\n\nfunction document(): ast.DocumentNode {\n let match: ast.DefinitionNode | void;\n ignored();\n const definitions: ast.DefinitionNode[] = [];\n while (match = fragmentDefinition() || operationDefinition())\n definitions.push(match);\n if (idx !== input.length)\n throw error(Kind.DOCUMENT);\n return {\n kind: Kind.DOCUMENT,\n definitions,\n };\n}\n\nexport function parse(string: string): ast.DocumentNode {\n input = string;\n idx = 0;\n return document();\n}\n\nexport function parseValue(string: string): ast.ValueNode | undefined {\n input = string;\n idx = 0;\n ignored();\n return value(false);\n}\n\nexport function parseType(string: string): ast.TypeNode | undefined {\n input = string;\n idx = 0;\n return type();\n}\n","import { ASTNode } from './ast';\n\nexport const BREAK = {};\n\nexport function visit<N extends ASTNode>(root: N, visitor: ASTVisitor): N;\nexport function visit<R>(root: ASTNode, visitor: ASTReducer<R>): R;\n\nexport function visit(node: ASTNode, visitor: ASTVisitor | ASTReducer<any>) {\n const ancestors: Array<ASTNode | ReadonlyArray<ASTNode>>= [];\n const path: Array<string | number> = [];\n\n function traverse(\n node: ASTNode,\n key?: string | number | undefined,\n parent?: ASTNode | ReadonlyArray<ASTNode> | undefined,\n ) {\n let hasEdited = false;\n\n const enter = visitor[node.kind] && visitor[node.kind].enter || visitor[node.kind];\n const resultEnter =\n enter && enter.call(visitor, node, key, parent, path, ancestors);\n if (resultEnter === false) {\n return node;\n } else if (resultEnter === null) {\n return null;\n } else if (resultEnter === BREAK) {\n throw BREAK;\n } else if (resultEnter && typeof resultEnter.kind === 'string') {\n hasEdited = resultEnter !== node;\n node = resultEnter;\n }\n\n if (parent) ancestors.push(parent);\n\n let result: any;\n const copy = { ...node };\n for (const nodeKey in node) {\n path.push(nodeKey);\n let value = node[nodeKey];\n if (Array.isArray(value)) {\n const newValue: any[] = [];\n for (let index = 0; index < value.length; index++) {\n if (value[index] != null && typeof value[index].kind === 'string') {\n ancestors.push(node);\n path.push(index);\n result = traverse(value[index], index, value);\n path.pop();\n ancestors.pop();\n if (result === undefined) {\n newValue.push(value[index]);\n } else if (result === null) {\n hasEdited = true;\n } else {\n hasEdited = hasEdited || result !== value[index];\n newValue.push(result);\n }\n }\n }\n value = newValue;\n } else if (value != null && typeof value.kind === 'string') {\n result = traverse(value, nodeKey, node);\n if (result !== undefined) {\n hasEdited = hasEdited || value !== result;\n value = result;\n }\n }\n\n path.pop();\n if (hasEdited) copy[nodeKey] = value;\n }\n\n if (parent) ancestors.pop();\n const leave = visitor[node.kind] && visitor[node.kind].leave;\n const resultLeave =\n leave && leave.call(visitor, node, key, parent, path, ancestors);\n if (resultLeave === BREAK) {\n throw BREAK;\n } else if (resultLeave !== undefined) {\n return resultLeave;\n } else if (resultEnter !== undefined) {\n return hasEdited ? copy : resultEnter;\n } else {\n return hasEdited ? copy : node;\n }\n }\n\n try {\n const result = traverse(node);\n return result !== undefined && result !== false ? result : node;\n } catch (error) {\n if (error !== BREAK) throw error;\n return node;\n }\n}\n\nexport type ASTVisitor = EnterLeaveVisitor<ASTNode> | KindVisitor;\n\ntype KindVisitor = {\n readonly [NodeT in ASTNode as NodeT['kind']]?:\n | ASTVisitFn<NodeT>\n | EnterLeaveVisitor<NodeT>;\n};\n\ninterface EnterLeaveVisitor<TVisitedNode extends ASTNode> {\n readonly enter?: ASTVisitFn<TVisitedNode> | undefined;\n readonly leave?: ASTVisitFn<TVisitedNode> | undefined;\n}\n\nexport type ASTVisitFn<Node extends ASTNode> = (\n node: Node,\n key: string | number | undefined,\n parent: ASTNode | ReadonlyArray<ASTNode> | undefined,\n path: ReadonlyArray<string | number>,\n ancestors: ReadonlyArray<ASTNode | ReadonlyArray<ASTNode>>,\n) => any;\n\nexport type ASTReducer<R> = {\n readonly [NodeT in ASTNode as NodeT['kind']]?: {\n readonly enter?: ASTVisitFn<NodeT>;\n readonly leave: ASTReducerFn<NodeT, R>;\n };\n};\n\ntype ASTReducerFn<TReducedNode extends ASTNode, R> = (\n node: { [K in keyof TReducedNode]: ReducedField<TReducedNode[K], R> },\n key: string | number | undefined,\n parent: ASTNode | ReadonlyArray<ASTNode> | undefined,\n path: ReadonlyArray<string | number>,\n ancestors: ReadonlyArray<ASTNode | ReadonlyArray<ASTNode>>,\n) => R;\n\ntype ReducedField<T, R> = T extends null | undefined\n ? T\n : T extends ReadonlyArray<any>\n ? ReadonlyArray<R>\n : R;\n","import { Kind } from './kind';\nimport { ASTNode } from './ast';\n\nexport function printString(string: string) {\n return JSON.stringify(string);\n}\n\nexport function printBlockString(string: string) {\n return '\"\"\"\\n' + string.replace(/\"\"\"/g, '\\\\\"\"\"') + '\\n\"\"\"';\n}\n\nconst hasItems = <T>(\n array: ReadonlyArray<T> | undefined | null\n): array is ReadonlyArray<T> => !!(array && array.length);\n\nconst MAX_LINE_LENGTH = 80;\n\nexport function print(node: ASTNode): string {\n let out: string;\n switch (node.kind) {\n case Kind.OPERATION_DEFINITION:\n if (node.operation === 'query' && !node.name && !hasItems(node.variableDefinitions) && !hasItems(node.directives)) {\n return print(node.selectionSet);\n }\n out = node.operation;\n if (node.name)\n out += ' ' + node.name.value;\n if (hasItems(node.variableDefinitions)) {\n if (!node.name) out += ' ';\n out += '(' + node.variableDefinitions.map(print).join(', ') + ')';\n }\n if (hasItems(node.directives))\n out += ' ' + node.directives.map(print).join(' ');\n return out + ' ' + print(node.selectionSet);\n\n case Kind.VARIABLE_DEFINITION:\n out = print(node.variable) +\n ': ' +\n print(node.type);\n if (node.defaultValue)\n out += ' = ' + print(node.defaultValue);\n if (hasItems(node.directives))\n out += ' ' + node.directives.map(print).join(' ');\n return out;\n\n case Kind.FIELD:\n out = (node.alias ? print(node.alias) + ': ' : '') + node.name.value\n if (hasItems(node.arguments)) {\n const args = node.arguments.map(print);\n const argsLine = out + '(' + args.join(', ') + ')';\n out = argsLine.length > MAX_LINE_LENGTH\n ? out + '(\\n ' + args.join('\\n').replace(/\\n/g, '\\n ') + '\\n)'\n : argsLine;\n }\n if (hasItems(node.directives))\n out += ' ' + node.directives.map(print).join(' ');\n return node.selectionSet\n ? out + ' ' + print(node.selectionSet)\n : out;\n\n case Kind.STRING:\n return node.block\n ? printBlockString(node.value)\n : printString(node.value);\n\n case Kind.BOOLEAN:\n return '' + node.value;\n\n case Kind.NULL:\n return 'null';\n\n case Kind.INT:\n case Kind.FLOAT:\n case Kind.ENUM:\n case Kind.NAME:\n return node.value;\n\n case Kind.LIST:\n return '[' + node.values.map(print).join(', ') + ']';\n\n case Kind.OBJECT:\n return '{' + node.fields.map(print).join(', ') + '}';\n\n case Kind.OBJECT_FIELD:\n return node.name.value + ': ' + print(node.value);\n\n case Kind.VARIABLE:\n return '$' + node.name.value;\n\n case Kind.DOCUMENT:\n return hasItems(node.definitions)\n ? node.definitions.map(print).join('\\n\\n')\n : '';\n\n case Kind.SELECTION_SET:\n return '{\\n ' +\n node.selections.map(print).join('\\n').replace(/\\n/g, '\\n ') +\n '\\n}';\n\n case Kind.ARGUMENT:\n return node.name.value + ': ' + print(node.value);\n\n case Kind.FRAGMENT_SPREAD:\n out = '...' + node.name.value;\n if (hasItems(node.directives))\n out += ' ' + node.directives.map(print).join(' ');\n return out;\n\n case Kind.INLINE_FRAGMENT:\n out = '...';\n if (node.typeCondition)\n out += ' on ' + node.typeCondition.name.value;\n if (hasItems(node.directives))\n out += ' ' + node.directives.map(print).join(' ');\n return out + ' ' + print(node.selectionSet);\n\n case Kind.FRAGMENT_DEFINITION:\n out = 'fragment ' + node.name.value;\n out += ' on ' + node.typeCondition.name.value;\n if (hasItems(node.directives))\n out += ' ' + node.directives.map(print).join(' ');\n return out + ' ' + print(node.selectionSet);\n \n case Kind.DIRECTIVE:\n out = '@' + node.name.value;\n if (hasItems(node.arguments))\n out += '(' + node.arguments.map(print).join(', ') + ')';\n return out;\n\n case Kind.NAMED_TYPE:\n return node.name.value;\n\n case Kind.LIST_TYPE:\n return '[' + print(node.type) + ']';\n\n case Kind.NON_NULL_TYPE:\n return print(node.type) + '!';\n }\n}\n","import { TypeNode, ValueNode } from './ast';\nimport { Kind } from './kind';\nimport { Maybe } from './types';\n\nexport function valueFromASTUntyped(\n node: ValueNode,\n variables?: Maybe<Record<string, any>>,\n): unknown {\n switch (node.kind) {\n case Kind.NULL:\n return null;\n case Kind.INT:\n return parseInt(node.value, 10);\n case Kind.FLOAT:\n return parseFloat(node.value);\n case Kind.STRING:\n case Kind.ENUM:\n case Kind.BOOLEAN:\n return node.value;\n case Kind.LIST: {\n const values: unknown[] = [];\n for (const value of node.values)\n values.push(valueFromASTUntyped(value, variables));\n return values;\n }\n case Kind.OBJECT: {\n const obj = Object.create(null);\n for (const field of node.fields)\n obj[field.name.value] = valueFromASTUntyped(field.value, variables);\n return obj;\n }\n case Kind.VARIABLE:\n return variables && variables[node.name.value];\n }\n}\n\nexport function valueFromTypeNode(\n node: ValueNode,\n type: TypeNode,\n variables?: Maybe<Record<string, any>>,\n): unknown {\n if (node.kind === Kind.VARIABLE) {\n const variableName = node.name.value;\n return variables\n ? valueFromTypeNode(variables[variableName], type, variables)\n : undefined;\n } else if (type.kind === Kind.NON_NULL_TYPE) {\n return node.kind !== Kind.NULL\n ? valueFromTypeNode(node, type, variables)\n : undefined\n } else if (node.kind === Kind.NULL) {\n return null;\n } else if (type.kind === Kind.LIST_TYPE) {\n if (node.kind === Kind.LIST) {\n const values: unknown[] = [];\n for (const value of node.values) {\n const coerced = valueFromTypeNode(value, type.type, variables);\n if (coerced === undefined) {\n return undefined;\n } else {\n values.push(coerced);\n }\n }\n return values;\n }\n } else if (type.kind === Kind.NAMED_TYPE) {\n switch (type.name.value) {\n case 'Int':\n case 'Float':\n case 'String':\n case 'Bool':\n return type.name.value + 'Value' === node.kind\n ? valueFromASTUntyped(node, variables)\n : undefined;\n default:\n return valueFromASTUntyped(node, variables);\n }\n }\n}\n"],"names":["OperationTypeNode","Kind","GraphQLError","Error","constructor","message","nodes","source","positions","path","originalError","extensions","super","this","name","Array","isArray","const","originalExtensions","toJSON","toString","let","input","idx","error","kind","advance","pattern","lastIndex","test","slice","leadingRe","blockString","string","out","commonIndent","firstNonEmptyLine","lastNonEmptyLine","lines","split","i","length","replace","ignoredRe","ignored","nameRe","match","NAME","value","nullRe","boolRe","variableRe","intRe","floatRe","complexStringRe","blockStringRe","stringRe","constant","NULL","BOOLEAN","VARIABLE","FLOAT","INT","ENUM","STRING","block","JSON","parse","list","charCodeAt","values","push","LIST","object","fields","_name","OBJECT_FIELD","_value","OBJECT","arguments_","args","ARGUMENT","directives","DIRECTIVE","arguments","field","_alias","FIELD","alias","selectionSet","type","_type","LIST_TYPE","NAMED_TYPE","NON_NULL_TYPE","typeConditionRe","typeCondition","fragmentSpreadRe","fragmentSpread","_idx","FRAGMENT_SPREAD","_typeCondition","_directives","_selectionSet","INLINE_FRAGMENT","selections","SELECTION_SET","fragmentDefinitionRe","fragmentDefinition","FRAGMENT_DEFINITION","operationDefinitionRe","operationDefinition","_operation","_variableDefinitions","variableDefinitions","vars","VARIABLE_DEFINITION","_defaultValue","variable","defaultValue","OPERATION_DEFINITION","operation","BREAK","printString","stringify","printBlockString","hasItems","array","MAX_LINE_LENGTH","valueFromASTUntyped","node","variables","parseInt","parseFloat","obj","Object","create","i$1","list$1","document","definitions","DOCUMENT","parseType","parseValue","print","map","join","argsLine","valueFromTypeNode","undefined","coerced","visit","visitor","ancestors","result","traverse","key","parent","hasEdited","enter","resultEnter","call","copy","nodeKey","newValue","index","pop","leave","resultLeave"],"mappings":"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"}