{"version":3,"sources":["webpack:///./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/uuid/lib/rng-browser.js","webpack:///./node_modules/axios/lib/helpers/combineURLs.js","webpack:///./node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/zen-observable/index.js","webpack:///./node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/axios/lib/helpers/spread.js","webpack:///./node_modules/uuid/index.js","webpack:///./node_modules/@aws-amplify/api/node_modules/graphql/language/location.mjs","webpack:///./node_modules/@aws-amplify/api/node_modules/graphql/error/printError.mjs","webpack:///./node_modules/@aws-amplify/api/node_modules/graphql/error/GraphQLError.mjs","webpack:///./node_modules/@aws-amplify/api/node_modules/graphql/language/visitor.mjs","webpack:///./node_modules/@aws-amplify/api/node_modules/graphql/language/printer.mjs","webpack:///./node_modules/@aws-amplify/api/node_modules/graphql/jsutils/inspect.mjs","webpack:///./node_modules/@aws-amplify/api/node_modules/graphql/jsutils/invariant.mjs","webpack:///./node_modules/@aws-amplify/api/node_modules/graphql/language/source.mjs","webpack:///./node_modules/@aws-amplify/api/node_modules/graphql/jsutils/defineToStringTag.mjs","webpack:///./node_modules/@aws-amplify/api/node_modules/graphql/error/syntaxError.mjs","webpack:///./node_modules/@aws-amplify/api/node_modules/graphql/language/blockStringValue.mjs","webpack:///./node_modules/@aws-amplify/api/node_modules/graphql/language/lexer.mjs","webpack:///./node_modules/@aws-amplify/api/node_modules/graphql/language/kinds.mjs","webpack:///./node_modules/@aws-amplify/api/node_modules/graphql/language/directiveLocation.mjs","webpack:///./node_modules/@aws-amplify/api/node_modules/graphql/language/parser.mjs","webpack:///./node_modules/@aws-amplify/api/lib-esm/RestClient.js","webpack:///./node_modules/@aws-amplify/cache/lib-esm/Utils/CacheUtils.js","webpack:///./node_modules/@aws-amplify/cache/lib-esm/BrowserStorageCache.js","webpack:///./node_modules/@aws-amplify/cache/lib-esm/Utils/CacheList.js","webpack:///./node_modules/@aws-amplify/cache/lib-esm/StorageCache.js","webpack:///./node_modules/@aws-amplify/cache/lib-esm/InMemoryCache.js","webpack:///./node_modules/@aws-amplify/cache/lib-esm/index.js","webpack:///./node_modules/@aws-amplify/api/lib-esm/API.js","webpack:///./node_modules/@aws-amplify/api/lib-esm/index.js","webpack:///./node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/uuid/lib/bytesToUuid.js","webpack:///./node_modules/axios/lib/defaults.js","webpack:///./node_modules/axios/lib/core/createError.js","webpack:///./node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/@aws-amplify/core/lib/constants.js","webpack:///./node_modules/axios/lib/core/enhanceError.js","webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/axios/lib/core/settle.js","webpack:///./node_modules/axios/lib/core/mergeConfig.js","webpack:///./node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/axios/lib/cancel/Cancel.js","webpack:///./node_modules/axios/lib/helpers/cookies.js","webpack:///./node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/zen-observable/lib/Observable.js","webpack:///./node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/axios/index.js","webpack:///./node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/axios/node_modules/is-buffer/index.js","webpack:///./node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/uuid/v1.js","webpack:///./node_modules/axios/lib/utils.js","webpack:///./node_modules/uuid/v4.js","webpack:///./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///./node_modules/axios/lib/axios.js"],"names":["module","exports","url","test","getRandomValues","crypto","bind","msCrypto","window","rnds8","Uint8Array","rnds","Array","r","i","Math","random","baseURL","relativeURL","replace","utils","InterceptorManager","this","handlers","prototype","use","fulfilled","rejected","push","length","eject","id","forEach","fn","h","Observable","buildURL","dispatchRequest","mergeConfig","Axios","instanceConfig","defaults","interceptors","request","response","config","arguments","method","toLowerCase","chain","undefined","promise","Promise","resolve","interceptor","unshift","then","shift","getUri","params","paramsSerializer","merge","data","callback","arr","apply","v1","v4","uuid","getLocation","source","position","match","lineRegexp","line","column","exec","body","index","highlightSourceAtLocation","location","firstLineColumnOffset","locationOffset","whitespace","lineIndex","lineOffset","lineNum","columnOffset","columnNum","lines","split","concat","name","existingLines","filter","_ref","padLen","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","Symbol","iterator","next","done","prefix","value","max","err","return","map","_ref3","str","join","printPrefixedLines","len","GraphQLError","message","nodes","positions","path","originalError","extensions","_nodes","isArray","_source","node","loc","_locations","_positions","reduce","list","start","pos","_extensions","Object","defineProperties","enumerable","writable","locations","Boolean","stack","defineProperty","configurable","Error","captureStackTrace","create","constructor","toString","error","printedLocations","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","printError","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","isNode","maybeNode","kind","getVisitFn","visitor","isLeaving","kindVisitor","kindSpecificVisitor","leave","enter","specificVisitor","specificKindVisitor","print","ast","root","visitorKeys","inArray","keys","edits","key","parent","ancestors","newRoot","isEdited","pop","slice","clone","k","hasOwnProperty","editOffset","ii","editKey","editValue","splice","prev","result","JSON","stringify","visitFn","call","visit","printDocASTReducer","definitions","op","operation","varDefs","wrap","variableDefinitions","directives","selectionSet","variable","type","defaultValue","_ref2","block","selections","alias","args","_ref4","_ref5","_ref6","typeCondition","_ref7","_ref8","_ref9","_ref10","isDescription","escaped","indexOf","indent","printBlockString","_ref11","_ref12","_ref13","values","_ref14","fields","_ref15","_ref16","_ref17","_ref18","_ref19","_ref20","operationTypes","_ref21","addDescription","_ref22","_ref23","interfaces","_ref24","every","arg","_ref25","_ref26","_ref27","types","_ref28","_ref29","_ref30","_ref31","_ref32","_ref33","_ref34","_ref35","_ref36","_ref37","_ref38","cb","description","maybeArray","separator","x","array","maybeString","end","_typeof","obj","inspect","String","invariant","condition","_defineProperty","classObject","syntaxError","blockStringValue","rawString","commonIndent","leadingWhitespace","_i","isBlank","createLexer","options","startOfFileToken","Tok","TokenKind","SOF","lastToken","token","lineStart","advance","advanceLexer","lookahead","EOF","readToken","COMMENT","toStringTag","get","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","printCharCode","code","isNaN","fromCharCode","toUpperCase","lexer","bodyLength","startPosition","positionAfterWhitespace","col","readComment","readName","firstCode","isFloat","readDigits","readNumber","chunkStart","rawValue","readBlockString","charCode","a","b","c","d","char2hex","readString","unexpectedCharacterMessage","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","many","parseDefinition","parseDocument","parseName","expect","peek","parseExecutableDefinition","parseTypeSystemDefinition","keywordToken","expectKeyword","parseDirectives","parseOperationTypeDefinition","unexpected","parseSchemaExtension","parseScalarTypeExtension","parseImplementsInterfaces","parseFieldsDefinition","parseObjectTypeExtension","parseInterfaceTypeExtension","parseUnionMemberTypes","parseUnionTypeExtension","parseEnumValuesDefinition","parseEnumTypeExtension","parseInputFieldsDefinition","parseInputObjectTypeExtension","parseTypeSystemExtension","peekDescription","parseOperationDefinition","experimentalFragmentVariables","parseFragmentName","parseVariableDefinitions","parseNamedType","parseSelectionSet","parseFragmentDefinition","parseOperationType","operationToken","parseVariableDefinition","experimentalVariableDefinitionDirectives","parseVariable","parseTypeReference","skip","parseValueLiteral","parseSelection","parseFragment","nameOrAlias","parseArguments","parseField","isConst","item","parseConstArgument","parseArgument","parseConstValue","parseValueValue","any","parseList","parseObjectField","parseObject","parseStringLiteral","parseDirective","parseSchemaDefinition","parseDescription","parseScalarTypeDefinition","parseObjectTypeDefinition","parseInterfaceTypeDefinition","parseUnionTypeDefinition","parseEnumTypeDefinition","parseInputObjectTypeDefinition","parseArgumentDefs","parseDirectiveLocation","parseDirectiveLocations","parseDirectiveDefinition","allowLegacySDLImplementsInterfaces","allowLegacySDLEmptyFields","parseFieldDefinition","parseInputValueDef","parseEnumValueDefinition","startToken","noLocation","Loc","endToken","atToken","openKind","parseFn","closeKind","__assign","assign","t","s","n","p","__awaiter","thisArg","_arguments","P","generator","reject","step","e","__generator","f","y","g","_","label","sent","trys","ops","verb","v","__rest","getOwnPropertySymbols","propertyIsEnumerable","logger","urlLib","RestClient","_region","_service","_custom_header","endpoints","_options","debug","ajax","init","parsed_url","libraryHeaders","userAgent","initParams","isAllResponse","custom_header","_a","_b","parsedUrl","_this","_c","_parseUrl","host","headers","responseType","timeout","isReactNative","withCredentials","signerServiceInfo","search","format","query","queryStringParameters","acc","_request","credentials","_signed","put","patch","post","del","head","endpoint","apiName","cloud_logic_array","region","service","signerServiceInfoParams","otherParams","endpoint_region","endpoint_service","creds","secret_key","secretAccessKey","access_key","accessKeyId","session_token","sessionToken","endpointInfo","signed_params","sign","catch","parts","defaultConfig","keyPrefix","capacityInBytes","itemMaxSize","defaultTTL","defaultPriority","warningThreshold","storage","getStorage","getByteLength","ret","getCurrTime","Date","getTime","isInteger","Number","isFinite","floor","_isInteger","_extendStatics","store","CacheObject","clear","getItem","setItem","removeItem","DoubleLinkedNode","keyVal","prevNode","nextNode","CacheList","tail","hashtable","insertNodeToHead","tmp","removeNode","isEmpty","refresh","insertItem","getLastItem","removedItem","getSize","containsKey","clearList","getKeys","isHeadNode","isTailNode","StorageCache","cacheCurSizeKey","checkConfig","getModuleName","fillCacheItem","timestamp","visitedTime","priority","expires","byteSize","configure","warn","Cache","__extends","setPrototypeOf","__proto__","__","_super","BrowserStorageCache","cacheConfig","_decreaseCurSizeInBytes","amount","curSize","getCacheCurSize","_increaseCurSizeInBytes","_refreshItem","prefixedKey","_isExpired","text","_removeItem","size","itemSize","_setItem","setItemErr","_sizeToPop","spaceItemNeed","cacheThresholdSpace","_isCacheFull","_findValidKeys","keyInCache","_popOutItems","sizeToPop","items","remainedSize","val","sort","log","cacheItemOptions","validKeys","keysToRemove","getAllKeys","substring","createInstance","InMemoryCache","cacheList","curSizeInBytes","maxPriority","listIdx","presentKeyPrio","cacheListIdx","popedItemKey","register","graphqlOperation","variables","API","APIClass","_api","_pubSub","PubSub","clientIdentifier","otherOptions","opt","custom","header","graphql_headers","error_1","error_2","error_3","error_4","error_5","error_6","error_7","_headerBasedAuth","defaultAuthenticationType","aws_appsync_authenticationType","apiKey","federatedInfo","session","aws_appsync_apiKey","Authorization","_ensureCredentials","currentSession","getAccessToken","getJwtToken","getGraphqlOperationType","graphql","paramQuery","authMode","def","operationType","_graphql","_graphqlSubscribe","additionalHeaders","appSyncGraphqlEndpoint","customGraphqlEndpoint","customEndpointRegion","_d","_e","_f","_g","_h","_j","err_1","errors","_k","_l","aws_appsync_region","aws_appsync_graphqlEndpoint","graphql_endpoint","graphql_endpoint_iam_region","subscribe","observer","handle","additionalheaders","subscription","newSubscriptions_1","newTopics","observable","error_8","newSubscriptions","getOwnPropertyNames","topic","provider","complete","unsubscribe","cred","shear","_instance","byteToHex","substr","buf","offset","bth","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","isUndefined","adapter","process","XMLHttpRequest","transformRequest","isFormData","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","isURLSearchParams","isObject","transformResponse","xsrfCookieName","xsrfHeaderName","maxContentLength","validateStatus","status","common","enhanceError","__CANCEL__","encode","encodeURIComponent","serializedParams","isDate","toISOString","hashmarkIndex","hasSymbol","for","INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER","isAxiosError","number","fileName","lineNumber","columnNumber","isStandardBrowserEnv","originURL","msie","navigator","urlParsingNode","document","createElement","resolveURL","href","setAttribute","protocol","hash","hostname","port","pathname","charAt","requestURL","parsed","isString","createError","config1","config2","prop","deepMerge","transformData","isCancel","isAbsoluteURL","combineURLs","throwIfCancellationRequested","cancelToken","throwIfRequested","reason","Cancel","write","domain","secure","cookie","isNumber","toGMTString","read","RegExp","decodeURIComponent","remove","now","CancelToken","executor","resolvePromise","cancel","_classCallCheck","instance","Constructor","_defineProperties","target","props","descriptor","_createClass","protoProps","staticProps","hasSymbols","getSymbol","SymbolIterator","SymbolObservable","SymbolSpecies","getMethod","getSpecies","ctor","isObservable","hostReportError","setTimeout","enqueue","cleanupSubscription","cleanup","_cleanup","closeSubscription","_observer","_queue","_state","notifySubscription","m","onNotify","queue","flushSubscription","Subscription","subscriber","subscriptionObserver","SubscriptionObserver","_subscription","_subscriber","_this2","_this3","_this4","C","hasSeed","hasValue","seed","first","_this5","_len","sources","_key","startNext","from","_this6","subscriptions","outer","inner","completeIfDone","closed","_item","_len2","_key2","symbol","settle","parseHeaders","isURLSameOrigin","requestData","requestHeaders","auth","username","password","btoa","open","onreadystatechange","readyState","responseURL","responseHeaders","getAllResponseHeaders","responseText","statusText","onabort","onerror","ontimeout","cookies","xsrfValue","setRequestHeader","onDownloadProgress","addEventListener","onUploadProgress","upload","abort","send","ignoreDuplicateOf","trim","fns","_nodeId","_clockseq","rng","bytesToUuid","_lastMSecs","_lastNSecs","clockseq","seedBytes","msecs","nsecs","dt","tl","tmh","isFunction","l","FormData","ArrayBuffer","isView","pipe","URLSearchParams","product","assignValue","extend","normalizedName","context","axios","all","promises","spread","default"],"mappings":"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","file":"8c8f65e71dd7a655df183028cea5f049725d2efc-d29b0537e58989dc97d1.js","sourcesContent":["'use strict';\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\n\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};","// Unique ID creation requires a high quality random # generator. In the\n// browser this is a little complicated due to unknown quality of Math.random()\n// and inconsistent support for the `crypto` API. We do the best we can via\n// feature-detection\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto\n// implementation. Also, find the complete implementation of crypto on IE11.\nvar getRandomValues = typeof crypto != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto != 'undefined' && typeof window.msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\nif (getRandomValues) {\n // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto\n var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\n module.exports = function whatwgRNG() {\n getRandomValues(rnds8);\n return rnds8;\n };\n} else {\n // Math.random()-based (RNG)\n //\n // If all else fails, use Math.random(). It's fast, but is of unspecified\n // quality.\n var rnds = new Array(16);\n\n module.exports = function mathRNG() {\n for (var i = 0, r; i < 16; i++) {\n if ((i & 0x03) === 0) r = Math.random() * 0x100000000;\n rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;\n }\n\n return rnds;\n };\n}","'use strict';\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\n\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '') : baseURL;\n};","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n\n\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\n\n\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\n\n\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;","module.exports = require('./lib/Observable.js').Observable;","'use strict';\n\nvar utils = require('./../utils');\n\nvar buildURL = require('../helpers/buildURL');\n\nvar InterceptorManager = require('./InterceptorManager');\n\nvar dispatchRequest = require('./dispatchRequest');\n\nvar mergeConfig = require('./mergeConfig');\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\n\n\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\n\n\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n config.method = config.method ? config.method.toLowerCase() : 'get'; // Hook up interceptors middleware\n\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n}; // Provide aliases for supported request methods\n\n\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function (url, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url\n }));\n };\n});\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function (url, data, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\nmodule.exports = Axios;","'use strict';\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\n\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};","var v1 = require('./v1');\n\nvar v4 = require('./v4');\n\nvar uuid = v4;\nuuid.v1 = v1;\nuuid.v4 = v4;\nmodule.exports = uuid;","/**\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 * Prints a GraphQLError to a string, representing useful location information\n * about the error's position in the source.\n */\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}","import \"core-js/modules/es.array.reduce.js\";\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 { 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});","/**\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 /* eslint-disable no-undef-init */\n\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}","function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n 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 */\n\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}","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n 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 */\n\n\nimport invariant from '../jsutils/invariant';\nimport defineToStringTag from '../jsutils/defineToStringTag';\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 */\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 */\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}","/**\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 * An exported enum describing the different kinds of tokens that the\n * lexer emits.\n */\n\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 */\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 */\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}","import \"core-js/modules/es.array.reduce.js\";\n\n/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport { ConsoleLogger as Logger, Signer, Platform, Credentials } from '@aws-amplify/core';\nimport axios from 'axios';\n\nvar logger = new Logger('RestClient'),\n urlLib = require('url');\n/**\n* HTTP Client for REST requests. Send and receive JSON data.\n* Sign request with AWS credentials if available\n* Usage:\n
\nconst restClient = new RestClient();\nrestClient.get('...')\n    .then(function(data) {\n        console.log(data);\n    })\n    .catch(err => console.log(err));\n
\n*/\n\n\nvar RestClient =\n/** @class */\nfunction () {\n /**\n * @param {RestClientOptions} [options] - Instance options\n */\n function RestClient(options) {\n this._region = 'us-east-1'; // this will be updated by endpoint function\n\n this._service = 'execute-api'; // this can be updated by endpoint function\n\n this._custom_header = undefined; // this can be updated by endpoint function\n\n var endpoints = options.endpoints;\n this._options = options;\n logger.debug('API Options', this._options);\n }\n /**\n * Update AWS credentials\n * @param {AWSCredentials} credentials - AWS credentials\n *\n updateCredentials(credentials: AWSCredentials) {\n this.options.credentials = credentials;\n }\n */\n\n /**\n * Basic HTTP request. Customizable\n * @param {string} url - Full request URL\n * @param {string} method - Request HTTP method\n * @param {json} [init] - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n\n\n RestClient.prototype.ajax = function (url, method, init) {\n return __awaiter(this, void 0, void 0, function () {\n var parsed_url, params, libraryHeaders, userAgent, initParams, isAllResponse, custom_header, _a, _b, search, parsedUrl;\n\n var _this = this;\n\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n logger.debug(method + ' ' + url);\n parsed_url = this._parseUrl(url);\n params = {\n method: method,\n url: url,\n host: parsed_url.host,\n path: parsed_url.path,\n headers: {},\n data: null,\n responseType: 'json',\n timeout: 0\n };\n libraryHeaders = {};\n\n if (Platform.isReactNative) {\n userAgent = Platform.userAgent || 'aws-amplify/0.1.x';\n libraryHeaders = {\n 'User-Agent': userAgent\n };\n }\n\n initParams = Object.assign({}, init);\n isAllResponse = initParams.response;\n\n if (initParams.body) {\n libraryHeaders['Content-Type'] = 'application/json; charset=UTF-8';\n params.data = JSON.stringify(initParams.body);\n }\n\n if (initParams.responseType) {\n params.responseType = initParams.responseType;\n }\n\n if (initParams.withCredentials) {\n params['withCredentials'] = initParams.withCredentials;\n }\n\n if (initParams.timeout) {\n params.timeout = initParams.timeout;\n }\n\n params['signerServiceInfo'] = initParams.signerServiceInfo;\n if (!this._custom_header) return [3\n /*break*/\n , 2];\n return [4\n /*yield*/\n , this._custom_header()];\n\n case 1:\n _a = _c.sent();\n return [3\n /*break*/\n , 3];\n\n case 2:\n _a = undefined;\n _c.label = 3;\n\n case 3:\n custom_header = _a;\n params.headers = __assign(__assign(__assign({}, libraryHeaders), custom_header), initParams.headers);\n _b = urlLib.parse(url, true, true), search = _b.search, parsedUrl = __rest(_b, [\"search\"]);\n params.url = urlLib.format(__assign(__assign({}, parsedUrl), {\n query: __assign(__assign({}, parsedUrl.query), initParams.queryStringParameters || {})\n })); // Do not sign the request if client has added 'Authorization' header,\n // which means custom authorizer.\n\n if (typeof params.headers['Authorization'] !== 'undefined') {\n params.headers = Object.keys(params.headers).reduce(function (acc, k) {\n if (params.headers[k]) {\n acc[k] = params.headers[k];\n }\n\n return acc; // tslint:disable-next-line:align\n }, {});\n return [2\n /*return*/\n , this._request(params, isAllResponse)];\n } // Signing the request in case there credentials are available\n\n\n return [2\n /*return*/\n , Credentials.get().then(function (credentials) {\n return _this._signed(__assign({}, params), credentials, isAllResponse);\n }, function (err) {\n logger.debug('No credentials available, the request will be unsigned');\n return _this._request(params, isAllResponse);\n })];\n }\n });\n });\n };\n /**\n * GET HTTP request\n * @param {string} url - Full request URL\n * @param {JSON} init - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n\n\n RestClient.prototype.get = function (url, init) {\n return this.ajax(url, 'GET', init);\n };\n /**\n * PUT HTTP request\n * @param {string} url - Full request URL\n * @param {json} init - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n\n\n RestClient.prototype.put = function (url, init) {\n return this.ajax(url, 'PUT', init);\n };\n /**\n * PATCH HTTP request\n * @param {string} url - Full request URL\n * @param {json} init - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n\n\n RestClient.prototype.patch = function (url, init) {\n return this.ajax(url, 'PATCH', init);\n };\n /**\n * POST HTTP request\n * @param {string} url - Full request URL\n * @param {json} init - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n\n\n RestClient.prototype.post = function (url, init) {\n return this.ajax(url, 'POST', init);\n };\n /**\n * DELETE HTTP request\n * @param {string} url - Full request URL\n * @param {json} init - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n\n\n RestClient.prototype.del = function (url, init) {\n return this.ajax(url, 'DELETE', init);\n };\n /**\n * HEAD HTTP request\n * @param {string} url - Full request URL\n * @param {json} init - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n\n\n RestClient.prototype.head = function (url, init) {\n return this.ajax(url, 'HEAD', init);\n };\n /**\n * Getting endpoint for API\n * @param {string} apiName - The name of the api\n * @return {string} - The endpoint of the api\n */\n\n\n RestClient.prototype.endpoint = function (apiName) {\n var _this = this;\n\n var cloud_logic_array = this._options.endpoints;\n var response = '';\n\n if (!Array.isArray(cloud_logic_array)) {\n return response;\n }\n\n cloud_logic_array.forEach(function (v) {\n if (v.name === apiName) {\n response = v.endpoint;\n\n if (typeof v.region === 'string') {\n _this._region = v.region;\n } else if (typeof _this._options.region === 'string') {\n _this._region = _this._options.region;\n }\n\n if (typeof v.service === 'string') {\n _this._service = v.service || 'execute-api';\n } else {\n _this._service = 'execute-api';\n }\n\n if (typeof v.custom_header === 'function') {\n _this._custom_header = v.custom_header;\n } else {\n _this._custom_header = undefined;\n }\n }\n });\n return response;\n };\n /** private methods **/\n\n\n RestClient.prototype._signed = function (params, credentials, isAllResponse) {\n var signerServiceInfoParams = params.signerServiceInfo,\n otherParams = __rest(params, [\"signerServiceInfo\"]);\n\n var endpoint_region = this._region || this._options.region;\n var endpoint_service = this._service || this._options.service;\n var creds = {\n secret_key: credentials.secretAccessKey,\n access_key: credentials.accessKeyId,\n session_token: credentials.sessionToken\n };\n var endpointInfo = {\n region: endpoint_region,\n service: endpoint_service\n };\n var signerServiceInfo = Object.assign(endpointInfo, signerServiceInfoParams);\n var signed_params = Signer.sign(otherParams, creds, signerServiceInfo);\n\n if (signed_params.data) {\n signed_params.body = signed_params.data;\n }\n\n logger.debug('Signed Request: ', signed_params);\n delete signed_params.headers['host'];\n return axios(signed_params).then(function (response) {\n return isAllResponse ? response : response.data;\n }).catch(function (error) {\n logger.debug(error);\n throw error;\n });\n };\n\n RestClient.prototype._request = function (params, isAllResponse) {\n if (isAllResponse === void 0) {\n isAllResponse = false;\n }\n\n return axios(params).then(function (response) {\n return isAllResponse ? response : response.data;\n }).catch(function (error) {\n logger.debug(error);\n throw error;\n });\n };\n\n RestClient.prototype._parseUrl = function (url) {\n var parts = url.split('/');\n return {\n host: parts[2],\n path: '/' + parts.slice(3).join('/')\n };\n };\n\n return RestClient;\n}();\n\nexport { RestClient };","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { StorageHelper } from '@aws-amplify/core';\n/**\n * Default cache config\n */\n\nexport var defaultConfig = {\n keyPrefix: 'aws-amplify-cache',\n capacityInBytes: 1048576,\n itemMaxSize: 210000,\n defaultTTL: 259200000,\n defaultPriority: 5,\n warningThreshold: 0.8,\n // the storage helper will check if localStorage exists,\n // if not, will use a in-memory object instead\n storage: new StorageHelper().getStorage()\n};\n/**\n * return the byte size of the string\n * @param str\n */\n\nexport function getByteLength(str) {\n var ret = 0;\n ret = str.length;\n\n for (var i = str.length; i >= 0; i -= 1) {\n var charCode = str.charCodeAt(i);\n\n if (charCode > 0x7f && charCode <= 0x7ff) {\n ret += 1;\n } else if (charCode > 0x7ff && charCode <= 0xffff) {\n ret += 2;\n } // trail surrogate\n\n\n if (charCode >= 0xdc00 && charCode <= 0xdfff) {\n i -= 1;\n }\n }\n\n return ret;\n}\n/**\n * get current time\n */\n\nexport function getCurrTime() {\n var currTime = new Date();\n return currTime.getTime();\n}\n/**\n * check if passed value is an integer\n */\n\nexport function isInteger(value) {\n if (Number.isInteger) {\n return Number.isInteger(value);\n }\n\n return _isInteger(value);\n}\n\nfunction _isInteger(value) {\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n}\n/**\n * provide an object as the in-memory cache\n */\n\n\nvar store = {};\n\nvar CacheObject =\n/** @class */\nfunction () {\n function CacheObject() {}\n\n CacheObject.clear = function () {\n store = {};\n };\n\n CacheObject.getItem = function (key) {\n return store[key] || null;\n };\n\n CacheObject.setItem = function (key, value) {\n store[key] = value;\n };\n\n CacheObject.removeItem = function (key) {\n delete store[key];\n };\n\n return CacheObject;\n}();\n\nexport { CacheObject };","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport { defaultConfig, getCurrTime } from './Utils';\nimport StorageCache from './StorageCache';\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\nvar logger = new Logger('Cache');\n/**\n * Customized storage based on the SessionStorage or LocalStorage with LRU implemented\n */\n\nvar BrowserStorageCache =\n/** @class */\nfunction (_super) {\n __extends(BrowserStorageCache, _super);\n /**\n * initialize the cache\n * @param config - the configuration of the cache\n */\n\n\n function BrowserStorageCache(config) {\n var _this = this;\n\n var cacheConfig = config ? Object.assign({}, defaultConfig, config) : defaultConfig;\n _this = _super.call(this, cacheConfig) || this;\n _this.config.storage = cacheConfig.storage;\n _this.getItem = _this.getItem.bind(_this);\n _this.setItem = _this.setItem.bind(_this);\n _this.removeItem = _this.removeItem.bind(_this);\n return _this;\n }\n /**\n * decrease current size of the cache\n *\n * @private\n * @param amount - the amount of the cache size which needs to be decreased\n */\n\n\n BrowserStorageCache.prototype._decreaseCurSizeInBytes = function (amount) {\n var curSize = this.getCacheCurSize();\n this.config.storage.setItem(this.cacheCurSizeKey, (curSize - amount).toString());\n };\n /**\n * increase current size of the cache\n *\n * @private\n * @param amount - the amount of the cache szie which need to be increased\n */\n\n\n BrowserStorageCache.prototype._increaseCurSizeInBytes = function (amount) {\n var curSize = this.getCacheCurSize();\n this.config.storage.setItem(this.cacheCurSizeKey, (curSize + amount).toString());\n };\n /**\n * update the visited time if item has been visited\n *\n * @private\n * @param item - the item which need to be refreshed\n * @param prefixedKey - the key of the item\n *\n * @return the refreshed item\n */\n\n\n BrowserStorageCache.prototype._refreshItem = function (item, prefixedKey) {\n item.visitedTime = getCurrTime();\n this.config.storage.setItem(prefixedKey, JSON.stringify(item));\n return item;\n };\n /**\n * check wether item is expired\n *\n * @private\n * @param key - the key of the item\n *\n * @return true if the item is expired.\n */\n\n\n BrowserStorageCache.prototype._isExpired = function (key) {\n var text = this.config.storage.getItem(key);\n var item = JSON.parse(text);\n\n if (getCurrTime() >= item.expires) {\n return true;\n }\n\n return false;\n };\n /**\n * delete item from cache\n *\n * @private\n * @param prefixedKey - the key of the item\n * @param size - optional, the byte size of the item\n */\n\n\n BrowserStorageCache.prototype._removeItem = function (prefixedKey, size) {\n var itemSize = size ? size : JSON.parse(this.config.storage.getItem(prefixedKey)).byteSize;\n\n this._decreaseCurSizeInBytes(itemSize); // remove the cache item\n\n\n this.config.storage.removeItem(prefixedKey);\n };\n /**\n * put item into cache\n *\n * @private\n * @param prefixedKey - the key of the item\n * @param itemData - the value of the item\n * @param itemSizeInBytes - the byte size of the item\n */\n\n\n BrowserStorageCache.prototype._setItem = function (prefixedKey, item) {\n // update the cache size\n this._increaseCurSizeInBytes(item.byteSize);\n\n try {\n this.config.storage.setItem(prefixedKey, JSON.stringify(item));\n } catch (setItemErr) {\n // if failed, we need to rollback the cache size\n this._decreaseCurSizeInBytes(item.byteSize);\n\n logger.error(\"Failed to set item \" + setItemErr);\n }\n };\n /**\n * total space needed when poping out items\n *\n * @private\n * @param itemSize\n *\n * @return total space needed\n */\n\n\n BrowserStorageCache.prototype._sizeToPop = function (itemSize) {\n var spaceItemNeed = this.getCacheCurSize() + itemSize - this.config.capacityInBytes;\n var cacheThresholdSpace = (1 - this.config.warningThreshold) * this.config.capacityInBytes;\n return spaceItemNeed > cacheThresholdSpace ? spaceItemNeed : cacheThresholdSpace;\n };\n /**\n * see whether cache is full\n *\n * @private\n * @param itemSize\n *\n * @return true if cache is full\n */\n\n\n BrowserStorageCache.prototype._isCacheFull = function (itemSize) {\n return itemSize + this.getCacheCurSize() > this.config.capacityInBytes;\n };\n /**\n * scan the storage and find out all the keys owned by this cache\n * also clean the expired keys while scanning\n *\n * @private\n *\n * @return array of keys\n */\n\n\n BrowserStorageCache.prototype._findValidKeys = function () {\n var keys = [];\n var keyInCache = []; // get all keys in Storage\n\n for (var i = 0; i < this.config.storage.length; i += 1) {\n keyInCache.push(this.config.storage.key(i));\n } // find those items which belong to our cache and also clean those expired items\n\n\n for (var i = 0; i < keyInCache.length; i += 1) {\n var key = keyInCache[i];\n\n if (key.indexOf(this.config.keyPrefix) === 0 && key !== this.cacheCurSizeKey) {\n if (this._isExpired(key)) {\n this._removeItem(key);\n } else {\n keys.push(key);\n }\n }\n }\n\n return keys;\n };\n /**\n * get all the items we have, sort them by their priority,\n * if priority is same, sort them by their last visited time\n * pop out items from the low priority (5 is the lowest)\n *\n * @private\n * @param keys - all the keys in this cache\n * @param sizeToPop - the total size of the items which needed to be poped out\n */\n\n\n BrowserStorageCache.prototype._popOutItems = function (keys, sizeToPop) {\n var items = [];\n var remainedSize = sizeToPop; // get the items from Storage\n\n for (var i = 0; i < keys.length; i += 1) {\n var val = this.config.storage.getItem(keys[i]);\n\n if (val != null) {\n var item = JSON.parse(val);\n items.push(item);\n }\n } // first compare priority\n // then compare visited time\n\n\n items.sort(function (a, b) {\n if (a.priority > b.priority) {\n return -1;\n } else if (a.priority < b.priority) {\n return 1;\n } else {\n if (a.visitedTime < b.visitedTime) {\n return -1;\n } else return 1;\n }\n });\n\n for (var i = 0; i < items.length; i += 1) {\n // pop out items until we have enough room for new item\n this._removeItem(items[i].key, items[i].byteSize);\n\n remainedSize -= items[i].byteSize;\n\n if (remainedSize <= 0) {\n return;\n }\n }\n };\n /**\n * Set item into cache. You can put number, string, boolean or object.\n * The cache will first check whether has the same key.\n * If it has, it will delete the old item and then put the new item in\n * The cache will pop out items if it is full\n * You can specify the cache item options. The cache will abort and output a warning:\n * If the key is invalid\n * If the size of the item exceeds itemMaxSize.\n * If the value is undefined\n * If incorrect cache item configuration\n * If error happened with browser storage\n *\n * @param key - the key of the item\n * @param value - the value of the item\n * @param {Object} [options] - optional, the specified meta-data\n */\n\n\n BrowserStorageCache.prototype.setItem = function (key, value, options) {\n logger.log(\"Set item: key is \" + key + \", value is \" + value + \" with options: \" + options);\n var prefixedKey = this.config.keyPrefix + key; // invalid keys\n\n if (prefixedKey === this.config.keyPrefix || prefixedKey === this.cacheCurSizeKey) {\n logger.warn(\"Invalid key: should not be empty or 'CurSize'\");\n return;\n }\n\n if (typeof value === 'undefined') {\n logger.warn(\"The value of item should not be undefined!\");\n return;\n }\n\n var cacheItemOptions = {\n priority: options && options.priority !== undefined ? options.priority : this.config.defaultPriority,\n expires: options && options.expires !== undefined ? options.expires : this.config.defaultTTL + getCurrTime()\n };\n\n if (cacheItemOptions.priority < 1 || cacheItemOptions.priority > 5) {\n logger.warn(\"Invalid parameter: priority due to out or range. It should be within 1 and 5.\");\n return;\n }\n\n var item = this.fillCacheItem(prefixedKey, value, cacheItemOptions); // check wether this item is too big;\n\n if (item.byteSize > this.config.itemMaxSize) {\n logger.warn(\"Item with key: \" + key + \" you are trying to put into is too big!\");\n return;\n }\n\n try {\n // first look into the storage, if it exists, delete it.\n var val = this.config.storage.getItem(prefixedKey);\n\n if (val) {\n this._removeItem(prefixedKey, JSON.parse(val).byteSize);\n } // check whether the cache is full\n\n\n if (this._isCacheFull(item.byteSize)) {\n var validKeys = this._findValidKeys(); // check again and then pop out items\n\n\n if (this._isCacheFull(item.byteSize)) {\n var sizeToPop = this._sizeToPop(item.byteSize);\n\n this._popOutItems(validKeys, sizeToPop);\n }\n } // put item in the cache\n // may failed due to storage full\n\n\n this._setItem(prefixedKey, item);\n } catch (e) {\n logger.warn(\"setItem failed! \" + e);\n }\n };\n /**\n * Get item from cache. It will return null if item doesn’t exist or it has been expired.\n * If you specified callback function in the options,\n * then the function will be executed if no such item in the cache\n * and finally put the return value into cache.\n * Please make sure the callback function will return the value you want to put into the cache.\n * The cache will abort output a warning:\n * If the key is invalid\n * If error happened with browser storage\n *\n * @param key - the key of the item\n * @param {Object} [options] - the options of callback function\n *\n * @return - return the value of the item\n */\n\n\n BrowserStorageCache.prototype.getItem = function (key, options) {\n logger.log(\"Get item: key is \" + key + \" with options \" + options);\n var ret = null;\n var prefixedKey = this.config.keyPrefix + key;\n\n if (prefixedKey === this.config.keyPrefix || prefixedKey === this.cacheCurSizeKey) {\n logger.warn(\"Invalid key: should not be empty or 'CurSize'\");\n return null;\n }\n\n try {\n ret = this.config.storage.getItem(prefixedKey);\n\n if (ret != null) {\n if (this._isExpired(prefixedKey)) {\n // if expired, remove that item and return null\n this._removeItem(prefixedKey, JSON.parse(ret).byteSize);\n\n ret = null;\n } else {\n // if not expired, great, return the value and refresh it\n var item = JSON.parse(ret);\n item = this._refreshItem(item, prefixedKey);\n return item.data;\n }\n }\n\n if (options && options.callback !== undefined) {\n var val = options.callback();\n\n if (val !== null) {\n this.setItem(key, val, options);\n }\n\n return val;\n }\n\n return null;\n } catch (e) {\n logger.warn(\"getItem failed! \" + e);\n return null;\n }\n };\n /**\n * remove item from the cache\n * The cache will abort output a warning:\n * If error happened with browser storage\n * @param key - the key of the item\n */\n\n\n BrowserStorageCache.prototype.removeItem = function (key) {\n logger.log(\"Remove item: key is \" + key);\n var prefixedKey = this.config.keyPrefix + key;\n\n if (prefixedKey === this.config.keyPrefix || prefixedKey === this.cacheCurSizeKey) {\n return;\n }\n\n try {\n var val = this.config.storage.getItem(prefixedKey);\n\n if (val) {\n this._removeItem(prefixedKey, JSON.parse(val).byteSize);\n }\n } catch (e) {\n logger.warn(\"removeItem failed! \" + e);\n }\n };\n /**\n * clear the entire cache\n * The cache will abort output a warning:\n * If error happened with browser storage\n */\n\n\n BrowserStorageCache.prototype.clear = function () {\n logger.log(\"Clear Cache\");\n var keysToRemove = [];\n\n for (var i = 0; i < this.config.storage.length; i += 1) {\n var key = this.config.storage.key(i);\n\n if (key.indexOf(this.config.keyPrefix) === 0) {\n keysToRemove.push(key);\n }\n }\n\n try {\n for (var i = 0; i < keysToRemove.length; i += 1) {\n this.config.storage.removeItem(keysToRemove[i]);\n }\n } catch (e) {\n logger.warn(\"clear failed! \" + e);\n }\n };\n /**\n * Return all the keys in the cache.\n *\n * @return - all keys in the cache\n */\n\n\n BrowserStorageCache.prototype.getAllKeys = function () {\n var keys = [];\n\n for (var i = 0; i < this.config.storage.length; i += 1) {\n var key = this.config.storage.key(i);\n\n if (key.indexOf(this.config.keyPrefix) === 0 && key !== this.cacheCurSizeKey) {\n keys.push(key.substring(this.config.keyPrefix.length));\n }\n }\n\n return keys;\n };\n /**\n * return the current size of the cache\n *\n * @return - current size of the cache\n */\n\n\n BrowserStorageCache.prototype.getCacheCurSize = function () {\n var ret = this.config.storage.getItem(this.cacheCurSizeKey);\n\n if (!ret) {\n this.config.storage.setItem(this.cacheCurSizeKey, '0');\n ret = '0';\n }\n\n return Number(ret);\n };\n /**\n * Return a new instance of cache with customized configuration.\n * @param config - the customized configuration\n *\n * @return - new instance of Cache\n */\n\n\n BrowserStorageCache.prototype.createInstance = function (config) {\n if (!config.keyPrefix || config.keyPrefix === defaultConfig.keyPrefix) {\n logger.error('invalid keyPrefix, setting keyPrefix with timeStamp');\n config.keyPrefix = getCurrTime.toString();\n }\n\n return new BrowserStorageCache(config);\n };\n\n return BrowserStorageCache;\n}(StorageCache);\n\nexport { BrowserStorageCache };\nvar instance = new BrowserStorageCache();\nexport default instance;","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nvar DoubleLinkedNode =\n/** @class */\nfunction () {\n function DoubleLinkedNode(keyVal) {\n this.key = keyVal ? keyVal : '';\n this.prevNode = null;\n this.nextNode = null;\n }\n\n return DoubleLinkedNode;\n}();\n/**\n * double linked list plus a hash table inside\n * each key in the cache stored as a node in the list\n * recently visited node will be rotated to the head\n * so the Last Recently Visited node will be at the tail\n *\n * @member head - dummy head of the linked list\n * @member tail - dummy tail of the linked list\n * @member hashtable - the hashtable which maps cache key to list node\n * @member length - length of the list\n */\n\n\nvar CacheList =\n/** @class */\nfunction () {\n /**\n * initialization\n */\n function CacheList() {\n this.head = new DoubleLinkedNode();\n this.tail = new DoubleLinkedNode();\n this.hashtable = {};\n this.length = 0;\n this.head.nextNode = this.tail;\n this.tail.prevNode = this.head;\n }\n /**\n * insert node to the head of the list\n *\n * @param node\n */\n\n\n CacheList.prototype.insertNodeToHead = function (node) {\n var tmp = this.head.nextNode;\n this.head.nextNode = node;\n node.nextNode = tmp;\n node.prevNode = this.head;\n tmp.prevNode = node;\n this.length = this.length + 1;\n };\n /**\n * remove node\n *\n * @param node\n */\n\n\n CacheList.prototype.removeNode = function (node) {\n node.prevNode.nextNode = node.nextNode;\n node.nextNode.prevNode = node.prevNode;\n node.prevNode = null;\n node.nextNode = null;\n this.length = this.length - 1;\n };\n /**\n * @return true if list is empty\n */\n\n\n CacheList.prototype.isEmpty = function () {\n return this.length === 0;\n };\n /**\n * refresh node so it is rotated to the head\n *\n * @param key - key of the node\n */\n\n\n CacheList.prototype.refresh = function (key) {\n var node = this.hashtable[key];\n this.removeNode(node);\n this.insertNodeToHead(node);\n };\n /**\n * insert new node to the head and add it in the hashtable\n *\n * @param key - the key of the node\n */\n\n\n CacheList.prototype.insertItem = function (key) {\n var node = new DoubleLinkedNode(key);\n this.hashtable[key] = node;\n this.insertNodeToHead(node);\n };\n /**\n * @return the LAST Recently Visited key\n */\n\n\n CacheList.prototype.getLastItem = function () {\n return this.tail.prevNode.key;\n };\n /**\n * remove the cache key from the list and hashtable\n * @param key - the key of the node\n */\n\n\n CacheList.prototype.removeItem = function (key) {\n var removedItem = this.hashtable[key];\n this.removeNode(removedItem);\n delete this.hashtable[key];\n };\n /**\n * @return length of the list\n */\n\n\n CacheList.prototype.getSize = function () {\n return this.length;\n };\n /**\n * @return true if the key is in the hashtable\n * @param key\n */\n\n\n CacheList.prototype.containsKey = function (key) {\n return key in this.hashtable;\n };\n /**\n * clean up the list and hashtable\n */\n\n\n CacheList.prototype.clearList = function () {\n for (var _i = 0, _a = Object.keys(this.hashtable); _i < _a.length; _i++) {\n var key = _a[_i];\n\n if (this.hashtable.hasOwnProperty(key)) {\n delete this.hashtable[key];\n }\n }\n\n this.head.nextNode = this.tail;\n this.tail.prevNode = this.head;\n this.length = 0;\n };\n /**\n * @return all keys in the hashtable\n */\n\n\n CacheList.prototype.getKeys = function () {\n return Object.keys(this.hashtable);\n };\n /**\n * mainly for test\n *\n * @param key\n * @return true if key is the head node\n */\n\n\n CacheList.prototype.isHeadNode = function (key) {\n var node = this.hashtable[key];\n return node.prevNode === this.head;\n };\n /**\n * mainly for test\n *\n * @param key\n * @return true if key is the tail node\n */\n\n\n CacheList.prototype.isTailNode = function (key) {\n var node = this.hashtable[key];\n return node.nextNode === this.tail;\n };\n\n return CacheList;\n}();\n\nexport default CacheList;","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { getCurrTime, getByteLength, defaultConfig, isInteger } from './Utils';\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\nvar logger = new Logger('StorageCache');\n/**\n * Initialization of the cache\n *\n */\n\nvar StorageCache =\n/** @class */\nfunction () {\n /**\n * Initialize the cache\n * @param config - the configuration of the cache\n */\n function StorageCache(config) {\n this.config = Object.assign({}, config);\n this.cacheCurSizeKey = this.config.keyPrefix + 'CurSize';\n this.checkConfig();\n }\n\n StorageCache.prototype.getModuleName = function () {\n return 'Cache';\n };\n\n StorageCache.prototype.checkConfig = function () {\n // check configuration\n if (!isInteger(this.config.capacityInBytes)) {\n logger.error('Invalid parameter: capacityInBytes. It should be an Integer. Setting back to default.');\n this.config.capacityInBytes = defaultConfig.capacityInBytes;\n }\n\n if (!isInteger(this.config.itemMaxSize)) {\n logger.error('Invalid parameter: itemMaxSize. It should be an Integer. Setting back to default.');\n this.config.itemMaxSize = defaultConfig.itemMaxSize;\n }\n\n if (!isInteger(this.config.defaultTTL)) {\n logger.error('Invalid parameter: defaultTTL. It should be an Integer. Setting back to default.');\n this.config.defaultTTL = defaultConfig.defaultTTL;\n }\n\n if (!isInteger(this.config.defaultPriority)) {\n logger.error('Invalid parameter: defaultPriority. It should be an Integer. Setting back to default.');\n this.config.defaultPriority = defaultConfig.defaultPriority;\n }\n\n if (this.config.itemMaxSize > this.config.capacityInBytes) {\n logger.error('Invalid parameter: itemMaxSize. It should be smaller than capacityInBytes. Setting back to default.');\n this.config.itemMaxSize = defaultConfig.itemMaxSize;\n }\n\n if (this.config.defaultPriority > 5 || this.config.defaultPriority < 1) {\n logger.error('Invalid parameter: defaultPriority. It should be between 1 and 5. Setting back to default.');\n this.config.defaultPriority = defaultConfig.defaultPriority;\n }\n\n if (Number(this.config.warningThreshold) > 1 || Number(this.config.warningThreshold) < 0) {\n logger.error('Invalid parameter: warningThreshold. It should be between 0 and 1. Setting back to default.');\n this.config.warningThreshold = defaultConfig.warningThreshold;\n } // set 5MB limit\n\n\n var cacheLimit = 5 * 1024 * 1024;\n\n if (this.config.capacityInBytes > cacheLimit) {\n logger.error('Cache Capacity should be less than 5MB. Setting back to default. Setting back to default.');\n this.config.capacityInBytes = defaultConfig.capacityInBytes;\n }\n };\n /**\n * produce a JSON object with meta-data and data value\n * @param value - the value of the item\n * @param options - optional, the specified meta-data\n *\n * @return - the item which has the meta-data and the value\n */\n\n\n StorageCache.prototype.fillCacheItem = function (key, value, options) {\n var ret = {\n key: key,\n data: value,\n timestamp: getCurrTime(),\n visitedTime: getCurrTime(),\n priority: options.priority,\n expires: options.expires,\n type: typeof value,\n byteSize: 0\n };\n ret.byteSize = getByteLength(JSON.stringify(ret)); // for accurate size\n\n ret.byteSize = getByteLength(JSON.stringify(ret));\n return ret;\n };\n /**\n * set cache with customized configuration\n * @param config - customized configuration\n *\n * @return - the current configuration\n */\n\n\n StorageCache.prototype.configure = function (config) {\n if (!config) {\n return this.config;\n }\n\n if (config.keyPrefix) {\n logger.warn(\"Don't try to configure keyPrefix!\");\n }\n\n this.config = Object.assign({}, this.config, config, config.Cache);\n this.checkConfig();\n return this.config;\n };\n\n return StorageCache;\n}();\n\nexport default StorageCache;","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport { CacheList, defaultConfig, getCurrTime, CacheObject } from './Utils';\nimport StorageCache from './StorageCache';\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\nvar logger = new Logger('InMemoryCache');\n/**\n * Customized in-memory cache with LRU implemented\n * @member cacheObj - object which store items\n * @member cacheList - list of keys in the cache with LRU\n * @member curSizeInBytes - current size of the cache\n * @member maxPriority - max of the priority\n * @member cacheSizeLimit - the limit of cache size\n */\n\nvar InMemoryCache =\n/** @class */\nfunction (_super) {\n __extends(InMemoryCache, _super);\n /**\n * initialize the cache\n *\n * @param config - the configuration of the cache\n */\n\n\n function InMemoryCache(config) {\n var _this = this;\n\n var cacheConfig = config ? Object.assign({}, defaultConfig, config) : defaultConfig;\n _this = _super.call(this, cacheConfig) || this;\n logger.debug('now we start!');\n _this.cacheList = [];\n _this.curSizeInBytes = 0;\n _this.maxPriority = 5;\n _this.getItem = _this.getItem.bind(_this);\n _this.setItem = _this.setItem.bind(_this);\n _this.removeItem = _this.removeItem.bind(_this); // initialize list for every priority\n\n for (var i = 0; i < _this.maxPriority; i += 1) {\n _this.cacheList[i] = new CacheList();\n }\n\n return _this;\n }\n /**\n * decrease current size of the cache\n *\n * @param amount - the amount of the cache size which needs to be decreased\n */\n\n\n InMemoryCache.prototype._decreaseCurSizeInBytes = function (amount) {\n this.curSizeInBytes -= amount;\n };\n /**\n * increase current size of the cache\n *\n * @param amount - the amount of the cache szie which need to be increased\n */\n\n\n InMemoryCache.prototype._increaseCurSizeInBytes = function (amount) {\n this.curSizeInBytes += amount;\n };\n /**\n * check whether item is expired\n *\n * @param key - the key of the item\n *\n * @return true if the item is expired.\n */\n\n\n InMemoryCache.prototype._isExpired = function (key) {\n var text = CacheObject.getItem(key);\n var item = JSON.parse(text);\n\n if (getCurrTime() >= item.expires) {\n return true;\n }\n\n return false;\n };\n /**\n * delete item from cache\n *\n * @param prefixedKey - the key of the item\n * @param listIdx - indicates which cache list the key belongs to\n */\n\n\n InMemoryCache.prototype._removeItem = function (prefixedKey, listIdx) {\n // delete the key from the list\n this.cacheList[listIdx].removeItem(prefixedKey); // decrease the current size of the cache\n\n this._decreaseCurSizeInBytes(JSON.parse(CacheObject.getItem(prefixedKey)).byteSize); // finally remove the item from memory\n\n\n CacheObject.removeItem(prefixedKey);\n };\n /**\n * put item into cache\n *\n * @param prefixedKey - the key of the item\n * @param itemData - the value of the item\n * @param itemSizeInBytes - the byte size of the item\n * @param listIdx - indicates which cache list the key belongs to\n */\n\n\n InMemoryCache.prototype._setItem = function (prefixedKey, item, listIdx) {\n // insert the key into the list\n this.cacheList[listIdx].insertItem(prefixedKey); // increase the current size of the cache\n\n this._increaseCurSizeInBytes(item.byteSize); // finally add the item into memory\n\n\n CacheObject.setItem(prefixedKey, JSON.stringify(item));\n };\n /**\n * see whether cache is full\n *\n * @param itemSize\n *\n * @return true if cache is full\n */\n\n\n InMemoryCache.prototype._isCacheFull = function (itemSize) {\n return this.curSizeInBytes + itemSize > this.config.capacityInBytes;\n };\n /**\n * check whether the cache contains the key\n *\n * @param key\n */\n\n\n InMemoryCache.prototype.containsKey = function (key) {\n var prefixedKey = this.config.keyPrefix + key;\n\n for (var i = 0; i < this.maxPriority; i += 1) {\n if (this.cacheList[i].containsKey(prefixedKey)) {\n return i + 1;\n }\n }\n\n return -1;\n };\n /**\n * * Set item into cache. You can put number, string, boolean or object.\n * The cache will first check whether has the same key.\n * If it has, it will delete the old item and then put the new item in\n * The cache will pop out items if it is full\n * You can specify the cache item options. The cache will abort and output a warning:\n * If the key is invalid\n * If the size of the item exceeds itemMaxSize.\n * If the value is undefined\n * If incorrect cache item configuration\n * If error happened with browser storage\n *\n * @param key - the key of the item\n * @param value - the value of the item\n * @param options - optional, the specified meta-data\n *\n * @throws if the item is too big which exceeds the limit of single item size\n * @throws if the key is invalid\n */\n\n\n InMemoryCache.prototype.setItem = function (key, value, options) {\n var prefixedKey = this.config.keyPrefix + key; // invalid keys\n\n if (prefixedKey === this.config.keyPrefix || prefixedKey === this.cacheCurSizeKey) {\n logger.warn(\"Invalid key: should not be empty or 'CurSize'\");\n return;\n }\n\n if (typeof value === 'undefined') {\n logger.warn(\"The value of item should not be undefined!\");\n return;\n }\n\n var cacheItemOptions = {\n priority: options && options.priority !== undefined ? options.priority : this.config.defaultPriority,\n expires: options && options.expires !== undefined ? options.expires : this.config.defaultTTL + getCurrTime()\n };\n\n if (cacheItemOptions.priority < 1 || cacheItemOptions.priority > 5) {\n logger.warn(\"Invalid parameter: priority due to out or range. It should be within 1 and 5.\");\n return;\n }\n\n var item = this.fillCacheItem(prefixedKey, value, cacheItemOptions); // check wether this item is too big;\n\n if (item.byteSize > this.config.itemMaxSize) {\n logger.warn(\"Item with key: \" + key + \" you are trying to put into is too big!\");\n return;\n } // if key already in the cache, then delete it.\n\n\n var presentKeyPrio = this.containsKey(key);\n\n if (presentKeyPrio !== -1) {\n this._removeItem(prefixedKey, presentKeyPrio - 1);\n } // pop out items in the cache when cache is full based on LRU\n // first start from lowest priority cache list\n\n\n var cacheListIdx = this.maxPriority - 1;\n\n while (this._isCacheFull(item.byteSize) && cacheListIdx >= 0) {\n if (!this.cacheList[cacheListIdx].isEmpty()) {\n var popedItemKey = this.cacheList[cacheListIdx].getLastItem();\n\n this._removeItem(popedItemKey, cacheListIdx);\n } else {\n cacheListIdx -= 1;\n }\n }\n\n this._setItem(prefixedKey, item, Number(item.priority) - 1);\n };\n /**\n * Get item from cache. It will return null if item doesn’t exist or it has been expired.\n * If you specified callback function in the options,\n * then the function will be executed if no such item in the cache\n * and finally put the return value into cache.\n * Please make sure the callback function will return the value you want to put into the cache.\n * The cache will abort output a warning:\n * If the key is invalid\n *\n * @param key - the key of the item\n * @param options - the options of callback function\n */\n\n\n InMemoryCache.prototype.getItem = function (key, options) {\n var ret = null;\n var prefixedKey = this.config.keyPrefix + key;\n\n if (prefixedKey === this.config.keyPrefix || prefixedKey === this.cacheCurSizeKey) {\n logger.warn(\"Invalid key: should not be empty or 'CurSize'\");\n return null;\n } // check whether it's in the cachelist\n\n\n var presentKeyPrio = this.containsKey(key);\n\n if (presentKeyPrio !== -1) {\n if (this._isExpired(prefixedKey)) {\n // if expired, remove that item and return null\n this._removeItem(prefixedKey, presentKeyPrio - 1);\n } else {\n // if not expired, great, return the value and refresh it\n ret = CacheObject.getItem(prefixedKey);\n var item = JSON.parse(ret);\n this.cacheList[item.priority - 1].refresh(prefixedKey);\n return item.data;\n }\n }\n\n if (options && options.callback !== undefined) {\n var val = options.callback();\n\n if (val !== null) {\n this.setItem(key, val, options);\n }\n\n return val;\n }\n\n return null;\n };\n /**\n * remove item from the cache\n *\n * @param key - the key of the item\n */\n\n\n InMemoryCache.prototype.removeItem = function (key) {\n var prefixedKey = this.config.keyPrefix + key; // check if the key is in the cache\n\n var presentKeyPrio = this.containsKey(key);\n\n if (presentKeyPrio !== -1) {\n this._removeItem(prefixedKey, presentKeyPrio - 1);\n }\n };\n /**\n * clear the entire cache\n */\n\n\n InMemoryCache.prototype.clear = function () {\n for (var i = 0; i < this.maxPriority; i += 1) {\n for (var _i = 0, _a = this.cacheList[i].getKeys(); _i < _a.length; _i++) {\n var key = _a[_i];\n\n this._removeItem(key, i);\n }\n }\n };\n /**\n * Return all the keys in the cache.\n */\n\n\n InMemoryCache.prototype.getAllKeys = function () {\n var keys = [];\n\n for (var i = 0; i < this.maxPriority; i += 1) {\n for (var _i = 0, _a = this.cacheList[i].getKeys(); _i < _a.length; _i++) {\n var key = _a[_i];\n keys.push(key.substring(this.config.keyPrefix.length));\n }\n }\n\n return keys;\n };\n /**\n * return the current size of the cache\n *\n * @return the current size of the cache\n */\n\n\n InMemoryCache.prototype.getCacheCurSize = function () {\n return this.curSizeInBytes;\n };\n /**\n * Return a new instance of cache with customized configuration.\n * @param config - the customized configuration\n */\n\n\n InMemoryCache.prototype.createInstance = function (config) {\n return new InMemoryCache(config);\n };\n\n return InMemoryCache;\n}(StorageCache);\n\nexport { InMemoryCache };\nvar instance = new InMemoryCache();\nexport default instance;","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport Amplify from '@aws-amplify/core';\nimport BrowserStorageCache from './BrowserStorageCache';\nimport InMemoryCache from './InMemoryCache';\nexport { BrowserStorageCache, InMemoryCache };\nexport default BrowserStorageCache;\nAmplify.register(BrowserStorageCache);","var __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\n\nimport { GraphQLError } from 'graphql';\nimport { print } from 'graphql/language/printer';\nimport { parse } from 'graphql/language/parser';\nimport * as Observable from 'zen-observable';\nimport { RestClient as RestClass } from './RestClient';\nimport Amplify, { ConsoleLogger as Logger, Credentials, Constants } from '@aws-amplify/core';\nimport Auth from '@aws-amplify/auth';\nimport Cache from '@aws-amplify/cache';\nimport { INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER } from '@aws-amplify/core/lib/constants';\nimport { v4 as uuid } from 'uuid';\nvar USER_AGENT_HEADER = 'x-amz-user-agent';\nvar logger = new Logger('API');\nexport var graphqlOperation = function graphqlOperation(query, variables) {\n if (variables === void 0) {\n variables = {};\n }\n\n return {\n query: query,\n variables: variables\n };\n};\n/**\n * Export Cloud Logic APIs\n */\n\nvar APIClass =\n/** @class */\nfunction () {\n /**\n * Initialize Storage with AWS configuration\n * @param {Object} options - Configuration object for storage\n */\n function APIClass(options) {\n this._api = null;\n this._pubSub = Amplify.PubSub;\n this.clientIdentifier = uuid();\n this._options = options;\n logger.debug('API Options', this._options);\n }\n\n APIClass.prototype.getModuleName = function () {\n return 'API';\n };\n /**\n * Configure API part with aws configurations\n * @param {Object} config - Configuration of the API\n * @return {Object} - The current configuration\n */\n\n\n APIClass.prototype.configure = function (options) {\n var _a = options || {},\n _b = _a.API,\n API = _b === void 0 ? {} : _b,\n otherOptions = __rest(_a, [\"API\"]);\n\n var opt = __assign(__assign({}, otherOptions), API);\n\n logger.debug('configure API', {\n opt: opt\n });\n\n if (opt['aws_project_region']) {\n if (opt['aws_cloud_logic_custom']) {\n var custom = opt['aws_cloud_logic_custom'];\n opt.endpoints = typeof custom === 'string' ? JSON.parse(custom) : custom;\n }\n\n opt = Object.assign({}, opt, {\n region: opt['aws_project_region'],\n header: {}\n });\n }\n\n if (!Array.isArray(opt.endpoints)) {\n opt.endpoints = [];\n } // Check if endpoints has custom_headers and validate if is a function\n\n\n opt.endpoints.forEach(function (endpoint) {\n if (typeof endpoint.custom_header !== 'undefined' && typeof endpoint.custom_header !== 'function') {\n logger.warn('API ' + endpoint.name + ', custom_header should be a function');\n endpoint.custom_header = undefined;\n }\n });\n\n if (typeof opt.graphql_headers !== 'undefined' && typeof opt.graphql_headers !== 'function') {\n logger.warn('graphql_headers should be a function');\n opt.graphql_headers = undefined;\n }\n\n this._options = Object.assign({}, this._options, opt);\n this.createInstance();\n return this._options;\n };\n /**\n * Create an instance of API for the library\n * @return - A promise of true if Success\n */\n\n\n APIClass.prototype.createInstance = function () {\n logger.debug('create API instance');\n\n if (this._options) {\n this._api = new RestClass(this._options);\n return true;\n } else {\n return Promise.reject('API not configured');\n }\n };\n /**\n * Make a GET request\n * @param {string} apiName - The api name of the request\n * @param {string} path - The path of the request\n * @param {json} [init] - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n\n\n APIClass.prototype.get = function (apiName, path, init) {\n return __awaiter(this, void 0, void 0, function () {\n var error_1, endpoint;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!this._api) return [3\n /*break*/\n , 4];\n _a.label = 1;\n\n case 1:\n _a.trys.push([1, 3,, 4]);\n\n return [4\n /*yield*/\n , this.createInstance()];\n\n case 2:\n _a.sent();\n\n return [3\n /*break*/\n , 4];\n\n case 3:\n error_1 = _a.sent();\n return [2\n /*return*/\n , Promise.reject(error_1)];\n\n case 4:\n endpoint = this._api.endpoint(apiName);\n\n if (endpoint.length === 0) {\n return [2\n /*return*/\n , Promise.reject('API ' + apiName + ' does not exist')];\n }\n\n return [2\n /*return*/\n , this._api.get(endpoint + path, init)];\n }\n });\n });\n };\n /**\n * Make a POST request\n * @param {string} apiName - The api name of the request\n * @param {string} path - The path of the request\n * @param {json} [init] - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n\n\n APIClass.prototype.post = function (apiName, path, init) {\n return __awaiter(this, void 0, void 0, function () {\n var error_2, endpoint;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!this._api) return [3\n /*break*/\n , 4];\n _a.label = 1;\n\n case 1:\n _a.trys.push([1, 3,, 4]);\n\n return [4\n /*yield*/\n , this.createInstance()];\n\n case 2:\n _a.sent();\n\n return [3\n /*break*/\n , 4];\n\n case 3:\n error_2 = _a.sent();\n return [2\n /*return*/\n , Promise.reject(error_2)];\n\n case 4:\n endpoint = this._api.endpoint(apiName);\n\n if (endpoint.length === 0) {\n return [2\n /*return*/\n , Promise.reject('API ' + apiName + ' does not exist')];\n }\n\n return [2\n /*return*/\n , this._api.post(endpoint + path, init)];\n }\n });\n });\n };\n /**\n * Make a PUT request\n * @param {string} apiName - The api name of the request\n * @param {string} path - The path of the request\n * @param {json} [init] - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n\n\n APIClass.prototype.put = function (apiName, path, init) {\n return __awaiter(this, void 0, void 0, function () {\n var error_3, endpoint;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!this._api) return [3\n /*break*/\n , 4];\n _a.label = 1;\n\n case 1:\n _a.trys.push([1, 3,, 4]);\n\n return [4\n /*yield*/\n , this.createInstance()];\n\n case 2:\n _a.sent();\n\n return [3\n /*break*/\n , 4];\n\n case 3:\n error_3 = _a.sent();\n return [2\n /*return*/\n , Promise.reject(error_3)];\n\n case 4:\n endpoint = this._api.endpoint(apiName);\n\n if (endpoint.length === 0) {\n return [2\n /*return*/\n , Promise.reject('API ' + apiName + ' does not exist')];\n }\n\n return [2\n /*return*/\n , this._api.put(endpoint + path, init)];\n }\n });\n });\n };\n /**\n * Make a PATCH request\n * @param {string} apiName - The api name of the request\n * @param {string} path - The path of the request\n * @param {json} [init] - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n\n\n APIClass.prototype.patch = function (apiName, path, init) {\n return __awaiter(this, void 0, void 0, function () {\n var error_4, endpoint;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!this._api) return [3\n /*break*/\n , 4];\n _a.label = 1;\n\n case 1:\n _a.trys.push([1, 3,, 4]);\n\n return [4\n /*yield*/\n , this.createInstance()];\n\n case 2:\n _a.sent();\n\n return [3\n /*break*/\n , 4];\n\n case 3:\n error_4 = _a.sent();\n return [2\n /*return*/\n , Promise.reject(error_4)];\n\n case 4:\n endpoint = this._api.endpoint(apiName);\n\n if (endpoint.length === 0) {\n return [2\n /*return*/\n , Promise.reject('API ' + apiName + ' does not exist')];\n }\n\n return [2\n /*return*/\n , this._api.patch(endpoint + path, init)];\n }\n });\n });\n };\n /**\n * Make a DEL request\n * @param {string} apiName - The api name of the request\n * @param {string} path - The path of the request\n * @param {json} [init] - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n\n\n APIClass.prototype.del = function (apiName, path, init) {\n return __awaiter(this, void 0, void 0, function () {\n var error_5, endpoint;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!this._api) return [3\n /*break*/\n , 4];\n _a.label = 1;\n\n case 1:\n _a.trys.push([1, 3,, 4]);\n\n return [4\n /*yield*/\n , this.createInstance()];\n\n case 2:\n _a.sent();\n\n return [3\n /*break*/\n , 4];\n\n case 3:\n error_5 = _a.sent();\n return [2\n /*return*/\n , Promise.reject(error_5)];\n\n case 4:\n endpoint = this._api.endpoint(apiName);\n\n if (endpoint.length === 0) {\n return [2\n /*return*/\n , Promise.reject('API ' + apiName + ' does not exist')];\n }\n\n return [2\n /*return*/\n , this._api.del(endpoint + path, init)];\n }\n });\n });\n };\n /**\n * Make a HEAD request\n * @param {string} apiName - The api name of the request\n * @param {string} path - The path of the request\n * @param {json} [init] - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n\n\n APIClass.prototype.head = function (apiName, path, init) {\n return __awaiter(this, void 0, void 0, function () {\n var error_6, endpoint;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!this._api) return [3\n /*break*/\n , 4];\n _a.label = 1;\n\n case 1:\n _a.trys.push([1, 3,, 4]);\n\n return [4\n /*yield*/\n , this.createInstance()];\n\n case 2:\n _a.sent();\n\n return [3\n /*break*/\n , 4];\n\n case 3:\n error_6 = _a.sent();\n return [2\n /*return*/\n , Promise.reject(error_6)];\n\n case 4:\n endpoint = this._api.endpoint(apiName);\n\n if (endpoint.length === 0) {\n return [2\n /*return*/\n , Promise.reject('API ' + apiName + ' does not exist')];\n }\n\n return [2\n /*return*/\n , this._api.head(endpoint + path, init)];\n }\n });\n });\n };\n /**\n * Getting endpoint for API\n * @param {string} apiName - The name of the api\n * @return {string} - The endpoint of the api\n */\n\n\n APIClass.prototype.endpoint = function (apiName) {\n return __awaiter(this, void 0, void 0, function () {\n var error_7;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!this._api) return [3\n /*break*/\n , 4];\n _a.label = 1;\n\n case 1:\n _a.trys.push([1, 3,, 4]);\n\n return [4\n /*yield*/\n , this.createInstance()];\n\n case 2:\n _a.sent();\n\n return [3\n /*break*/\n , 4];\n\n case 3:\n error_7 = _a.sent();\n return [2\n /*return*/\n , Promise.reject(error_7)];\n\n case 4:\n return [2\n /*return*/\n , this._api.endpoint(apiName)];\n }\n });\n });\n };\n\n APIClass.prototype._headerBasedAuth = function (defaultAuthenticationType) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, aws_appsync_authenticationType, apiKey, authenticationType, headers, _b, credentialsOK, federatedInfo, session;\n\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = this._options, aws_appsync_authenticationType = _a.aws_appsync_authenticationType, apiKey = _a.aws_appsync_apiKey;\n authenticationType = defaultAuthenticationType || aws_appsync_authenticationType || 'AWS_IAM';\n headers = {};\n _b = authenticationType;\n\n switch (_b) {\n case 'API_KEY':\n return [3\n /*break*/\n , 1];\n\n case 'AWS_IAM':\n return [3\n /*break*/\n , 2];\n\n case 'OPENID_CONNECT':\n return [3\n /*break*/\n , 4];\n\n case 'AMAZON_COGNITO_USER_POOLS':\n return [3\n /*break*/\n , 6];\n }\n\n return [3\n /*break*/\n , 8];\n\n case 1:\n if (!apiKey) {\n throw new Error('No api-key configured');\n }\n\n headers = {\n Authorization: null,\n 'X-Api-Key': apiKey\n };\n return [3\n /*break*/\n , 9];\n\n case 2:\n return [4\n /*yield*/\n , this._ensureCredentials()];\n\n case 3:\n credentialsOK = _c.sent();\n\n if (!credentialsOK) {\n throw new Error('No credentials');\n }\n\n return [3\n /*break*/\n , 9];\n\n case 4:\n return [4\n /*yield*/\n , Cache.getItem('federatedInfo')];\n\n case 5:\n federatedInfo = _c.sent();\n\n if (!federatedInfo || !federatedInfo.token) {\n throw new Error('No federated jwt');\n }\n\n headers = {\n Authorization: federatedInfo.token\n };\n return [3\n /*break*/\n , 9];\n\n case 6:\n return [4\n /*yield*/\n , Auth.currentSession()];\n\n case 7:\n session = _c.sent();\n headers = {\n Authorization: session.getAccessToken().getJwtToken()\n };\n return [3\n /*break*/\n , 9];\n\n case 8:\n headers = {\n Authorization: null\n };\n return [3\n /*break*/\n , 9];\n\n case 9:\n return [2\n /*return*/\n , headers];\n }\n });\n });\n };\n /**\n * to get the operation type\n * @param operation\n */\n\n\n APIClass.prototype.getGraphqlOperationType = function (operation) {\n var doc = parse(operation);\n var operationType = doc.definitions[0].operation;\n return operationType;\n };\n /**\n * Executes a GraphQL operation\n *\n * @param {GraphQLOptions} GraphQL Options\n * @returns {Promise | Observable}\n */\n\n\n APIClass.prototype.graphql = function (_a) {\n var paramQuery = _a.query,\n _b = _a.variables,\n variables = _b === void 0 ? {} : _b,\n authMode = _a.authMode;\n var query = typeof paramQuery === 'string' ? parse(paramQuery) : parse(print(paramQuery));\n var _c = query.definitions.filter(function (def) {\n return def.kind === 'OperationDefinition';\n })[0],\n operationDef = _c === void 0 ? {} : _c;\n var operationType = operationDef.operation;\n\n switch (operationType) {\n case 'query':\n case 'mutation':\n return this._graphql({\n query: query,\n variables: variables,\n authMode: authMode\n });\n\n case 'subscription':\n return this._graphqlSubscribe({\n query: query,\n variables: variables,\n authMode: authMode\n });\n }\n\n throw new Error(\"invalid operation type: \" + operationType);\n };\n\n APIClass.prototype._graphql = function (_a, additionalHeaders) {\n var query = _a.query,\n variables = _a.variables,\n authMode = _a.authMode;\n\n if (additionalHeaders === void 0) {\n additionalHeaders = {};\n }\n\n return __awaiter(this, void 0, void 0, function () {\n var _b, region, appSyncGraphqlEndpoint, _c, graphql_headers, customGraphqlEndpoint, customEndpointRegion, headers, _d, _e, _f, _g, _h, _j, body, init, endpoint, error, response, err_1, errors;\n\n var _k;\n\n return __generator(this, function (_l) {\n switch (_l.label) {\n case 0:\n if (!!this._api) return [3\n /*break*/\n , 2];\n return [4\n /*yield*/\n , this.createInstance()];\n\n case 1:\n _l.sent();\n\n _l.label = 2;\n\n case 2:\n _b = this._options, region = _b.aws_appsync_region, appSyncGraphqlEndpoint = _b.aws_appsync_graphqlEndpoint, _c = _b.graphql_headers, graphql_headers = _c === void 0 ? function () {\n return {};\n } : _c, customGraphqlEndpoint = _b.graphql_endpoint, customEndpointRegion = _b.graphql_endpoint_iam_region;\n _d = [{}];\n _e = !customGraphqlEndpoint;\n if (!_e) return [3\n /*break*/\n , 4];\n return [4\n /*yield*/\n , this._headerBasedAuth(authMode)];\n\n case 3:\n _e = _l.sent();\n _l.label = 4;\n\n case 4:\n _f = [__assign.apply(void 0, _d.concat([_e]))];\n _g = customGraphqlEndpoint;\n if (!_g) return [3\n /*break*/\n , 8];\n if (!customEndpointRegion) return [3\n /*break*/\n , 6];\n return [4\n /*yield*/\n , this._headerBasedAuth(authMode)];\n\n case 5:\n _h = _l.sent();\n return [3\n /*break*/\n , 7];\n\n case 6:\n _h = {\n Authorization: null\n };\n _l.label = 7;\n\n case 7:\n _g = _h;\n _l.label = 8;\n\n case 8:\n _j = [__assign.apply(void 0, _f.concat([_g]))];\n return [4\n /*yield*/\n , graphql_headers({\n query: query,\n variables: variables\n })];\n\n case 9:\n headers = __assign.apply(void 0, [__assign.apply(void 0, [__assign.apply(void 0, _j.concat([_l.sent()])), additionalHeaders]), !customGraphqlEndpoint && (_k = {}, _k[USER_AGENT_HEADER] = Constants.userAgent, _k)]);\n body = {\n query: print(query),\n variables: variables\n };\n init = {\n headers: headers,\n body: body,\n signerServiceInfo: {\n service: !customGraphqlEndpoint ? 'appsync' : 'execute-api',\n region: !customGraphqlEndpoint ? region : customEndpointRegion\n }\n };\n endpoint = customGraphqlEndpoint || appSyncGraphqlEndpoint;\n\n if (!endpoint) {\n error = new GraphQLError('No graphql endpoint provided.');\n throw {\n data: {},\n errors: [error]\n };\n }\n\n _l.label = 10;\n\n case 10:\n _l.trys.push([10, 12,, 13]);\n\n return [4\n /*yield*/\n , this._api.post(endpoint, init)];\n\n case 11:\n response = _l.sent();\n return [3\n /*break*/\n , 13];\n\n case 12:\n err_1 = _l.sent();\n response = {\n data: {},\n errors: [new GraphQLError(err_1.message)]\n };\n return [3\n /*break*/\n , 13];\n\n case 13:\n errors = response.errors;\n\n if (errors && errors.length) {\n throw response;\n }\n\n return [2\n /*return*/\n , response];\n }\n });\n });\n };\n\n APIClass.prototype._graphqlSubscribe = function (_a) {\n var _this = this;\n\n var query = _a.query,\n variables = _a.variables,\n authMode = _a.authMode;\n\n if (Amplify.PubSub && typeof Amplify.PubSub.subscribe === 'function') {\n return new Observable(function (observer) {\n var handle = null;\n\n (function () {\n return __awaiter(_this, void 0, void 0, function () {\n var aws_appsync_authenticationType, authenticationType, additionalheaders, subscription, newSubscriptions_1, newTopics, observable, error_8;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n aws_appsync_authenticationType = this._options.aws_appsync_authenticationType;\n authenticationType = authMode || aws_appsync_authenticationType;\n additionalheaders = __assign({}, authenticationType === 'API_KEY' ? {\n 'x-amz-subscriber-id': this.clientIdentifier\n } : {});\n _a.label = 1;\n\n case 1:\n _a.trys.push([1, 3,, 4]);\n\n return [4\n /*yield*/\n , this._graphql({\n query: query,\n variables: variables,\n authMode: authMode\n }, additionalheaders)];\n\n case 2:\n subscription = _a.sent().extensions.subscription;\n newSubscriptions_1 = subscription.newSubscriptions;\n newTopics = Object.getOwnPropertyNames(newSubscriptions_1).map(function (p) {\n return newSubscriptions_1[p].topic;\n });\n observable = Amplify.PubSub.subscribe(newTopics, __assign(__assign({}, subscription), {\n provider: INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER\n }));\n handle = observable.subscribe({\n next: function next(data) {\n return observer.next(data);\n },\n complete: function complete() {\n return observer.complete();\n },\n error: function error(data) {\n var error = __assign({}, data);\n\n if (!error.errors) {\n error.errors = [__assign({}, new GraphQLError('Network Error'))];\n }\n\n observer.error(error);\n }\n });\n return [3\n /*break*/\n , 4];\n\n case 3:\n error_8 = _a.sent();\n observer.error(error_8);\n return [3\n /*break*/\n , 4];\n\n case 4:\n return [2\n /*return*/\n ];\n }\n });\n });\n })();\n\n return function () {\n if (handle) {\n handle.unsubscribe();\n }\n };\n });\n } else {\n logger.debug('No pubsub module applied for subscription');\n throw new Error('No pubsub module applied for subscription');\n }\n };\n /**\n * @private\n */\n\n\n APIClass.prototype._ensureCredentials = function () {\n return Credentials.get().then(function (credentials) {\n if (!credentials) return false;\n var cred = Credentials.shear(credentials);\n logger.debug('set credentials for api', cred);\n return true;\n }).catch(function (err) {\n logger.warn('ensure credentials error', err);\n return false;\n });\n };\n\n return APIClass;\n}();\n\nexport default APIClass;","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport APIClass, { graphqlOperation } from './API';\nimport Amplify, { ConsoleLogger as Logger } from '@aws-amplify/core';\nvar logger = new Logger('API');\nvar _instance = null;\n\nif (!_instance) {\n logger.debug('Create API Instance');\n _instance = new APIClass(null);\n}\n\nvar API = _instance;\nAmplify.register(API);\nexport default API;\nexport { APIClass, graphqlOperation };","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n return fn.apply(thisArg, args);\n };\n};","/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex; // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n\n return [bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]]].join('');\n}\n\nmodule.exports = bytesToUuid;","'use strict';\n\nvar utils = require('./utils');\n\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter; // Only Node.JS has a process variable that is of [[Class]] process\n\n if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n } else if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n }\n\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) || utils.isArrayBuffer(data) || utils.isBuffer(data) || utils.isStream(data) || utils.isFile(data) || utils.isBlob(data)) {\n return data;\n }\n\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n\n return data;\n }],\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) {\n /* Ignore */\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n maxContentLength: -1,\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\nmodule.exports = defaults;","'use strict';\n\nvar enhanceError = require('./enhanceError');\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\n\n\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).replace(/%40/gi, '@').replace(/%3A/gi, ':').replace(/%24/g, '$').replace(/%2C/gi, ',').replace(/%20/g, '+').replace(/%5B/gi, '[').replace(/%5D/gi, ']');\n}\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\n\n\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};","\"use strict\";\n/*\n * Copyright 2018-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/**\n * This Symbol is used to reference an internal-only PubSub provider that\n * is used for AppSync/GraphQL subscriptions in the API category.\n */\n\nvar hasSymbol = typeof Symbol !== 'undefined' && typeof Symbol.for === 'function';\nexports.INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER = hasSymbol ? Symbol.for('INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER') : '@@INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER';","'use strict';\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\n\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function () {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n\n return error;\n};","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = utils.isStandardBrowserEnv() ? // Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\nfunction standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href); // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: urlParsingNode.pathname.charAt(0) === '/' ? urlParsingNode.pathname : '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n\n return function isURLSameOrigin(requestURL) {\n var parsed = utils.isString(requestURL) ? resolveURL(requestURL) : requestURL;\n return parsed.protocol === originURL.protocol && parsed.host === originURL.host;\n };\n}() : // Non standard browser envs (web workers, react-native) lack needed support.\nfunction nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n}();","'use strict';\n\nvar createError = require('./createError');\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\n\n\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n\n if (!validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError('Request failed with status code ' + response.status, response.config, null, response.request, response));\n }\n};","'use strict';\n\nvar utils = require('../utils');\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\n\n\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n utils.forEach(['url', 'method', 'params', 'data'], function valueFromConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n }\n });\n utils.forEach(['headers', 'auth', 'proxy'], function mergeDeepProperties(prop) {\n if (utils.isObject(config2[prop])) {\n config[prop] = utils.deepMerge(config1[prop], config2[prop]);\n } else if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (utils.isObject(config1[prop])) {\n config[prop] = utils.deepMerge(config1[prop]);\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n utils.forEach(['baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer', 'timeout', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName', 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'maxContentLength', 'validateStatus', 'maxRedirects', 'httpAgent', 'httpsAgent', 'cancelToken', 'socketPath'], function defaultToConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n return config;\n};","'use strict';\n\nvar utils = require('./../utils');\n\nvar transformData = require('./transformData');\n\nvar isCancel = require('../cancel/isCancel');\n\nvar defaults = require('../defaults');\n\nvar isAbsoluteURL = require('./../helpers/isAbsoluteURL');\n\nvar combineURLs = require('./../helpers/combineURLs');\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\n\n\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\n\n\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config); // Support baseURL config\n\n if (config.baseURL && !isAbsoluteURL(config.url)) {\n config.url = combineURLs(config.baseURL, config.url);\n } // Ensure headers exist\n\n\n config.headers = config.headers || {}; // Transform request data\n\n config.data = transformData(config.data, config.headers, config.transformRequest); // Flatten headers\n\n config.headers = utils.merge(config.headers.common || {}, config.headers[config.method] || {}, config.headers || {});\n utils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], function cleanHeaderConfig(method) {\n delete config.headers[method];\n });\n var adapter = config.adapter || defaults.adapter;\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config); // Transform response data\n\n response.data = transformData(response.data, response.headers, config.transformResponse);\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config); // Transform response data\n\n if (reason && reason.response) {\n reason.response.data = transformData(reason.response.data, reason.response.headers, config.transformResponse);\n }\n }\n\n return Promise.reject(reason);\n });\n};","'use strict';\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\n\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\nmodule.exports = Cancel;","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = utils.isStandardBrowserEnv() ? // Standard browser envs support document.cookie\nfunction standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return match ? decodeURIComponent(match[3]) : null;\n },\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n}() : // Non standard browser env (web workers, react-native) lack needed support.\nfunction nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() {\n return null;\n },\n remove: function remove() {}\n };\n}();","'use strict';\n\nvar Cancel = require('./Cancel');\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\n\n\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\n\n\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n\n\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Observable = void 0;\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n} // === Symbol Support ===\n\n\nvar hasSymbols = function hasSymbols() {\n return typeof Symbol === 'function';\n};\n\nvar hasSymbol = function hasSymbol(name) {\n return hasSymbols() && Boolean(Symbol[name]);\n};\n\nvar getSymbol = function getSymbol(name) {\n return hasSymbol(name) ? Symbol[name] : '@@' + name;\n};\n\nif (hasSymbols() && !hasSymbol('observable')) {\n Symbol.observable = Symbol('observable');\n}\n\nvar SymbolIterator = getSymbol('iterator');\nvar SymbolObservable = getSymbol('observable');\nvar SymbolSpecies = getSymbol('species'); // === Abstract Operations ===\n\nfunction getMethod(obj, key) {\n var value = obj[key];\n if (value == null) return undefined;\n if (typeof value !== 'function') throw new TypeError(value + ' is not a function');\n return value;\n}\n\nfunction getSpecies(obj) {\n var ctor = obj.constructor;\n\n if (ctor !== undefined) {\n ctor = ctor[SymbolSpecies];\n\n if (ctor === null) {\n ctor = undefined;\n }\n }\n\n return ctor !== undefined ? ctor : Observable;\n}\n\nfunction isObservable(x) {\n return x instanceof Observable; // SPEC: Brand check\n}\n\nfunction hostReportError(e) {\n if (hostReportError.log) {\n hostReportError.log(e);\n } else {\n setTimeout(function () {\n throw e;\n });\n }\n}\n\nfunction enqueue(fn) {\n Promise.resolve().then(function () {\n try {\n fn();\n } catch (e) {\n hostReportError(e);\n }\n });\n}\n\nfunction cleanupSubscription(subscription) {\n var cleanup = subscription._cleanup;\n if (cleanup === undefined) return;\n subscription._cleanup = undefined;\n\n if (!cleanup) {\n return;\n }\n\n try {\n if (typeof cleanup === 'function') {\n cleanup();\n } else {\n var unsubscribe = getMethod(cleanup, 'unsubscribe');\n\n if (unsubscribe) {\n unsubscribe.call(cleanup);\n }\n }\n } catch (e) {\n hostReportError(e);\n }\n}\n\nfunction closeSubscription(subscription) {\n subscription._observer = undefined;\n subscription._queue = undefined;\n subscription._state = 'closed';\n}\n\nfunction flushSubscription(subscription) {\n var queue = subscription._queue;\n\n if (!queue) {\n return;\n }\n\n subscription._queue = undefined;\n subscription._state = 'ready';\n\n for (var i = 0; i < queue.length; ++i) {\n notifySubscription(subscription, queue[i].type, queue[i].value);\n if (subscription._state === 'closed') break;\n }\n}\n\nfunction notifySubscription(subscription, type, value) {\n subscription._state = 'running';\n var observer = subscription._observer;\n\n try {\n var m = getMethod(observer, type);\n\n switch (type) {\n case 'next':\n if (m) m.call(observer, value);\n break;\n\n case 'error':\n closeSubscription(subscription);\n if (m) m.call(observer, value);else throw value;\n break;\n\n case 'complete':\n closeSubscription(subscription);\n if (m) m.call(observer);\n break;\n }\n } catch (e) {\n hostReportError(e);\n }\n\n if (subscription._state === 'closed') cleanupSubscription(subscription);else if (subscription._state === 'running') subscription._state = 'ready';\n}\n\nfunction onNotify(subscription, type, value) {\n if (subscription._state === 'closed') return;\n\n if (subscription._state === 'buffering') {\n subscription._queue.push({\n type: type,\n value: value\n });\n\n return;\n }\n\n if (subscription._state !== 'ready') {\n subscription._state = 'buffering';\n subscription._queue = [{\n type: type,\n value: value\n }];\n enqueue(function () {\n return flushSubscription(subscription);\n });\n return;\n }\n\n notifySubscription(subscription, type, value);\n}\n\nvar Subscription =\n/*#__PURE__*/\nfunction () {\n function Subscription(observer, subscriber) {\n _classCallCheck(this, Subscription); // ASSERT: observer is an object\n // ASSERT: subscriber is callable\n\n\n this._cleanup = undefined;\n this._observer = observer;\n this._queue = undefined;\n this._state = 'initializing';\n var subscriptionObserver = new SubscriptionObserver(this);\n\n try {\n this._cleanup = subscriber.call(undefined, subscriptionObserver);\n } catch (e) {\n subscriptionObserver.error(e);\n }\n\n if (this._state === 'initializing') this._state = 'ready';\n }\n\n _createClass(Subscription, [{\n key: \"unsubscribe\",\n value: function unsubscribe() {\n if (this._state !== 'closed') {\n closeSubscription(this);\n cleanupSubscription(this);\n }\n }\n }, {\n key: \"closed\",\n get: function get() {\n return this._state === 'closed';\n }\n }]);\n\n return Subscription;\n}();\n\nvar SubscriptionObserver =\n/*#__PURE__*/\nfunction () {\n function SubscriptionObserver(subscription) {\n _classCallCheck(this, SubscriptionObserver);\n\n this._subscription = subscription;\n }\n\n _createClass(SubscriptionObserver, [{\n key: \"next\",\n value: function next(value) {\n onNotify(this._subscription, 'next', value);\n }\n }, {\n key: \"error\",\n value: function error(value) {\n onNotify(this._subscription, 'error', value);\n }\n }, {\n key: \"complete\",\n value: function complete() {\n onNotify(this._subscription, 'complete');\n }\n }, {\n key: \"closed\",\n get: function get() {\n return this._subscription._state === 'closed';\n }\n }]);\n\n return SubscriptionObserver;\n}();\n\nvar Observable =\n/*#__PURE__*/\nfunction () {\n function Observable(subscriber) {\n _classCallCheck(this, Observable);\n\n if (!(this instanceof Observable)) throw new TypeError('Observable cannot be called as a function');\n if (typeof subscriber !== 'function') throw new TypeError('Observable initializer must be a function');\n this._subscriber = subscriber;\n }\n\n _createClass(Observable, [{\n key: \"subscribe\",\n value: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n observer = {\n next: observer,\n error: arguments[1],\n complete: arguments[2]\n };\n }\n\n return new Subscription(observer, this._subscriber);\n }\n }, {\n key: \"forEach\",\n value: function forEach(fn) {\n var _this = this;\n\n return new Promise(function (resolve, reject) {\n if (typeof fn !== 'function') {\n reject(new TypeError(fn + ' is not a function'));\n return;\n }\n\n function done() {\n subscription.unsubscribe();\n resolve();\n }\n\n var subscription = _this.subscribe({\n next: function next(value) {\n try {\n fn(value, done);\n } catch (e) {\n reject(e);\n subscription.unsubscribe();\n }\n },\n error: reject,\n complete: resolve\n });\n });\n }\n }, {\n key: \"map\",\n value: function map(fn) {\n var _this2 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n return new C(function (observer) {\n return _this2.subscribe({\n next: function next(value) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n\n observer.next(value);\n },\n error: function error(e) {\n observer.error(e);\n },\n complete: function complete() {\n observer.complete();\n }\n });\n });\n }\n }, {\n key: \"filter\",\n value: function filter(fn) {\n var _this3 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n return new C(function (observer) {\n return _this3.subscribe({\n next: function next(value) {\n try {\n if (!fn(value)) return;\n } catch (e) {\n return observer.error(e);\n }\n\n observer.next(value);\n },\n error: function error(e) {\n observer.error(e);\n },\n complete: function complete() {\n observer.complete();\n }\n });\n });\n }\n }, {\n key: \"reduce\",\n value: function reduce(fn) {\n var _this4 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n var hasSeed = arguments.length > 1;\n var hasValue = false;\n var seed = arguments[1];\n var acc = seed;\n return new C(function (observer) {\n return _this4.subscribe({\n next: function next(value) {\n var first = !hasValue;\n hasValue = true;\n\n if (!first || hasSeed) {\n try {\n acc = fn(acc, value);\n } catch (e) {\n return observer.error(e);\n }\n } else {\n acc = value;\n }\n },\n error: function error(e) {\n observer.error(e);\n },\n complete: function complete() {\n if (!hasValue && !hasSeed) return observer.error(new TypeError('Cannot reduce an empty sequence'));\n observer.next(acc);\n observer.complete();\n }\n });\n });\n }\n }, {\n key: \"concat\",\n value: function concat() {\n var _this5 = this;\n\n for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n\n var C = getSpecies(this);\n return new C(function (observer) {\n var subscription;\n var index = 0;\n\n function startNext(next) {\n subscription = next.subscribe({\n next: function next(v) {\n observer.next(v);\n },\n error: function error(e) {\n observer.error(e);\n },\n complete: function complete() {\n if (index === sources.length) {\n subscription = undefined;\n observer.complete();\n } else {\n startNext(C.from(sources[index++]));\n }\n }\n });\n }\n\n startNext(_this5);\n return function () {\n if (subscription) {\n subscription.unsubscribe();\n subscription = undefined;\n }\n };\n });\n }\n }, {\n key: \"flatMap\",\n value: function flatMap(fn) {\n var _this6 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n return new C(function (observer) {\n var subscriptions = [];\n\n var outer = _this6.subscribe({\n next: function next(value) {\n if (fn) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n }\n\n var inner = C.from(value).subscribe({\n next: function next(value) {\n observer.next(value);\n },\n error: function error(e) {\n observer.error(e);\n },\n complete: function complete() {\n var i = subscriptions.indexOf(inner);\n if (i >= 0) subscriptions.splice(i, 1);\n completeIfDone();\n }\n });\n subscriptions.push(inner);\n },\n error: function error(e) {\n observer.error(e);\n },\n complete: function complete() {\n completeIfDone();\n }\n });\n\n function completeIfDone() {\n if (outer.closed && subscriptions.length === 0) observer.complete();\n }\n\n return function () {\n subscriptions.forEach(function (s) {\n return s.unsubscribe();\n });\n outer.unsubscribe();\n };\n });\n }\n }, {\n key: SymbolObservable,\n value: function value() {\n return this;\n }\n }], [{\n key: \"from\",\n value: function from(x) {\n var C = typeof this === 'function' ? this : Observable;\n if (x == null) throw new TypeError(x + ' is not an object');\n var method = getMethod(x, SymbolObservable);\n\n if (method) {\n var observable = method.call(x);\n if (Object(observable) !== observable) throw new TypeError(observable + ' is not an object');\n if (isObservable(observable) && observable.constructor === C) return observable;\n return new C(function (observer) {\n return observable.subscribe(observer);\n });\n }\n\n if (hasSymbol('iterator')) {\n method = getMethod(x, SymbolIterator);\n\n if (method) {\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = method.call(x)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _item = _step.value;\n observer.next(_item);\n if (observer.closed) return;\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\n observer.complete();\n });\n });\n }\n }\n\n if (Array.isArray(x)) {\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n\n for (var i = 0; i < x.length; ++i) {\n observer.next(x[i]);\n if (observer.closed) return;\n }\n\n observer.complete();\n });\n });\n }\n\n throw new TypeError(x + ' is not observable');\n }\n }, {\n key: \"of\",\n value: function of() {\n for (var _len2 = arguments.length, items = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n items[_key2] = arguments[_key2];\n }\n\n var C = typeof this === 'function' ? this : Observable;\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n\n for (var i = 0; i < items.length; ++i) {\n observer.next(items[i]);\n if (observer.closed) return;\n }\n\n observer.complete();\n });\n });\n }\n }, {\n key: SymbolSpecies,\n get: function get() {\n return this;\n }\n }]);\n\n return Observable;\n}();\n\nexports.Observable = Observable;\n\nif (hasSymbols()) {\n Object.defineProperty(Observable, Symbol('extensions'), {\n value: {\n symbol: SymbolObservable,\n hostReportError: hostReportError\n },\n configurable: true\n });\n}","'use strict';\n\nvar utils = require('./../utils');\n\nvar settle = require('./../core/settle');\n\nvar buildURL = require('./../helpers/buildURL');\n\nvar parseHeaders = require('./../helpers/parseHeaders');\n\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\n\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest(); // HTTP basic authentication\n\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password || '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true); // Set the request timeout in MS\n\n request.timeout = config.timeout; // Listen for ready state\n\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n } // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n\n\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n } // Prepare the response\n\n\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n settle(resolve, reject, response); // Clean up request\n\n request = null;\n }; // Handle browser request cancellation (as opposed to a manual cancellation)\n\n\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request)); // Clean up request\n\n request = null;\n }; // Handle low level network errors\n\n\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request)); // Clean up request\n\n request = null;\n }; // Handle timeout\n\n\n request.ontimeout = function handleTimeout() {\n reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED', request)); // Clean up request\n\n request = null;\n }; // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n\n if (utils.isStandardBrowserEnv()) {\n var cookies = require('./../helpers/cookies'); // Add xsrf header\n\n\n var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ? cookies.read(config.xsrfCookieName) : undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n } // Add headers to the request\n\n\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n } // Add withCredentials to request if needed\n\n\n if (config.withCredentials) {\n request.withCredentials = true;\n } // Add responseType to request if needed\n\n\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n } // Handle progress if needed\n\n\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n } // Not all browsers support upload events\n\n\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel); // Clean up request\n\n request = null;\n });\n }\n\n if (requestData === undefined) {\n requestData = null;\n } // Send the request\n\n\n request.send(requestData);\n });\n};","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils'); // Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\n\n\nvar ignoreDuplicateOf = ['age', 'authorization', 'content-length', 'content-type', 'etag', 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', 'last-modified', 'location', 'max-forwards', 'proxy-authorization', 'referer', 'retry-after', 'user-agent'];\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\n\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) {\n return parsed;\n }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n return parsed;\n};","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\nmodule.exports = function isBuffer(obj) {\n return obj != null && obj.constructor != null && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj);\n};","'use strict';\n\nvar utils = require('./../utils');\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\n\n\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n return data;\n};","var rng = require('./lib/rng');\n\nvar bytesToUuid = require('./lib/bytesToUuid'); // **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\n\nvar _nodeId;\n\nvar _clockseq; // Previous uuid creation time\n\n\nvar _lastMSecs = 0;\nvar _lastNSecs = 0; // See https://github.com/broofa/node-uuid for API details\n\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || [];\n options = options || {};\n var node = options.node || _nodeId;\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n var seedBytes = rng();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n var dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error('uuid.v1(): Can\\'t create more than 10M uuids/sec');\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n var tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (var n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf ? buf : bytesToUuid(b);\n}\n\nmodule.exports = v1;","'use strict';\n\nvar bind = require('./helpers/bind');\n\nvar isBuffer = require('is-buffer');\n/*global toString:true*/\n// utils is a library of generic helper functions non-specific to axios\n\n\nvar toString = Object.prototype.toString;\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\n\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\n\n\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\n\n\nfunction isFormData(val) {\n return typeof FormData !== 'undefined' && val instanceof FormData;\n}\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\n\n\nfunction isArrayBufferView(val) {\n var result;\n\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n result = ArrayBuffer.isView(val);\n } else {\n result = val && val.buffer && val.buffer instanceof ArrayBuffer;\n }\n\n return result;\n}\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\n\n\nfunction isString(val) {\n return typeof val === 'string';\n}\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\n\n\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\n\n\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\n\n\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\n\n\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\n\n\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\n\n\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\n\n\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\n\n\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\n\n\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\n\n\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\n\n\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' || navigator.product === 'NativeScript' || navigator.product === 'NS')) {\n return false;\n }\n\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\n\n\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n } // Force an array if not already something iterable\n\n\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\n\n\nfunction merge()\n/* obj1, obj2, obj3, ... */\n{\n var result = {};\n\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = merge(result[key], val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n\n return result;\n}\n/**\n * Function equal to merge with the difference being that no reference\n * to original objects is kept.\n *\n * @see merge\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\n\n\nfunction deepMerge()\n/* obj1, obj2, obj3, ... */\n{\n var result = {};\n\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = deepMerge(result[key], val);\n } else if (typeof val === 'object') {\n result[key] = deepMerge({}, val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n\n return result;\n}\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\n\n\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n deepMerge: deepMerge,\n extend: extend,\n trim: trim\n};","var rng = require('./lib/rng');\n\nvar bytesToUuid = require('./lib/bytesToUuid');\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof options == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || bytesToUuid(rnds);\n}\n\nmodule.exports = v4;","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};","'use strict';\n\nvar utils = require('./utils');\n\nvar bind = require('./helpers/bind');\n\nvar Axios = require('./core/Axios');\n\nvar mergeConfig = require('./core/mergeConfig');\n\nvar defaults = require('./defaults');\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\n\n\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context); // Copy axios.prototype to instance\n\n utils.extend(instance, Axios.prototype, context); // Copy context to instance\n\n utils.extend(instance, context);\n return instance;\n} // Create the default instance to be exported\n\n\nvar axios = createInstance(defaults); // Expose Axios class to allow class inheritance\n\naxios.Axios = Axios; // Factory for creating new instances\n\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n}; // Expose Cancel & CancelToken\n\n\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel'); // Expose all/spread\n\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = require('./helpers/spread');\nmodule.exports = axios; // Allow use of default import syntax in TypeScript\n\nmodule.exports.default = axios;"],"sourceRoot":""}