{"version":3,"sources":["webpack:///./node_modules/graphql/jsutils/inspect.mjs","webpack:///./node_modules/graphql/jsutils/invariant.mjs","webpack:///./node_modules/graphql/jsutils/defineToStringTag.mjs","webpack:///./node_modules/graphql/language/source.mjs","webpack:///./node_modules/graphql/error/syntaxError.mjs","webpack:///./node_modules/graphql/language/blockStringValue.mjs","webpack:///./node_modules/graphql/language/lexer.mjs","webpack:///./node_modules/graphql/language/kinds.mjs","webpack:///./node_modules/graphql/language/directiveLocation.mjs","webpack:///./node_modules/graphql/language/parser.mjs","webpack:///./node_modules/graphql/language/visitor.mjs","webpack:///./node_modules/graphql/language/printer.mjs","webpack:///./node_modules/graphql/language/location.mjs","webpack:///./node_modules/graphql/error/printError.mjs","webpack:///./node_modules/graphql/error/GraphQLError.mjs"],"names":["_typeof","obj","Symbol","iterator","constructor","prototype","inspect","value","Array","isArray","map","join","Object","keys","k","concat","name","String","invariant","condition","message","Error","applyToStringTag","classObject","toStringTag","defineProperty","get","this","_defineProperty","key","enumerable","configurable","writable","body","locationOffset","line","column","syntaxError","source","position","description","GraphQLError","undefined","blockStringValue","rawString","lines","split","commonIndent","i","length","indent","leadingWhitespace","_i","slice","isBlank","shift","pop","str","createLexer","options","startOfFileToken","Tok","TokenKind","SOF","lexer","lastToken","token","lineStart","advance","advanceLexer","lookahead","kind","EOF","next","readToken","COMMENT","freeze","BANG","DOLLAR","AMP","PAREN_L","PAREN_R","SPREAD","COLON","EQUALS","AT","BRACKET_L","BRACKET_R","BRACE_L","PIPE","BRACE_R","NAME","INT","FLOAT","STRING","BLOCK_STRING","getTokenDesc","charCodeAt","start","end","prev","printCharCode","code","isNaN","JSON","stringify","fromCharCode","toString","toUpperCase","bodyLength","pos","positionAfterWhitespace","col","call","readComment","readName","readNumber","readBlockString","readString","unexpectedCharacterMessage","startPosition","firstCode","isFloat","readDigits","chunkStart","charCode","uniCharCode","rawValue","a","b","c","d","char2hex","toJSON","Kind","DOCUMENT","OPERATION_DEFINITION","VARIABLE_DEFINITION","SELECTION_SET","FIELD","ARGUMENT","FRAGMENT_SPREAD","INLINE_FRAGMENT","FRAGMENT_DEFINITION","VARIABLE","BOOLEAN","NULL","ENUM","LIST","OBJECT","OBJECT_FIELD","DIRECTIVE","NAMED_TYPE","LIST_TYPE","NON_NULL_TYPE","SCHEMA_DEFINITION","OPERATION_TYPE_DEFINITION","SCALAR_TYPE_DEFINITION","OBJECT_TYPE_DEFINITION","FIELD_DEFINITION","INPUT_VALUE_DEFINITION","INTERFACE_TYPE_DEFINITION","UNION_TYPE_DEFINITION","ENUM_TYPE_DEFINITION","ENUM_VALUE_DEFINITION","INPUT_OBJECT_TYPE_DEFINITION","DIRECTIVE_DEFINITION","SCHEMA_EXTENSION","SCALAR_TYPE_EXTENSION","OBJECT_TYPE_EXTENSION","INTERFACE_TYPE_EXTENSION","UNION_TYPE_EXTENSION","ENUM_TYPE_EXTENSION","INPUT_OBJECT_TYPE_EXTENSION","DirectiveLocation","QUERY","MUTATION","SUBSCRIPTION","SCHEMA","SCALAR","ARGUMENT_DEFINITION","INTERFACE","UNION","ENUM_VALUE","INPUT_OBJECT","INPUT_FIELD_DEFINITION","parse","sourceObj","TypeError","parseDocument","parseName","expect","loc","definitions","many","parseDefinition","peek","parseExecutableDefinition","parseTypeSystemDefinition","parseTypeSystemExtension","peekDescription","unexpected","parseOperationDefinition","parseFragmentDefinition","operation","variableDefinitions","directives","selectionSet","parseSelectionSet","parseOperationType","parseVariableDefinitions","parseDirectives","operationToken","parseVariableDefinition","experimentalVariableDefinitionDirectives","variable","parseVariable","type","parseTypeReference","defaultValue","skip","parseValueLiteral","selections","parseSelection","parseFragment","parseField","alias","nameOrAlias","arguments","parseArguments","isConst","item","parseConstArgument","parseArgument","parseConstValue","typeCondition","parseFragmentName","parseNamedType","expectKeyword","experimentalFragmentVariables","parseList","parseObject","parseStringLiteral","block","parseValueValue","values","any","fields","push","parseObjectField","parseDirective","keywordToken","parseSchemaDefinition","parseScalarTypeDefinition","parseObjectTypeDefinition","parseInterfaceTypeDefinition","parseUnionTypeDefinition","parseEnumTypeDefinition","parseInputObjectTypeDefinition","parseDirectiveDefinition","parseDescription","operationTypes","parseOperationTypeDefinition","interfaces","parseImplementsInterfaces","parseFieldsDefinition","types","allowLegacySDLImplementsInterfaces","allowLegacySDLEmptyFields","parseFieldDefinition","args","parseArgumentDefs","parseInputValueDef","parseUnionMemberTypes","parseEnumValuesDefinition","parseEnumValueDefinition","parseInputFieldsDefinition","parseSchemaExtension","parseScalarTypeExtension","parseObjectTypeExtension","parseInterfaceTypeExtension","parseUnionTypeExtension","parseEnumTypeExtension","parseInputObjectTypeExtension","locations","parseDirectiveLocations","parseDirectiveLocation","hasOwnProperty","startToken","noLocation","Loc","endToken","match","atToken","openKind","parseFn","closeKind","nodes","QueryDocumentKeys","Name","Document","OperationDefinition","VariableDefinition","Variable","SelectionSet","Field","Argument","FragmentSpread","InlineFragment","FragmentDefinition","IntValue","FloatValue","StringValue","BooleanValue","NullValue","EnumValue","ListValue","ObjectValue","ObjectField","Directive","NamedType","ListType","NonNullType","SchemaDefinition","OperationTypeDefinition","ScalarTypeDefinition","ObjectTypeDefinition","FieldDefinition","InputValueDefinition","InterfaceTypeDefinition","UnionTypeDefinition","EnumTypeDefinition","EnumValueDefinition","InputObjectTypeDefinition","DirectiveDefinition","SchemaExtension","ScalarTypeExtension","ObjectTypeExtension","InterfaceTypeExtension","UnionTypeExtension","EnumTypeExtension","InputObjectTypeExtension","BREAK","visit","root","visitor","visitorKeys","stack","inArray","index","edits","node","parent","path","ancestors","newRoot","isLeaving","isEdited","clone","editOffset","ii","editKey","editValue","splice","result","isNode","visitFn","getVisitFn","maybeNode","Boolean","kindVisitor","kindSpecificVisitor","leave","enter","specificVisitor","specificKindVisitor","print","ast","printDocASTReducer","op","varDefs","wrap","_ref","_ref2","_ref3","_ref4","_ref5","_ref6","_ref7","_ref8","_ref9","_ref10","isBlockString","printBlockString","_ref11","_ref12","_ref13","_ref14","_ref15","_ref16","_ref17","_ref18","_ref19","_ref20","_ref21","addDescription","_ref22","_ref23","_ref24","every","arg","indexOf","_ref25","_ref26","_ref27","_ref28","_ref29","_ref30","_ref31","_ref32","_ref33","_ref34","_ref35","_ref36","_ref37","_ref38","cb","maybeArray","separator","filter","x","array","maybeString","replace","isDescription","escaped","getLocation","lineRegexp","exec","printError","error","printedLocations","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","done","highlightSourceAtLocation","err","return","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","location","firstLineColumnOffset","whitespace","lineIndex","lineOffset","lineNum","columnOffset","columnNum","printPrefixedLines","existingLines","padLen","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","prefix","Math","max","lpad","len","positions","originalError","extensions","_nodes","_source","_locations","_positions","reduce","list","_extensions","defineProperties","captureStackTrace","create"],"mappings":"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","file":"js/chunk-vendors~37c1ccfb.8805640f.js","sourcesContent":["function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\n\n/**\n * Used to print values in error messages.\n */\nexport default function inspect(value) {\n return value && _typeof(value) === 'object' ? typeof value.inspect === 'function' ? value.inspect() : Array.isArray(value) ? '[' + value.map(inspect).join(', ') + ']' : '{' + Object.keys(value).map(function (k) {\n return \"\".concat(k, \": \").concat(inspect(value[k]));\n }).join(', ') + '}' : typeof value === 'string' ? '\"' + value + '\"' : typeof value === 'function' ? \"[function \".concat(value.name, \"]\") : String(value);\n}","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\nexport default function invariant(condition, message) {\n /* istanbul ignore else */\n if (!condition) {\n throw new Error(message);\n }\n}","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\n\n/**\n * The `applyToStringTag()` function checks first to see if the runtime\n * supports the `Symbol` class and then if the `Symbol.toStringTag` constant\n * is defined as a `Symbol` instance. If both conditions are met, the\n * Symbol.toStringTag property is defined as a getter that returns the\n * supplied class constructor's name.\n *\n * @method applyToStringTag\n *\n * @param {Class} classObject a class such as Object, String, Number but\n * typically one of your own creation through the class keyword; `class A {}`,\n * for example.\n */\nexport default function applyToStringTag(classObject) {\n if (typeof Symbol === 'function' && Symbol.toStringTag) {\n Object.defineProperty(classObject.prototype, Symbol.toStringTag, {\n get: function get() {\n return this.constructor.name;\n }\n });\n }\n}","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\nimport invariant from '../jsutils/invariant';\nimport defineToStringTag from '../jsutils/defineToStringTag';\n\n/**\n * A representation of source input to GraphQL.\n * `name` and `locationOffset` are optional. They are useful for clients who\n * store GraphQL documents in source files; for example, if the GraphQL input\n * starts at line 40 in a file named Foo.graphql, it might be useful for name to\n * be \"Foo.graphql\" and location to be `{ line: 40, column: 0 }`.\n * line and column in locationOffset are 1-indexed\n */\nexport var Source = function Source(body, name, locationOffset) {\n _defineProperty(this, \"body\", void 0);\n\n _defineProperty(this, \"name\", void 0);\n\n _defineProperty(this, \"locationOffset\", void 0);\n\n this.body = body;\n this.name = name || 'GraphQL request';\n this.locationOffset = locationOffset || {\n line: 1,\n column: 1\n };\n !(this.locationOffset.line > 0) ? invariant(0, 'line in locationOffset is 1-indexed and must be positive') : void 0;\n !(this.locationOffset.column > 0) ? invariant(0, 'column in locationOffset is 1-indexed and must be positive') : void 0;\n}; // Conditionally apply `[Symbol.toStringTag]` if `Symbol`s are supported\n\ndefineToStringTag(Source);","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\nimport { GraphQLError } from './GraphQLError';\n/**\n * Produces a GraphQLError representing a syntax error, containing useful\n * descriptive information about the syntax error's position in the source.\n */\n\nexport function syntaxError(source, position, description) {\n return new GraphQLError(\"Syntax Error: \".concat(description), undefined, source, [position]);\n}","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\n\n/**\n * Produces the value of a block string from its parsed raw value, similar to\n * Coffeescript's block string, Python's docstring trim or Ruby's strip_heredoc.\n *\n * This implements the GraphQL spec's BlockStringValue() static algorithm.\n */\nexport default function blockStringValue(rawString) {\n // Expand a block string's raw value into independent lines.\n var lines = rawString.split(/\\r\\n|[\\n\\r]/g); // Remove common indentation from all lines but first.\n\n var commonIndent = null;\n\n for (var i = 1; i < lines.length; i++) {\n var line = lines[i];\n var indent = leadingWhitespace(line);\n\n if (indent < line.length && (commonIndent === null || indent < commonIndent)) {\n commonIndent = indent;\n\n if (commonIndent === 0) {\n break;\n }\n }\n }\n\n if (commonIndent) {\n for (var _i = 1; _i < lines.length; _i++) {\n lines[_i] = lines[_i].slice(commonIndent);\n }\n } // Remove leading and trailing blank lines.\n\n\n while (lines.length > 0 && isBlank(lines[0])) {\n lines.shift();\n }\n\n while (lines.length > 0 && isBlank(lines[lines.length - 1])) {\n lines.pop();\n } // Return a string of the lines joined with U+000A.\n\n\n return lines.join('\\n');\n}\n\nfunction leadingWhitespace(str) {\n var i = 0;\n\n while (i < str.length && (str[i] === ' ' || str[i] === '\\t')) {\n i++;\n }\n\n return i;\n}\n\nfunction isBlank(str) {\n return leadingWhitespace(str) === str.length;\n}","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\nimport { syntaxError } from '../error';\nimport blockStringValue from './blockStringValue';\n/**\n * Given a Source object, this returns a Lexer for that source.\n * A Lexer is a stateful stream generator in that every time\n * it is advanced, it returns the next token in the Source. Assuming the\n * source lexes, the final Token emitted by the lexer will be of kind\n * EOF, after which the lexer will repeatedly return the same EOF token\n * whenever called.\n */\n\nexport function createLexer(source, options) {\n var startOfFileToken = new Tok(TokenKind.SOF, 0, 0, 0, 0, null);\n var lexer = {\n source: source,\n options: options,\n lastToken: startOfFileToken,\n token: startOfFileToken,\n line: 1,\n lineStart: 0,\n advance: advanceLexer,\n lookahead: lookahead\n };\n return lexer;\n}\n\nfunction advanceLexer() {\n this.lastToken = this.token;\n var token = this.token = this.lookahead();\n return token;\n}\n\nfunction lookahead() {\n var token = this.token;\n\n if (token.kind !== TokenKind.EOF) {\n do {\n // Note: next is only mutable during parsing, so we cast to allow this.\n token = token.next || (token.next = readToken(this, token));\n } while (token.kind === TokenKind.COMMENT);\n }\n\n return token;\n}\n/**\n * The return type of createLexer.\n */\n\n\n/**\n * An exported enum describing the different kinds of tokens that the\n * lexer emits.\n */\nexport var TokenKind = Object.freeze({\n SOF: '',\n EOF: '',\n BANG: '!',\n DOLLAR: '$',\n AMP: '&',\n PAREN_L: '(',\n PAREN_R: ')',\n SPREAD: '...',\n COLON: ':',\n EQUALS: '=',\n AT: '@',\n BRACKET_L: '[',\n BRACKET_R: ']',\n BRACE_L: '{',\n PIPE: '|',\n BRACE_R: '}',\n NAME: 'Name',\n INT: 'Int',\n FLOAT: 'Float',\n STRING: 'String',\n BLOCK_STRING: 'BlockString',\n COMMENT: 'Comment'\n});\n/**\n * The enum type representing the token kinds values.\n */\n\n/**\n * A helper function to describe a token as a string for debugging\n */\nexport function getTokenDesc(token) {\n var value = token.value;\n return value ? \"\".concat(token.kind, \" \\\"\").concat(value, \"\\\"\") : token.kind;\n}\nvar charCodeAt = String.prototype.charCodeAt;\nvar slice = String.prototype.slice;\n/**\n * Helper function for constructing the Token object.\n */\n\nfunction Tok(kind, start, end, line, column, prev, value) {\n this.kind = kind;\n this.start = start;\n this.end = end;\n this.line = line;\n this.column = column;\n this.value = value;\n this.prev = prev;\n this.next = null;\n} // Print a simplified form when appearing in JSON/util.inspect.\n\n\nTok.prototype.toJSON = Tok.prototype.inspect = function toJSON() {\n return {\n kind: this.kind,\n value: this.value,\n line: this.line,\n column: this.column\n };\n};\n\nfunction printCharCode(code) {\n return (// NaN/undefined represents access beyond the end of the file.\n isNaN(code) ? TokenKind.EOF : // Trust JSON for ASCII.\n code < 0x007f ? JSON.stringify(String.fromCharCode(code)) : // Otherwise print the escaped form.\n \"\\\"\\\\u\".concat(('00' + code.toString(16).toUpperCase()).slice(-4), \"\\\"\")\n );\n}\n/**\n * Gets the next token from the source starting at the given position.\n *\n * This skips over whitespace and comments until it finds the next lexable\n * token, then lexes punctuators immediately or calls the appropriate helper\n * function for more complicated tokens.\n */\n\n\nfunction readToken(lexer, prev) {\n var source = lexer.source;\n var body = source.body;\n var bodyLength = body.length;\n var pos = positionAfterWhitespace(body, prev.end, lexer);\n var line = lexer.line;\n var col = 1 + pos - lexer.lineStart;\n\n if (pos >= bodyLength) {\n return new Tok(TokenKind.EOF, bodyLength, bodyLength, line, col, prev);\n }\n\n var code = charCodeAt.call(body, pos); // SourceCharacter\n\n switch (code) {\n // !\n case 33:\n return new Tok(TokenKind.BANG, pos, pos + 1, line, col, prev);\n // #\n\n case 35:\n return readComment(source, pos, line, col, prev);\n // $\n\n case 36:\n return new Tok(TokenKind.DOLLAR, pos, pos + 1, line, col, prev);\n // &\n\n case 38:\n return new Tok(TokenKind.AMP, pos, pos + 1, line, col, prev);\n // (\n\n case 40:\n return new Tok(TokenKind.PAREN_L, pos, pos + 1, line, col, prev);\n // )\n\n case 41:\n return new Tok(TokenKind.PAREN_R, pos, pos + 1, line, col, prev);\n // .\n\n case 46:\n if (charCodeAt.call(body, pos + 1) === 46 && charCodeAt.call(body, pos + 2) === 46) {\n return new Tok(TokenKind.SPREAD, pos, pos + 3, line, col, prev);\n }\n\n break;\n // :\n\n case 58:\n return new Tok(TokenKind.COLON, pos, pos + 1, line, col, prev);\n // =\n\n case 61:\n return new Tok(TokenKind.EQUALS, pos, pos + 1, line, col, prev);\n // @\n\n case 64:\n return new Tok(TokenKind.AT, pos, pos + 1, line, col, prev);\n // [\n\n case 91:\n return new Tok(TokenKind.BRACKET_L, pos, pos + 1, line, col, prev);\n // ]\n\n case 93:\n return new Tok(TokenKind.BRACKET_R, pos, pos + 1, line, col, prev);\n // {\n\n case 123:\n return new Tok(TokenKind.BRACE_L, pos, pos + 1, line, col, prev);\n // |\n\n case 124:\n return new Tok(TokenKind.PIPE, pos, pos + 1, line, col, prev);\n // }\n\n case 125:\n return new Tok(TokenKind.BRACE_R, pos, pos + 1, line, col, prev);\n // A-Z _ a-z\n\n case 65:\n case 66:\n case 67:\n case 68:\n case 69:\n case 70:\n case 71:\n case 72:\n case 73:\n case 74:\n case 75:\n case 76:\n case 77:\n case 78:\n case 79:\n case 80:\n case 81:\n case 82:\n case 83:\n case 84:\n case 85:\n case 86:\n case 87:\n case 88:\n case 89:\n case 90:\n case 95:\n case 97:\n case 98:\n case 99:\n case 100:\n case 101:\n case 102:\n case 103:\n case 104:\n case 105:\n case 106:\n case 107:\n case 108:\n case 109:\n case 110:\n case 111:\n case 112:\n case 113:\n case 114:\n case 115:\n case 116:\n case 117:\n case 118:\n case 119:\n case 120:\n case 121:\n case 122:\n return readName(source, pos, line, col, prev);\n // - 0-9\n\n case 45:\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n return readNumber(source, pos, code, line, col, prev);\n // \"\n\n case 34:\n if (charCodeAt.call(body, pos + 1) === 34 && charCodeAt.call(body, pos + 2) === 34) {\n return readBlockString(source, pos, line, col, prev);\n }\n\n return readString(source, pos, line, col, prev);\n }\n\n throw syntaxError(source, pos, unexpectedCharacterMessage(code));\n}\n/**\n * Report a message that an unexpected character was encountered.\n */\n\n\nfunction unexpectedCharacterMessage(code) {\n if (code < 0x0020 && code !== 0x0009 && code !== 0x000a && code !== 0x000d) {\n return \"Cannot contain the invalid character \".concat(printCharCode(code), \".\");\n }\n\n if (code === 39) {\n // '\n return \"Unexpected single quote character ('), did you mean to use \" + 'a double quote (\")?';\n }\n\n return \"Cannot parse the unexpected character \".concat(printCharCode(code), \".\");\n}\n/**\n * Reads from body starting at startPosition until it finds a non-whitespace\n * or commented character, then returns the position of that character for\n * lexing.\n */\n\n\nfunction positionAfterWhitespace(body, startPosition, lexer) {\n var bodyLength = body.length;\n var position = startPosition;\n\n while (position < bodyLength) {\n var code = charCodeAt.call(body, position); // tab | space | comma | BOM\n\n if (code === 9 || code === 32 || code === 44 || code === 0xfeff) {\n ++position;\n } else if (code === 10) {\n // new line\n ++position;\n ++lexer.line;\n lexer.lineStart = position;\n } else if (code === 13) {\n // carriage return\n if (charCodeAt.call(body, position + 1) === 10) {\n position += 2;\n } else {\n ++position;\n }\n\n ++lexer.line;\n lexer.lineStart = position;\n } else {\n break;\n }\n }\n\n return position;\n}\n/**\n * Reads a comment token from the source file.\n *\n * #[\\u0009\\u0020-\\uFFFF]*\n */\n\n\nfunction readComment(source, start, line, col, prev) {\n var body = source.body;\n var code;\n var position = start;\n\n do {\n code = charCodeAt.call(body, ++position);\n } while (code !== null && ( // SourceCharacter but not LineTerminator\n code > 0x001f || code === 0x0009));\n\n return new Tok(TokenKind.COMMENT, start, position, line, col, prev, slice.call(body, start + 1, position));\n}\n/**\n * Reads a number token from the source file, either a float\n * or an int depending on whether a decimal point appears.\n *\n * Int: -?(0|[1-9][0-9]*)\n * Float: -?(0|[1-9][0-9]*)(\\.[0-9]+)?((E|e)(+|-)?[0-9]+)?\n */\n\n\nfunction readNumber(source, start, firstCode, line, col, prev) {\n var body = source.body;\n var code = firstCode;\n var position = start;\n var isFloat = false;\n\n if (code === 45) {\n // -\n code = charCodeAt.call(body, ++position);\n }\n\n if (code === 48) {\n // 0\n code = charCodeAt.call(body, ++position);\n\n if (code >= 48 && code <= 57) {\n throw syntaxError(source, position, \"Invalid number, unexpected digit after 0: \".concat(printCharCode(code), \".\"));\n }\n } else {\n position = readDigits(source, position, code);\n code = charCodeAt.call(body, position);\n }\n\n if (code === 46) {\n // .\n isFloat = true;\n code = charCodeAt.call(body, ++position);\n position = readDigits(source, position, code);\n code = charCodeAt.call(body, position);\n }\n\n if (code === 69 || code === 101) {\n // E e\n isFloat = true;\n code = charCodeAt.call(body, ++position);\n\n if (code === 43 || code === 45) {\n // + -\n code = charCodeAt.call(body, ++position);\n }\n\n position = readDigits(source, position, code);\n }\n\n return new Tok(isFloat ? TokenKind.FLOAT : TokenKind.INT, start, position, line, col, prev, slice.call(body, start, position));\n}\n/**\n * Returns the new position in the source after reading digits.\n */\n\n\nfunction readDigits(source, start, firstCode) {\n var body = source.body;\n var position = start;\n var code = firstCode;\n\n if (code >= 48 && code <= 57) {\n // 0 - 9\n do {\n code = charCodeAt.call(body, ++position);\n } while (code >= 48 && code <= 57); // 0 - 9\n\n\n return position;\n }\n\n throw syntaxError(source, position, \"Invalid number, expected digit but got: \".concat(printCharCode(code), \".\"));\n}\n/**\n * Reads a string token from the source file.\n *\n * \"([^\"\\\\\\u000A\\u000D]|(\\\\(u[0-9a-fA-F]{4}|[\"\\\\/bfnrt])))*\"\n */\n\n\nfunction readString(source, start, line, col, prev) {\n var body = source.body;\n var position = start + 1;\n var chunkStart = position;\n var code = 0;\n var value = '';\n\n while (position < body.length && (code = charCodeAt.call(body, position)) !== null && // not LineTerminator\n code !== 0x000a && code !== 0x000d) {\n // Closing Quote (\")\n if (code === 34) {\n value += slice.call(body, chunkStart, position);\n return new Tok(TokenKind.STRING, start, position + 1, line, col, prev, value);\n } // SourceCharacter\n\n\n if (code < 0x0020 && code !== 0x0009) {\n throw syntaxError(source, position, \"Invalid character within String: \".concat(printCharCode(code), \".\"));\n }\n\n ++position;\n\n if (code === 92) {\n // \\\n value += slice.call(body, chunkStart, position - 1);\n code = charCodeAt.call(body, position);\n\n switch (code) {\n case 34:\n value += '\"';\n break;\n\n case 47:\n value += '/';\n break;\n\n case 92:\n value += '\\\\';\n break;\n\n case 98:\n value += '\\b';\n break;\n\n case 102:\n value += '\\f';\n break;\n\n case 110:\n value += '\\n';\n break;\n\n case 114:\n value += '\\r';\n break;\n\n case 116:\n value += '\\t';\n break;\n\n case 117:\n // u\n var charCode = uniCharCode(charCodeAt.call(body, position + 1), charCodeAt.call(body, position + 2), charCodeAt.call(body, position + 3), charCodeAt.call(body, position + 4));\n\n if (charCode < 0) {\n throw syntaxError(source, position, 'Invalid character escape sequence: ' + \"\\\\u\".concat(body.slice(position + 1, position + 5), \".\"));\n }\n\n value += String.fromCharCode(charCode);\n position += 4;\n break;\n\n default:\n throw syntaxError(source, position, \"Invalid character escape sequence: \\\\\".concat(String.fromCharCode(code), \".\"));\n }\n\n ++position;\n chunkStart = position;\n }\n }\n\n throw syntaxError(source, position, 'Unterminated string.');\n}\n/**\n * Reads a block string token from the source file.\n *\n * \"\"\"(\"?\"?(\\\\\"\"\"|\\\\(?!=\"\"\")|[^\"\\\\]))*\"\"\"\n */\n\n\nfunction readBlockString(source, start, line, col, prev) {\n var body = source.body;\n var position = start + 3;\n var chunkStart = position;\n var code = 0;\n var rawValue = '';\n\n while (position < body.length && (code = charCodeAt.call(body, position)) !== null) {\n // Closing Triple-Quote (\"\"\")\n if (code === 34 && charCodeAt.call(body, position + 1) === 34 && charCodeAt.call(body, position + 2) === 34) {\n rawValue += slice.call(body, chunkStart, position);\n return new Tok(TokenKind.BLOCK_STRING, start, position + 3, line, col, prev, blockStringValue(rawValue));\n } // SourceCharacter\n\n\n if (code < 0x0020 && code !== 0x0009 && code !== 0x000a && code !== 0x000d) {\n throw syntaxError(source, position, \"Invalid character within String: \".concat(printCharCode(code), \".\"));\n } // Escape Triple-Quote (\\\"\"\")\n\n\n if (code === 92 && charCodeAt.call(body, position + 1) === 34 && charCodeAt.call(body, position + 2) === 34 && charCodeAt.call(body, position + 3) === 34) {\n rawValue += slice.call(body, chunkStart, position) + '\"\"\"';\n position += 4;\n chunkStart = position;\n } else {\n ++position;\n }\n }\n\n throw syntaxError(source, position, 'Unterminated string.');\n}\n/**\n * Converts four hexidecimal chars to the integer that the\n * string represents. For example, uniCharCode('0','0','0','f')\n * will return 15, and uniCharCode('0','0','f','f') returns 255.\n *\n * Returns a negative number on error, if a char was invalid.\n *\n * This is implemented by noting that char2hex() returns -1 on error,\n * which means the result of ORing the char2hex() will also be negative.\n */\n\n\nfunction uniCharCode(a, b, c, d) {\n return char2hex(a) << 12 | char2hex(b) << 8 | char2hex(c) << 4 | char2hex(d);\n}\n/**\n * Converts a hex character to its integer value.\n * '0' becomes 0, '9' becomes 9\n * 'A' becomes 10, 'F' becomes 15\n * 'a' becomes 10, 'f' becomes 15\n *\n * Returns -1 on error.\n */\n\n\nfunction char2hex(a) {\n return a >= 48 && a <= 57 ? a - 48 // 0-9\n : a >= 65 && a <= 70 ? a - 55 // A-F\n : a >= 97 && a <= 102 ? a - 87 // a-f\n : -1;\n}\n/**\n * Reads an alphanumeric + underscore name from the source.\n *\n * [_A-Za-z][_0-9A-Za-z]*\n */\n\n\nfunction readName(source, start, line, col, prev) {\n var body = source.body;\n var bodyLength = body.length;\n var position = start + 1;\n var code = 0;\n\n while (position !== bodyLength && (code = charCodeAt.call(body, position)) !== null && (code === 95 || // _\n code >= 48 && code <= 57 || // 0-9\n code >= 65 && code <= 90 || // A-Z\n code >= 97 && code <= 122) // a-z\n ) {\n ++position;\n }\n\n return new Tok(TokenKind.NAME, start, position, line, col, prev, slice.call(body, start, position));\n}","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\n\n/**\n * The set of allowed kind values for AST nodes.\n */\nexport var Kind = Object.freeze({\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 // Type System Definitions\n SCHEMA_DEFINITION: 'SchemaDefinition',\n OPERATION_TYPE_DEFINITION: 'OperationTypeDefinition',\n // Type Definitions\n SCALAR_TYPE_DEFINITION: 'ScalarTypeDefinition',\n OBJECT_TYPE_DEFINITION: 'ObjectTypeDefinition',\n FIELD_DEFINITION: 'FieldDefinition',\n INPUT_VALUE_DEFINITION: 'InputValueDefinition',\n INTERFACE_TYPE_DEFINITION: 'InterfaceTypeDefinition',\n UNION_TYPE_DEFINITION: 'UnionTypeDefinition',\n ENUM_TYPE_DEFINITION: 'EnumTypeDefinition',\n ENUM_VALUE_DEFINITION: 'EnumValueDefinition',\n INPUT_OBJECT_TYPE_DEFINITION: 'InputObjectTypeDefinition',\n // Directive Definitions\n DIRECTIVE_DEFINITION: 'DirectiveDefinition',\n // Type System Extensions\n SCHEMA_EXTENSION: 'SchemaExtension',\n // Type Extensions\n SCALAR_TYPE_EXTENSION: 'ScalarTypeExtension',\n OBJECT_TYPE_EXTENSION: 'ObjectTypeExtension',\n INTERFACE_TYPE_EXTENSION: 'InterfaceTypeExtension',\n UNION_TYPE_EXTENSION: 'UnionTypeExtension',\n ENUM_TYPE_EXTENSION: 'EnumTypeExtension',\n INPUT_OBJECT_TYPE_EXTENSION: 'InputObjectTypeExtension'\n});\n/**\n * The enum type representing the possible kind values of AST nodes.\n */","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\n\n/**\n * The set of allowed directive location values.\n */\nexport var DirectiveLocation = Object.freeze({\n // Request Definitions\n QUERY: 'QUERY',\n MUTATION: 'MUTATION',\n SUBSCRIPTION: 'SUBSCRIPTION',\n FIELD: 'FIELD',\n FRAGMENT_DEFINITION: 'FRAGMENT_DEFINITION',\n FRAGMENT_SPREAD: 'FRAGMENT_SPREAD',\n INLINE_FRAGMENT: 'INLINE_FRAGMENT',\n VARIABLE_DEFINITION: 'VARIABLE_DEFINITION',\n // Type System Definitions\n SCHEMA: 'SCHEMA',\n SCALAR: 'SCALAR',\n OBJECT: 'OBJECT',\n FIELD_DEFINITION: 'FIELD_DEFINITION',\n ARGUMENT_DEFINITION: 'ARGUMENT_DEFINITION',\n INTERFACE: 'INTERFACE',\n UNION: 'UNION',\n ENUM: 'ENUM',\n ENUM_VALUE: 'ENUM_VALUE',\n INPUT_OBJECT: 'INPUT_OBJECT',\n INPUT_FIELD_DEFINITION: 'INPUT_FIELD_DEFINITION'\n});\n/**\n * The enum type representing the directive location values.\n */","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\nimport inspect from '../jsutils/inspect';\nimport { Source } from './source';\nimport { syntaxError } from '../error';\nimport { createLexer, TokenKind, getTokenDesc } from './lexer';\nimport { Kind } from './kinds';\nimport { DirectiveLocation } from './directiveLocation';\n/**\n * Configuration options to control parser behavior\n */\n\n/**\n * Given a GraphQL source, parses it into a Document.\n * Throws GraphQLError if a syntax error is encountered.\n */\nexport function parse(source, options) {\n var sourceObj = typeof source === 'string' ? new Source(source) : source;\n\n if (!(sourceObj instanceof Source)) {\n throw new TypeError(\"Must provide Source. Received: \".concat(inspect(sourceObj)));\n }\n\n var lexer = createLexer(sourceObj, options || {});\n return parseDocument(lexer);\n}\n/**\n * Given a string containing a GraphQL value (ex. `[42]`), parse the AST for\n * that value.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Values directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: valueFromAST().\n */\n\nexport function parseValue(source, options) {\n var sourceObj = typeof source === 'string' ? new Source(source) : source;\n var lexer = createLexer(sourceObj, options || {});\n expect(lexer, TokenKind.SOF);\n var value = parseValueLiteral(lexer, false);\n expect(lexer, TokenKind.EOF);\n return value;\n}\n/**\n * Given a string containing a GraphQL Type (ex. `[Int!]`), parse the AST for\n * that type.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Types directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: typeFromAST().\n */\n\nexport function parseType(source, options) {\n var sourceObj = typeof source === 'string' ? new Source(source) : source;\n var lexer = createLexer(sourceObj, options || {});\n expect(lexer, TokenKind.SOF);\n var type = parseTypeReference(lexer);\n expect(lexer, TokenKind.EOF);\n return type;\n}\n/**\n * Converts a name lex token into a name parse node.\n */\n\nfunction parseName(lexer) {\n var token = expect(lexer, TokenKind.NAME);\n return {\n kind: Kind.NAME,\n value: token.value,\n loc: loc(lexer, token)\n };\n} // Implements the parsing rules in the Document section.\n\n/**\n * Document : Definition+\n */\n\n\nfunction parseDocument(lexer) {\n var start = lexer.token;\n return {\n kind: Kind.DOCUMENT,\n definitions: many(lexer, TokenKind.SOF, parseDefinition, TokenKind.EOF),\n loc: loc(lexer, start)\n };\n}\n/**\n * Definition :\n * - ExecutableDefinition\n * - TypeSystemDefinition\n * - TypeSystemExtension\n */\n\n\nfunction parseDefinition(lexer) {\n if (peek(lexer, TokenKind.NAME)) {\n switch (lexer.token.value) {\n case 'query':\n case 'mutation':\n case 'subscription':\n case 'fragment':\n return parseExecutableDefinition(lexer);\n\n case 'schema':\n case 'scalar':\n case 'type':\n case 'interface':\n case 'union':\n case 'enum':\n case 'input':\n case 'directive':\n return parseTypeSystemDefinition(lexer);\n\n case 'extend':\n return parseTypeSystemExtension(lexer);\n }\n } else if (peek(lexer, TokenKind.BRACE_L)) {\n return parseExecutableDefinition(lexer);\n } else if (peekDescription(lexer)) {\n return parseTypeSystemDefinition(lexer);\n }\n\n throw unexpected(lexer);\n}\n/**\n * ExecutableDefinition :\n * - OperationDefinition\n * - FragmentDefinition\n */\n\n\nfunction parseExecutableDefinition(lexer) {\n if (peek(lexer, TokenKind.NAME)) {\n switch (lexer.token.value) {\n case 'query':\n case 'mutation':\n case 'subscription':\n return parseOperationDefinition(lexer);\n\n case 'fragment':\n return parseFragmentDefinition(lexer);\n }\n } else if (peek(lexer, TokenKind.BRACE_L)) {\n return parseOperationDefinition(lexer);\n }\n\n throw unexpected(lexer);\n} // Implements the parsing rules in the Operations section.\n\n/**\n * OperationDefinition :\n * - SelectionSet\n * - OperationType Name? VariableDefinitions? Directives? SelectionSet\n */\n\n\nfunction parseOperationDefinition(lexer) {\n var start = lexer.token;\n\n if (peek(lexer, TokenKind.BRACE_L)) {\n return {\n kind: Kind.OPERATION_DEFINITION,\n operation: 'query',\n name: undefined,\n variableDefinitions: [],\n directives: [],\n selectionSet: parseSelectionSet(lexer),\n loc: loc(lexer, start)\n };\n }\n\n var operation = parseOperationType(lexer);\n var name;\n\n if (peek(lexer, TokenKind.NAME)) {\n name = parseName(lexer);\n }\n\n return {\n kind: Kind.OPERATION_DEFINITION,\n operation: operation,\n name: name,\n variableDefinitions: parseVariableDefinitions(lexer),\n directives: parseDirectives(lexer, false),\n selectionSet: parseSelectionSet(lexer),\n loc: loc(lexer, start)\n };\n}\n/**\n * OperationType : one of query mutation subscription\n */\n\n\nfunction parseOperationType(lexer) {\n var operationToken = expect(lexer, TokenKind.NAME);\n\n switch (operationToken.value) {\n case 'query':\n return 'query';\n\n case 'mutation':\n return 'mutation';\n\n case 'subscription':\n return 'subscription';\n }\n\n throw unexpected(lexer, operationToken);\n}\n/**\n * VariableDefinitions : ( VariableDefinition+ )\n */\n\n\nfunction parseVariableDefinitions(lexer) {\n return peek(lexer, TokenKind.PAREN_L) ? many(lexer, TokenKind.PAREN_L, parseVariableDefinition, TokenKind.PAREN_R) : [];\n}\n/**\n * VariableDefinition : Variable : Type DefaultValue? Directives[Const]?\n */\n\n\nfunction parseVariableDefinition(lexer) {\n var start = lexer.token;\n\n if (lexer.options.experimentalVariableDefinitionDirectives) {\n return {\n kind: Kind.VARIABLE_DEFINITION,\n variable: parseVariable(lexer),\n type: (expect(lexer, TokenKind.COLON), parseTypeReference(lexer)),\n defaultValue: skip(lexer, TokenKind.EQUALS) ? parseValueLiteral(lexer, true) : undefined,\n directives: parseDirectives(lexer, true),\n loc: loc(lexer, start)\n };\n }\n\n return {\n kind: Kind.VARIABLE_DEFINITION,\n variable: parseVariable(lexer),\n type: (expect(lexer, TokenKind.COLON), parseTypeReference(lexer)),\n defaultValue: skip(lexer, TokenKind.EQUALS) ? parseValueLiteral(lexer, true) : undefined,\n loc: loc(lexer, start)\n };\n}\n/**\n * Variable : $ Name\n */\n\n\nfunction parseVariable(lexer) {\n var start = lexer.token;\n expect(lexer, TokenKind.DOLLAR);\n return {\n kind: Kind.VARIABLE,\n name: parseName(lexer),\n loc: loc(lexer, start)\n };\n}\n/**\n * SelectionSet : { Selection+ }\n */\n\n\nfunction parseSelectionSet(lexer) {\n var start = lexer.token;\n return {\n kind: Kind.SELECTION_SET,\n selections: many(lexer, TokenKind.BRACE_L, parseSelection, TokenKind.BRACE_R),\n loc: loc(lexer, start)\n };\n}\n/**\n * Selection :\n * - Field\n * - FragmentSpread\n * - InlineFragment\n */\n\n\nfunction parseSelection(lexer) {\n return peek(lexer, TokenKind.SPREAD) ? parseFragment(lexer) : parseField(lexer);\n}\n/**\n * Field : Alias? Name Arguments? Directives? SelectionSet?\n *\n * Alias : Name :\n */\n\n\nfunction parseField(lexer) {\n var start = lexer.token;\n var nameOrAlias = parseName(lexer);\n var alias;\n var name;\n\n if (skip(lexer, TokenKind.COLON)) {\n alias = nameOrAlias;\n name = parseName(lexer);\n } else {\n name = nameOrAlias;\n }\n\n return {\n kind: Kind.FIELD,\n alias: alias,\n name: name,\n arguments: parseArguments(lexer, false),\n directives: parseDirectives(lexer, false),\n selectionSet: peek(lexer, TokenKind.BRACE_L) ? parseSelectionSet(lexer) : undefined,\n loc: loc(lexer, start)\n };\n}\n/**\n * Arguments[Const] : ( Argument[?Const]+ )\n */\n\n\nfunction parseArguments(lexer, isConst) {\n var item = isConst ? parseConstArgument : parseArgument;\n return peek(lexer, TokenKind.PAREN_L) ? many(lexer, TokenKind.PAREN_L, item, TokenKind.PAREN_R) : [];\n}\n/**\n * Argument[Const] : Name : Value[?Const]\n */\n\n\nfunction parseArgument(lexer) {\n var start = lexer.token;\n return {\n kind: Kind.ARGUMENT,\n name: parseName(lexer),\n value: (expect(lexer, TokenKind.COLON), parseValueLiteral(lexer, false)),\n loc: loc(lexer, start)\n };\n}\n\nfunction parseConstArgument(lexer) {\n var start = lexer.token;\n return {\n kind: Kind.ARGUMENT,\n name: parseName(lexer),\n value: (expect(lexer, TokenKind.COLON), parseConstValue(lexer)),\n loc: loc(lexer, start)\n };\n} // Implements the parsing rules in the Fragments section.\n\n/**\n * Corresponds to both FragmentSpread and InlineFragment in the spec.\n *\n * FragmentSpread : ... FragmentName Directives?\n *\n * InlineFragment : ... TypeCondition? Directives? SelectionSet\n */\n\n\nfunction parseFragment(lexer) {\n var start = lexer.token;\n expect(lexer, TokenKind.SPREAD);\n\n if (peek(lexer, TokenKind.NAME) && lexer.token.value !== 'on') {\n return {\n kind: Kind.FRAGMENT_SPREAD,\n name: parseFragmentName(lexer),\n directives: parseDirectives(lexer, false),\n loc: loc(lexer, start)\n };\n }\n\n var typeCondition;\n\n if (lexer.token.value === 'on') {\n lexer.advance();\n typeCondition = parseNamedType(lexer);\n }\n\n return {\n kind: Kind.INLINE_FRAGMENT,\n typeCondition: typeCondition,\n directives: parseDirectives(lexer, false),\n selectionSet: parseSelectionSet(lexer),\n loc: loc(lexer, start)\n };\n}\n/**\n * FragmentDefinition :\n * - fragment FragmentName on TypeCondition Directives? SelectionSet\n *\n * TypeCondition : NamedType\n */\n\n\nfunction parseFragmentDefinition(lexer) {\n var start = lexer.token;\n expectKeyword(lexer, 'fragment'); // Experimental support for defining variables within fragments changes\n // the grammar of FragmentDefinition:\n // - fragment FragmentName VariableDefinitions? on TypeCondition Directives? SelectionSet\n\n if (lexer.options.experimentalFragmentVariables) {\n return {\n kind: Kind.FRAGMENT_DEFINITION,\n name: parseFragmentName(lexer),\n variableDefinitions: parseVariableDefinitions(lexer),\n typeCondition: (expectKeyword(lexer, 'on'), parseNamedType(lexer)),\n directives: parseDirectives(lexer, false),\n selectionSet: parseSelectionSet(lexer),\n loc: loc(lexer, start)\n };\n }\n\n return {\n kind: Kind.FRAGMENT_DEFINITION,\n name: parseFragmentName(lexer),\n typeCondition: (expectKeyword(lexer, 'on'), parseNamedType(lexer)),\n directives: parseDirectives(lexer, false),\n selectionSet: parseSelectionSet(lexer),\n loc: loc(lexer, start)\n };\n}\n/**\n * FragmentName : Name but not `on`\n */\n\n\nfunction parseFragmentName(lexer) {\n if (lexer.token.value === 'on') {\n throw unexpected(lexer);\n }\n\n return parseName(lexer);\n} // Implements the parsing rules in the Values section.\n\n/**\n * Value[Const] :\n * - [~Const] Variable\n * - IntValue\n * - FloatValue\n * - StringValue\n * - BooleanValue\n * - NullValue\n * - EnumValue\n * - ListValue[?Const]\n * - ObjectValue[?Const]\n *\n * BooleanValue : one of `true` `false`\n *\n * NullValue : `null`\n *\n * EnumValue : Name but not `true`, `false` or `null`\n */\n\n\nfunction parseValueLiteral(lexer, isConst) {\n var token = lexer.token;\n\n switch (token.kind) {\n case TokenKind.BRACKET_L:\n return parseList(lexer, isConst);\n\n case TokenKind.BRACE_L:\n return parseObject(lexer, isConst);\n\n case TokenKind.INT:\n lexer.advance();\n return {\n kind: Kind.INT,\n value: token.value,\n loc: loc(lexer, token)\n };\n\n case TokenKind.FLOAT:\n lexer.advance();\n return {\n kind: Kind.FLOAT,\n value: token.value,\n loc: loc(lexer, token)\n };\n\n case TokenKind.STRING:\n case TokenKind.BLOCK_STRING:\n return parseStringLiteral(lexer);\n\n case TokenKind.NAME:\n if (token.value === 'true' || token.value === 'false') {\n lexer.advance();\n return {\n kind: Kind.BOOLEAN,\n value: token.value === 'true',\n loc: loc(lexer, token)\n };\n } else if (token.value === 'null') {\n lexer.advance();\n return {\n kind: Kind.NULL,\n loc: loc(lexer, token)\n };\n }\n\n lexer.advance();\n return {\n kind: Kind.ENUM,\n value: token.value,\n loc: loc(lexer, token)\n };\n\n case TokenKind.DOLLAR:\n if (!isConst) {\n return parseVariable(lexer);\n }\n\n break;\n }\n\n throw unexpected(lexer);\n}\n\nfunction parseStringLiteral(lexer) {\n var token = lexer.token;\n lexer.advance();\n return {\n kind: Kind.STRING,\n value: token.value,\n block: token.kind === TokenKind.BLOCK_STRING,\n loc: loc(lexer, token)\n };\n}\n\nexport function parseConstValue(lexer) {\n return parseValueLiteral(lexer, true);\n}\n\nfunction parseValueValue(lexer) {\n return parseValueLiteral(lexer, false);\n}\n/**\n * ListValue[Const] :\n * - [ ]\n * - [ Value[?Const]+ ]\n */\n\n\nfunction parseList(lexer, isConst) {\n var start = lexer.token;\n var item = isConst ? parseConstValue : parseValueValue;\n return {\n kind: Kind.LIST,\n values: any(lexer, TokenKind.BRACKET_L, item, TokenKind.BRACKET_R),\n loc: loc(lexer, start)\n };\n}\n/**\n * ObjectValue[Const] :\n * - { }\n * - { ObjectField[?Const]+ }\n */\n\n\nfunction parseObject(lexer, isConst) {\n var start = lexer.token;\n expect(lexer, TokenKind.BRACE_L);\n var fields = [];\n\n while (!skip(lexer, TokenKind.BRACE_R)) {\n fields.push(parseObjectField(lexer, isConst));\n }\n\n return {\n kind: Kind.OBJECT,\n fields: fields,\n loc: loc(lexer, start)\n };\n}\n/**\n * ObjectField[Const] : Name : Value[?Const]\n */\n\n\nfunction parseObjectField(lexer, isConst) {\n var start = lexer.token;\n return {\n kind: Kind.OBJECT_FIELD,\n name: parseName(lexer),\n value: (expect(lexer, TokenKind.COLON), parseValueLiteral(lexer, isConst)),\n loc: loc(lexer, start)\n };\n} // Implements the parsing rules in the Directives section.\n\n/**\n * Directives[Const] : Directive[?Const]+\n */\n\n\nfunction parseDirectives(lexer, isConst) {\n var directives = [];\n\n while (peek(lexer, TokenKind.AT)) {\n directives.push(parseDirective(lexer, isConst));\n }\n\n return directives;\n}\n/**\n * Directive[Const] : @ Name Arguments[?Const]?\n */\n\n\nfunction parseDirective(lexer, isConst) {\n var start = lexer.token;\n expect(lexer, TokenKind.AT);\n return {\n kind: Kind.DIRECTIVE,\n name: parseName(lexer),\n arguments: parseArguments(lexer, isConst),\n loc: loc(lexer, start)\n };\n} // Implements the parsing rules in the Types section.\n\n/**\n * Type :\n * - NamedType\n * - ListType\n * - NonNullType\n */\n\n\nexport function parseTypeReference(lexer) {\n var start = lexer.token;\n var type;\n\n if (skip(lexer, TokenKind.BRACKET_L)) {\n type = parseTypeReference(lexer);\n expect(lexer, TokenKind.BRACKET_R);\n type = {\n kind: Kind.LIST_TYPE,\n type: type,\n loc: loc(lexer, start)\n };\n } else {\n type = parseNamedType(lexer);\n }\n\n if (skip(lexer, TokenKind.BANG)) {\n return {\n kind: Kind.NON_NULL_TYPE,\n type: type,\n loc: loc(lexer, start)\n };\n }\n\n return type;\n}\n/**\n * NamedType : Name\n */\n\nexport function parseNamedType(lexer) {\n var start = lexer.token;\n return {\n kind: Kind.NAMED_TYPE,\n name: parseName(lexer),\n loc: loc(lexer, start)\n };\n} // Implements the parsing rules in the Type Definition section.\n\n/**\n * TypeSystemDefinition :\n * - SchemaDefinition\n * - TypeDefinition\n * - DirectiveDefinition\n *\n * TypeDefinition :\n * - ScalarTypeDefinition\n * - ObjectTypeDefinition\n * - InterfaceTypeDefinition\n * - UnionTypeDefinition\n * - EnumTypeDefinition\n * - InputObjectTypeDefinition\n */\n\nfunction parseTypeSystemDefinition(lexer) {\n // Many definitions begin with a description and require a lookahead.\n var keywordToken = peekDescription(lexer) ? lexer.lookahead() : lexer.token;\n\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return parseSchemaDefinition(lexer);\n\n case 'scalar':\n return parseScalarTypeDefinition(lexer);\n\n case 'type':\n return parseObjectTypeDefinition(lexer);\n\n case 'interface':\n return parseInterfaceTypeDefinition(lexer);\n\n case 'union':\n return parseUnionTypeDefinition(lexer);\n\n case 'enum':\n return parseEnumTypeDefinition(lexer);\n\n case 'input':\n return parseInputObjectTypeDefinition(lexer);\n\n case 'directive':\n return parseDirectiveDefinition(lexer);\n }\n }\n\n throw unexpected(lexer, keywordToken);\n}\n\nfunction peekDescription(lexer) {\n return peek(lexer, TokenKind.STRING) || peek(lexer, TokenKind.BLOCK_STRING);\n}\n/**\n * Description : StringValue\n */\n\n\nfunction parseDescription(lexer) {\n if (peekDescription(lexer)) {\n return parseStringLiteral(lexer);\n }\n}\n/**\n * SchemaDefinition : schema Directives[Const]? { OperationTypeDefinition+ }\n */\n\n\nfunction parseSchemaDefinition(lexer) {\n var start = lexer.token;\n expectKeyword(lexer, 'schema');\n var directives = parseDirectives(lexer, true);\n var operationTypes = many(lexer, TokenKind.BRACE_L, parseOperationTypeDefinition, TokenKind.BRACE_R);\n return {\n kind: Kind.SCHEMA_DEFINITION,\n directives: directives,\n operationTypes: operationTypes,\n loc: loc(lexer, start)\n };\n}\n/**\n * OperationTypeDefinition : OperationType : NamedType\n */\n\n\nfunction parseOperationTypeDefinition(lexer) {\n var start = lexer.token;\n var operation = parseOperationType(lexer);\n expect(lexer, TokenKind.COLON);\n var type = parseNamedType(lexer);\n return {\n kind: Kind.OPERATION_TYPE_DEFINITION,\n operation: operation,\n type: type,\n loc: loc(lexer, start)\n };\n}\n/**\n * ScalarTypeDefinition : Description? scalar Name Directives[Const]?\n */\n\n\nfunction parseScalarTypeDefinition(lexer) {\n var start = lexer.token;\n var description = parseDescription(lexer);\n expectKeyword(lexer, 'scalar');\n var name = parseName(lexer);\n var directives = parseDirectives(lexer, true);\n return {\n kind: Kind.SCALAR_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n loc: loc(lexer, start)\n };\n}\n/**\n * ObjectTypeDefinition :\n * Description?\n * type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition?\n */\n\n\nfunction parseObjectTypeDefinition(lexer) {\n var start = lexer.token;\n var description = parseDescription(lexer);\n expectKeyword(lexer, 'type');\n var name = parseName(lexer);\n var interfaces = parseImplementsInterfaces(lexer);\n var directives = parseDirectives(lexer, true);\n var fields = parseFieldsDefinition(lexer);\n return {\n kind: Kind.OBJECT_TYPE_DEFINITION,\n description: description,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: loc(lexer, start)\n };\n}\n/**\n * ImplementsInterfaces :\n * - implements `&`? NamedType\n * - ImplementsInterfaces & NamedType\n */\n\n\nfunction parseImplementsInterfaces(lexer) {\n var types = [];\n\n if (lexer.token.value === 'implements') {\n lexer.advance(); // Optional leading ampersand\n\n skip(lexer, TokenKind.AMP);\n\n do {\n types.push(parseNamedType(lexer));\n } while (skip(lexer, TokenKind.AMP) || // Legacy support for the SDL?\n lexer.options.allowLegacySDLImplementsInterfaces && peek(lexer, TokenKind.NAME));\n }\n\n return types;\n}\n/**\n * FieldsDefinition : { FieldDefinition+ }\n */\n\n\nfunction parseFieldsDefinition(lexer) {\n // Legacy support for the SDL?\n if (lexer.options.allowLegacySDLEmptyFields && peek(lexer, TokenKind.BRACE_L) && lexer.lookahead().kind === TokenKind.BRACE_R) {\n lexer.advance();\n lexer.advance();\n return [];\n }\n\n return peek(lexer, TokenKind.BRACE_L) ? many(lexer, TokenKind.BRACE_L, parseFieldDefinition, TokenKind.BRACE_R) : [];\n}\n/**\n * FieldDefinition :\n * - Description? Name ArgumentsDefinition? : Type Directives[Const]?\n */\n\n\nfunction parseFieldDefinition(lexer) {\n var start = lexer.token;\n var description = parseDescription(lexer);\n var name = parseName(lexer);\n var args = parseArgumentDefs(lexer);\n expect(lexer, TokenKind.COLON);\n var type = parseTypeReference(lexer);\n var directives = parseDirectives(lexer, true);\n return {\n kind: Kind.FIELD_DEFINITION,\n description: description,\n name: name,\n arguments: args,\n type: type,\n directives: directives,\n loc: loc(lexer, start)\n };\n}\n/**\n * ArgumentsDefinition : ( InputValueDefinition+ )\n */\n\n\nfunction parseArgumentDefs(lexer) {\n if (!peek(lexer, TokenKind.PAREN_L)) {\n return [];\n }\n\n return many(lexer, TokenKind.PAREN_L, parseInputValueDef, TokenKind.PAREN_R);\n}\n/**\n * InputValueDefinition :\n * - Description? Name : Type DefaultValue? Directives[Const]?\n */\n\n\nfunction parseInputValueDef(lexer) {\n var start = lexer.token;\n var description = parseDescription(lexer);\n var name = parseName(lexer);\n expect(lexer, TokenKind.COLON);\n var type = parseTypeReference(lexer);\n var defaultValue;\n\n if (skip(lexer, TokenKind.EQUALS)) {\n defaultValue = parseConstValue(lexer);\n }\n\n var directives = parseDirectives(lexer, true);\n return {\n kind: Kind.INPUT_VALUE_DEFINITION,\n description: description,\n name: name,\n type: type,\n defaultValue: defaultValue,\n directives: directives,\n loc: loc(lexer, start)\n };\n}\n/**\n * InterfaceTypeDefinition :\n * - Description? interface Name Directives[Const]? FieldsDefinition?\n */\n\n\nfunction parseInterfaceTypeDefinition(lexer) {\n var start = lexer.token;\n var description = parseDescription(lexer);\n expectKeyword(lexer, 'interface');\n var name = parseName(lexer);\n var directives = parseDirectives(lexer, true);\n var fields = parseFieldsDefinition(lexer);\n return {\n kind: Kind.INTERFACE_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n fields: fields,\n loc: loc(lexer, start)\n };\n}\n/**\n * UnionTypeDefinition :\n * - Description? union Name Directives[Const]? UnionMemberTypes?\n */\n\n\nfunction parseUnionTypeDefinition(lexer) {\n var start = lexer.token;\n var description = parseDescription(lexer);\n expectKeyword(lexer, 'union');\n var name = parseName(lexer);\n var directives = parseDirectives(lexer, true);\n var types = parseUnionMemberTypes(lexer);\n return {\n kind: Kind.UNION_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n types: types,\n loc: loc(lexer, start)\n };\n}\n/**\n * UnionMemberTypes :\n * - = `|`? NamedType\n * - UnionMemberTypes | NamedType\n */\n\n\nfunction parseUnionMemberTypes(lexer) {\n var types = [];\n\n if (skip(lexer, TokenKind.EQUALS)) {\n // Optional leading pipe\n skip(lexer, TokenKind.PIPE);\n\n do {\n types.push(parseNamedType(lexer));\n } while (skip(lexer, TokenKind.PIPE));\n }\n\n return types;\n}\n/**\n * EnumTypeDefinition :\n * - Description? enum Name Directives[Const]? EnumValuesDefinition?\n */\n\n\nfunction parseEnumTypeDefinition(lexer) {\n var start = lexer.token;\n var description = parseDescription(lexer);\n expectKeyword(lexer, 'enum');\n var name = parseName(lexer);\n var directives = parseDirectives(lexer, true);\n var values = parseEnumValuesDefinition(lexer);\n return {\n kind: Kind.ENUM_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n values: values,\n loc: loc(lexer, start)\n };\n}\n/**\n * EnumValuesDefinition : { EnumValueDefinition+ }\n */\n\n\nfunction parseEnumValuesDefinition(lexer) {\n return peek(lexer, TokenKind.BRACE_L) ? many(lexer, TokenKind.BRACE_L, parseEnumValueDefinition, TokenKind.BRACE_R) : [];\n}\n/**\n * EnumValueDefinition : Description? EnumValue Directives[Const]?\n *\n * EnumValue : Name\n */\n\n\nfunction parseEnumValueDefinition(lexer) {\n var start = lexer.token;\n var description = parseDescription(lexer);\n var name = parseName(lexer);\n var directives = parseDirectives(lexer, true);\n return {\n kind: Kind.ENUM_VALUE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n loc: loc(lexer, start)\n };\n}\n/**\n * InputObjectTypeDefinition :\n * - Description? input Name Directives[Const]? InputFieldsDefinition?\n */\n\n\nfunction parseInputObjectTypeDefinition(lexer) {\n var start = lexer.token;\n var description = parseDescription(lexer);\n expectKeyword(lexer, 'input');\n var name = parseName(lexer);\n var directives = parseDirectives(lexer, true);\n var fields = parseInputFieldsDefinition(lexer);\n return {\n kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n fields: fields,\n loc: loc(lexer, start)\n };\n}\n/**\n * InputFieldsDefinition : { InputValueDefinition+ }\n */\n\n\nfunction parseInputFieldsDefinition(lexer) {\n return peek(lexer, TokenKind.BRACE_L) ? many(lexer, TokenKind.BRACE_L, parseInputValueDef, TokenKind.BRACE_R) : [];\n}\n/**\n * TypeSystemExtension :\n * - SchemaExtension\n * - TypeExtension\n *\n * TypeExtension :\n * - ScalarTypeExtension\n * - ObjectTypeExtension\n * - InterfaceTypeExtension\n * - UnionTypeExtension\n * - EnumTypeExtension\n * - InputObjectTypeDefinition\n */\n\n\nfunction parseTypeSystemExtension(lexer) {\n var keywordToken = lexer.lookahead();\n\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return parseSchemaExtension(lexer);\n\n case 'scalar':\n return parseScalarTypeExtension(lexer);\n\n case 'type':\n return parseObjectTypeExtension(lexer);\n\n case 'interface':\n return parseInterfaceTypeExtension(lexer);\n\n case 'union':\n return parseUnionTypeExtension(lexer);\n\n case 'enum':\n return parseEnumTypeExtension(lexer);\n\n case 'input':\n return parseInputObjectTypeExtension(lexer);\n }\n }\n\n throw unexpected(lexer, keywordToken);\n}\n/**\n * SchemaExtension :\n * - extend schema Directives[Const]? { OperationTypeDefinition+ }\n * - extend schema Directives[Const]\n */\n\n\nfunction parseSchemaExtension(lexer) {\n var start = lexer.token;\n expectKeyword(lexer, 'extend');\n expectKeyword(lexer, 'schema');\n var directives = parseDirectives(lexer, true);\n var operationTypes = peek(lexer, TokenKind.BRACE_L) ? many(lexer, TokenKind.BRACE_L, parseOperationTypeDefinition, TokenKind.BRACE_R) : [];\n\n if (directives.length === 0 && operationTypes.length === 0) {\n throw unexpected(lexer);\n }\n\n return {\n kind: Kind.SCHEMA_EXTENSION,\n directives: directives,\n operationTypes: operationTypes,\n loc: loc(lexer, start)\n };\n}\n/**\n * ScalarTypeExtension :\n * - extend scalar Name Directives[Const]\n */\n\n\nfunction parseScalarTypeExtension(lexer) {\n var start = lexer.token;\n expectKeyword(lexer, 'extend');\n expectKeyword(lexer, 'scalar');\n var name = parseName(lexer);\n var directives = parseDirectives(lexer, true);\n\n if (directives.length === 0) {\n throw unexpected(lexer);\n }\n\n return {\n kind: Kind.SCALAR_TYPE_EXTENSION,\n name: name,\n directives: directives,\n loc: loc(lexer, start)\n };\n}\n/**\n * ObjectTypeExtension :\n * - extend type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend type Name ImplementsInterfaces? Directives[Const]\n * - extend type Name ImplementsInterfaces\n */\n\n\nfunction parseObjectTypeExtension(lexer) {\n var start = lexer.token;\n expectKeyword(lexer, 'extend');\n expectKeyword(lexer, 'type');\n var name = parseName(lexer);\n var interfaces = parseImplementsInterfaces(lexer);\n var directives = parseDirectives(lexer, true);\n var fields = parseFieldsDefinition(lexer);\n\n if (interfaces.length === 0 && directives.length === 0 && fields.length === 0) {\n throw unexpected(lexer);\n }\n\n return {\n kind: Kind.OBJECT_TYPE_EXTENSION,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: loc(lexer, start)\n };\n}\n/**\n * InterfaceTypeExtension :\n * - extend interface Name Directives[Const]? FieldsDefinition\n * - extend interface Name Directives[Const]\n */\n\n\nfunction parseInterfaceTypeExtension(lexer) {\n var start = lexer.token;\n expectKeyword(lexer, 'extend');\n expectKeyword(lexer, 'interface');\n var name = parseName(lexer);\n var directives = parseDirectives(lexer, true);\n var fields = parseFieldsDefinition(lexer);\n\n if (directives.length === 0 && fields.length === 0) {\n throw unexpected(lexer);\n }\n\n return {\n kind: Kind.INTERFACE_TYPE_EXTENSION,\n name: name,\n directives: directives,\n fields: fields,\n loc: loc(lexer, start)\n };\n}\n/**\n * UnionTypeExtension :\n * - extend union Name Directives[Const]? UnionMemberTypes\n * - extend union Name Directives[Const]\n */\n\n\nfunction parseUnionTypeExtension(lexer) {\n var start = lexer.token;\n expectKeyword(lexer, 'extend');\n expectKeyword(lexer, 'union');\n var name = parseName(lexer);\n var directives = parseDirectives(lexer, true);\n var types = parseUnionMemberTypes(lexer);\n\n if (directives.length === 0 && types.length === 0) {\n throw unexpected(lexer);\n }\n\n return {\n kind: Kind.UNION_TYPE_EXTENSION,\n name: name,\n directives: directives,\n types: types,\n loc: loc(lexer, start)\n };\n}\n/**\n * EnumTypeExtension :\n * - extend enum Name Directives[Const]? EnumValuesDefinition\n * - extend enum Name Directives[Const]\n */\n\n\nfunction parseEnumTypeExtension(lexer) {\n var start = lexer.token;\n expectKeyword(lexer, 'extend');\n expectKeyword(lexer, 'enum');\n var name = parseName(lexer);\n var directives = parseDirectives(lexer, true);\n var values = parseEnumValuesDefinition(lexer);\n\n if (directives.length === 0 && values.length === 0) {\n throw unexpected(lexer);\n }\n\n return {\n kind: Kind.ENUM_TYPE_EXTENSION,\n name: name,\n directives: directives,\n values: values,\n loc: loc(lexer, start)\n };\n}\n/**\n * InputObjectTypeExtension :\n * - extend input Name Directives[Const]? InputFieldsDefinition\n * - extend input Name Directives[Const]\n */\n\n\nfunction parseInputObjectTypeExtension(lexer) {\n var start = lexer.token;\n expectKeyword(lexer, 'extend');\n expectKeyword(lexer, 'input');\n var name = parseName(lexer);\n var directives = parseDirectives(lexer, true);\n var fields = parseInputFieldsDefinition(lexer);\n\n if (directives.length === 0 && fields.length === 0) {\n throw unexpected(lexer);\n }\n\n return {\n kind: Kind.INPUT_OBJECT_TYPE_EXTENSION,\n name: name,\n directives: directives,\n fields: fields,\n loc: loc(lexer, start)\n };\n}\n/**\n * DirectiveDefinition :\n * - Description? directive @ Name ArgumentsDefinition? on DirectiveLocations\n */\n\n\nfunction parseDirectiveDefinition(lexer) {\n var start = lexer.token;\n var description = parseDescription(lexer);\n expectKeyword(lexer, 'directive');\n expect(lexer, TokenKind.AT);\n var name = parseName(lexer);\n var args = parseArgumentDefs(lexer);\n expectKeyword(lexer, 'on');\n var locations = parseDirectiveLocations(lexer);\n return {\n kind: Kind.DIRECTIVE_DEFINITION,\n description: description,\n name: name,\n arguments: args,\n locations: locations,\n loc: loc(lexer, start)\n };\n}\n/**\n * DirectiveLocations :\n * - `|`? DirectiveLocation\n * - DirectiveLocations | DirectiveLocation\n */\n\n\nfunction parseDirectiveLocations(lexer) {\n // Optional leading pipe\n skip(lexer, TokenKind.PIPE);\n var locations = [];\n\n do {\n locations.push(parseDirectiveLocation(lexer));\n } while (skip(lexer, TokenKind.PIPE));\n\n return locations;\n}\n/*\n * DirectiveLocation :\n * - ExecutableDirectiveLocation\n * - TypeSystemDirectiveLocation\n *\n * ExecutableDirectiveLocation : one of\n * `QUERY`\n * `MUTATION`\n * `SUBSCRIPTION`\n * `FIELD`\n * `FRAGMENT_DEFINITION`\n * `FRAGMENT_SPREAD`\n * `INLINE_FRAGMENT`\n *\n * TypeSystemDirectiveLocation : one of\n * `SCHEMA`\n * `SCALAR`\n * `OBJECT`\n * `FIELD_DEFINITION`\n * `ARGUMENT_DEFINITION`\n * `INTERFACE`\n * `UNION`\n * `ENUM`\n * `ENUM_VALUE`\n * `INPUT_OBJECT`\n * `INPUT_FIELD_DEFINITION`\n */\n\n\nfunction parseDirectiveLocation(lexer) {\n var start = lexer.token;\n var name = parseName(lexer);\n\n if (DirectiveLocation.hasOwnProperty(name.value)) {\n return name;\n }\n\n throw unexpected(lexer, start);\n} // Core parsing utility functions\n\n/**\n * Returns a location object, used to identify the place in\n * the source that created a given parsed object.\n */\n\n\nfunction loc(lexer, startToken) {\n if (!lexer.options.noLocation) {\n return new Loc(startToken, lexer.lastToken, lexer.source);\n }\n}\n\nfunction Loc(startToken, endToken, source) {\n this.start = startToken.start;\n this.end = endToken.end;\n this.startToken = startToken;\n this.endToken = endToken;\n this.source = source;\n} // Print a simplified form when appearing in JSON/util.inspect.\n\n\nLoc.prototype.toJSON = Loc.prototype.inspect = function toJSON() {\n return {\n start: this.start,\n end: this.end\n };\n};\n/**\n * Determines if the next token is of a given kind\n */\n\n\nfunction peek(lexer, kind) {\n return lexer.token.kind === kind;\n}\n/**\n * If the next token is of the given kind, return true after advancing\n * the lexer. Otherwise, do not change the parser state and return false.\n */\n\n\nfunction skip(lexer, kind) {\n var match = lexer.token.kind === kind;\n\n if (match) {\n lexer.advance();\n }\n\n return match;\n}\n/**\n * If the next token is of the given kind, return that token after advancing\n * the lexer. Otherwise, do not change the parser state and throw an error.\n */\n\n\nfunction expect(lexer, kind) {\n var token = lexer.token;\n\n if (token.kind === kind) {\n lexer.advance();\n return token;\n }\n\n throw syntaxError(lexer.source, token.start, \"Expected \".concat(kind, \", found \").concat(getTokenDesc(token)));\n}\n/**\n * If the next token is a keyword with the given value, return that token after\n * advancing the lexer. Otherwise, do not change the parser state and return\n * false.\n */\n\n\nfunction expectKeyword(lexer, value) {\n var token = lexer.token;\n\n if (token.kind === TokenKind.NAME && token.value === value) {\n lexer.advance();\n return token;\n }\n\n throw syntaxError(lexer.source, token.start, \"Expected \\\"\".concat(value, \"\\\", found \").concat(getTokenDesc(token)));\n}\n/**\n * Helper function for creating an error when an unexpected lexed token\n * is encountered.\n */\n\n\nfunction unexpected(lexer, atToken) {\n var token = atToken || lexer.token;\n return syntaxError(lexer.source, token.start, \"Unexpected \".concat(getTokenDesc(token)));\n}\n/**\n * Returns a possibly empty list of parse nodes, determined by\n * the parseFn. This list begins with a lex token of openKind\n * and ends with a lex token of closeKind. Advances the parser\n * to the next lex token after the closing token.\n */\n\n\nfunction any(lexer, openKind, parseFn, closeKind) {\n expect(lexer, openKind);\n var nodes = [];\n\n while (!skip(lexer, closeKind)) {\n nodes.push(parseFn(lexer));\n }\n\n return nodes;\n}\n/**\n * Returns a non-empty list of parse nodes, determined by\n * the parseFn. This list begins with a lex token of openKind\n * and ends with a lex token of closeKind. Advances the parser\n * to the next lex token after the closing token.\n */\n\n\nfunction many(lexer, openKind, parseFn, closeKind) {\n expect(lexer, openKind);\n var nodes = [parseFn(lexer)];\n\n while (!skip(lexer, closeKind)) {\n nodes.push(parseFn(lexer));\n }\n\n return nodes;\n}","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\n\n/**\n * A visitor is provided to visit, it contains the collection of\n * relevant functions to be called during the visitor's traversal.\n */\n\n/**\n * A visitor is comprised of visit functions, which are called on each node\n * during the visitor's traversal.\n */\n\n/**\n * A KeyMap describes each the traversable properties of each kind of node.\n */\nexport var QueryDocumentKeys = {\n Name: [],\n Document: ['definitions'],\n OperationDefinition: ['name', 'variableDefinitions', 'directives', 'selectionSet'],\n VariableDefinition: ['variable', 'type', 'defaultValue', 'directives'],\n Variable: ['name'],\n SelectionSet: ['selections'],\n Field: ['alias', 'name', 'arguments', 'directives', 'selectionSet'],\n Argument: ['name', 'value'],\n FragmentSpread: ['name', 'directives'],\n InlineFragment: ['typeCondition', 'directives', 'selectionSet'],\n FragmentDefinition: ['name', // Note: fragment variable definitions are experimental and may be changed\n // or removed in the future.\n 'variableDefinitions', 'typeCondition', 'directives', 'selectionSet'],\n IntValue: [],\n FloatValue: [],\n StringValue: [],\n BooleanValue: [],\n NullValue: [],\n EnumValue: [],\n ListValue: ['values'],\n ObjectValue: ['fields'],\n ObjectField: ['name', 'value'],\n Directive: ['name', 'arguments'],\n NamedType: ['name'],\n ListType: ['type'],\n NonNullType: ['type'],\n SchemaDefinition: ['directives', 'operationTypes'],\n OperationTypeDefinition: ['type'],\n ScalarTypeDefinition: ['description', 'name', 'directives'],\n ObjectTypeDefinition: ['description', 'name', 'interfaces', 'directives', 'fields'],\n FieldDefinition: ['description', 'name', 'arguments', 'type', 'directives'],\n InputValueDefinition: ['description', 'name', 'type', 'defaultValue', 'directives'],\n InterfaceTypeDefinition: ['description', 'name', 'directives', 'fields'],\n UnionTypeDefinition: ['description', 'name', 'directives', 'types'],\n EnumTypeDefinition: ['description', 'name', 'directives', 'values'],\n EnumValueDefinition: ['description', 'name', 'directives'],\n InputObjectTypeDefinition: ['description', 'name', 'directives', 'fields'],\n DirectiveDefinition: ['description', 'name', 'arguments', 'locations'],\n SchemaExtension: ['directives', 'operationTypes'],\n ScalarTypeExtension: ['name', 'directives'],\n ObjectTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n InterfaceTypeExtension: ['name', 'directives', 'fields'],\n UnionTypeExtension: ['name', 'directives', 'types'],\n EnumTypeExtension: ['name', 'directives', 'values'],\n InputObjectTypeExtension: ['name', 'directives', 'fields']\n};\nexport var BREAK = {};\n/**\n * visit() will walk through an AST using a depth first traversal, calling\n * the visitor's enter function at each node in the traversal, and calling the\n * leave function after visiting that node and all of its child nodes.\n *\n * By returning different values from the enter and leave functions, the\n * behavior of the visitor can be altered, including skipping over a sub-tree of\n * the AST (by returning false), editing the AST by returning a value or null\n * to remove the value, or to stop the whole traversal by returning BREAK.\n *\n * When using visit() to edit an AST, the original AST will not be modified, and\n * a new version of the AST with the changes applied will be returned from the\n * visit function.\n *\n * const editedAST = visit(ast, {\n * enter(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: skip visiting this node\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * },\n * leave(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: no action\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * }\n * });\n *\n * Alternatively to providing enter() and leave() functions, a visitor can\n * instead provide functions named the same as the kinds of AST nodes, or\n * enter/leave visitors at a named key, leading to four permutations of\n * visitor API:\n *\n * 1) Named visitors triggered when entering a node a specific kind.\n *\n * visit(ast, {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * })\n *\n * 2) Named visitors that trigger upon entering and leaving a node of\n * a specific kind.\n *\n * visit(ast, {\n * Kind: {\n * enter(node) {\n * // enter the \"Kind\" node\n * }\n * leave(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n *\n * 3) Generic visitors that trigger upon entering and leaving any node.\n *\n * visit(ast, {\n * enter(node) {\n * // enter any node\n * },\n * leave(node) {\n * // leave any node\n * }\n * })\n *\n * 4) Parallel visitors for entering and leaving nodes of a specific kind.\n *\n * visit(ast, {\n * enter: {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * },\n * leave: {\n * Kind(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n */\n\nexport function visit(root, visitor) {\n var visitorKeys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : QueryDocumentKeys;\n\n /* eslint-disable no-undef-init */\n var stack = undefined;\n var inArray = Array.isArray(root);\n var keys = [root];\n var index = -1;\n var edits = [];\n var node = undefined;\n var key = undefined;\n var parent = undefined;\n var path = [];\n var ancestors = [];\n var newRoot = root;\n /* eslint-enable no-undef-init */\n\n do {\n index++;\n var isLeaving = index === keys.length;\n var isEdited = isLeaving && edits.length !== 0;\n\n if (isLeaving) {\n key = ancestors.length === 0 ? undefined : path[path.length - 1];\n node = parent;\n parent = ancestors.pop();\n\n if (isEdited) {\n if (inArray) {\n node = node.slice();\n } else {\n var clone = {};\n\n for (var k in node) {\n if (node.hasOwnProperty(k)) {\n clone[k] = node[k];\n }\n }\n\n node = clone;\n }\n\n var editOffset = 0;\n\n for (var ii = 0; ii < edits.length; ii++) {\n var editKey = edits[ii][0];\n var editValue = edits[ii][1];\n\n if (inArray) {\n editKey -= editOffset;\n }\n\n if (inArray && editValue === null) {\n node.splice(editKey, 1);\n editOffset++;\n } else {\n node[editKey] = editValue;\n }\n }\n }\n\n index = stack.index;\n keys = stack.keys;\n edits = stack.edits;\n inArray = stack.inArray;\n stack = stack.prev;\n } else {\n key = parent ? inArray ? index : keys[index] : undefined;\n node = parent ? parent[key] : newRoot;\n\n if (node === null || node === undefined) {\n continue;\n }\n\n if (parent) {\n path.push(key);\n }\n }\n\n var result = void 0;\n\n if (!Array.isArray(node)) {\n if (!isNode(node)) {\n throw new Error('Invalid AST Node: ' + JSON.stringify(node));\n }\n\n var visitFn = getVisitFn(visitor, node.kind, isLeaving);\n\n if (visitFn) {\n result = visitFn.call(visitor, node, key, parent, path, ancestors);\n\n if (result === BREAK) {\n break;\n }\n\n if (result === false) {\n if (!isLeaving) {\n path.pop();\n continue;\n }\n } else if (result !== undefined) {\n edits.push([key, result]);\n\n if (!isLeaving) {\n if (isNode(result)) {\n node = result;\n } else {\n path.pop();\n continue;\n }\n }\n }\n }\n }\n\n if (result === undefined && isEdited) {\n edits.push([key, node]);\n }\n\n if (isLeaving) {\n path.pop();\n } else {\n stack = {\n inArray: inArray,\n index: index,\n keys: keys,\n edits: edits,\n prev: stack\n };\n inArray = Array.isArray(node);\n keys = inArray ? node : visitorKeys[node.kind] || [];\n index = -1;\n edits = [];\n\n if (parent) {\n ancestors.push(parent);\n }\n\n parent = node;\n }\n } while (stack !== undefined);\n\n if (edits.length !== 0) {\n newRoot = edits[edits.length - 1][1];\n }\n\n return newRoot;\n}\n\nfunction isNode(maybeNode) {\n return Boolean(maybeNode && typeof maybeNode.kind === 'string');\n}\n/**\n * Creates a new visitor instance which delegates to many visitors to run in\n * parallel. Each visitor will be visited for each node before moving on.\n *\n * If a prior visitor edits a node, no following visitors will see that node.\n */\n\n\nexport function visitInParallel(visitors) {\n var skipping = new Array(visitors.length);\n return {\n enter: function enter(node) {\n for (var i = 0; i < visitors.length; i++) {\n if (!skipping[i]) {\n var fn = getVisitFn(visitors[i], node.kind,\n /* isLeaving */\n false);\n\n if (fn) {\n var result = fn.apply(visitors[i], arguments);\n\n if (result === false) {\n skipping[i] = node;\n } else if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined) {\n return result;\n }\n }\n }\n }\n },\n leave: function leave(node) {\n for (var i = 0; i < visitors.length; i++) {\n if (!skipping[i]) {\n var fn = getVisitFn(visitors[i], node.kind,\n /* isLeaving */\n true);\n\n if (fn) {\n var result = fn.apply(visitors[i], arguments);\n\n if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined && result !== false) {\n return result;\n }\n }\n } else if (skipping[i] === node) {\n skipping[i] = null;\n }\n }\n }\n };\n}\n/**\n * Creates a new visitor instance which maintains a provided TypeInfo instance\n * along with visiting visitor.\n */\n\nexport function visitWithTypeInfo(typeInfo, visitor) {\n return {\n enter: function enter(node) {\n typeInfo.enter(node);\n var fn = getVisitFn(visitor, node.kind,\n /* isLeaving */\n false);\n\n if (fn) {\n var result = fn.apply(visitor, arguments);\n\n if (result !== undefined) {\n typeInfo.leave(node);\n\n if (isNode(result)) {\n typeInfo.enter(result);\n }\n }\n\n return result;\n }\n },\n leave: function leave(node) {\n var fn = getVisitFn(visitor, node.kind,\n /* isLeaving */\n true);\n var result;\n\n if (fn) {\n result = fn.apply(visitor, arguments);\n }\n\n typeInfo.leave(node);\n return result;\n }\n };\n}\n/**\n * Given a visitor instance, if it is leaving or not, and a node kind, return\n * the function the visitor runtime should call.\n */\n\nexport function getVisitFn(visitor, kind, isLeaving) {\n var kindVisitor = visitor[kind];\n\n if (kindVisitor) {\n if (!isLeaving && typeof kindVisitor === 'function') {\n // { Kind() {} }\n return kindVisitor;\n }\n\n var kindSpecificVisitor = isLeaving ? kindVisitor.leave : kindVisitor.enter;\n\n if (typeof kindSpecificVisitor === 'function') {\n // { Kind: { enter() {}, leave() {} } }\n return kindSpecificVisitor;\n }\n } else {\n var specificVisitor = isLeaving ? visitor.leave : visitor.enter;\n\n if (specificVisitor) {\n if (typeof specificVisitor === 'function') {\n // { enter() {}, leave() {} }\n return specificVisitor;\n }\n\n var specificKindVisitor = specificVisitor[kind];\n\n if (typeof specificKindVisitor === 'function') {\n // { enter: { Kind() {} }, leave: { Kind() {} } }\n return specificKindVisitor;\n }\n }\n }\n}","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { visit } from './visitor';\n/**\n * Converts an AST into a string, using one set of reasonable\n * formatting rules.\n */\n\nexport function print(ast) {\n return visit(ast, {\n leave: printDocASTReducer\n });\n}\nvar printDocASTReducer = {\n Name: function Name(node) {\n return node.value;\n },\n Variable: function Variable(node) {\n return '$' + node.name;\n },\n // Document\n Document: function Document(node) {\n return join(node.definitions, '\\n\\n') + '\\n';\n },\n OperationDefinition: function OperationDefinition(node) {\n var op = node.operation;\n var name = node.name;\n var varDefs = wrap('(', join(node.variableDefinitions, ', '), ')');\n var directives = join(node.directives, ' ');\n var selectionSet = node.selectionSet; // Anonymous queries with no directives or variable definitions can use\n // the query short form.\n\n return !name && !directives && !varDefs && op === 'query' ? selectionSet : join([op, join([name, varDefs]), directives, selectionSet], ' ');\n },\n VariableDefinition: function VariableDefinition(_ref) {\n var variable = _ref.variable,\n type = _ref.type,\n defaultValue = _ref.defaultValue,\n directives = _ref.directives;\n return variable + ': ' + type + wrap(' = ', defaultValue) + wrap(' ', join(directives, ' '));\n },\n SelectionSet: function SelectionSet(_ref2) {\n var selections = _ref2.selections;\n return block(selections);\n },\n Field: function Field(_ref3) {\n var alias = _ref3.alias,\n name = _ref3.name,\n args = _ref3.arguments,\n directives = _ref3.directives,\n selectionSet = _ref3.selectionSet;\n return join([wrap('', alias, ': ') + name + wrap('(', join(args, ', '), ')'), join(directives, ' '), selectionSet], ' ');\n },\n Argument: function Argument(_ref4) {\n var name = _ref4.name,\n value = _ref4.value;\n return name + ': ' + value;\n },\n // Fragments\n FragmentSpread: function FragmentSpread(_ref5) {\n var name = _ref5.name,\n directives = _ref5.directives;\n return '...' + name + wrap(' ', join(directives, ' '));\n },\n InlineFragment: function InlineFragment(_ref6) {\n var typeCondition = _ref6.typeCondition,\n directives = _ref6.directives,\n selectionSet = _ref6.selectionSet;\n return join(['...', wrap('on ', typeCondition), join(directives, ' '), selectionSet], ' ');\n },\n FragmentDefinition: function FragmentDefinition(_ref7) {\n var name = _ref7.name,\n typeCondition = _ref7.typeCondition,\n variableDefinitions = _ref7.variableDefinitions,\n directives = _ref7.directives,\n selectionSet = _ref7.selectionSet;\n return (// Note: fragment variable definitions are experimental and may be changed\n // or removed in the future.\n \"fragment \".concat(name).concat(wrap('(', join(variableDefinitions, ', '), ')'), \" \") + \"on \".concat(typeCondition, \" \").concat(wrap('', join(directives, ' '), ' ')) + selectionSet\n );\n },\n // Value\n IntValue: function IntValue(_ref8) {\n var value = _ref8.value;\n return value;\n },\n FloatValue: function FloatValue(_ref9) {\n var value = _ref9.value;\n return value;\n },\n StringValue: function StringValue(_ref10, key) {\n var value = _ref10.value,\n isBlockString = _ref10.block;\n return isBlockString ? printBlockString(value, key === 'description') : JSON.stringify(value);\n },\n BooleanValue: function BooleanValue(_ref11) {\n var value = _ref11.value;\n return value ? 'true' : 'false';\n },\n NullValue: function NullValue() {\n return 'null';\n },\n EnumValue: function EnumValue(_ref12) {\n var value = _ref12.value;\n return value;\n },\n ListValue: function ListValue(_ref13) {\n var values = _ref13.values;\n return '[' + join(values, ', ') + ']';\n },\n ObjectValue: function ObjectValue(_ref14) {\n var fields = _ref14.fields;\n return '{' + join(fields, ', ') + '}';\n },\n ObjectField: function ObjectField(_ref15) {\n var name = _ref15.name,\n value = _ref15.value;\n return name + ': ' + value;\n },\n // Directive\n Directive: function Directive(_ref16) {\n var name = _ref16.name,\n args = _ref16.arguments;\n return '@' + name + wrap('(', join(args, ', '), ')');\n },\n // Type\n NamedType: function NamedType(_ref17) {\n var name = _ref17.name;\n return name;\n },\n ListType: function ListType(_ref18) {\n var type = _ref18.type;\n return '[' + type + ']';\n },\n NonNullType: function NonNullType(_ref19) {\n var type = _ref19.type;\n return type + '!';\n },\n // Type System Definitions\n SchemaDefinition: function SchemaDefinition(_ref20) {\n var directives = _ref20.directives,\n operationTypes = _ref20.operationTypes;\n return join(['schema', join(directives, ' '), block(operationTypes)], ' ');\n },\n OperationTypeDefinition: function OperationTypeDefinition(_ref21) {\n var operation = _ref21.operation,\n type = _ref21.type;\n return operation + ': ' + type;\n },\n ScalarTypeDefinition: addDescription(function (_ref22) {\n var name = _ref22.name,\n directives = _ref22.directives;\n return join(['scalar', name, join(directives, ' ')], ' ');\n }),\n ObjectTypeDefinition: addDescription(function (_ref23) {\n var name = _ref23.name,\n interfaces = _ref23.interfaces,\n directives = _ref23.directives,\n fields = _ref23.fields;\n return join(['type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n }),\n FieldDefinition: addDescription(function (_ref24) {\n var name = _ref24.name,\n args = _ref24.arguments,\n type = _ref24.type,\n directives = _ref24.directives;\n return name + (args.every(function (arg) {\n return arg.indexOf('\\n') === -1;\n }) ? wrap('(', join(args, ', '), ')') : wrap('(\\n', indent(join(args, '\\n')), '\\n)')) + ': ' + type + wrap(' ', join(directives, ' '));\n }),\n InputValueDefinition: addDescription(function (_ref25) {\n var name = _ref25.name,\n type = _ref25.type,\n defaultValue = _ref25.defaultValue,\n directives = _ref25.directives;\n return join([name + ': ' + type, wrap('= ', defaultValue), join(directives, ' ')], ' ');\n }),\n InterfaceTypeDefinition: addDescription(function (_ref26) {\n var name = _ref26.name,\n directives = _ref26.directives,\n fields = _ref26.fields;\n return join(['interface', name, join(directives, ' '), block(fields)], ' ');\n }),\n UnionTypeDefinition: addDescription(function (_ref27) {\n var name = _ref27.name,\n directives = _ref27.directives,\n types = _ref27.types;\n return join(['union', name, join(directives, ' '), types && types.length !== 0 ? '= ' + join(types, ' | ') : ''], ' ');\n }),\n EnumTypeDefinition: addDescription(function (_ref28) {\n var name = _ref28.name,\n directives = _ref28.directives,\n values = _ref28.values;\n return join(['enum', name, join(directives, ' '), block(values)], ' ');\n }),\n EnumValueDefinition: addDescription(function (_ref29) {\n var name = _ref29.name,\n directives = _ref29.directives;\n return join([name, join(directives, ' ')], ' ');\n }),\n InputObjectTypeDefinition: addDescription(function (_ref30) {\n var name = _ref30.name,\n directives = _ref30.directives,\n fields = _ref30.fields;\n return join(['input', name, join(directives, ' '), block(fields)], ' ');\n }),\n DirectiveDefinition: addDescription(function (_ref31) {\n var name = _ref31.name,\n args = _ref31.arguments,\n locations = _ref31.locations;\n return 'directive @' + name + (args.every(function (arg) {\n return arg.indexOf('\\n') === -1;\n }) ? wrap('(', join(args, ', '), ')') : wrap('(\\n', indent(join(args, '\\n')), '\\n)')) + ' on ' + join(locations, ' | ');\n }),\n SchemaExtension: function SchemaExtension(_ref32) {\n var directives = _ref32.directives,\n operationTypes = _ref32.operationTypes;\n return join(['extend schema', join(directives, ' '), block(operationTypes)], ' ');\n },\n ScalarTypeExtension: function ScalarTypeExtension(_ref33) {\n var name = _ref33.name,\n directives = _ref33.directives;\n return join(['extend scalar', name, join(directives, ' ')], ' ');\n },\n ObjectTypeExtension: function ObjectTypeExtension(_ref34) {\n var name = _ref34.name,\n interfaces = _ref34.interfaces,\n directives = _ref34.directives,\n fields = _ref34.fields;\n return join(['extend type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n },\n InterfaceTypeExtension: function InterfaceTypeExtension(_ref35) {\n var name = _ref35.name,\n directives = _ref35.directives,\n fields = _ref35.fields;\n return join(['extend interface', name, join(directives, ' '), block(fields)], ' ');\n },\n UnionTypeExtension: function UnionTypeExtension(_ref36) {\n var name = _ref36.name,\n directives = _ref36.directives,\n types = _ref36.types;\n return join(['extend union', name, join(directives, ' '), types && types.length !== 0 ? '= ' + join(types, ' | ') : ''], ' ');\n },\n EnumTypeExtension: function EnumTypeExtension(_ref37) {\n var name = _ref37.name,\n directives = _ref37.directives,\n values = _ref37.values;\n return join(['extend enum', name, join(directives, ' '), block(values)], ' ');\n },\n InputObjectTypeExtension: function InputObjectTypeExtension(_ref38) {\n var name = _ref38.name,\n directives = _ref38.directives,\n fields = _ref38.fields;\n return join(['extend input', name, join(directives, ' '), block(fields)], ' ');\n }\n};\n\nfunction addDescription(cb) {\n return function (node) {\n return join([node.description, cb(node)], '\\n');\n };\n}\n/**\n * Given maybeArray, print an empty string if it is null or empty, otherwise\n * print all items together separated by separator if provided\n */\n\n\nfunction join(maybeArray, separator) {\n return maybeArray ? maybeArray.filter(function (x) {\n return x;\n }).join(separator || '') : '';\n}\n/**\n * Given array, print each item on its own line, wrapped in an\n * indented \"{ }\" block.\n */\n\n\nfunction block(array) {\n return array && array.length !== 0 ? '{\\n' + indent(join(array, '\\n')) + '\\n}' : '';\n}\n/**\n * If maybeString is not null or empty, then wrap with start and end, otherwise\n * print an empty string.\n */\n\n\nfunction wrap(start, maybeString, end) {\n return maybeString ? start + maybeString + (end || '') : '';\n}\n\nfunction indent(maybeString) {\n return maybeString && ' ' + maybeString.replace(/\\n/g, '\\n ');\n}\n/**\n * Print a block string in the indented block form by adding a leading and\n * trailing blank line. However, if a block string starts with whitespace and is\n * a single-line, adding a leading blank line would strip that whitespace.\n */\n\n\nfunction printBlockString(value, isDescription) {\n var escaped = value.replace(/\"\"\"/g, '\\\\\"\"\"');\n return (value[0] === ' ' || value[0] === '\\t') && value.indexOf('\\n') === -1 ? \"\\\"\\\"\\\"\".concat(escaped.replace(/\"$/, '\"\\n'), \"\\\"\\\"\\\"\") : \"\\\"\\\"\\\"\\n\".concat(isDescription ? escaped : indent(escaped), \"\\n\\\"\\\"\\\"\");\n}","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\n\n/**\n * Represents a location in a Source.\n */\n\n/**\n * Takes a Source and a UTF-8 character offset, and returns the corresponding\n * line and column as a SourceLocation.\n */\nexport function getLocation(source, position) {\n var lineRegexp = /\\r\\n|[\\n\\r]/g;\n var line = 1;\n var column = position + 1;\n var match;\n\n while ((match = lineRegexp.exec(source.body)) && match.index < position) {\n line += 1;\n column = position + 1 - (match.index + match[0].length);\n }\n\n return {\n line: line,\n column: column\n };\n}","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\nimport { getLocation } from '../language/location';\n\n/**\n * Prints a GraphQLError to a string, representing useful location information\n * about the error's position in the source.\n */\nexport function printError(error) {\n var printedLocations = [];\n\n if (error.nodes) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = error.nodes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var node = _step.value;\n\n if (node.loc) {\n printedLocations.push(highlightSourceAtLocation(node.loc.source, getLocation(node.loc.source, node.loc.start)));\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n } else if (error.source && error.locations) {\n var source = error.source;\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = error.locations[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var location = _step2.value;\n printedLocations.push(highlightSourceAtLocation(source, location));\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n\n return printedLocations.length === 0 ? error.message : [error.message].concat(printedLocations).join('\\n\\n') + '\\n';\n}\n/**\n * Render a helpful description of the location of the error in the GraphQL\n * Source document.\n */\n\nfunction highlightSourceAtLocation(source, location) {\n var firstLineColumnOffset = source.locationOffset.column - 1;\n var body = whitespace(firstLineColumnOffset) + source.body;\n var lineIndex = location.line - 1;\n var lineOffset = source.locationOffset.line - 1;\n var lineNum = location.line + lineOffset;\n var columnOffset = location.line === 1 ? firstLineColumnOffset : 0;\n var columnNum = location.column + columnOffset;\n var lines = body.split(/\\r\\n|[\\n\\r]/g);\n return \"\".concat(source.name, \" (\").concat(lineNum, \":\").concat(columnNum, \")\\n\") + printPrefixedLines([// Lines specified like this: [\"prefix\", \"string\"],\n [\"\".concat(lineNum - 1, \": \"), lines[lineIndex - 1]], [\"\".concat(lineNum, \": \"), lines[lineIndex]], ['', whitespace(columnNum - 1) + '^'], [\"\".concat(lineNum + 1, \": \"), lines[lineIndex + 1]]]);\n}\n\nfunction printPrefixedLines(lines) {\n var existingLines = lines.filter(function (_ref) {\n var _ = _ref[0],\n line = _ref[1];\n return line !== undefined;\n });\n var padLen = 0;\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = existingLines[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var _ref4 = _step3.value;\n var prefix = _ref4[0];\n padLen = Math.max(padLen, prefix.length);\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return != null) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n return existingLines.map(function (_ref3) {\n var prefix = _ref3[0],\n line = _ref3[1];\n return lpad(padLen, prefix) + line;\n }).join('\\n');\n}\n\nfunction whitespace(len) {\n return Array(len + 1).join(' ');\n}\n\nfunction lpad(len, str) {\n return whitespace(len - str.length) + str;\n}","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\nimport { printError } from './printError';\nimport { getLocation } from '../language/location';\nexport function GraphQLError( // eslint-disable-line no-redeclare\nmessage, nodes, source, positions, path, originalError, extensions) {\n // Compute list of blame nodes.\n var _nodes = Array.isArray(nodes) ? nodes.length !== 0 ? nodes : undefined : nodes ? [nodes] : undefined; // Compute locations in the source for the given nodes/positions.\n\n\n var _source = source;\n\n if (!_source && _nodes) {\n var node = _nodes[0];\n _source = node && node.loc && node.loc.source;\n }\n\n var _positions = positions;\n\n if (!_positions && _nodes) {\n _positions = _nodes.reduce(function (list, node) {\n if (node.loc) {\n list.push(node.loc.start);\n }\n\n return list;\n }, []);\n }\n\n if (_positions && _positions.length === 0) {\n _positions = undefined;\n }\n\n var _locations;\n\n if (positions && source) {\n _locations = positions.map(function (pos) {\n return getLocation(source, pos);\n });\n } else if (_nodes) {\n _locations = _nodes.reduce(function (list, node) {\n if (node.loc) {\n list.push(getLocation(node.loc.source, node.loc.start));\n }\n\n return list;\n }, []);\n }\n\n var _extensions = extensions || originalError && originalError.extensions;\n\n Object.defineProperties(this, {\n message: {\n value: message,\n // By being enumerable, JSON.stringify will include `message` in the\n // resulting output. This ensures that the simplest possible GraphQL\n // service adheres to the spec.\n enumerable: true,\n writable: true\n },\n locations: {\n // Coercing falsey values to undefined ensures they will not be included\n // in JSON.stringify() when not provided.\n value: _locations || undefined,\n // By being enumerable, JSON.stringify will include `locations` in the\n // resulting output. This ensures that the simplest possible GraphQL\n // service adheres to the spec.\n enumerable: Boolean(_locations)\n },\n path: {\n // Coercing falsey values to undefined ensures they will not be included\n // in JSON.stringify() when not provided.\n value: path || undefined,\n // By being enumerable, JSON.stringify will include `path` in the\n // resulting output. This ensures that the simplest possible GraphQL\n // service adheres to the spec.\n enumerable: Boolean(path)\n },\n nodes: {\n value: _nodes || undefined\n },\n source: {\n value: _source || undefined\n },\n positions: {\n value: _positions || undefined\n },\n originalError: {\n value: originalError\n },\n extensions: {\n // Coercing falsey values to undefined ensures they will not be included\n // in JSON.stringify() when not provided.\n value: _extensions || undefined,\n // By being enumerable, JSON.stringify will include `path` in the\n // resulting output. This ensures that the simplest possible GraphQL\n // service adheres to the spec.\n enumerable: Boolean(_extensions)\n }\n }); // Include (non-enumerable) stack trace.\n\n if (originalError && originalError.stack) {\n Object.defineProperty(this, 'stack', {\n value: originalError.stack,\n writable: true,\n configurable: true\n });\n } else if (Error.captureStackTrace) {\n Error.captureStackTrace(this, GraphQLError);\n } else {\n Object.defineProperty(this, 'stack', {\n value: Error().stack,\n writable: true,\n configurable: true\n });\n }\n}\nGraphQLError.prototype = Object.create(Error.prototype, {\n constructor: {\n value: GraphQLError\n },\n name: {\n value: 'GraphQLError'\n },\n toString: {\n value: function toString() {\n return printError(this);\n }\n }\n});"],"sourceRoot":""}